blob: 104d46bbd768b950bf44dd467effb6593351f512 [file] [log] [blame]
Florian Thienele82b4752012-03-19 21:08:44 +01001namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
2namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
3default namespace db = "http://docbook.org/ns/docbook"
4namespace html = "http://www.w3.org/1999/xhtml"
5namespace mml = "http://www.w3.org/1998/Math/MathML"
6namespace rng = "http://relaxng.org/ns/structure/1.0"
7namespace s = "http://www.ascc.net/xml/schematron"
8namespace svg = "http://www.w3.org/2000/svg"
9namespace xlink = "http://www.w3.org/1999/xlink"
10
11s:ns [
12 prefix = "a"
13 uri = "http://relaxng.org/ns/compatibility/annotations/1.0"
14]
15s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ]
16s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ]
17s:ns [
18 prefix = "dbx"
19 uri =
20 "http://sourceforge.net/projects/docbook/defguide/schema/extra-markup"
21]
22s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ]
23s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ]
24s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ]
25s:ns [ prefix = "s" uri = "http://www.ascc.net/xml/schematron" ]
26s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ]
27s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ]
28# DocBook V5.0CR5
29
30# See http://docbook.org/ns/docbook
31
32# This file is part of DocBook V5.0
33#
34# Copyright 1992-2008 HaL Computer Systems, Inc.,
35# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
36# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
37# Organization for the Advancement of Structured Information
38# Standards (OASIS).
39#
40# Release: $Id: docbook.rnc 7661 2008-02-06 13:52:59Z nwalsh $
41#
42# Permission to use, copy, modify and distribute the DocBook schema
43# and its accompanying documentation for any purpose and without fee
44# is hereby granted in perpetuity, provided that the above copyright
45# notice and this paragraph appear in all copies. The copyright
46# holders make no representation about the suitability of the schema
47# for any purpose. It is provided "as is" without expressed or implied
48# warranty.
49#
50# If you modify the DocBook schema in any way, label your schema as a
51# variant of DocBook. See the reference documentation
52# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
53# for more information.
54#
55# Please direct all questions, bug reports, or suggestions for changes
56# to the docbook@lists.oasis-open.org mailing list. For more
57# information, see http://www.oasis-open.org/docbook/.
58#
59# ======================================================================
60start =
61 (db.set
62 | db.book
63 | db.divisions
64 | db.components
65 | db.navigation.components
66 | db.section
67 | db.para)
68 | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5)
69 | (db.refentry | db.refsection)
70 | (db.refsect1 | db.refsect2 | db.refsect3)
71 | db.setindex
72div {
73 db._any.attribute =
74
75 ## Any attribute including in any attribute in any namespace.
76 attribute * { text }
77 db._any =
78
79 ## Any element from almost any namespace
80 element * - (db:* | html:*) {
81 (db._any.attribute | text | db._any)*
82 }
83}
84db.arch.attribute =
85
86 ## Designates the computer or chip architecture to which the element applies
87 attribute arch { text }
88db.audience.attribute =
89
90 ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.
91 attribute audience { text }
92db.condition.attribute =
93
94 ## provides a standard place for application-specific effectivity
95 attribute condition { text }
96db.conformance.attribute =
97
98 ## Indicates standards conformance characteristics of the element
99 attribute conformance { text }
100db.os.attribute =
101
102 ## Indicates the operating system to which the element is applicable
103 attribute os { text }
104db.revision.attribute =
105
106 ## Indicates the editorial revision to which the element belongs
107 attribute revision { text }
108db.security.attribute =
109
110 ## Indicates something about the security level associated with the element to which it applies
111 attribute security { text }
112db.userlevel.attribute =
113
114 ## Indicates the level of user experience for which the element applies
115 attribute userlevel { text }
116db.vendor.attribute =
117
118 ## Indicates the computer vendor to which the element applies.
119 attribute vendor { text }
120db.wordsize.attribute =
121
122 ## Indicates the word size (width in bits) of the computer architecture to which the element applies
123 attribute wordsize { text }
124db.effectivity.attributes =
125 db.arch.attribute?
126 & db.audience.attribute?
127 & db.condition.attribute?
128 & db.conformance.attribute?
129 & db.os.attribute?
130 & db.revision.attribute?
131 & db.security.attribute?
132 & db.userlevel.attribute?
133 & db.vendor.attribute?
134 & db.wordsize.attribute?
135db.endterm.attribute =
136
137 ## Points to the element whose content is to be used as the text of the link
138 attribute endterm { xsd:IDREF }
139db.linkend.attribute =
140
141 ## Points to an internal link target by identifying the value of its xml:id attribute
142 attribute linkend { xsd:IDREF }
143db.linkends.attribute =
144
145 ## Points to one or more internal link targets by identifying the value of their xml:id attributes
146 attribute linkends { xsd:IDREFS }
147db.xlink.href.attribute =
148
149 ## Identifies a link target with a URI
150 attribute xlink:href { xsd:anyURI }
151db.xlink.type.attribute =
152
153 ## Identifies the XLink link type
154 attribute xlink:type {
155
156 ## An XLink simple link
157 "simple"
158 }
159db.xlink.role.attribute =
160
161 ## Identifies the XLink role of the link
162 attribute xlink:role { xsd:anyURI }
163db.xlink.arcrole.attribute =
164
165 ## Identifies the XLink arcrole of the link
166 attribute xlink:arcrole { xsd:anyURI }
167db.xlink.title.attribute =
168
169 ## Identifies the XLink title of the link
170 attribute xlink:title { text }?
171db.xlink.show.enumeration =
172
173 ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.
174 "new"
175 |
176 ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.
177 "replace"
178 |
179 ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.
180 "embed"
181 |
182 ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.
183 "other"
184 |
185 ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.
186 "none"
187db.xlink.show.attribute =
188
189 ## Identifies the XLink show behavior of the link
190 attribute xlink:show { db.xlink.show.enumeration }
191db.xlink.actuate.enumeration =
192
193 ## An application should traverse to the ending resource immediately on loading the starting resource.
194 "onLoad"
195 |
196 ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.
197 "onRequest"
198 |
199 ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.
200 "other"
201 |
202 ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.
203 "none"
204db.xlink.actuate.attribute =
205
206 ## Identifies the XLink actuate behavior of the link
207 attribute xlink:actuate { db.xlink.actuate.enumeration }
208db.href.attributes =
209 db.xlink.href.attribute
210 & db.xlink.type.attribute?
211 & db.xlink.role.attribute?
212 & db.xlink.arcrole.attribute?
213 & db.xlink.title.attribute?
214 & db.xlink.show.attribute?
215 & db.xlink.actuate.attribute?
216db.xml.id.attribute =
217
218 ## Identifies the unique ID value of the element
219 attribute xml:id { xsd:ID }
220db.version.attribute =
221
222 ## Specifies the DocBook version of the element and its descendants
223 attribute version { text }
224db.xml.lang.attribute =
225
226 ## Specifies the natural language of the element and its descendants
227 attribute xml:lang { text }
228db.xml.base.attribute =
229
230 ## Specifies the base URI of the element and its descendants
231 attribute xml:base { xsd:anyURI }
232db.remap.attribute =
233
234 ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme
235 attribute remap { text }
236db.xreflabel.attribute =
237
238 ## Provides the text that is to be generated for a cross reference to the element
239 attribute xreflabel { text }
240db.xrefstyle.attribute =
241
242 ## Specifies a keyword or keywords identifying additional style information
243 attribute xrefstyle { text }
244db.revisionflag.enumeration =
245
246 ## The element has been changed.
247 "changed"
248 |
249 ## The element is new (has been added to the document).
250 "added"
251 |
252 ## The element has been deleted.
253 "deleted"
254 |
255 ## Explicitly turns off revision markup for this element.
256 "off"
257db.revisionflag.attribute =
258
259 ## Identifies the revision status of the element
260 attribute revisionflag { db.revisionflag.enumeration }
261db.dir.enumeration =
262
263 ## Left-to-right text
264 "ltr"
265 |
266 ## Right-to-left text
267 "rtl"
268 |
269 ## Left-to-right override
270 "lro"
271 |
272 ## Right-to-left override
273 "rlo"
274db.dir.attribute =
275
276 ## Identifies the direction of text in an element
277 attribute dir { db.dir.enumeration }
278db.common.base.attributes =
279 db.version.attribute?
280 & db.xml.lang.attribute?
281 & db.xml.base.attribute?
282 & db.remap.attribute?
283 & db.xreflabel.attribute?
284 & db.revisionflag.attribute?
285 & db.dir.attribute?
286 & db.effectivity.attributes
287db.common.attributes =
288 db.xml.id.attribute?
289 & db.common.base.attributes
290 & db.annotations.attribute?
291db.common.idreq.attributes =
292 db.xml.id.attribute
293 & db.common.base.attributes
294 & db.annotations.attribute?
295db.common.linking.attributes =
296 (db.linkend.attribute | db.href.attributes)?
297db.common.req.linking.attributes =
298 db.linkend.attribute | db.href.attributes
299db.common.data.attributes =
300
301 ## Specifies the format of the data
302 attribute format { text }?,
303 (
304 ## Indentifies the location of the data by URI
305 attribute fileref { xsd:anyURI }
306 |
307 ## Identifies the location of the data by external identifier (entity name)
308 attribute entityref { xsd:ENTITY })
309db.verbatim.continuation.enumeration =
310
311 ## Line numbering continues from the immediately preceding element with the same name.
312 "continues"
313 |
314 ## Line numbering restarts (begins at 1, usually).
315 "restarts"
316db.verbatim.continuation.attribute =
317
318 ## Determines whether line numbering continues from the previous element or restarts.
319 attribute continuation { db.verbatim.continuation.enumeration }
320db.verbatim.linenumbering.enumeration =
321
322 ## Lines are numbered.
323 "numbered"
324 |
325 ## Lines are not numbered.
326 "unnumbered"
327db.verbatim.linenumbering.attribute =
328
329 ## Determines whether lines are numbered.
330 attribute linenumbering { db.verbatim.linenumbering.enumeration }
331db.verbatim.startinglinenumber.attribute =
332
333 ## Specifies the initial line number.
334 attribute startinglinenumber { xsd:integer }
335db.verbatim.language.attribute =
336
337 ## Identifies the language (i.e. programming language) of the verbatim content.
338 attribute language { text }
339db.verbatim.xml.space.attribute =
340
341 ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not.
342 attribute xml:space {
343
344 ## Whitespace must be preserved.
345 "preserve"
346 }
347db.verbatim.attributes =
348 db.verbatim.continuation.attribute?
349 & db.verbatim.linenumbering.attribute?
350 & db.verbatim.startinglinenumber.attribute?
351 & db.verbatim.language.attribute?
352 & db.verbatim.xml.space.attribute?
353db.label.attribute =
354
355 ## Specifies an identifying string for presentation purposes
356 attribute label { text }
357db.width.characters.attribute =
358
359 ## Specifies the width (in characters) of the element
360 attribute width { xsd:nonNegativeInteger }
361db.spacing.enumeration =
362
363 ## The spacing should be "compact".
364 "compact"
365 |
366 ## The spacing should be "normal".
367 "normal"
368db.spacing.attribute =
369
370 ## Specifies (a hint about) the spacing of the content
371 attribute spacing { db.spacing.enumeration }
372db.pgwide.enumeration =
373
374 ## The element should be rendered in the current text flow (with the flow column width).
375 "0"
376 |
377 ## The element should be rendered across the full text page.
378 "1"
379db.pgwide.attribute =
380
381 ## Indicates if the element is rendered across the column or the page
382 attribute pgwide { db.pgwide.enumeration }
383db.language.attribute =
384
385 ## Identifies the language (i.e. programming language) of the content.
386 attribute language { text }
387db.performance.enumeration =
388
389 ## The content describes an optional step or steps.
390 "optional"
391 |
392 ## The content describes a required step or steps.
393 "required"
394db.performance.attribute =
395
396 ## Specifies if the content is required or optional.
397 attribute performance { db.performance.enumeration }
398db.floatstyle.attribute =
399
400 ## Specifies style information to be used when rendering the float
401 attribute floatstyle { text }
402db.width.attribute =
403
404 ## Specifies the width of the element
405 attribute width { text }
406db.depth.attribute =
407
408 ## Specifies the depth of the element
409 attribute depth { text }
410db.contentwidth.attribute =
411
412 ## Specifies the width of the content rectangle
413 attribute contentwidth { text }
414db.contentdepth.attribute =
415
416 ## Specifies the depth of the content rectangle
417 attribute contentdepth { text }
418db.scalefit.enumeration =
419
420 ## False (do not scale-to-fit; anamorphic scaling may occur)
421 "0"
422 |
423 ## True (scale-to-fit; anamorphic scaling is forbidden)
424 "1"
425db.scale.attribute =
426
427 ## Specifies the scaling factor
428 attribute scale { xsd:positiveInteger }
429db.halign.enumeration =
430
431 ## Centered horizontally
432 "center"
433 |
434 ## Aligned horizontally on the specified character
435 "char"
436 |
437 ## Fully justified (left and right margins or edges)
438 "justify"
439 |
440 ## Left aligned
441 "left"
442 |
443 ## Right aligned
444 "right"
445db.valign.enumeration =
446
447 ## Aligned on the bottom of the region
448 "bottom"
449 |
450 ## Centered vertically
451 "middle"
452 |
453 ## Aligned on the top of the region
454 "top"
455db.biblio.class.enumeration =
456
457 ## A document object identifier.
458 "doi"
459 |
460 ## An international standard book number.
461 "isbn"
462 |
463 ## An international standard technical report number (ISO 10444).
464 "isrn"
465 |
466 ## An international standard serial number.
467 "issn"
468 |
469 ## A Library of Congress reference number.
470 "libraryofcongress"
471 |
472 ## A publication number (an internal number or possibly organizational standard).
473 "pubsnumber"
474 |
475 ## A Uniform Resource Identifier
476 "uri"
477db.biblio.class-enum.attribute =
478
479 ## Identifies the kind of bibliographic identifier
480 attribute class { db.biblio.class.enumeration }?
481db.biblio.class-other.attribute =
482
483 ## Identifies the nature of the non-standard bibliographic identifier
484 attribute otherclass { xsd:NMTOKEN }
485db.biblio.class-other.attributes =
486
487 ## Identifies the kind of bibliographic identifier
488 attribute class {
489
490 ## Indicates that the identifier is some 'other' kind.
491 "other"
492 }
493 & db.biblio.class-other.attribute
494db.biblio.class.attribute =
495 db.biblio.class-enum.attribute | db.biblio.class-other.attributes
496db.ubiq.inlines =
497 (db.inlinemediaobject
498 | db.remark
499 | db.superscript
500 | db.subscript
501 | db.link.inlines
502 | db.alt)
503 | db.annotation
504 | db.indexterm
505db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)*
506db._title = db.title? & db.titleabbrev? & db.subtitle?
507db._title.req = db.title & db.titleabbrev? & db.subtitle?
508db._title.only = db.title? & db.titleabbrev?
509db._title.onlyreq = db.title & db.titleabbrev?
510db._info = (db._title, db.titleforbidden.info?) | db.info?
511db._info.title.req =
512 (db._title.req, db.titleforbidden.info?) | db.titlereq.info
513db._info.title.only =
514 (db._title.only, db.titleforbidden.info?) | db.titleonly.info
515db._info.title.onlyreq =
516 (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info
517db._info.title.forbidden = db.titleforbidden.info?
518db.all.inlines =
519 text
520 | db.ubiq.inlines
521 | db.general.inlines
522 | db.domain.inlines
523 | db.extension.inlines
524db.general.inlines =
525 db.publishing.inlines
526 | db.product.inlines
527 | db.bibliography.inlines
528 | db.graphic.inlines
529 | db.indexing.inlines
530 | db.link.inlines
531db.domain.inlines =
532 db.technical.inlines
533 | db.math.inlines
534 | db.markup.inlines
535 | db.gui.inlines
536 | db.keyboard.inlines
537 | db.os.inlines
538 | db.programming.inlines
539 | db.error.inlines
540db.technical.inlines =
541 (db.replaceable | db.package | db.parameter)
542 | db.termdef
543 | db.nonterminal
544 | (db.systemitem | db.option | db.optional | db.property)
545db.product.inlines =
546 db.trademark
547 | (db.productnumber
548 | db.productname
549 | db.database
550 | db.application
551 | db.hardware)
552db.bibliography.inlines =
553 db.citation
554 | db.citerefentry
555 | db.citetitle
556 | db.citebiblioid
557 | db.author
558 | db.person
559 | db.personname
560 | db.org
561 | db.orgname
562 | db.editor
563 | db.jobtitle
564db.publishing.inlines =
565 (db.abbrev
566 | db.acronym
567 | db.date
568 | db.emphasis
569 | db.footnote
570 | db.footnoteref
571 | db.foreignphrase
572 | db.phrase
573 | db.quote
574 | db.subscript
575 | db.superscript
576 | db.wordasword)
577 | db.glossary.inlines
578 | db.coref
579db.graphic.inlines = db.inlinemediaobject
580db.indexing.inlines = notAllowed | db.indexterm
581db.link.inlines =
582 (db.xref | db.link | db.olink | db.anchor) | db.biblioref
583db.extension.inlines = notAllowed
584db.nopara.blocks =
585 (db.list.blocks
586 | db.formal.blocks
587 | db.informal.blocks
588 | db.publishing.blocks
589 | db.graphic.blocks
590 | db.technical.blocks
591 | db.verbatim.blocks
592 | db.bridgehead
593 | db.remark
594 | db.revhistory)
595 | db.indexterm
596 | db.synopsis.blocks
597 | db.admonition.blocks
598db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara
599db.all.blocks =
600 (db.nopara.blocks | db.para.blocks | db.extension.blocks)
601 | db.annotation
602db.formal.blocks = (db.example | db.figure | db.table) | db.equation
603db.informal.blocks =
604 (db.informalexample | db.informalfigure | db.informaltable)
605 | db.informalequation
606db.publishing.blocks =
607 db.sidebar | db.blockquote | db.address | db.epigraph
608db.graphic.blocks = db.mediaobject | db.screenshot
609db.technical.blocks =
610 db.procedure
611 | db.task
612 | (db.productionset | db.constraintdef)
613 | db.msgset
614db.list.blocks =
615 (db.itemizedlist
616 | db.orderedlist
617 | db.procedure
618 | db.simplelist
619 | db.variablelist
620 | db.segmentedlist)
621 | db.glosslist
622 | db.bibliolist
623 | db.calloutlist
624 | db.qandaset
625db.verbatim.blocks =
626 (db.screen | db.literallayout)
627 | (db.programlistingco | db.screenco)
628 | (db.programlisting | db.synopsis)
629db.extension.blocks = notAllowed
630db.info.extension = db._any
631db.info.elements =
632 (db.abstract
633 | db.address
634 | db.artpagenums
635 | db.author
636 | db.authorgroup
637 | db.authorinitials
638 | db.bibliocoverage
639 | db.biblioid
640 | db.bibliosource
641 | db.collab
642 | db.confgroup
643 | db.contractsponsor
644 | db.contractnum
645 | db.copyright
646 | db.cover
647 | db.date
648 | db.edition
649 | db.editor
650 | db.issuenum
651 | db.keywordset
652 | db.legalnotice
653 | db.mediaobject
654 | db.org
655 | db.orgname
656 | db.othercredit
657 | db.pagenums
658 | db.printhistory
659 | db.pubdate
660 | db.publisher
661 | db.publishername
662 | db.releaseinfo
663 | db.revhistory
664 | db.seriesvolnums
665 | db.subjectset
666 | db.volumenum
667 | db.info.extension)
668 | db.annotation
669 | db.extendedlink
670 | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset)
671 | db.itermset
672 | (db.productname | db.productnumber)
673db.bibliographic.elements =
674 db.info.elements
675 | db.publishing.inlines
676 | db.citerefentry
677 | db.citetitle
678 | db.citebiblioid
679 | db.person
680 | db.personblurb
681 | db.personname
682 | db.subtitle
683 | db.title
684 | db.titleabbrev
685div {
686 db.title.role.attribute = attribute role { text }
687 db.title.attlist =
688 db.title.role.attribute?
689 & db.common.attributes
690 & db.common.linking.attributes
691 db.title =
692
693 ## The text of the title of a section of a document or of a formal block-level element
694 element title { db.title.attlist, db.all.inlines* }
695}
696div {
697 db.titleabbrev.role.attribute = attribute role { text }
698 db.titleabbrev.attlist =
699 db.titleabbrev.role.attribute?
700 & db.common.attributes
701 & db.common.linking.attributes
702 db.titleabbrev =
703
704 ## The abbreviation of a title
705 element titleabbrev { db.titleabbrev.attlist, db.all.inlines* }
706}
707div {
708 db.subtitle.role.attribute = attribute role { text }
709 db.subtitle.attlist =
710 db.subtitle.role.attribute?
711 & db.common.attributes
712 & db.common.linking.attributes
713 db.subtitle =
714
715 ## The subtitle of a document
716 element subtitle { db.subtitle.attlist, db.all.inlines* }
717}
718div {
719 db.info.role.attribute = attribute role { text }
720 db.info.attlist = db.info.role.attribute? & db.common.attributes
721 db.info =
722
723 ## A wrapper for information about a component or other block
724 element info { db.info.attlist, (db._title & db.info.elements*) }
725}
726div {
727 db.titlereq.info.role.attribute = attribute role { text }
728 db.titlereq.info.attlist =
729 db.titlereq.info.role.attribute? & db.common.attributes
730 db.titlereq.info =
731
732 ## A wrapper for information about a component or other block with a required title
733 element info {
734 db.titlereq.info.attlist, (db._title.req & db.info.elements*)
735 }
736}
737div {
738 db.titleonly.info.role.attribute = attribute role { text }
739 db.titleonly.info.attlist =
740 db.titleonly.info.role.attribute? & db.common.attributes
741 db.titleonly.info =
742
743 ## A wrapper for information about a component or other block with only a title
744 element info {
745 db.titleonly.info.attlist, (db._title.only & db.info.elements*)
746 }
747}
748div {
749 db.titleonlyreq.info.role.attribute = attribute role { text }
750 db.titleonlyreq.info.attlist =
751 db.titleonlyreq.info.role.attribute? & db.common.attributes
752 db.titleonlyreq.info =
753
754 ## A wrapper for information about a component or other block with only a required title
755 element info {
756 db.titleonlyreq.info.attlist,
757 (db._title.onlyreq & db.info.elements*)
758 }
759}
760div {
761 db.titleforbidden.info.role.attribute = attribute role { text }
762 db.titleforbidden.info.attlist =
763 db.titleforbidden.info.role.attribute? & db.common.attributes
764 db.titleforbidden.info =
765
766 ## A wrapper for information about a component or other block without a title
767 element info { db.titleforbidden.info.attlist, db.info.elements* }
768}
769div {
770 db.subjectset.role.attribute = attribute role { text }
771 db.subjectset.scheme.attribute =
772
773 ## Identifies the controlled vocabulary used by this set's terms
774 attribute scheme { xsd:NMTOKEN }
775 db.subjectset.attlist =
776 db.subjectset.role.attribute?
777 & db.common.attributes
778 & db.common.linking.attributes
779 & db.subjectset.scheme.attribute?
780 db.subjectset =
781
782 ## A set of terms describing the subject matter of a document
783 element subjectset { db.subjectset.attlist, db.subject+ }
784}
785div {
786 db.subject.role.attribute = attribute role { text }
787 db.subject.weight.attribute =
788
789 ## Specifies a ranking for this subject relative to other subjects in the same set
790 attribute weight { text }
791 db.subject.attlist =
792 db.subject.role.attribute?
793 & db.common.attributes
794 & db.common.linking.attributes
795 & db.subject.weight.attribute?
796 db.subject =
797
798 ## One of a group of terms describing the subject matter of a document
799 element subject { db.subject.attlist, db.subjectterm+ }
800}
801div {
802 db.subjectterm.role.attribute = attribute role { text }
803 db.subjectterm.attlist =
804 db.subjectterm.role.attribute?
805 & db.common.attributes
806 & db.common.linking.attributes
807 db.subjectterm =
808
809 ## A term in a group of terms describing the subject matter of a document
810 element subjectterm { db.subjectterm.attlist, text }
811}
812div {
813 db.keywordset.role.attribute = attribute role { text }
814 db.keywordset.attlist =
815 db.keywordset.role.attribute?
816 & db.common.attributes
817 & db.common.linking.attributes
818 db.keywordset =
819
820 ## A set of keywords describing the content of a document
821 element keywordset { db.keywordset.attlist, db.keyword+ }
822}
823div {
824 db.keyword.role.attribute = attribute role { text }
825 db.keyword.attlist =
826 db.keyword.role.attribute?
827 & db.common.attributes
828 & db.common.linking.attributes
829 db.keyword =
830
831 ## One of a set of keywords describing the content of a document
832 element keyword { db.keyword.attlist, text }
833}
834db.table.choice = notAllowed | db.cals.table | db.html.table
835db.informaltable.choice =
836 notAllowed | db.cals.informaltable | db.html.informaltable
837db.table = db.table.choice
838db.informaltable = db.informaltable.choice
839div {
840 db.procedure.role.attribute = attribute role { text }
841 db.procedure.attlist =
842 db.procedure.role.attribute?
843 & db.common.attributes
844 & db.common.linking.attributes
845 db.procedure.info = db._info.title.only
846 db.procedure =
847
848 ## A list of operations to be performed in a well-defined sequence
849 element procedure {
850 db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+
851 }
852}
853div {
854 db.step.role.attribute = attribute role { text }
855 db.step.attlist =
856 db.step.role.attribute?
857 & db.common.attributes
858 & db.common.linking.attributes
859 & db.performance.attribute?
860 db.step.info = db._info.title.only
861 #
862 # This content model is blocks*, step|stepalternatives, blocks* but
863 # expressed this way it avoids UPA issues in XSD and DTD versions
864 db.step =
865
866 ## A unit of action in a procedure
867 element step {
868 db.step.attlist,
869 db.step.info,
870 ((db.all.blocks+,
871 ((db.substeps | db.stepalternatives), db.all.blocks*)?)
872 | ((db.substeps | db.stepalternatives), db.all.blocks*))
873 }
874}
875div {
876 db.stepalternatives.role.attribute = attribute role { text }
877 db.stepalternatives.attlist =
878 db.stepalternatives.role.attribute?
879 & db.common.attributes
880 & db.common.linking.attributes
881 & db.performance.attribute?
882 db.stepalternatives.info = db._info.title.forbidden
883 db.stepalternatives =
884
885 ## Alternative steps in a procedure
886 element stepalternatives {
887 db.stepalternatives.attlist, db.stepalternatives.info, db.step+
888 }
889}
890div {
891 db.substeps.role.attribute = attribute role { text }
892 db.substeps.attlist =
893 db.substeps.role.attribute?
894 & db.common.attributes
895 & db.common.linking.attributes
896 & db.performance.attribute?
897 db.substeps =
898
899 ## A wrapper for steps that occur within steps in a procedure
900 element substeps { db.substeps.attlist, db.step+ }
901}
902div {
903 db.sidebar.role.attribute = attribute role { text }
904 db.sidebar.attlist =
905 db.sidebar.role.attribute?
906 & db.common.attributes
907 & db.common.linking.attributes
908 db.sidebar.info = db._info.title.only
909 db.sidebar =
910
911 ## A portion of a document that is isolated from the main narrative flow
912 [
913 s:pattern [
914 name = "Element exclusion"
915 "\x{a}" ~
916 " "
917 s:rule [
918 context = "db:sidebar"
919 "\x{a}" ~
920 " "
921 s:assert [
922 test = "not(.//db:sidebar)"
923 "sidebar must not occur in the descendants of sidebar"
924 ]
925 "\x{a}" ~
926 " "
927 ]
928 "\x{a}" ~
929 " "
930 ]
931 ]
932 element sidebar {
933 db.sidebar.attlist, db.sidebar.info, db.all.blocks+
934 }
935}
936div {
937 db.abstract.role.attribute = attribute role { text }
938 db.abstract.attlist =
939 db.abstract.role.attribute?
940 & db.common.attributes
941 & db.common.linking.attributes
942 db.abstract.info = db._info.title.only
943 db.abstract =
944
945 ## A summary
946 element abstract {
947 db.abstract.attlist, db.abstract.info, db.para.blocks+
948 }
949}
950div {
951 db.personblurb.role.attribute = attribute role { text }
952 db.personblurb.attlist =
953 db.personblurb.role.attribute?
954 & db.common.attributes
955 & db.common.linking.attributes
956 db.personblurb.info = db._info.title.only
957 db.personblurb =
958
959 ## A short description or note about a person
960 element personblurb {
961 db.personblurb.attlist, db.personblurb.info, db.para.blocks+
962 }
963}
964div {
965 db.blockquote.role.attribute = attribute role { text }
966 db.blockquote.attlist =
967 db.blockquote.role.attribute?
968 & db.common.attributes
969 & db.common.linking.attributes
970 db.blockquote.info = db._info.title.only
971 db.blockquote =
972
973 ## A quotation set off from the main text
974 element blockquote {
975 db.blockquote.attlist,
976 db.blockquote.info,
977 db.attribution?,
978 db.all.blocks+
979 }
980}
981div {
982 db.attribution.role.attribute = attribute role { text }
983 db.attribution.attlist =
984 db.attribution.role.attribute?
985 & db.common.attributes
986 & db.common.linking.attributes
987 db.attribution =
988
989 ## The source of a block quote or epigraph
990 element attribution {
991 db.attribution.attlist,
992 (db._text
993 | db.person
994 | db.personname
995 | db.citetitle
996 | db.citation)*
997 }
998}
999div {
1000 db.bridgehead.renderas.enumeration =
1001
1002 ## Render as a first-level section
1003 "sect1"
1004 |
1005 ## Render as a second-level section
1006 "sect2"
1007 |
1008 ## Render as a third-level section
1009 "sect3"
1010 |
1011 ## Render as a fourth-level section
1012 "sect4"
1013 |
1014 ## Render as a fifth-level section
1015 "sect5"
1016 db.bridgehead.renderas-enum.attribute =
1017
1018 ## Indicates how the bridge head should be rendered
1019 attribute renderas { db.bridgehead.renderas.enumeration }?
1020 db.bridgehead.renderas-other.attribute =
1021
1022 ## Identifies the nature of the non-standard rendering
1023 attribute otherrenderas { xsd:NMTOKEN }
1024 db.bridgehead.renderas-other.attributes =
1025
1026 ## Indicates how the bridge head should be rendered
1027 attribute renderas {
1028
1029 ## Identifies a non-standard rendering
1030 "other"
1031 }
1032 & db.bridgehead.renderas-other.attribute
1033 db.bridgehead.renderas.attribute =
1034 db.bridgehead.renderas-enum.attribute
1035 | db.bridgehead.renderas-other.attributes
1036 db.bridgehead.role.attribute = attribute role { text }
1037 db.bridgehead.attlist =
1038 db.bridgehead.role.attribute?
1039 & db.common.attributes
1040 & db.common.linking.attributes
1041 & db.bridgehead.renderas.attribute?
1042 db.bridgehead =
1043
1044 ## A free-floating heading
1045 element bridgehead { db.bridgehead.attlist, db.all.inlines* }
1046}
1047div {
1048 db.remark.role.attribute = attribute role { text }
1049 db.remark.attlist =
1050 db.remark.role.attribute?
1051 & db.common.attributes
1052 & db.common.linking.attributes
1053 db.remark =
1054
1055 ## A remark (or comment) intended for presentation in a draft manuscript
1056 element remark { db.remark.attlist, db._text }
1057}
1058div {
1059 db.epigraph.role.attribute = attribute role { text }
1060 db.epigraph.attlist =
1061 db.epigraph.role.attribute?
1062 & db.common.attributes
1063 & db.common.linking.attributes
1064 db.epigraph.info = db._info.title.forbidden
1065 db.epigraph =
1066
1067 ## A short inscription at the beginning of a document or component
1068 element epigraph {
1069 db.epigraph.attlist,
1070 db.epigraph.info,
1071 db.attribution?,
1072 (db.para.blocks | db.literallayout)+
1073 }
1074}
1075div {
1076 db.footnote.role.attribute = attribute role { text }
1077 db.footnote.label.attribute =
1078
1079 ## Identifies the desired footnote mark
1080 attribute label { xsd:NMTOKEN }
1081 db.footnote.attlist =
1082 db.footnote.role.attribute?
1083 & db.common.attributes
1084 & db.common.linking.attributes
1085 & db.footnote.label.attribute?
1086 db.footnote =
1087
1088 ## A footnote
1089 [
1090 s:pattern [
1091 name = "Element exclusion"
1092 "\x{a}" ~
1093 " "
1094 s:rule [
1095 context = "db:footnote"
1096 "\x{a}" ~
1097 " "
1098 s:assert [
1099 test = "not(.//db:footnote)"
1100 "footnote must not occur in the descendants of footnote"
1101 ]
1102 "\x{a}" ~
1103 " "
1104 ]
1105 "\x{a}" ~
1106 " "
1107 ]
1108 s:pattern [
1109 name = "Element exclusion"
1110 "\x{a}" ~
1111 " "
1112 s:rule [
1113 context = "db:footnote"
1114 "\x{a}" ~
1115 " "
1116 s:assert [
1117 test = "not(.//db:example)"
1118 "example must not occur in the descendants of footnote"
1119 ]
1120 "\x{a}" ~
1121 " "
1122 ]
1123 "\x{a}" ~
1124 " "
1125 ]
1126 s:pattern [
1127 name = "Element exclusion"
1128 "\x{a}" ~
1129 " "
1130 s:rule [
1131 context = "db:footnote"
1132 "\x{a}" ~
1133 " "
1134 s:assert [
1135 test = "not(.//db:figure)"
1136 "figure must not occur in the descendants of footnote"
1137 ]
1138 "\x{a}" ~
1139 " "
1140 ]
1141 "\x{a}" ~
1142 " "
1143 ]
1144 s:pattern [
1145 name = "Element exclusion"
1146 "\x{a}" ~
1147 " "
1148 s:rule [
1149 context = "db:footnote"
1150 "\x{a}" ~
1151 " "
1152 s:assert [
1153 test = "not(.//db:table)"
1154 "table must not occur in the descendants of footnote"
1155 ]
1156 "\x{a}" ~
1157 " "
1158 ]
1159 "\x{a}" ~
1160 " "
1161 ]
1162 s:pattern [
1163 name = "Element exclusion"
1164 "\x{a}" ~
1165 " "
1166 s:rule [
1167 context = "db:footnote"
1168 "\x{a}" ~
1169 " "
1170 s:assert [
1171 test = "not(.//db:equation)"
1172 "equation must not occur in the descendants of footnote"
1173 ]
1174 "\x{a}" ~
1175 " "
1176 ]
1177 "\x{a}" ~
1178 " "
1179 ]
1180 s:pattern [
1181 name = "Element exclusion"
1182 "\x{a}" ~
1183 " "
1184 s:rule [
1185 context = "db:footnote"
1186 "\x{a}" ~
1187 " "
1188 s:assert [
1189 test = "not(.//db:indexterm)"
1190 "indexterm must not occur in the descendants of footnote"
1191 ]
1192 "\x{a}" ~
1193 " "
1194 ]
1195 "\x{a}" ~
1196 " "
1197 ]
1198 s:pattern [
1199 name = "Element exclusion"
1200 "\x{a}" ~
1201 " "
1202 s:rule [
1203 context = "db:footnote"
1204 "\x{a}" ~
1205 " "
1206 s:assert [
1207 test = "not(.//db:sidebar)"
1208 "sidebar must not occur in the descendants of footnote"
1209 ]
1210 "\x{a}" ~
1211 " "
1212 ]
1213 "\x{a}" ~
1214 " "
1215 ]
1216 s:pattern [
1217 name = "Element exclusion"
1218 "\x{a}" ~
1219 " "
1220 s:rule [
1221 context = "db:footnote"
1222 "\x{a}" ~
1223 " "
1224 s:assert [
1225 test = "not(.//db:task)"
1226 "task must not occur in the descendants of footnote"
1227 ]
1228 "\x{a}" ~
1229 " "
1230 ]
1231 "\x{a}" ~
1232 " "
1233 ]
1234 s:pattern [
1235 name = "Element exclusion"
1236 "\x{a}" ~
1237 " "
1238 s:rule [
1239 context = "db:footnote"
1240 "\x{a}" ~
1241 " "
1242 s:assert [
1243 test = "not(.//db:epigraph)"
1244 "epigraph must not occur in the descendants of footnote"
1245 ]
1246 "\x{a}" ~
1247 " "
1248 ]
1249 "\x{a}" ~
1250 " "
1251 ]
1252 s:pattern [
1253 name = "Element exclusion"
1254 "\x{a}" ~
1255 " "
1256 s:rule [
1257 context = "db:footnote"
1258 "\x{a}" ~
1259 " "
1260 s:assert [
1261 test = "not(.//db:caution)"
1262 "caution must not occur in the descendants of footnote"
1263 ]
1264 "\x{a}" ~
1265 " "
1266 ]
1267 "\x{a}" ~
1268 " "
1269 ]
1270 s:pattern [
1271 name = "Element exclusion"
1272 "\x{a}" ~
1273 " "
1274 s:rule [
1275 context = "db:footnote"
1276 "\x{a}" ~
1277 " "
1278 s:assert [
1279 test = "not(.//db:important)"
1280 "important must not occur in the descendants of footnote"
1281 ]
1282 "\x{a}" ~
1283 " "
1284 ]
1285 "\x{a}" ~
1286 " "
1287 ]
1288 s:pattern [
1289 name = "Element exclusion"
1290 "\x{a}" ~
1291 " "
1292 s:rule [
1293 context = "db:footnote"
1294 "\x{a}" ~
1295 " "
1296 s:assert [
1297 test = "not(.//db:note)"
1298 "note must not occur in the descendants of footnote"
1299 ]
1300 "\x{a}" ~
1301 " "
1302 ]
1303 "\x{a}" ~
1304 " "
1305 ]
1306 s:pattern [
1307 name = "Element exclusion"
1308 "\x{a}" ~
1309 " "
1310 s:rule [
1311 context = "db:footnote"
1312 "\x{a}" ~
1313 " "
1314 s:assert [
1315 test = "not(.//db:tip)"
1316 "tip must not occur in the descendants of footnote"
1317 ]
1318 "\x{a}" ~
1319 " "
1320 ]
1321 "\x{a}" ~
1322 " "
1323 ]
1324 s:pattern [
1325 name = "Element exclusion"
1326 "\x{a}" ~
1327 " "
1328 s:rule [
1329 context = "db:footnote"
1330 "\x{a}" ~
1331 " "
1332 s:assert [
1333 test = "not(.//db:warning)"
1334 "warning must not occur in the descendants of footnote"
1335 ]
1336 "\x{a}" ~
1337 " "
1338 ]
1339 "\x{a}" ~
1340 " "
1341 ]
1342 ]
1343 element footnote { db.footnote.attlist, db.all.blocks+ }
1344}
1345div {
1346 db.formalpara.role.attribute = attribute role { text }
1347 db.formalpara.attlist =
1348 db.formalpara.role.attribute?
1349 & db.common.attributes
1350 & db.common.linking.attributes
1351 db.formalpara.info = db._info.title.onlyreq
1352 db.formalpara =
1353
1354 ## A paragraph with a title
1355 element formalpara {
1356 db.formalpara.attlist,
1357 db.formalpara.info,
1358 db.indexing.inlines*,
1359 db.para
1360 }
1361}
1362div {
1363 db.para.role.attribute = attribute role { text }
1364 db.para.attlist =
1365 db.para.role.attribute?
1366 & db.common.attributes
1367 & db.common.linking.attributes
1368 db.para.info = db._info.title.forbidden
1369 db.para =
1370
1371 ## A paragraph
1372 [
1373 s:pattern [
1374 name = "Root must have version"
1375 "\x{a}" ~
1376 " "
1377 s:rule [
1378 context = "/db:para"
1379 "\x{a}" ~
1380 " "
1381 s:assert [
1382 test = "@version"
1383 "The root element must have a version attribute."
1384 ]
1385 "\x{a}" ~
1386 " "
1387 ]
1388 "\x{a}" ~
1389 " "
1390 ]
1391 ]
1392 element para {
1393 db.para.attlist,
1394 db.para.info,
1395 (db.all.inlines | db.nopara.blocks)*
1396 }
1397}
1398div {
1399 db.simpara.role.attribute = attribute role { text }
1400 db.simpara.attlist =
1401 db.simpara.role.attribute?
1402 & db.common.attributes
1403 & db.common.linking.attributes
1404 db.simpara.info = db._info.title.forbidden
1405 db.simpara =
1406
1407 ## A paragraph that contains only text and inline markup, no block elements
1408 element simpara {
1409 db.simpara.attlist, db.simpara.info, db.all.inlines*
1410 }
1411}
1412div {
1413 db.itemizedlist.role.attribute = attribute role { text }
1414 db.itemizedlist.mark.attribute =
1415
1416 ## Identifies the type of mark to be used on items in this list
1417 attribute mark { xsd:NMTOKEN }
1418 db.itemizedlist.attlist =
1419 db.itemizedlist.role.attribute?
1420 & db.common.attributes
1421 & db.common.linking.attributes
1422 & db.spacing.attribute?
1423 & db.itemizedlist.mark.attribute?
1424 db.itemizedlist.info = db._info.title.only
1425 db.itemizedlist =
1426
1427 ## A list in which each entry is marked with a bullet or other dingbat
1428 element itemizedlist {
1429 db.itemizedlist.attlist,
1430 db.itemizedlist.info,
1431 db.all.blocks*,
1432 db.listitem+
1433 }
1434}
1435div {
1436 db.orderedlist.role.attribute = attribute role { text }
1437 db.orderedlist.continuation.enumeration =
1438
1439 ## Specifies that numbering should begin where the preceding list left off
1440 "continues"
1441 |
1442 ## Specifies that numbering should begin again at 1
1443 "restarts"
1444 db.orderedlist.continuation.attribute =
1445
1446 ## Indicates how list numbering should begin relative to the immediately preceding list
1447 attribute continuation { db.orderedlist.continuation.enumeration }
1448 db.orderedlist.startingnumber.attribute =
1449
1450 ## Specifies the initial line number.
1451 attribute startingnumber { xsd:integer }
1452 db.orderedlist.inheritnum.enumeration =
1453
1454 ## Specifies that numbering should ignore list nesting
1455 "ignore"
1456 |
1457 ## Specifies that numbering should inherit from outer-level lists
1458 "inherit"
1459 db.orderedlist.inheritnum.attribute =
1460
1461 ## Indicates whether or not item numbering should be influenced by list nesting
1462 attribute inheritnum { db.orderedlist.inheritnum.enumeration }
1463 db.orderedlist.numeration.enumeration =
1464
1465 ## Specifies Arabic numeration (1, 2, 3, …)
1466 "arabic"
1467 |
1468 ## Specifies upper-case alphabetic numeration (A, B, C, …)
1469 "upperalpha"
1470 |
1471 ## Specifies lower-case alphabetic numeration (a, b, c, …)
1472 "loweralpha"
1473 |
1474 ## Specifies upper-case Roman numeration (I, II, III, …)
1475 "upperroman"
1476 |
1477 ## Specifies lower-case Roman numeration (i, ii, iii …)
1478 "lowerroman"
1479 db.orderedlist.numeration.attribute =
1480
1481 ## Indicates the desired numeration
1482 attribute numeration { db.orderedlist.numeration.enumeration }
1483 db.orderedlist.attlist =
1484 db.orderedlist.role.attribute?
1485 & db.common.attributes
1486 & db.common.linking.attributes
1487 & db.spacing.attribute?
1488 & (db.orderedlist.continuation.attribute
1489 | db.orderedlist.startingnumber.attribute)?
1490 & db.orderedlist.inheritnum.attribute?
1491 & db.orderedlist.numeration.attribute?
1492 db.orderedlist.info = db._info.title.only
1493 db.orderedlist =
1494
1495 ## A list in which each entry is marked with a sequentially incremented label
1496 element orderedlist {
1497 db.orderedlist.attlist,
1498 db.orderedlist.info,
1499 db.all.blocks*,
1500 db.listitem+
1501 }
1502}
1503div {
1504 db.listitem.role.attribute = attribute role { text }
1505 db.listitem.override.attribute =
1506
1507 ## Specifies the keyword for the type of mark that should be used on this
1508 ## item, instead of the mark that would be used by default
1509 attribute override { xsd:NMTOKEN }
1510 db.listitem.attlist =
1511 db.listitem.role.attribute?
1512 & db.common.attributes
1513 & db.common.linking.attributes
1514 & db.listitem.override.attribute?
1515 db.listitem =
1516
1517 ## A wrapper for the elements of a list item
1518 element listitem { db.listitem.attlist, db.all.blocks+ }
1519}
1520div {
1521 db.segmentedlist.role.attribute = attribute role { text }
1522 db.segmentedlist.attlist =
1523 db.segmentedlist.role.attribute?
1524 & db.common.attributes
1525 & db.common.linking.attributes
1526 db.segmentedlist.info = db._info.title.only
1527 db.segmentedlist =
1528
1529 ## A segmented list, a list of sets of elements
1530 element segmentedlist {
1531 db.segmentedlist.attlist,
1532 db.segmentedlist.info,
1533 db.segtitle+,
1534 db.seglistitem+
1535 }
1536}
1537div {
1538 db.segtitle.role.attribute = attribute role { text }
1539 db.segtitle.attlist =
1540 db.segtitle.role.attribute?
1541 & db.common.attributes
1542 & db.common.linking.attributes
1543 db.segtitle =
1544
1545 ## The title of an element of a list item in a segmented list
1546 element segtitle { db.segtitle.attlist, db.all.inlines* }
1547}
1548div {
1549 db.seglistitem.role.attribute = attribute role { text }
1550 db.seglistitem.attlist =
1551 db.seglistitem.role.attribute?
1552 & db.common.attributes
1553 & db.common.linking.attributes
1554 db.seglistitem =
1555
1556 ## A list item in a segmented list
1557 [
1558 s:pattern [
1559 name = "Cardinality of segments and titles"
1560 "\x{a}" ~
1561 " "
1562 s:rule [
1563 context = "db:seglistitem"
1564 "\x{a}" ~
1565 " "
1566 s:assert [
1567 test = "count(db:seg) = count(../db:segtitle)"
1568 "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist"
1569 ]
1570 "\x{a}" ~
1571 " "
1572 ]
1573 "\x{a}" ~
1574 " "
1575 ]
1576 ]
1577 element seglistitem { db.seglistitem.attlist, db.seg+ }
1578}
1579div {
1580 db.seg.role.attribute = attribute role { text }
1581 db.seg.attlist =
1582 db.seg.role.attribute?
1583 & db.common.attributes
1584 & db.common.linking.attributes
1585 db.seg =
1586
1587 ## An element of a list item in a segmented list
1588 element seg { db.seg.attlist, db.all.inlines* }
1589}
1590div {
1591 db.simplelist.role.attribute = attribute role { text }
1592 db.simplelist.type.enumeration =
1593
1594 ## A tabular presentation in row-major order.
1595 "horiz"
1596 |
1597 ## A tabular presentation in column-major order.
1598 "vert"
1599 |
1600 ## An inline presentation, usually a comma-delimited list.
1601 "inline"
1602 db.simplelist.type.attribute =
1603
1604 ## Specifies the type of list presentation.
1605 [ a:defaultValue = "vert" ]
1606 attribute type { db.simplelist.type.enumeration }
1607 db.simplelist.columns.attribute =
1608
1609 ## Specifies the number of columns for horizontal or vertical presentation
1610 attribute columns { xsd:integer }
1611 db.simplelist.attlist =
1612 db.simplelist.role.attribute?
1613 & db.common.attributes
1614 & db.common.linking.attributes
1615 & db.simplelist.type.attribute?
1616 & db.simplelist.columns.attribute?
1617 db.simplelist =
1618
1619 ## An undecorated list of single words or short phrases
1620 element simplelist { db.simplelist.attlist, db.member+ }
1621}
1622div {
1623 db.member.role.attribute = attribute role { text }
1624 db.member.attlist =
1625 db.member.role.attribute?
1626 & db.common.attributes
1627 & db.common.linking.attributes
1628 db.member =
1629
1630 ## An element of a simple list
1631 element member { db.member.attlist, db.all.inlines* }
1632}
1633div {
1634 db.variablelist.role.attribute = attribute role { text }
1635 db.variablelist.termlength.attribute =
1636
1637 ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list
1638 attribute termlength { text }
1639 db.variablelist.attlist =
1640 db.variablelist.role.attribute?
1641 & db.common.attributes
1642 & db.common.linking.attributes
1643 & db.spacing.attribute?
1644 & db.variablelist.termlength.attribute?
1645 db.variablelist.info = db._info.title.only
1646 db.variablelist =
1647
1648 ## A list in which each entry is composed of a set of one or more terms and an associated description
1649 element variablelist {
1650 db.variablelist.attlist,
1651 db.variablelist.info,
1652 db.all.blocks*,
1653 db.varlistentry+
1654 }
1655}
1656div {
1657 db.varlistentry.role.attribute = attribute role { text }
1658 db.varlistentry.attlist =
1659 db.varlistentry.role.attribute?
1660 & db.common.attributes
1661 & db.common.linking.attributes
1662 db.varlistentry =
1663
1664 ## A wrapper for a set of terms and the associated description in a variable list
1665 element varlistentry {
1666 db.varlistentry.attlist, db.term+, db.listitem
1667 }
1668}
1669div {
1670 db.term.role.attribute = attribute role { text }
1671 db.term.attlist =
1672 db.term.role.attribute?
1673 & db.common.attributes
1674 & db.common.linking.attributes
1675 db.term =
1676
1677 ## The word or phrase being defined or described in a variable list
1678 element term { db.term.attlist, db.all.inlines* }
1679}
1680div {
1681 db.example.role.attribute = attribute role { text }
1682 db.example.label.attribute = db.label.attribute
1683 db.example.width.attribute = db.width.characters.attribute
1684 db.example.pgwide.attribute = db.pgwide.attribute
1685 db.example.floatstyle.attribute = db.floatstyle.attribute
1686 db.example.attlist =
1687 db.example.role.attribute?
1688 & db.common.attributes
1689 & db.common.linking.attributes
1690 & db.example.label.attribute?
1691 & db.example.floatstyle.attribute?
1692 & (db.example.width.attribute | db.example.pgwide.attribute)?
1693 db.example.info = db._info.title.onlyreq
1694 db.example =
1695
1696 ## A formal example, with a title
1697 [
1698 s:pattern [
1699 name = "Element exclusion"
1700 "\x{a}" ~
1701 " "
1702 s:rule [
1703 context = "db:example"
1704 "\x{a}" ~
1705 " "
1706 s:assert [
1707 test = "not(.//db:example)"
1708 "example must not occur in the descendants of example"
1709 ]
1710 "\x{a}" ~
1711 " "
1712 ]
1713 "\x{a}" ~
1714 " "
1715 ]
1716 s:pattern [
1717 name = "Element exclusion"
1718 "\x{a}" ~
1719 " "
1720 s:rule [
1721 context = "db:example"
1722 "\x{a}" ~
1723 " "
1724 s:assert [
1725 test = "not(.//db:figure)"
1726 "figure must not occur in the descendants of example"
1727 ]
1728 "\x{a}" ~
1729 " "
1730 ]
1731 "\x{a}" ~
1732 " "
1733 ]
1734 s:pattern [
1735 name = "Element exclusion"
1736 "\x{a}" ~
1737 " "
1738 s:rule [
1739 context = "db:example"
1740 "\x{a}" ~
1741 " "
1742 s:assert [
1743 test = "not(.//db:table)"
1744 "table must not occur in the descendants of example"
1745 ]
1746 "\x{a}" ~
1747 " "
1748 ]
1749 "\x{a}" ~
1750 " "
1751 ]
1752 s:pattern [
1753 name = "Element exclusion"
1754 "\x{a}" ~
1755 " "
1756 s:rule [
1757 context = "db:example"
1758 "\x{a}" ~
1759 " "
1760 s:assert [
1761 test = "not(.//db:equation)"
1762 "equation must not occur in the descendants of example"
1763 ]
1764 "\x{a}" ~
1765 " "
1766 ]
1767 "\x{a}" ~
1768 " "
1769 ]
1770 s:pattern [
1771 name = "Element exclusion"
1772 "\x{a}" ~
1773 " "
1774 s:rule [
1775 context = "db:example"
1776 "\x{a}" ~
1777 " "
1778 s:assert [
1779 test = "not(.//db:caution)"
1780 "caution must not occur in the descendants of example"
1781 ]
1782 "\x{a}" ~
1783 " "
1784 ]
1785 "\x{a}" ~
1786 " "
1787 ]
1788 s:pattern [
1789 name = "Element exclusion"
1790 "\x{a}" ~
1791 " "
1792 s:rule [
1793 context = "db:example"
1794 "\x{a}" ~
1795 " "
1796 s:assert [
1797 test = "not(.//db:important)"
1798 "important must not occur in the descendants of example"
1799 ]
1800 "\x{a}" ~
1801 " "
1802 ]
1803 "\x{a}" ~
1804 " "
1805 ]
1806 s:pattern [
1807 name = "Element exclusion"
1808 "\x{a}" ~
1809 " "
1810 s:rule [
1811 context = "db:example"
1812 "\x{a}" ~
1813 " "
1814 s:assert [
1815 test = "not(.//db:note)"
1816 "note must not occur in the descendants of example"
1817 ]
1818 "\x{a}" ~
1819 " "
1820 ]
1821 "\x{a}" ~
1822 " "
1823 ]
1824 s:pattern [
1825 name = "Element exclusion"
1826 "\x{a}" ~
1827 " "
1828 s:rule [
1829 context = "db:example"
1830 "\x{a}" ~
1831 " "
1832 s:assert [
1833 test = "not(.//db:tip)"
1834 "tip must not occur in the descendants of example"
1835 ]
1836 "\x{a}" ~
1837 " "
1838 ]
1839 "\x{a}" ~
1840 " "
1841 ]
1842 s:pattern [
1843 name = "Element exclusion"
1844 "\x{a}" ~
1845 " "
1846 s:rule [
1847 context = "db:example"
1848 "\x{a}" ~
1849 " "
1850 s:assert [
1851 test = "not(.//db:warning)"
1852 "warning must not occur in the descendants of example"
1853 ]
1854 "\x{a}" ~
1855 " "
1856 ]
1857 "\x{a}" ~
1858 " "
1859 ]
1860 ]
1861 element example {
1862 db.example.attlist, db.example.info, db.all.blocks+, db.caption?
1863 }
1864}
1865div {
1866 db.informalexample.role.attribute = attribute role { text }
1867 db.informalexample.width.attribute = db.width.characters.attribute
1868 db.informalexample.floatstyle.attribute = db.floatstyle.attribute
1869 db.informalexample.attlist =
1870 db.informalexample.role.attribute?
1871 & db.common.attributes
1872 & db.common.linking.attributes
1873 & db.informalexample.floatstyle.attribute?
1874 & db.informalexample.width.attribute?
1875 db.informalexample.info = db._info.title.forbidden
1876 db.informalexample =
1877
1878 ## A displayed example without a title
1879 element informalexample {
1880 db.informalexample.attlist,
1881 db.informalexample.info,
1882 db.all.blocks+,
1883 db.caption?
1884 }
1885}
1886db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co
1887db.verbatim.contentmodel =
1888 db._info.title.forbidden, (db.textobject | db.verbatim.inlines*)
1889div {
1890 db.literallayout.role.attribute = attribute role { text }
1891 db.literallayout.class.enumeration =
1892
1893 ## The literal layout should be formatted with a monospaced font
1894 "monospaced"
1895 |
1896 ## The literal layout should be formatted with the current font
1897 "normal"
1898 db.literallayout.class.attribute =
1899
1900 ## Specifies the class of literal layout
1901 attribute class { db.literallayout.class.enumeration }
1902 db.literallayout.attlist =
1903 db.literallayout.role.attribute?
1904 & db.common.attributes
1905 & db.common.linking.attributes
1906 & db.verbatim.attributes
1907 & db.literallayout.class.attribute?
1908 db.literallayout =
1909
1910 ## A block of text in which line breaks and white space are to be reproduced faithfully
1911 element literallayout {
1912 db.literallayout.attlist, db.verbatim.contentmodel
1913 }
1914}
1915div {
1916 db.screen.role.attribute = attribute role { text }
1917 db.screen.width.attribute = db.width.characters.attribute
1918 db.screen.attlist =
1919 db.screen.role.attribute?
1920 & db.common.attributes
1921 & db.common.linking.attributes
1922 & db.verbatim.attributes
1923 & db.screen.width.attribute?
1924 db.screen =
1925
1926 ## Text that a user sees or might see on a computer screen
1927 element screen { db.screen.attlist, db.verbatim.contentmodel }
1928}
1929div {
1930 db.screenshot.role.attribute = attribute role { text }
1931 db.screenshot.attlist =
1932 db.screenshot.role.attribute?
1933 & db.common.attributes
1934 & db.common.linking.attributes
1935 db.screenshot.info = db._info
1936 db.screenshot =
1937
1938 ## A representation of what the user sees or might see on a computer screen
1939 element screenshot {
1940 db.screenshot.attlist, db.screenshot.info, db.mediaobject
1941 }
1942}
1943div {
1944 db.figure.role.attribute = attribute role { text }
1945 db.figure.label.attribute = db.label.attribute
1946 db.figure.pgwide.attribute = db.pgwide.attribute
1947 db.figure.floatstyle.attribute = db.floatstyle.attribute
1948 db.figure.attlist =
1949 db.figure.role.attribute?
1950 & db.common.attributes
1951 & db.common.linking.attributes
1952 & db.figure.label.attribute?
1953 & db.figure.pgwide.attribute?
1954 & db.figure.floatstyle.attribute?
1955 db.figure.info = db._info.title.onlyreq
1956 db.figure =
1957
1958 ## A formal figure, generally an illustration, with a title
1959 [
1960 s:pattern [
1961 name = "Element exclusion"
1962 "\x{a}" ~
1963 " "
1964 s:rule [
1965 context = "db:figure"
1966 "\x{a}" ~
1967 " "
1968 s:assert [
1969 test = "not(.//db:example)"
1970 "example must not occur in the descendants of figure"
1971 ]
1972 "\x{a}" ~
1973 " "
1974 ]
1975 "\x{a}" ~
1976 " "
1977 ]
1978 s:pattern [
1979 name = "Element exclusion"
1980 "\x{a}" ~
1981 " "
1982 s:rule [
1983 context = "db:figure"
1984 "\x{a}" ~
1985 " "
1986 s:assert [
1987 test = "not(.//db:figure)"
1988 "figure must not occur in the descendants of figure"
1989 ]
1990 "\x{a}" ~
1991 " "
1992 ]
1993 "\x{a}" ~
1994 " "
1995 ]
1996 s:pattern [
1997 name = "Element exclusion"
1998 "\x{a}" ~
1999 " "
2000 s:rule [
2001 context = "db:figure"
2002 "\x{a}" ~
2003 " "
2004 s:assert [
2005 test = "not(.//db:table)"
2006 "table must not occur in the descendants of figure"
2007 ]
2008 "\x{a}" ~
2009 " "
2010 ]
2011 "\x{a}" ~
2012 " "
2013 ]
2014 s:pattern [
2015 name = "Element exclusion"
2016 "\x{a}" ~
2017 " "
2018 s:rule [
2019 context = "db:figure"
2020 "\x{a}" ~
2021 " "
2022 s:assert [
2023 test = "not(.//db:equation)"
2024 "equation must not occur in the descendants of figure"
2025 ]
2026 "\x{a}" ~
2027 " "
2028 ]
2029 "\x{a}" ~
2030 " "
2031 ]
2032 s:pattern [
2033 name = "Element exclusion"
2034 "\x{a}" ~
2035 " "
2036 s:rule [
2037 context = "db:figure"
2038 "\x{a}" ~
2039 " "
2040 s:assert [
2041 test = "not(.//db:caution)"
2042 "caution must not occur in the descendants of figure"
2043 ]
2044 "\x{a}" ~
2045 " "
2046 ]
2047 "\x{a}" ~
2048 " "
2049 ]
2050 s:pattern [
2051 name = "Element exclusion"
2052 "\x{a}" ~
2053 " "
2054 s:rule [
2055 context = "db:figure"
2056 "\x{a}" ~
2057 " "
2058 s:assert [
2059 test = "not(.//db:important)"
2060 "important must not occur in the descendants of figure"
2061 ]
2062 "\x{a}" ~
2063 " "
2064 ]
2065 "\x{a}" ~
2066 " "
2067 ]
2068 s:pattern [
2069 name = "Element exclusion"
2070 "\x{a}" ~
2071 " "
2072 s:rule [
2073 context = "db:figure"
2074 "\x{a}" ~
2075 " "
2076 s:assert [
2077 test = "not(.//db:note)"
2078 "note must not occur in the descendants of figure"
2079 ]
2080 "\x{a}" ~
2081 " "
2082 ]
2083 "\x{a}" ~
2084 " "
2085 ]
2086 s:pattern [
2087 name = "Element exclusion"
2088 "\x{a}" ~
2089 " "
2090 s:rule [
2091 context = "db:figure"
2092 "\x{a}" ~
2093 " "
2094 s:assert [
2095 test = "not(.//db:tip)"
2096 "tip must not occur in the descendants of figure"
2097 ]
2098 "\x{a}" ~
2099 " "
2100 ]
2101 "\x{a}" ~
2102 " "
2103 ]
2104 s:pattern [
2105 name = "Element exclusion"
2106 "\x{a}" ~
2107 " "
2108 s:rule [
2109 context = "db:figure"
2110 "\x{a}" ~
2111 " "
2112 s:assert [
2113 test = "not(.//db:warning)"
2114 "warning must not occur in the descendants of figure"
2115 ]
2116 "\x{a}" ~
2117 " "
2118 ]
2119 "\x{a}" ~
2120 " "
2121 ]
2122 ]
2123 element figure {
2124 db.figure.attlist, db.figure.info, db.all.blocks+, db.caption?
2125 }
2126}
2127div {
2128 db.informalfigure.role.attribute = attribute role { text }
2129 db.informalfigure.label.attribute = db.label.attribute
2130 db.informalfigure.pgwide.attribute = db.pgwide.attribute
2131 db.informalfigure.floatstyle.attribute = db.floatstyle.attribute
2132 db.informalfigure.attlist =
2133 db.informalfigure.role.attribute?
2134 & db.common.attributes
2135 & db.common.linking.attributes
2136 & db.informalfigure.label.attribute?
2137 & db.informalfigure.pgwide.attribute?
2138 & db.informalfigure.floatstyle.attribute?
2139 db.informalfigure.info = db._info.title.forbidden
2140 db.informalfigure =
2141
2142 ## A untitled figure
2143 element informalfigure {
2144 db.informalfigure.attlist,
2145 db.informalfigure.info,
2146 db.all.blocks+,
2147 db.caption?
2148 }
2149}
2150db.mediaobject.content =
2151 (db.videoobject | db.audioobject | db.imageobject | db.textobject)
2152 | db.imageobjectco
2153div {
2154 db.mediaobject.role.attribute = attribute role { text }
2155 db.mediaobject.attlist =
2156 db.mediaobject.role.attribute?
2157 & db.common.attributes
2158 & db.common.linking.attributes
2159 db.mediaobject.info = db._info.title.forbidden
2160 db.mediaobject =
2161
2162 ## A displayed media object (video, audio, image, etc.)
2163 element mediaobject {
2164 db.mediaobject.attlist,
2165 db.mediaobject.info,
2166 db.alt?,
2167 db.mediaobject.content+,
2168 db.caption?
2169 }
2170}
2171div {
2172 db.inlinemediaobject.role.attribute = attribute role { text }
2173 db.inlinemediaobject.attlist =
2174 db.inlinemediaobject.role.attribute?
2175 & db.common.attributes
2176 & db.common.linking.attributes
2177 db.inlinemediaobject.info = db._info.title.forbidden
2178 db.inlinemediaobject =
2179
2180 ## An inline media object (video, audio, image, and so on)
2181 element inlinemediaobject {
2182 db.inlinemediaobject.attlist,
2183 db.inlinemediaobject.info,
2184 db.alt?,
2185 db.mediaobject.content+
2186 }
2187}
2188div {
2189 db.videoobject.role.attribute = attribute role { text }
2190 db.videoobject.attlist =
2191 db.videoobject.role.attribute?
2192 & db.common.attributes
2193 & db.common.linking.attributes
2194 db.videoobject.info = db._info.title.forbidden
2195 db.videoobject =
2196
2197 ## A wrapper for video data and its associated meta-information
2198 element videoobject {
2199 db.videoobject.attlist, db.videoobject.info, db.videodata
2200 }
2201}
2202div {
2203 db.audioobject.role.attribute = attribute role { text }
2204 db.audioobject.attlist =
2205 db.audioobject.role.attribute?
2206 & db.common.attributes
2207 & db.common.linking.attributes
2208 db.audioobject.info = db._info.title.forbidden
2209 db.audioobject =
2210
2211 ## A wrapper for audio data and its associated meta-information
2212 element audioobject {
2213 db.audioobject.attlist, db.audioobject.info, db.audiodata
2214 }
2215}
2216db.imageobject.content =
2217 db.imagedata | db.imagedata.mathml | db.imagedata.svg
2218div {
2219 db.imageobject.role.attribute = attribute role { text }
2220 db.imageobject.attlist =
2221 db.imageobject.role.attribute?
2222 & db.common.attributes
2223 & db.common.linking.attributes
2224 db.imageobject.info = db._info.title.forbidden
2225 db.imageobject =
2226
2227 ## A wrapper for image data and its associated meta-information
2228 element imageobject {
2229 db.imageobject.attlist,
2230 db.imageobject.info,
2231 db.imageobject.content
2232 }
2233}
2234div {
2235 db.textobject.role.attribute = attribute role { text }
2236 db.textobject.attlist =
2237 db.textobject.role.attribute?
2238 & db.common.attributes
2239 & db.common.linking.attributes
2240 db.textobject.info = db._info.title.forbidden
2241 db.textobject =
2242
2243 ## A wrapper for a text description of an object and its associated meta-information
2244 element textobject {
2245 db.textobject.attlist,
2246 db.textobject.info,
2247 (db.phrase | db.textdata | db.all.blocks+)
2248 }
2249}
2250div {
2251 db.videodata.role.attribute = attribute role { text }
2252 db.videodata.align.enumeration = db.halign.enumeration
2253 db.videodata.align.attribute =
2254
2255 ## Specifies the (horizontal) alignment of the video data
2256 attribute align { db.videodata.align.enumeration }
2257 db.videodata.valign.enumeration = db.valign.enumeration
2258 db.videodata.valign.attribute =
2259
2260 ## Specifies the vertical alignment of the video data
2261 attribute valign { db.videodata.valign.enumeration }
2262 db.videodata.width.attribute = db.width.attribute
2263 db.videodata.depth.attribute = db.depth.attribute
2264 db.videodata.contentwidth.attribute = db.contentwidth.attribute
2265 db.videodata.contentdepth.attribute = db.contentdepth.attribute
2266 db.videodata.scalefit.enumeration = db.scalefit.enumeration
2267 db.videodata.scalefit.attribute =
2268
2269 ## Determines if anamorphic scaling is forbidden
2270 attribute scalefit { db.videodata.scalefit.enumeration }
2271 db.videodata.scale.attribute = db.scale.attribute
2272 db.videodata.attlist =
2273 db.videodata.role.attribute?
2274 & db.common.attributes
2275 & db.common.data.attributes
2276 & db.videodata.align.attribute?
2277 & db.videodata.valign.attribute?
2278 & db.videodata.width.attribute?
2279 & db.videodata.contentwidth.attribute?
2280 & db.videodata.scalefit.attribute?
2281 & db.videodata.scale.attribute?
2282 & db.videodata.depth.attribute?
2283 & db.videodata.contentdepth.attribute?
2284 db.videodata.info = db._info.title.forbidden
2285 db.videodata =
2286
2287 ## Pointer to external video data
2288 element videodata { db.videodata.attlist, db.videodata.info }
2289}
2290div {
2291 db.audiodata.role.attribute = attribute role { text }
2292 db.audiodata.attlist =
2293 db.audiodata.role.attribute?
2294 & db.common.attributes
2295 & db.common.data.attributes
2296 db.audiodata.info = db._info.title.forbidden
2297 db.audiodata =
2298
2299 ## Pointer to external audio data
2300 element audiodata { db.audiodata.attlist, db.audiodata.info }
2301}
2302div {
2303 db.imagedata.role.attribute = attribute role { text }
2304 db.imagedata.align.enumeration = db.halign.enumeration
2305 db.imagedata.align.attribute =
2306
2307 ## Specifies the (horizontal) alignment of the image data
2308 attribute align { db.imagedata.align.enumeration }
2309 db.imagedata.valign.enumeration = db.valign.enumeration
2310 db.imagedata.valign.attribute =
2311
2312 ## Specifies the vertical alignment of the image data
2313 attribute valign { db.imagedata.valign.enumeration }
2314 db.imagedata.width.attribute = db.width.attribute
2315 db.imagedata.depth.attribute = db.depth.attribute
2316 db.imagedata.contentwidth.attribute = db.contentwidth.attribute
2317 db.imagedata.contentdepth.attribute = db.contentdepth.attribute
2318 db.imagedata.scalefit.enumeration = db.scalefit.enumeration
2319 db.imagedata.scalefit.attribute =
2320
2321 ## Determines if anamorphic scaling is forbidden
2322 attribute scalefit { db.imagedata.scalefit.enumeration }
2323 db.imagedata.scale.attribute = db.scale.attribute
2324 db.imagedata.attlist =
2325 db.imagedata.role.attribute?
2326 & db.common.attributes
2327 & db.common.data.attributes
2328 & db.imagedata.align.attribute?
2329 & db.imagedata.valign.attribute?
2330 & db.imagedata.width.attribute?
2331 & db.imagedata.contentwidth.attribute?
2332 & db.imagedata.scalefit.attribute?
2333 & db.imagedata.scale.attribute?
2334 & db.imagedata.depth.attribute?
2335 & db.imagedata.contentdepth.attribute?
2336 db.imagedata.info = db._info.title.forbidden
2337 db.imagedata =
2338
2339 ## Pointer to external image data
2340 element imagedata { db.imagedata.attlist, db.imagedata.info }
2341}
2342div {
2343 db.textdata.role.attribute = attribute role { text }
2344 db.textdata.encoding.attribute =
2345
2346 ## Identifies the encoding of the text in the external file
2347 attribute encoding { text }
2348 db.textdata.attlist =
2349 db.textdata.role.attribute?
2350 & db.common.attributes
2351 & db.common.data.attributes
2352 & db.textdata.encoding.attribute?
2353 db.textdata.info = db._info.title.forbidden
2354 db.textdata =
2355
2356 ## Pointer to external text data
2357 element textdata { db.textdata.attlist, db.textdata.info }
2358}
2359div {
2360 db.caption.role.attribute = attribute role { text }
2361 db.caption.attlist =
2362 db.caption.role.attribute?
2363 & db.common.attributes
2364 & db.common.linking.attributes
2365 db.caption.info = db._info.title.forbidden
2366 db.caption =
2367
2368 ## A caption
2369 [
2370 s:pattern [
2371 name = "Element exclusion"
2372 "\x{a}" ~
2373 " "
2374 s:rule [
2375 context = "db:caption"
2376 "\x{a}" ~
2377 " "
2378 s:assert [
2379 test = "not(.//db:example)"
2380 "example must not occur in the descendants of caption"
2381 ]
2382 "\x{a}" ~
2383 " "
2384 ]
2385 "\x{a}" ~
2386 " "
2387 ]
2388 s:pattern [
2389 name = "Element exclusion"
2390 "\x{a}" ~
2391 " "
2392 s:rule [
2393 context = "db:caption"
2394 "\x{a}" ~
2395 " "
2396 s:assert [
2397 test = "not(.//db:figure)"
2398 "figure must not occur in the descendants of caption"
2399 ]
2400 "\x{a}" ~
2401 " "
2402 ]
2403 "\x{a}" ~
2404 " "
2405 ]
2406 s:pattern [
2407 name = "Element exclusion"
2408 "\x{a}" ~
2409 " "
2410 s:rule [
2411 context = "db:caption"
2412 "\x{a}" ~
2413 " "
2414 s:assert [
2415 test = "not(.//db:table)"
2416 "table must not occur in the descendants of caption"
2417 ]
2418 "\x{a}" ~
2419 " "
2420 ]
2421 "\x{a}" ~
2422 " "
2423 ]
2424 s:pattern [
2425 name = "Element exclusion"
2426 "\x{a}" ~
2427 " "
2428 s:rule [
2429 context = "db:caption"
2430 "\x{a}" ~
2431 " "
2432 s:assert [
2433 test = "not(.//db:equation)"
2434 "equation must not occur in the descendants of caption"
2435 ]
2436 "\x{a}" ~
2437 " "
2438 ]
2439 "\x{a}" ~
2440 " "
2441 ]
2442 s:pattern [
2443 name = "Element exclusion"
2444 "\x{a}" ~
2445 " "
2446 s:rule [
2447 context = "db:caption"
2448 "\x{a}" ~
2449 " "
2450 s:assert [
2451 test = "not(.//db:sidebar)"
2452 "sidebar must not occur in the descendants of caption"
2453 ]
2454 "\x{a}" ~
2455 " "
2456 ]
2457 "\x{a}" ~
2458 " "
2459 ]
2460 s:pattern [
2461 name = "Element exclusion"
2462 "\x{a}" ~
2463 " "
2464 s:rule [
2465 context = "db:caption"
2466 "\x{a}" ~
2467 " "
2468 s:assert [
2469 test = "not(.//db:task)"
2470 "task must not occur in the descendants of caption"
2471 ]
2472 "\x{a}" ~
2473 " "
2474 ]
2475 "\x{a}" ~
2476 " "
2477 ]
2478 s:pattern [
2479 name = "Element exclusion"
2480 "\x{a}" ~
2481 " "
2482 s:rule [
2483 context = "db:caption"
2484 "\x{a}" ~
2485 " "
2486 s:assert [
2487 test = "not(.//db:caution)"
2488 "caution must not occur in the descendants of caption"
2489 ]
2490 "\x{a}" ~
2491 " "
2492 ]
2493 "\x{a}" ~
2494 " "
2495 ]
2496 s:pattern [
2497 name = "Element exclusion"
2498 "\x{a}" ~
2499 " "
2500 s:rule [
2501 context = "db:caption"
2502 "\x{a}" ~
2503 " "
2504 s:assert [
2505 test = "not(.//db:important)"
2506 "important must not occur in the descendants of caption"
2507 ]
2508 "\x{a}" ~
2509 " "
2510 ]
2511 "\x{a}" ~
2512 " "
2513 ]
2514 s:pattern [
2515 name = "Element exclusion"
2516 "\x{a}" ~
2517 " "
2518 s:rule [
2519 context = "db:caption"
2520 "\x{a}" ~
2521 " "
2522 s:assert [
2523 test = "not(.//db:note)"
2524 "note must not occur in the descendants of caption"
2525 ]
2526 "\x{a}" ~
2527 " "
2528 ]
2529 "\x{a}" ~
2530 " "
2531 ]
2532 s:pattern [
2533 name = "Element exclusion"
2534 "\x{a}" ~
2535 " "
2536 s:rule [
2537 context = "db:caption"
2538 "\x{a}" ~
2539 " "
2540 s:assert [
2541 test = "not(.//db:tip)"
2542 "tip must not occur in the descendants of caption"
2543 ]
2544 "\x{a}" ~
2545 " "
2546 ]
2547 "\x{a}" ~
2548 " "
2549 ]
2550 s:pattern [
2551 name = "Element exclusion"
2552 "\x{a}" ~
2553 " "
2554 s:rule [
2555 context = "db:caption"
2556 "\x{a}" ~
2557 " "
2558 s:assert [
2559 test = "not(.//db:warning)"
2560 "warning must not occur in the descendants of caption"
2561 ]
2562 "\x{a}" ~
2563 " "
2564 ]
2565 "\x{a}" ~
2566 " "
2567 ]
2568 ]
2569 element caption {
2570 db.caption.attlist, db.caption.info, db.all.blocks+
2571 }
2572}
2573div {
2574 db.address.role.attribute = attribute role { text }
2575 db.address.attlist =
2576 db.address.role.attribute?
2577 & db.common.attributes
2578 & db.common.linking.attributes
2579 & db.verbatim.attributes
2580 db.address =
2581
2582 ## A real-world address, generally a postal address
2583 element address {
2584 db.address.attlist,
2585 (db._text
2586 | db.personname
2587 | db.pob
2588 | db.street
2589 | db.city
2590 | db.state
2591 | db.postcode
2592 | db.country
2593 | db.phone
2594 | db.fax
2595 | db.email
2596 | db.uri
2597 | db.otheraddr)*
2598 }
2599}
2600div {
2601 db.street.role.attribute = attribute role { text }
2602 db.street.attlist =
2603 db.street.role.attribute?
2604 & db.common.attributes
2605 & db.common.linking.attributes
2606 db.street =
2607
2608 ## A street address in an address
2609 element street { db.street.attlist, db._text }
2610}
2611div {
2612 db.pob.role.attribute = attribute role { text }
2613 db.pob.attlist =
2614 db.pob.role.attribute?
2615 & db.common.attributes
2616 & db.common.linking.attributes
2617 db.pob =
2618
2619 ## A post office box in an address
2620 element pob { db.pob.attlist, db._text }
2621}
2622div {
2623 db.postcode.role.attribute = attribute role { text }
2624 db.postcode.attlist =
2625 db.postcode.role.attribute?
2626 & db.common.attributes
2627 & db.common.linking.attributes
2628 db.postcode =
2629
2630 ## A postal code in an address
2631 element postcode { db.postcode.attlist, db._text }
2632}
2633div {
2634 db.city.role.attribute = attribute role { text }
2635 db.city.attlist =
2636 db.city.role.attribute?
2637 & db.common.attributes
2638 & db.common.linking.attributes
2639 db.city =
2640
2641 ## The name of a city in an address
2642 element city { db.city.attlist, db._text }
2643}
2644div {
2645 db.state.role.attribute = attribute role { text }
2646 db.state.attlist =
2647 db.state.role.attribute?
2648 & db.common.attributes
2649 & db.common.linking.attributes
2650 db.state =
2651
2652 ## A state or province in an address
2653 element state { db.state.attlist, db._text }
2654}
2655div {
2656 db.country.role.attribute = attribute role { text }
2657 db.country.attlist =
2658 db.country.role.attribute?
2659 & db.common.attributes
2660 & db.common.linking.attributes
2661 db.country =
2662
2663 ## The name of a country
2664 element country { db.country.attlist, db._text }
2665}
2666div {
2667 db.phone.role.attribute = attribute role { text }
2668 db.phone.attlist =
2669 db.phone.role.attribute?
2670 & db.common.attributes
2671 & db.common.linking.attributes
2672 db.phone =
2673
2674 ## A telephone number
2675 element phone { db.phone.attlist, db._text }
2676}
2677div {
2678 db.fax.role.attribute = attribute role { text }
2679 db.fax.attlist =
2680 db.fax.role.attribute?
2681 & db.common.attributes
2682 & db.common.linking.attributes
2683 db.fax =
2684
2685 ## A fax number
2686 element fax { db.fax.attlist, db._text }
2687}
2688div {
2689 db.otheraddr.role.attribute = attribute role { text }
2690 db.otheraddr.attlist =
2691 db.otheraddr.role.attribute?
2692 & db.common.attributes
2693 & db.common.linking.attributes
2694 db.otheraddr =
2695
2696 ## Uncategorized information in address
2697 element otheraddr { db.otheraddr.attlist, db._text }
2698}
2699div {
2700 db.affiliation.role.attribute = attribute role { text }
2701 db.affiliation.attlist =
2702 db.affiliation.role.attribute?
2703 & db.common.attributes
2704 & db.common.linking.attributes
2705 db.affiliation =
2706
2707 ## The institutional affiliation of an individual
2708 element affiliation {
2709 db.affiliation.attlist,
2710 db.shortaffil?,
2711 db.jobtitle*,
2712 (db.org? | (db.orgname?, db.orgdiv*, db.address*))
2713 }
2714}
2715div {
2716 db.shortaffil.role.attribute = attribute role { text }
2717 db.shortaffil.attlist =
2718 db.shortaffil.role.attribute?
2719 & db.common.attributes
2720 & db.common.linking.attributes
2721 db.shortaffil =
2722
2723 ## A brief description of an affiliation
2724 element shortaffil { db.shortaffil.attlist, db._text }
2725}
2726div {
2727 db.jobtitle.role.attribute = attribute role { text }
2728 db.jobtitle.attlist =
2729 db.jobtitle.role.attribute?
2730 & db.common.attributes
2731 & db.common.linking.attributes
2732 db.jobtitle =
2733
2734 ## The title of an individual in an organization
2735 element jobtitle { db.jobtitle.attlist, db._text }
2736}
2737div {
2738 db.orgname.class.enumeration =
2739
2740 ## A consortium
2741 "consortium"
2742 |
2743 ## A corporation
2744 "corporation"
2745 |
2746 ## An informal organization
2747 "informal"
2748 |
2749 ## A non-profit organization
2750 "nonprofit"
2751 db.orgname.class-enum.attribute =
2752
2753 ## Specifies the nature of the organization
2754 attribute class { db.orgname.class.enumeration }
2755 db.orgname.class-other.attributes =
2756
2757 ## Specifies the nature of the organization
2758 attribute class {
2759
2760 ## Indicates a non-standard organization class
2761 "other"
2762 },
2763
2764 ## Identifies the non-standard nature of the organization
2765 attribute otherclass { text }
2766 db.orgname.class.attribute =
2767 db.orgname.class-enum.attribute | db.orgname.class-other.attributes
2768 db.orgname.role.attribute = attribute role { text }
2769 db.orgname.attlist =
2770 db.orgname.role.attribute?
2771 & db.common.attributes
2772 & db.common.linking.attributes
2773 & db.orgname.class.attribute?
2774 db.orgname =
2775
2776 ## The name of an organization
2777 element orgname { db.orgname.attlist, db._text }
2778}
2779div {
2780 db.orgdiv.role.attribute = attribute role { text }
2781 db.orgdiv.attlist =
2782 db.orgdiv.role.attribute?
2783 & db.common.attributes
2784 & db.common.linking.attributes
2785 db.orgdiv =
2786
2787 ## A division of an organization
2788 element orgdiv { db.orgdiv.attlist, db.all.inlines* }
2789}
2790div {
2791 db.artpagenums.role.attribute = attribute role { text }
2792 db.artpagenums.attlist =
2793 db.artpagenums.role.attribute?
2794 & db.common.attributes
2795 & db.common.linking.attributes
2796 db.artpagenums =
2797
2798 ## The page numbers of an article as published
2799 element artpagenums { db.artpagenums.attlist, db._text }
2800}
2801div {
2802 db.personname.role.attribute = attribute role { text }
2803 db.personname.attlist =
2804 db.personname.role.attribute?
2805 & db.common.attributes
2806 & db.common.linking.attributes
2807 db.personname =
2808
2809 ## The personal name of an individual
2810 element personname {
2811 db.personname.attlist,
2812 (db._text
2813 | (db.honorific
2814 | db.firstname
2815 | db.surname
2816 | db.lineage
2817 | db.othername)+)
2818 }
2819}
2820db.person.author.contentmodel =
2821 db.personname,
2822 (db.personblurb
2823 | db.affiliation
2824 | db.email
2825 | db.uri
2826 | db.address
2827 | db.contrib)*
2828db.org.author.contentmodel =