You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2012/10/07 15:32:05 UTC

svn commit: r1395298 [10/42] - in /ofbiz/trunk/applications/content/template/docbook: ./ assembly/ assembly/schema/ common/ doc/ docsrc/ eclipse/ epub/ epub/bin/ epub/bin/lib/ epub/bin/xslt/ epub3/ extensions/ fo/ highlighting/ html/ htmlhelp/ images/ ...

Added: ofbiz/trunk/applications/content/template/docbook/assembly/schema/assembly51b7.rnc
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/assembly/schema/assembly51b7.rnc?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/assembly/schema/assembly51b7.rnc (added)
+++ ofbiz/trunk/applications/content/template/docbook/assembly/schema/assembly51b7.rnc Sun Oct  7 13:31:52 2012
@@ -0,0 +1,11035 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+default namespace db = "http://docbook.org/ns/docbook"
+namespace html = "http://www.w3.org/1999/xhtml"
+namespace mml = "http://www.w3.org/1998/Math/MathML"
+namespace rng = "http://relaxng.org/ns/structure/1.0"
+namespace s = "http://purl.oclc.org/dsdl/schematron"
+namespace svg = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+# This file is part of DocBook Assembly V5.1b7
+# 
+# Copyright 2008-2011 HaL Computer Systems, Inc.,
+# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+# Organization for the Advancement of Structured Information
+# Standards (OASIS).
+# 
+# Permission to use, copy, modify and distribute the DocBook schema
+# and its accompanying documentation for any purpose and without fee
+# is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies. The copyright
+# holders make no representation about the suitability of the schema
+# for any purpose. It is provided "as is" without expressed or implied
+# warranty.
+# 
+# If you modify the DocBook schema in any way, label your schema as a
+# variant of DocBook. See the reference documentation
+# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+# for more information.
+# 
+# Please direct all questions, bug reports, or suggestions for changes
+# to the docbook@lists.oasis-open.org mailing list. For more
+# information, see http://www.oasis-open.org/docbook/.
+# 
+# ======================================================================
+div {
+  db._any.attribute =
+    
+    ## Any attribute, including any attribute in any namespace.
+    attribute * { text }
+  db._any =
+    
+    ## Any element from almost any namespace
+    element * - (db:* | html:*) {
+      (db._any.attribute | text | db._any)*
+    }
+}
+db.arch.attribute =
+  
+  ## Designates the computer or chip architecture to which the element applies
+  attribute arch { text }
+db.audience.attribute =
+  
+  ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.
+  attribute audience { text }
+db.condition.attribute =
+  
+  ## provides a standard place for application-specific effectivity
+  attribute condition { text }
+db.conformance.attribute =
+  
+  ## Indicates standards conformance characteristics of the element
+  attribute conformance { text }
+db.os.attribute =
+  
+  ## Indicates the operating system to which the element is applicable
+  attribute os { text }
+db.revision.attribute =
+  
+  ## Indicates the editorial revision to which the element belongs
+  attribute revision { text }
+db.security.attribute =
+  
+  ## Indicates something about the security level associated with the element to which it applies
+  attribute security { text }
+db.userlevel.attribute =
+  
+  ## Indicates the level of user experience for which the element applies
+  attribute userlevel { text }
+db.vendor.attribute =
+  
+  ## Indicates the computer vendor to which the element applies.
+  attribute vendor { text }
+db.wordsize.attribute =
+  
+  ## Indicates the word size (width in bits) of the computer architecture to which the element applies
+  attribute wordsize { text }
+db.effectivity.attributes =
+  db.arch.attribute?
+  & db.audience.attribute?
+  & db.condition.attribute?
+  & db.conformance.attribute?
+  & db.os.attribute?
+  & db.revision.attribute?
+  & db.security.attribute?
+  & db.userlevel.attribute?
+  & db.vendor.attribute?
+  & db.wordsize.attribute?
+db.endterm.attribute =
+  
+  ## Points to the element whose content is to be used as the text of the link
+  attribute endterm { xsd:IDREF }
+db.linkend.attribute =
+  
+  ## Points to an internal link target by identifying the value of its xml:id attribute
+  attribute linkend { xsd:IDREF }
+db.linkends.attribute =
+  
+  ## Points to one or more internal link targets by identifying the value of their xml:id attributes
+  attribute linkends { xsd:IDREFS }
+db.xlink.href.attribute =
+  
+  ## Identifies a link target with a URI
+  attribute xlink:href { xsd:anyURI }
+db.xlink.simple.type.attribute =
+  
+  ## Identifies the XLink link type
+  attribute xlink:type {
+    
+    ## An XLink simple link type
+    "simple"
+  }
+db.xlink.role.attribute =
+  
+  ## Identifies the XLink role of the link
+  attribute xlink:role { xsd:anyURI }
+db.xlink.arcrole.attribute =
+  
+  ## Identifies the XLink arcrole of the link
+  attribute xlink:arcrole { xsd:anyURI }
+db.xlink.title.attribute =
+  
+  ## Identifies the XLink title of the link
+  attribute xlink:title { text }
+db.xlink.show.enumeration =
+  
+  ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.
+  "new"
+  | 
+    ## 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.
+    "replace"
+  | 
+    ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.
+    "embed"
+  | 
+    ## 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.
+    "other"
+  | 
+    ## 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.
+    "none"
+db.xlink.show.attribute =
+  
+  ## Identifies the XLink show behavior of the link
+  attribute xlink:show { db.xlink.show.enumeration }
+db.xlink.actuate.enumeration =
+  
+  ## An application should traverse to the ending resource immediately on loading the starting resource.
+  "onLoad"
+  | 
+    ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.
+    "onRequest"
+  | 
+    ## 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.
+    "other"
+  | 
+    ## 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.
+    "none"
+db.xlink.actuate.attribute =
+  
+  ## Identifies the XLink actuate behavior of the link
+  attribute xlink:actuate { db.xlink.actuate.enumeration }
+db.xlink.simple.link.attributes =
+  db.xlink.simple.type.attribute?
+  & db.xlink.href.attribute?
+  & db.xlink.role.attribute?
+  & db.xlink.arcrole.attribute?
+  & db.xlink.title.attribute?
+  & db.xlink.show.attribute?
+  & db.xlink.actuate.attribute?
+db.xlink.attributes =
+  db.xlink.simple.link.attributes
+  | (db.xlink.extended.link.attributes
+     | db.xlink.locator.link.attributes
+     | db.xlink.arc.link.attributes
+     | db.xlink.resource.link.attributes
+     | db.xlink.title.link.attributes)
+db.xml.id.attribute =
+  
+  ## Identifies the unique ID value of the element
+  attribute xml:id { xsd:ID }
+db.version.attribute =
+  
+  ## Specifies the DocBook version of the element and its descendants
+  attribute version { text }
+db.xml.lang.attribute =
+  
+  ## Specifies the natural language of the element and its descendants
+  attribute xml:lang { text }
+db.xml.base.attribute =
+  
+  ## Specifies the base URI of the element and its descendants
+  attribute xml:base { xsd:anyURI }
+db.remap.attribute =
+  
+  ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme
+  attribute remap { text }
+db.xreflabel.attribute =
+  
+  ## Provides the text that is to be generated for a cross reference to the element
+  attribute xreflabel { text }
+db.xrefstyle.attribute =
+  
+  ## Specifies a keyword or keywords identifying additional style information
+  attribute xrefstyle { text }
+db.revisionflag.enumeration =
+  
+  ## The element has been changed.
+  "changed"
+  | 
+    ## The element is new (has been added to the document).
+    "added"
+  | 
+    ## The element has been deleted.
+    "deleted"
+  | 
+    ## Explicitly turns off revision markup for this element.
+    "off"
+db.revisionflag.attribute =
+  
+  ## Identifies the revision status of the element
+  attribute revisionflag { db.revisionflag.enumeration }
+db.dir.enumeration =
+  
+  ## Left-to-right text
+  "ltr"
+  | 
+    ## Right-to-left text
+    "rtl"
+  | 
+    ## Left-to-right override
+    "lro"
+  | 
+    ## Right-to-left override
+    "rlo"
+db.dir.attribute =
+  
+  ## Identifies the direction of text in an element
+  attribute dir { db.dir.enumeration }
+db.common.base.attributes =
+  db.version.attribute?
+  & db.xml.lang.attribute?
+  & db.xml.base.attribute?
+  & db.remap.attribute?
+  & db.xreflabel.attribute?
+  & db.revisionflag.attribute?
+  & db.dir.attribute?
+  & db.effectivity.attributes
+db.common.attributes =
+  db.xml.id.attribute?
+  & db.common.base.attributes
+  & db.annotations.attribute?
+db.common.idreq.attributes =
+  db.xml.id.attribute
+  & db.common.base.attributes
+  & db.annotations.attribute?
+db.common.linking.attributes =
+  (db.linkend.attribute | db.xlink.attributes)?
+db.common.req.linking.attributes =
+  db.linkend.attribute | db.xlink.attributes
+db.common.data.attributes =
+  
+  ## Specifies the format of the data
+  attribute format { text }?,
+  (
+   ## Indentifies the location of the data by URI
+   attribute fileref { xsd:anyURI }
+   | 
+     ## Identifies the location of the data by external identifier (entity name)
+     attribute entityref { xsd:ENTITY })
+db.verbatim.continuation.enumeration =
+  
+  ## Line numbering continues from the immediately preceding element with the same name.
+  "continues"
+  | 
+    ## Line numbering restarts (begins at 1, usually).
+    "restarts"
+db.verbatim.continuation.attribute =
+  
+  ## Determines whether line numbering continues from the previous element or restarts.
+  attribute continuation { db.verbatim.continuation.enumeration }
+db.verbatim.linenumbering.enumeration =
+  
+  ## Lines are numbered.
+  "numbered"
+  | 
+    ## Lines are not numbered.
+    "unnumbered"
+db.verbatim.linenumbering.attribute =
+  
+  ## Determines whether lines are numbered.
+  attribute linenumbering { db.verbatim.linenumbering.enumeration }
+db.verbatim.startinglinenumber.attribute =
+  
+  ## Specifies the initial line number.
+  attribute startinglinenumber { xsd:integer }
+db.verbatim.language.attribute =
+  
+  ## Identifies the language (i.e. programming language) of the verbatim content.
+  attribute language { text }
+db.verbatim.xml.space.attribute =
+  
+  ## 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.
+  attribute xml:space {
+    
+    ## Whitespace must be preserved.
+    "preserve"
+  }
+db.verbatim.common.attributes =
+  db.verbatim.continuation.attribute?
+  & db.verbatim.linenumbering.attribute?
+  & db.verbatim.startinglinenumber.attribute?
+  & db.verbatim.xml.space.attribute?
+db.verbatim.attributes =
+  db.verbatim.common.attributes & db.verbatim.language.attribute?
+db.label.attribute =
+  
+  ## Specifies an identifying string for presentation purposes
+  attribute label { text }
+db.width.characters.attribute =
+  
+  ## Specifies the width (in characters) of the element
+  attribute width { xsd:nonNegativeInteger }
+db.spacing.enumeration =
+  
+  ## The spacing should be "compact".
+  "compact"
+  | 
+    ## The spacing should be "normal".
+    "normal"
+db.spacing.attribute =
+  
+  ## Specifies (a hint about) the spacing of the content
+  attribute spacing { db.spacing.enumeration }
+db.pgwide.enumeration =
+  
+  ## The element should be rendered in the current text flow (with the flow column width).
+  "0"
+  | 
+    ## The element should be rendered across the full text page.
+    "1"
+db.pgwide.attribute =
+  
+  ## Indicates if the element is rendered across the column or the page
+  attribute pgwide { db.pgwide.enumeration }
+db.language.attribute =
+  
+  ## Identifies the language (i.e. programming language) of the content.
+  attribute language { text }
+db.performance.enumeration =
+  
+  ## The content describes an optional step or steps.
+  "optional"
+  | 
+    ## The content describes a required step or steps.
+    "required"
+db.performance.attribute =
+  
+  ## Specifies if the content is required or optional.
+  attribute performance { db.performance.enumeration }
+db.floatstyle.attribute =
+  
+  ## Specifies style information to be used when rendering the float
+  attribute floatstyle { text }
+db.width.attribute =
+  
+  ## Specifies the width of the element
+  attribute width { text }
+db.depth.attribute =
+  
+  ## Specifies the depth of the element
+  attribute depth { text }
+db.contentwidth.attribute =
+  
+  ## Specifies the width of the content rectangle
+  attribute contentwidth { text }
+db.contentdepth.attribute =
+  
+  ## Specifies the depth of the content rectangle
+  attribute contentdepth { text }
+db.scalefit.enumeration =
+  
+  ## False (do not scale-to-fit; anamorphic scaling may occur)
+  "0"
+  | 
+    ## True (scale-to-fit; anamorphic scaling is forbidden)
+    "1"
+db.scale.attribute =
+  
+  ## Specifies the scaling factor
+  attribute scale { xsd:positiveInteger }
+db.classid.attribute =
+  
+  ## Specifies a classid for a media object player
+  attribute classid { text }
+db.autoplay.attribute =
+  
+  ## Specifies the autoplay setting for a media object player
+  attribute autoplay { text }
+db.halign.enumeration =
+  
+  ## Centered horizontally
+  "center"
+  | 
+    ## Aligned horizontally on the specified character
+    "char"
+  | 
+    ## Fully justified (left and right margins or edges)
+    "justify"
+  | 
+    ## Left aligned
+    "left"
+  | 
+    ## Right aligned
+    "right"
+db.valign.enumeration =
+  
+  ## Aligned on the bottom of the region
+  "bottom"
+  | 
+    ## Centered vertically
+    "middle"
+  | 
+    ## Aligned on the top of the region
+    "top"
+db.biblio.class.enumeration =
+  
+  ## A digital object identifier.
+  "doi"
+  | 
+    ## An international standard book number.
+    "isbn"
+  | 
+    ## An international standard technical report number (ISO 10444).
+    "isrn"
+  | 
+    ## An international standard serial number.
+    "issn"
+  | 
+    ## An international standard text code.
+    "istc"
+  | 
+    ## A Library of Congress reference number.
+    "libraryofcongress"
+  | 
+    ## A publication number (an internal number or possibly organizational standard).
+    "pubsnumber"
+  | 
+    ## A Uniform Resource Identifier
+    "uri"
+db.biblio.class-enum.attribute =
+  
+  ## Identifies the kind of bibliographic identifier
+  attribute class { db.biblio.class.enumeration }?
+db.biblio.class-other.attribute =
+  
+  ## Identifies the nature of the non-standard bibliographic identifier
+  attribute otherclass { xsd:NMTOKEN }
+db.biblio.class-other.attributes =
+  
+  ## Identifies the kind of bibliographic identifier
+  attribute class {
+    
+    ## Indicates that the identifier is some 'other' kind.
+    "other"
+  }
+  & db.biblio.class-other.attribute
+db.biblio.class.attribute =
+  db.biblio.class-enum.attribute | db.biblio.class-other.attributes
+db.ubiq.inlines =
+  (db.inlinemediaobject
+   | db.remark
+   | db.link.inlines
+   | db.alt
+   | db.trademark
+   | # below, effectively the publishing inlines (as of 5.0)
+     db.abbrev
+   | db.acronym
+   | db.date
+   | db._emphasis
+   | db.footnote
+   | db.footnoteref
+   | db._foreignphrase
+   | db._phrase
+   | db._quote
+   | db.subscript
+   | db.superscript
+   | db.wordasword)
+  | db.annotation
+  | (db._firstterm | db._glossterm)
+  | db.indexterm
+  | db.coref
+db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)*
+db._title = db.title? & db.titleabbrev? & db.subtitle?
+db._title.req = db.title & db.titleabbrev? & db.subtitle?
+db._title.only = db.title? & db.titleabbrev?
+db._title.onlyreq = db.title & db.titleabbrev?
+db._info = (db._title, db.titleforbidden.info?) | db.info?
+db._info.title.req =
+  (db._title.req, db.titleforbidden.info?) | db.titlereq.info
+db._info.title.only =
+  (db._title.only, db.titleforbidden.info?) | db.titleonly.info
+db._info.title.onlyreq =
+  (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info
+db._info.title.forbidden = db.titleforbidden.info?
+db.all.inlines =
+  text | db.ubiq.inlines | db.general.inlines | db.domain.inlines
+db.general.inlines =
+  db.publishing.inlines
+  | db.product.inlines
+  | db.bibliography.inlines
+  | db.graphic.inlines
+  | db.indexing.inlines
+  | db.link.inlines
+db.domain.inlines =
+  db.technical.inlines
+  | db.math.inlines
+  | db.markup.inlines
+  | db.gui.inlines
+  | db.keyboard.inlines
+  | db.os.inlines
+  | db.programming.inlines
+  | db.error.inlines
+db.technical.inlines =
+  (db.replaceable | db.package | db.parameter)
+  | db.termdef
+  | db.nonterminal
+  | (db.systemitem | db.option | db.optional | db.property)
+db.product.inlines =
+  db.trademark
+  | (db.productnumber
+     | db.productname
+     | db.database
+     | db.application
+     | db.hardware)
+db.bibliography.inlines =
+  db.citation
+  | db.citerefentry
+  | db.citetitle
+  | db.citebiblioid
+  | db.author
+  | db.person
+  | db.personname
+  | db.org
+  | db.orgname
+  | db.editor
+  | db.jobtitle
+db.publishing.inlines =
+  (db.abbrev
+   | db.acronym
+   | db.date
+   | db.emphasis
+   | db.footnote
+   | db.footnoteref
+   | db.foreignphrase
+   | db.phrase
+   | db.quote
+   | db.subscript
+   | db.superscript
+   | db.wordasword)
+  | db.glossary.inlines
+  | db.coref
+db.graphic.inlines = db.inlinemediaobject
+db.indexing.inlines = notAllowed | db.indexterm
+db.link.inlines =
+  (db.xref | db.link | db.olink | db.anchor) | db.biblioref
+db.nopara.blocks =
+  (db.list.blocks
+   | db.formal.blocks
+   | db.informal.blocks
+   | db.publishing.blocks
+   | db.graphic.blocks
+   | db.technical.blocks
+   | db.verbatim.blocks
+   | db.bridgehead
+   | db.remark
+   | db.revhistory)
+  | db.indexterm
+  | db.synopsis.blocks
+  | db.admonition.blocks
+db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara
+db.all.blocks = (db.nopara.blocks | db.para.blocks) | db.annotation
+db.formal.blocks = (db.example | db.figure | db.table) | db.equation
+db.informal.blocks =
+  (db.informalexample | db.informalfigure | db.informaltable)
+  | db.informalequation
+db.publishing.blocks =
+  db.sidebar | db.blockquote | db.address | db.epigraph
+db.graphic.blocks = db.mediaobject | db.screenshot
+db.technical.blocks =
+  db.procedure
+  | db.task
+  | (db.productionset | db.constraintdef)
+  | db.msgset
+db.list.blocks =
+  (db.itemizedlist
+   | db.orderedlist
+   | db.procedure
+   | db.simplelist
+   | db.variablelist
+   | db.segmentedlist)
+  | db.glosslist
+  | db.bibliolist
+  | db.calloutlist
+  | db.qandaset
+db.verbatim.blocks =
+  (db.screen | db.literallayout)
+  | (db.programlistingco | db.screenco)
+  | (db.programlisting | db.synopsis)
+db.info.extension = db._any
+db.info.elements =
+  (db.abstract
+   | db.address
+   | db.artpagenums
+   | db.author
+   | db.authorgroup
+   | db.authorinitials
+   | db.bibliocoverage
+   | db.biblioid
+   | db.bibliosource
+   | db.collab
+   | db.confgroup
+   | db.contractsponsor
+   | db.contractnum
+   | db.copyright
+   | db.cover
+   | db.date
+   | db.edition
+   | db.editor
+   | db.issuenum
+   | db.keywordset
+   | db.legalnotice
+   | db.mediaobject
+   | db.org
+   | db.orgname
+   | db.othercredit
+   | db.pagenums
+   | db.printhistory
+   | db.pubdate
+   | db.publisher
+   | db.publishername
+   | db.releaseinfo
+   | db.revhistory
+   | db.seriesvolnums
+   | db.subjectset
+   | db.volumenum
+   | db.info.extension)
+  | db.annotation
+  | db.extendedlink
+  | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset)
+  | db.itermset
+  | (db.productname | db.productnumber)
+db.bibliographic.elements =
+  db.info.elements
+  | db.publishing.inlines
+  | db.citerefentry
+  | db.citetitle
+  | db.citebiblioid
+  | db.person
+  | db.personblurb
+  | db.personname
+  | db.subtitle
+  | db.title
+  | db.titleabbrev
+div {
+  db.title.role.attribute = attribute role { text }
+  db.title.attlist =
+    db.title.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.title =
+    
+    ## The text of the title of a section of a document or of a formal block-level element
+    element title { db.title.attlist, db.all.inlines* }
+}
+div {
+  db.titleabbrev.role.attribute = attribute role { text }
+  db.titleabbrev.attlist =
+    db.titleabbrev.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.titleabbrev =
+    
+    ## The abbreviation of a title
+    element titleabbrev { db.titleabbrev.attlist, db.all.inlines* }
+}
+div {
+  db.subtitle.role.attribute = attribute role { text }
+  db.subtitle.attlist =
+    db.subtitle.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.subtitle =
+    
+    ## The subtitle of a document
+    element subtitle { db.subtitle.attlist, db.all.inlines* }
+}
+div {
+  db.info.role.attribute = attribute role { text }
+  db.info.attlist = db.info.role.attribute? & db.common.attributes
+  db.info =
+    
+    ## A wrapper for information about a component or other block
+    element info { db.info.attlist, (db._title & db.info.elements*) }
+}
+div {
+  db.titlereq.info.role.attribute = attribute role { text }
+  db.titlereq.info.attlist =
+    db.titlereq.info.role.attribute? & db.common.attributes
+  db.titlereq.info =
+    
+    ## A wrapper for information about a component or other block with a required title
+    element info {
+      db.titlereq.info.attlist, (db._title.req & db.info.elements*)
+    }
+}
+div {
+  db.titleonly.info.role.attribute = attribute role { text }
+  db.titleonly.info.attlist =
+    db.titleonly.info.role.attribute? & db.common.attributes
+  db.titleonly.info =
+    
+    ## A wrapper for information about a component or other block with only a title
+    element info {
+      db.titleonly.info.attlist, (db._title.only & db.info.elements*)
+    }
+}
+div {
+  db.titleonlyreq.info.role.attribute = attribute role { text }
+  db.titleonlyreq.info.attlist =
+    db.titleonlyreq.info.role.attribute? & db.common.attributes
+  db.titleonlyreq.info =
+    
+    ## A wrapper for information about a component or other block with only a required title
+    element info {
+      db.titleonlyreq.info.attlist,
+      (db._title.onlyreq & db.info.elements*)
+    }
+}
+div {
+  db.titleforbidden.info.role.attribute = attribute role { text }
+  db.titleforbidden.info.attlist =
+    db.titleforbidden.info.role.attribute? & db.common.attributes
+  db.titleforbidden.info =
+    
+    ## A wrapper for information about a component or other block without a title
+    element info { db.titleforbidden.info.attlist, db.info.elements* }
+}
+div {
+  db.subjectset.role.attribute = attribute role { text }
+  db.subjectset.scheme.attribute =
+    
+    ## Identifies the controlled vocabulary used by this set's terms
+    attribute scheme { xsd:NMTOKEN }
+  db.subjectset.attlist =
+    db.subjectset.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.subjectset.scheme.attribute?
+  db.subjectset =
+    
+    ## A set of terms describing the subject matter of a document
+    element subjectset { db.subjectset.attlist, db.subject+ }
+}
+div {
+  db.subject.role.attribute = attribute role { text }
+  db.subject.weight.attribute =
+    
+    ## Specifies a ranking for this subject relative to other subjects in the same set
+    attribute weight { text }
+  db.subject.attlist =
+    db.subject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.subject.weight.attribute?
+  db.subject =
+    
+    ## One of a group of terms describing the subject matter of a document
+    element subject { db.subject.attlist, db.subjectterm+ }
+}
+div {
+  db.subjectterm.role.attribute = attribute role { text }
+  db.subjectterm.attlist =
+    db.subjectterm.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.subjectterm =
+    
+    ## A term in a group of terms describing the subject matter of a document
+    element subjectterm { db.subjectterm.attlist, text }
+}
+div {
+  db.keywordset.role.attribute = attribute role { text }
+  db.keywordset.attlist =
+    db.keywordset.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.keywordset =
+    
+    ## A set of keywords describing the content of a document
+    element keywordset { db.keywordset.attlist, db.keyword+ }
+}
+div {
+  db.keyword.role.attribute = attribute role { text }
+  db.keyword.attlist =
+    db.keyword.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.keyword =
+    
+    ## One of a set of keywords describing the content of a document
+    element keyword { db.keyword.attlist, text }
+}
+db.table.choice = notAllowed | db.cals.table | db.html.table
+db.informaltable.choice =
+  notAllowed | db.cals.informaltable | db.html.informaltable
+db.table = db.table.choice
+db.informaltable = db.informaltable.choice
+div {
+  db.procedure.role.attribute = attribute role { text }
+  db.procedure.attlist =
+    db.procedure.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.procedure.info = db._info.title.only
+  db.procedure =
+    
+    ## A list of operations to be performed in a well-defined sequence
+    element procedure {
+      db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+
+    }
+}
+div {
+  db.step.role.attribute = attribute role { text }
+  db.step.attlist =
+    db.step.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.performance.attribute?
+  db.step.info = db._info.title.only
+  # This content model is blocks*, step|stepalternatives, blocks* but
+  # expressed this way it avoids UPA issues in XSD and DTD versions
+  db.step =
+    
+    ## A unit of action in a procedure
+    element step {
+      db.step.attlist,
+      db.step.info,
+      ((db.all.blocks+,
+        ((db.substeps | db.stepalternatives), db.all.blocks*)?)
+       | ((db.substeps | db.stepalternatives), db.all.blocks*))
+    }
+}
+div {
+  db.stepalternatives.role.attribute = attribute role { text }
+  db.stepalternatives.attlist =
+    db.stepalternatives.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.performance.attribute?
+  db.stepalternatives.info = db._info.title.forbidden
+  db.stepalternatives =
+    
+    ## Alternative steps in a procedure
+    element stepalternatives {
+      db.stepalternatives.attlist, db.stepalternatives.info, db.step+
+    }
+}
+div {
+  db.substeps.role.attribute = attribute role { text }
+  db.substeps.attlist =
+    db.substeps.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.performance.attribute?
+  db.substeps =
+    
+    ## A wrapper for steps that occur within steps in a procedure
+    element substeps { db.substeps.attlist, db.step+ }
+}
+div {
+  db.sidebar.floatstyle.attribute = db.floatstyle.attribute
+  db.sidebar.role.attribute = attribute role { text }
+  db.sidebar.attlist =
+    db.sidebar.role.attribute?
+    & db.sidebar.floatstyle.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.sidebar.info = db._info
+  db.sidebar =
+    
+    ## A portion of a document that is isolated from the main narrative flow
+    [
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:sidebar"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:sidebar)"
+            "sidebar must not occur among the children or descendants of sidebar"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+    ]
+    element sidebar {
+      db.sidebar.attlist, db.sidebar.info, db.all.blocks+
+    }
+}
+div {
+  db.abstract.role.attribute = attribute role { text }
+  db.abstract.attlist =
+    db.abstract.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.abstract.info = db._info.title.only
+  db.abstract =
+    
+    ## A summary
+    element abstract {
+      db.abstract.attlist, db.abstract.info, db.para.blocks+
+    }
+}
+div {
+  db.personblurb.role.attribute = attribute role { text }
+  db.personblurb.attlist =
+    db.personblurb.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.personblurb.info = db._info.title.only
+  db.personblurb =
+    
+    ## A short description or note about a person
+    element personblurb {
+      db.personblurb.attlist, db.personblurb.info, db.para.blocks+
+    }
+}
+div {
+  db.blockquote.role.attribute = attribute role { text }
+  db.blockquote.attlist =
+    db.blockquote.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.blockquote.info = db._info.title.only
+  db.blockquote =
+    
+    ## A quotation set off from the main text
+    element blockquote {
+      db.blockquote.attlist,
+      db.blockquote.info,
+      db.attribution?,
+      db.all.blocks+
+    }
+}
+div {
+  db.attribution.role.attribute = attribute role { text }
+  db.attribution.attlist =
+    db.attribution.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.attribution =
+    
+    ## The source of a block quote or epigraph
+    element attribution {
+      db.attribution.attlist,
+      (db._text
+       | db.person
+       | db.personname
+       | db.citetitle
+       | db.citation)*
+    }
+}
+div {
+  db.bridgehead.renderas.enumeration =
+    
+    ## Render as a first-level section
+    "sect1"
+    | 
+      ## Render as a second-level section
+      "sect2"
+    | 
+      ## Render as a third-level section
+      "sect3"
+    | 
+      ## Render as a fourth-level section
+      "sect4"
+    | 
+      ## Render as a fifth-level section
+      "sect5"
+  db.bridgehead.renderas-enum.attribute =
+    
+    ## Indicates how the bridge head should be rendered
+    attribute renderas { db.bridgehead.renderas.enumeration }?
+  db.bridgehead.renderas-other.attribute =
+    
+    ## Identifies the nature of the non-standard rendering
+    attribute otherrenderas { xsd:NMTOKEN }
+  db.bridgehead.renderas-other.attributes =
+    
+    ## Indicates how the bridge head should be rendered
+    attribute renderas {
+      
+      ## Identifies a non-standard rendering
+      "other"
+    }
+    & db.bridgehead.renderas-other.attribute
+  db.bridgehead.renderas.attribute =
+    db.bridgehead.renderas-enum.attribute
+    | db.bridgehead.renderas-other.attributes
+  db.bridgehead.role.attribute = attribute role { text }
+  db.bridgehead.attlist =
+    db.bridgehead.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.bridgehead.renderas.attribute?
+  db.bridgehead =
+    
+    ## A free-floating heading
+    element bridgehead { db.bridgehead.attlist, db.all.inlines* }
+}
+div {
+  db.remark.role.attribute = attribute role { text }
+  db.remark.attlist =
+    db.remark.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.remark =
+    
+    ## A remark (or comment) intended for presentation in a draft manuscript
+    element remark { db.remark.attlist, db.all.inlines* }
+}
+div {
+  db.epigraph.role.attribute = attribute role { text }
+  db.epigraph.attlist =
+    db.epigraph.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.epigraph.info = db._info.title.forbidden
+  db.epigraph =
+    
+    ## A short inscription at the beginning of a document or component
+    element epigraph {
+      db.epigraph.attlist,
+      db.epigraph.info,
+      db.attribution?,
+      (db.para.blocks | db.literallayout)+
+    }
+}
+div {
+  db.footnote.role.attribute = attribute role { text }
+  db.footnote.label.attribute =
+    
+    ## Identifies the desired footnote mark
+    attribute label { xsd:NMTOKEN }
+  db.footnote.attlist =
+    db.footnote.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.footnote.label.attribute?
+  db.footnote =
+    
+    ## A footnote
+    [
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:footnote)"
+            "footnote must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:example)"
+            "example must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:figure)"
+            "figure must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:table)"
+            "table must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:equation)"
+            "equation must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:sidebar)"
+            "sidebar must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:task)"
+            "task must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:epigraph)"
+            "epigraph must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:caution)"
+            "caution must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:important)"
+            "important must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:note)"
+            "note must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:tip)"
+            "tip must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:footnote"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:warning)"
+            "warning must not occur among the children or descendants of footnote"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+    ]
+    element footnote { db.footnote.attlist, db.all.blocks+ }
+}
+div {
+  db.formalpara.role.attribute = attribute role { text }
+  db.formalpara.attlist =
+    db.formalpara.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.formalpara.info = db._info.title.onlyreq
+  db.formalpara =
+    
+    ## A paragraph with a title
+    element formalpara {
+      db.formalpara.attlist,
+      db.formalpara.info,
+      db.indexing.inlines*,
+      db.para
+    }
+}
+div {
+  db.para.role.attribute = attribute role { text }
+  db.para.attlist =
+    db.para.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.para.info = db._info.title.forbidden
+  db.para =
+    
+    ## A paragraph
+    element para {
+      db.para.attlist,
+      db.para.info,
+      (db.all.inlines | db.nopara.blocks)*
+    }
+}
+div {
+  db.simpara.role.attribute = attribute role { text }
+  db.simpara.attlist =
+    db.simpara.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.simpara.info = db._info.title.forbidden
+  db.simpara =
+    
+    ## A paragraph that contains only text and inline markup, no block elements
+    element simpara {
+      db.simpara.attlist, db.simpara.info, db.all.inlines*
+    }
+}
+div {
+  db.itemizedlist.role.attribute = attribute role { text }
+  db.itemizedlist.mark.attribute =
+    
+    ## Identifies the type of mark to be used on items in this list
+    attribute mark { xsd:NMTOKEN }
+  db.itemizedlist.attlist =
+    db.itemizedlist.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.spacing.attribute?
+    & db.itemizedlist.mark.attribute?
+  db.itemizedlist.info = db._info.title.only
+  db.itemizedlist =
+    
+    ## A list in which each entry is marked with a bullet or other dingbat
+    element itemizedlist {
+      db.itemizedlist.attlist,
+      db.itemizedlist.info,
+      db.all.blocks*,
+      db.listitem+
+    }
+}
+div {
+  db.orderedlist.role.attribute = attribute role { text }
+  db.orderedlist.continuation.enumeration =
+    
+    ## Specifies that numbering should begin where the preceding list left off
+    "continues"
+    | 
+      ## Specifies that numbering should begin again at 1
+      "restarts"
+  db.orderedlist.continuation.attribute =
+    
+    ## Indicates how list numbering should begin relative to the immediately preceding list
+    attribute continuation { db.orderedlist.continuation.enumeration }
+  db.orderedlist.startingnumber.attribute =
+    
+    ## Specifies the initial line number.
+    attribute startingnumber { xsd:integer }
+  db.orderedlist.inheritnum.enumeration =
+    
+    ## Specifies that numbering should ignore list nesting
+    "ignore"
+    | 
+      ## Specifies that numbering should inherit from outer-level lists
+      "inherit"
+  db.orderedlist.inheritnum.attribute =
+    
+    ## Indicates whether or not item numbering should be influenced by list nesting
+    attribute inheritnum { db.orderedlist.inheritnum.enumeration }
+  db.orderedlist.numeration.enumeration =
+    
+    ## Specifies Arabic numeration (1, 2, 3, …)
+    "arabic"
+    | 
+      ## Specifies upper-case alphabetic numeration (A, B, C, …)
+      "upperalpha"
+    | 
+      ## Specifies lower-case alphabetic numeration (a, b, c, …)
+      "loweralpha"
+    | 
+      ## Specifies upper-case Roman numeration (I, II, III, …)
+      "upperroman"
+    | 
+      ## Specifies lower-case Roman numeration (i, ii, iii …)
+      "lowerroman"
+  db.orderedlist.numeration.attribute =
+    
+    ## Indicates the desired numeration
+    attribute numeration { db.orderedlist.numeration.enumeration }
+  db.orderedlist.attlist =
+    db.orderedlist.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.spacing.attribute?
+    & (db.orderedlist.continuation.attribute
+       | db.orderedlist.startingnumber.attribute)?
+    & db.orderedlist.inheritnum.attribute?
+    & db.orderedlist.numeration.attribute?
+  db.orderedlist.info = db._info.title.only
+  db.orderedlist =
+    
+    ## A list in which each entry is marked with a sequentially incremented label
+    element orderedlist {
+      db.orderedlist.attlist,
+      db.orderedlist.info,
+      db.all.blocks*,
+      db.listitem+
+    }
+}
+div {
+  db.listitem.role.attribute = attribute role { text }
+  db.listitem.override.attribute =
+    
+    ## Specifies the keyword for the type of mark that should be used on this
+    ##  item, instead of the mark that would be used by default
+    attribute override { xsd:NMTOKEN }
+  db.listitem.attlist =
+    db.listitem.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.listitem.override.attribute?
+  db.listitem =
+    
+    ## A wrapper for the elements of a list item
+    element listitem { db.listitem.attlist, db.all.blocks+ }
+}
+div {
+  db.segmentedlist.role.attribute = attribute role { text }
+  db.segmentedlist.attlist =
+    db.segmentedlist.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.segmentedlist.info = db._info.title.only
+  db.segmentedlist =
+    
+    ## A segmented list, a list of sets of elements
+    element segmentedlist {
+      db.segmentedlist.attlist,
+      db.segmentedlist.info,
+      db.segtitle+,
+      db.seglistitem+
+    }
+}
+div {
+  db.segtitle.role.attribute = attribute role { text }
+  db.segtitle.attlist =
+    db.segtitle.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.segtitle =
+    
+    ## The title of an element of a list item in a segmented list
+    element segtitle { db.segtitle.attlist, db.all.inlines* }
+}
+div {
+  db.seglistitem.role.attribute = attribute role { text }
+  db.seglistitem.attlist =
+    db.seglistitem.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.seglistitem =
+    
+    ## A list item in a segmented list
+    [
+      s:pattern [
+        name = "Cardinality of segments and titles"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:seglistitem"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "count(db:seg) = count(../db:segtitle)"
+            "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+    ]
+    element seglistitem { db.seglistitem.attlist, db.seg+ }
+}
+div {
+  db.seg.role.attribute = attribute role { text }
+  db.seg.attlist =
+    db.seg.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.seg =
+    
+    ## An element of a list item in a segmented list
+    element seg { db.seg.attlist, db.all.inlines* }
+}
+div {
+  db.simplelist.role.attribute = attribute role { text }
+  db.simplelist.type.enumeration =
+    
+    ## A tabular presentation in row-major order.
+    "horiz"
+    | 
+      ## A tabular presentation in column-major order.
+      "vert"
+    | 
+      ## An inline presentation, usually a comma-delimited list.
+      "inline"
+  db.simplelist.type.attribute =
+    
+    ## Specifies the type of list presentation.
+    [ a:defaultValue = "vert" ]
+    attribute type { db.simplelist.type.enumeration }
+  db.simplelist.columns.attribute =
+    
+    ## Specifies the number of columns for horizontal or vertical presentation
+    attribute columns { xsd:integer }
+  db.simplelist.attlist =
+    db.simplelist.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.simplelist.type.attribute?
+    & db.simplelist.columns.attribute?
+  db.simplelist =
+    
+    ## An undecorated list of single words or short phrases
+    element simplelist { db.simplelist.attlist, db.member+ }
+}
+div {
+  db.member.role.attribute = attribute role { text }
+  db.member.attlist =
+    db.member.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.member =
+    
+    ## An element of a simple list
+    element member { db.member.attlist, db.all.inlines* }
+}
+div {
+  db.variablelist.role.attribute = attribute role { text }
+  db.variablelist.termlength.attribute =
+    
+    ## 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
+    attribute termlength { text }
+  db.variablelist.attlist =
+    db.variablelist.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.spacing.attribute?
+    & db.variablelist.termlength.attribute?
+  db.variablelist.info = db._info.title.only
+  db.variablelist =
+    
+    ## A list in which each entry is composed of a set of one or more terms and an associated description
+    element variablelist {
+      db.variablelist.attlist,
+      db.variablelist.info,
+      db.all.blocks*,
+      db.varlistentry+
+    }
+}
+div {
+  db.varlistentry.role.attribute = attribute role { text }
+  db.varlistentry.attlist =
+    db.varlistentry.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.varlistentry =
+    
+    ## A wrapper for a set of terms and the associated description in a variable list
+    element varlistentry {
+      db.varlistentry.attlist, db.term+, db.listitem
+    }
+}
+div {
+  db.term.role.attribute = attribute role { text }
+  db.term.attlist =
+    db.term.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.term =
+    
+    ## The word or phrase being defined or described in a variable list
+    element term { db.term.attlist, db.all.inlines* }
+}
+div {
+  db.example.role.attribute = attribute role { text }
+  db.example.label.attribute = db.label.attribute
+  db.example.width.attribute = db.width.characters.attribute
+  db.example.pgwide.attribute = db.pgwide.attribute
+  db.example.floatstyle.attribute = db.floatstyle.attribute
+  db.example.attlist =
+    db.example.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.example.label.attribute?
+    & db.example.floatstyle.attribute?
+    & (db.example.width.attribute | db.example.pgwide.attribute)?
+  db.example.info = db._info.title.onlyreq
+  db.example =
+    
+    ## A formal example, with a title
+    [
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:example)"
+            "example must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:figure)"
+            "figure must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:table)"
+            "table must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:equation)"
+            "equation must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:caution)"
+            "caution must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:important)"
+            "important must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:note)"
+            "note must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:tip)"
+            "tip must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:example"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:warning)"
+            "warning must not occur among the children or descendants of example"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+    ]
+    element example {
+      db.example.attlist, db.example.info, db.all.blocks+, db.caption?
+    }
+}
+div {
+  db.informalexample.role.attribute = attribute role { text }
+  db.informalexample.width.attribute = db.width.characters.attribute
+  db.informalexample.pgwide.attribute = db.pgwide.attribute
+  db.informalexample.floatstyle.attribute = db.floatstyle.attribute
+  db.informalexample.attlist =
+    db.informalexample.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.informalexample.floatstyle.attribute?
+    & (db.informalexample.width.attribute
+       | db.informalexample.pgwide.attribute)?
+  db.informalexample.info = db._info.title.forbidden
+  db.informalexample =
+    
+    ## A displayed example without a title
+    element informalexample {
+      db.informalexample.attlist,
+      db.informalexample.info,
+      db.all.blocks+,
+      db.caption?
+    }
+}
+db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co
+db.verbatim.contentmodel =
+  db._info.title.forbidden, (db.textobject | db.verbatim.inlines*)
+div {
+  db.literallayout.role.attribute = attribute role { text }
+  db.literallayout.class.enumeration =
+    
+    ## The literal layout should be formatted with a monospaced font
+    "monospaced"
+    | 
+      ## The literal layout should be formatted with the current font
+      "normal"
+  db.literallayout.class.attribute =
+    
+    ## Specifies the class of literal layout
+    attribute class { db.literallayout.class.enumeration }
+  db.literallayout.attlist =
+    db.literallayout.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.verbatim.attributes
+    & db.literallayout.class.attribute?
+  db.literallayout =
+    
+    ## A block of text in which line breaks and white space are to be reproduced faithfully
+    element literallayout {
+      db.literallayout.attlist, db.verbatim.contentmodel
+    }
+}
+div {
+  db.screen.role.attribute = attribute role { text }
+  db.screen.width.attribute = db.width.characters.attribute
+  db.screen.attlist =
+    db.screen.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.verbatim.attributes
+    & db.screen.width.attribute?
+  db.screen =
+    
+    ## Text that a user sees or might see on a computer screen
+    element screen { db.screen.attlist, db.verbatim.contentmodel }
+}
+div {
+  db.screenshot.role.attribute = attribute role { text }
+  db.screenshot.attlist =
+    db.screenshot.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.screenshot.info = db._info
+  db.screenshot =
+    
+    ## A representation of what the user sees or might see on a computer screen
+    element screenshot {
+      db.screenshot.attlist, db.screenshot.info, db.mediaobject
+    }
+}
+div {
+  db.figure.role.attribute = attribute role { text }
+  db.figure.label.attribute = db.label.attribute
+  db.figure.pgwide.attribute = db.pgwide.attribute
+  db.figure.floatstyle.attribute = db.floatstyle.attribute
+  db.figure.attlist =
+    db.figure.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.figure.label.attribute?
+    & db.figure.pgwide.attribute?
+    & db.figure.floatstyle.attribute?
+  db.figure.info = db._info.title.onlyreq
+  db.figure =
+    
+    ## A formal figure, generally an illustration, with a title
+    [
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:example)"
+            "example must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:figure)"
+            "figure must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:table)"
+            "table must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:equation)"
+            "equation must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:caution)"
+            "caution must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:important)"
+            "important must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:note)"
+            "note must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:tip)"
+            "tip must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:figure"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:warning)"
+            "warning must not occur among the children or descendants of figure"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+    ]
+    element figure {
+      db.figure.attlist, db.figure.info, db.all.blocks+, db.caption?
+    }
+}
+div {
+  db.informalfigure.role.attribute = attribute role { text }
+  db.informalfigure.label.attribute = db.label.attribute
+  db.informalfigure.pgwide.attribute = db.pgwide.attribute
+  db.informalfigure.floatstyle.attribute = db.floatstyle.attribute
+  db.informalfigure.attlist =
+    db.informalfigure.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.informalfigure.label.attribute?
+    & db.informalfigure.pgwide.attribute?
+    & db.informalfigure.floatstyle.attribute?
+  db.informalfigure.info = db._info.title.forbidden
+  db.informalfigure =
+    
+    ## A untitled figure
+    element informalfigure {
+      db.informalfigure.attlist,
+      db.informalfigure.info,
+      db.all.blocks+,
+      db.caption?
+    }
+}
+db.mediaobject.content =
+  (db.videoobject | db.audioobject | db.imageobject | db.textobject)
+  | db.imageobjectco
+div {
+  db.mediaobject.role.attribute = attribute role { text }
+  db.mediaobject.attlist =
+    db.mediaobject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.mediaobject.info = db._info.title.forbidden
+  db.mediaobject =
+    
+    ## A displayed media object (video, audio, image, etc.)
+    element mediaobject {
+      db.mediaobject.attlist,
+      db.mediaobject.info,
+      db.alt?,
+      db.mediaobject.content+,
+      db.caption?
+    }
+}
+div {
+  db.inlinemediaobject.role.attribute = attribute role { text }
+  db.inlinemediaobject.attlist =
+    db.inlinemediaobject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.inlinemediaobject.info = db._info.title.forbidden
+  db.inlinemediaobject =
+    
+    ## An inline media object (video, audio, image, and so on)
+    element inlinemediaobject {
+      db.inlinemediaobject.attlist,
+      db.inlinemediaobject.info,
+      db.alt?,
+      db.mediaobject.content+
+    }
+}
+div {
+  db.videoobject.role.attribute = attribute role { text }
+  db.videoobject.attlist =
+    db.videoobject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.videoobject.info = db._info.title.forbidden
+  db.videoobject =
+    
+    ## A wrapper for video data and its associated meta-information
+    element videoobject {
+      db.videoobject.attlist,
+      db.videoobject.info,
+      db.videodata,
+      db.multimediaparam*
+    }
+}
+div {
+  db.audioobject.role.attribute = attribute role { text }
+  db.audioobject.attlist =
+    db.audioobject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.audioobject.info = db._info.title.forbidden
+  db.audioobject =
+    
+    ## A wrapper for audio data and its associated meta-information
+    element audioobject {
+      db.audioobject.attlist,
+      db.audioobject.info,
+      db.audiodata,
+      db.multimediaparam*
+    }
+}
+db.imageobject.content =
+  db.imagedata | db.imagedata.mathml | db.imagedata.svg
+div {
+  db.imageobject.role.attribute = attribute role { text }
+  db.imageobject.attlist =
+    db.imageobject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.imageobject.info = db._info.title.forbidden
+  db.imageobject =
+    
+    ## A wrapper for image data and its associated meta-information
+    element imageobject {
+      db.imageobject.attlist,
+      db.imageobject.info,
+      db.imageobject.content
+    }
+}
+div {
+  db.textobject.role.attribute = attribute role { text }
+  db.textobject.attlist =
+    db.textobject.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.textobject.info = db._info.title.forbidden
+  db.textobject =
+    
+    ## A wrapper for a text description of an object and its associated meta-information
+    element textobject {
+      db.textobject.attlist,
+      db.textobject.info,
+      (db.phrase | db.textdata | db.all.blocks+)
+    }
+}
+div {
+  db.videodata.role.attribute = attribute role { text }
+  db.videodata.align.enumeration = db.halign.enumeration
+  db.videodata.align.attribute =
+    
+    ## Specifies the (horizontal) alignment of the video data
+    attribute align { db.videodata.align.enumeration }
+  db.videodata.autoplay.attribute = db.autoplay.attribute
+  db.videodata.classid.attribute = db.classid.attribute
+  db.videodata.valign.enumeration = db.valign.enumeration
+  db.videodata.valign.attribute =
+    
+    ## Specifies the vertical alignment of the video data
+    attribute valign { db.videodata.valign.enumeration }
+  db.videodata.width.attribute = db.width.attribute
+  db.videodata.depth.attribute = db.depth.attribute
+  db.videodata.contentwidth.attribute = db.contentwidth.attribute
+  db.videodata.contentdepth.attribute = db.contentdepth.attribute
+  db.videodata.scalefit.enumeration = db.scalefit.enumeration
+  db.videodata.scalefit.attribute =
+    
+    ## Determines if anamorphic scaling is forbidden
+    attribute scalefit { db.videodata.scalefit.enumeration }
+  db.videodata.scale.attribute = db.scale.attribute
+  db.videodata.attlist =
+    db.videodata.role.attribute?
+    & db.common.attributes
+    & db.common.data.attributes
+    & db.videodata.align.attribute?
+    & db.videodata.valign.attribute?
+    & db.videodata.width.attribute?
+    & db.videodata.contentwidth.attribute?
+    & db.videodata.scalefit.attribute?
+    & db.videodata.scale.attribute?
+    & db.videodata.depth.attribute?
+    & db.videodata.contentdepth.attribute?
+    & db.videodata.autoplay.attribute?
+    & db.videodata.classid.attribute?
+  db.videodata.info = db._info.title.forbidden
+  db.videodata =
+    
+    ## Pointer to external video data
+    element videodata { db.videodata.attlist, db.videodata.info }
+}
+div {
+  db.audiodata.role.attribute = attribute role { text }
+  db.audiodata.align.enumeration = db.halign.enumeration
+  db.audiodata.align.attribute =
+    
+    ## Specifies the (horizontal) alignment of the video data
+    attribute align { db.audiodata.align.enumeration }
+  db.audiodata.autoplay.attribute = db.autoplay.attribute
+  db.audiodata.classid.attribute = db.classid.attribute
+  db.audiodata.contentwidth.attribute = db.contentwidth.attribute
+  db.audiodata.contentdepth.attribute = db.contentdepth.attribute
+  db.audiodata.depth.attribute = db.depth.attribute
+  db.audiodata.scale.attribute = db.scale.attribute
+  db.audiodata.scalefit.enumeration = db.scalefit.enumeration
+  db.audiodata.scalefit.attribute =
+    
+    ## Determines if anamorphic scaling is forbidden
+    attribute scalefit { db.audiodata.scalefit.enumeration }
+  db.audiodata.valign.enumeration = db.valign.enumeration
+  db.audiodata.valign.attribute =
+    
+    ## Specifies the vertical alignment of the video data
+    attribute valign { db.audiodata.valign.enumeration }
+  db.audiodata.width.attribute = db.width.attribute
+  db.audiodata.attlist =
+    db.audiodata.role.attribute?
+    & db.common.attributes
+    & db.common.data.attributes
+    & db.audiodata.align.attribute?
+    & db.audiodata.autoplay.attribute?
+    & db.audiodata.classid.attribute?
+    & db.audiodata.contentdepth.attribute?
+    & db.audiodata.contentwidth.attribute?
+    & db.audiodata.depth.attribute?
+    & db.audiodata.scale.attribute?
+    & db.audiodata.scalefit.attribute?
+    & db.audiodata.valign.attribute?
+    & db.audiodata.width.attribute?
+  db.audiodata.info = db._info.title.forbidden
+  db.audiodata =
+    
+    ## Pointer to external audio data
+    element audiodata { db.audiodata.attlist, db.audiodata.info }
+}
+div {
+  db.imagedata.role.attribute = attribute role { text }
+  db.imagedata.align.enumeration = db.halign.enumeration
+  db.imagedata.align.attribute =
+    
+    ## Specifies the (horizontal) alignment of the image data
+    attribute align { db.imagedata.align.enumeration }
+  db.imagedata.valign.enumeration = db.valign.enumeration
+  db.imagedata.valign.attribute =
+    
+    ## Specifies the vertical alignment of the image data
+    attribute valign { db.imagedata.valign.enumeration }
+  db.imagedata.width.attribute = db.width.attribute
+  db.imagedata.depth.attribute = db.depth.attribute
+  db.imagedata.contentwidth.attribute = db.contentwidth.attribute
+  db.imagedata.contentdepth.attribute = db.contentdepth.attribute
+  db.imagedata.scalefit.enumeration = db.scalefit.enumeration
+  db.imagedata.scalefit.attribute =
+    
+    ## Determines if anamorphic scaling is forbidden
+    attribute scalefit { db.imagedata.scalefit.enumeration }
+  db.imagedata.scale.attribute = db.scale.attribute
+  db.imagedata.attlist =
+    db.imagedata.role.attribute?
+    & db.common.attributes
+    & db.common.data.attributes
+    & db.imagedata.align.attribute?
+    & db.imagedata.valign.attribute?
+    & db.imagedata.width.attribute?
+    & db.imagedata.contentwidth.attribute?
+    & db.imagedata.scalefit.attribute?
+    & db.imagedata.scale.attribute?
+    & db.imagedata.depth.attribute?
+    & db.imagedata.contentdepth.attribute?
+  db.imagedata.info = db._info.title.forbidden
+  db.imagedata =
+    
+    ## Pointer to external image data
+    element imagedata { db.imagedata.attlist, db.imagedata.info }
+}
+div {
+  db.textdata.role.attribute = attribute role { text }
+  db.textdata.encoding.attribute =
+    
+    ## Identifies the encoding of the text in the external file
+    attribute encoding { text }
+  db.textdata.attlist =
+    db.textdata.role.attribute?
+    & db.common.attributes
+    & db.common.data.attributes
+    & db.textdata.encoding.attribute?
+  db.textdata.info = db._info.title.forbidden
+  db.textdata =
+    
+    ## Pointer to external text data
+    element textdata { db.textdata.attlist, db.textdata.info }
+}
+div {
+  db.multimediaparam.role.attribute = attribute role { text }
+  db.multimediaparam.name.attribute =
+    
+    ## Specifies the name of the parameter
+    attribute name { text }
+  db.multimediaparam.value.attribute =
+    
+    ## Specifies the value of the parameter
+    attribute value { text }
+  db.multimediaparam.valuetype.attribute =
+    
+    ## Specifies the type of the value of the parameter
+    attribute valuetype { text }
+  db.multimediaparam.attlist =
+    db.multimediaparam.role.attribute?
+    & db.common.attributes
+    & db.multimediaparam.name.attribute
+    & db.multimediaparam.value.attribute
+    & db.multimediaparam.valuetype.attribute?
+  db.multimediaparam =
+    
+    ## Application specific parameters for a media player
+    element multimediaparam { db.multimediaparam.attlist, empty }
+}
+div {
+  db.caption.role.attribute = attribute role { text }
+  db.caption.attlist =
+    db.caption.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.caption.info = db._info.title.forbidden
+  db.caption =
+    
+    ## A caption
+    [
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:example)"
+            "example must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:figure)"
+            "figure must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:table)"
+            "table must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:equation)"
+            "equation must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:sidebar)"
+            "sidebar must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:task)"
+            "task must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:caution)"
+            "caution must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:important)"
+            "important must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:note)"
+            "note must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:tip)"
+            "tip must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+      s:pattern [
+        name = "Element exclusion"
+        "\x{a}" ~
+        "               "
+        s:rule [
+          context = "db:caption"
+          "\x{a}" ~
+          "                  "
+          s:assert [
+            test = "not(.//db:warning)"
+            "warning must not occur among the children or descendants of caption"
+          ]
+          "\x{a}" ~
+          "               "
+        ]
+        "\x{a}" ~
+        "            "
+      ]
+    ]
+    element caption {
+      db.caption.attlist, db.caption.info, db.all.blocks+
+    }
+}
+div {
+  db.address.role.attribute = attribute role { text }
+  db.address.attlist =
+    db.address.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.verbatim.attributes
+  db.address =
+    
+    ## A real-world address, generally a postal address
+    element address {
+      db.address.attlist,
+      (db._text
+       | db.personname
+       | db.orgname
+       | db.pob
+       | db.street
+       | db.city
+       | db.state
+       | db.postcode
+       | db.country
+       | db.phone
+       | db.fax
+       | db.email
+       | db.uri
+       | db.otheraddr)*
+    }
+}
+div {
+  db.street.role.attribute = attribute role { text }
+  db.street.attlist =
+    db.street.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.street =
+    
+    ## A street address in an address
+    element street { db.street.attlist, db._text }
+}
+div {
+  db.pob.role.attribute = attribute role { text }
+  db.pob.attlist =
+    db.pob.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.pob =
+    
+    ## A post office box in an address
+    element pob { db.pob.attlist, db._text }
+}
+div {
+  db.postcode.role.attribute = attribute role { text }
+  db.postcode.attlist =
+    db.postcode.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.postcode =
+    
+    ## A postal code in an address
+    element postcode { db.postcode.attlist, db._text }
+}
+div {
+  db.city.role.attribute = attribute role { text }
+  db.city.attlist =
+    db.city.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.city =
+    
+    ## The name of a city in an address
+    element city { db.city.attlist, db._text }
+}
+div {
+  db.state.role.attribute = attribute role { text }
+  db.state.attlist =
+    db.state.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.state =
+    
+    ## A state or province in an address
+    element state { db.state.attlist, db._text }
+}
+div {
+  db.country.role.attribute = attribute role { text }
+  db.country.attlist =
+    db.country.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.country =
+    
+    ## The name of a country
+    element country { db.country.attlist, db._text }
+}
+div {
+  db.phone.role.attribute = attribute role { text }
+  db.phone.attlist =
+    db.phone.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.phone =
+    
+    ## A telephone number
+    element phone { db.phone.attlist, db._text }
+}
+div {
+  db.fax.role.attribute = attribute role { text }
+  db.fax.attlist =
+    db.fax.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.fax =
+    
+    ## A fax number
+    element fax { db.fax.attlist, db._text }
+}
+div {
+  db.otheraddr.role.attribute = attribute role { text }
+  db.otheraddr.attlist =
+    db.otheraddr.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.otheraddr =
+    
+    ## Uncategorized information in address
+    element otheraddr { db.otheraddr.attlist, db._text }
+}
+div {
+  db.affiliation.role.attribute = attribute role { text }
+  db.affiliation.attlist =
+    db.affiliation.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.affiliation =
+    
+    ## The institutional affiliation of an individual
+    element affiliation {
+      db.affiliation.attlist,
+      db.shortaffil?,
+      db.jobtitle*,
+      (db.org? | (db.orgname?, db.orgdiv*, db.address*))
+    }
+}
+div {
+  db.shortaffil.role.attribute = attribute role { text }
+  db.shortaffil.attlist =
+    db.shortaffil.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.shortaffil =
+    
+    ## A brief description of an affiliation
+    element shortaffil { db.shortaffil.attlist, db._text }
+}
+div {
+  db.jobtitle.role.attribute = attribute role { text }
+  db.jobtitle.attlist =
+    db.jobtitle.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.jobtitle =
+    
+    ## The title of an individual in an organization
+    element jobtitle { db.jobtitle.attlist, db._text }
+}
+div {
+  db.orgname.class.enumeration =
+    
+    ## A consortium
+    "consortium"
+    | 
+      ## A corporation
+      "corporation"
+    | 
+      ## An informal organization
+      "informal"
+    | 
+      ## A non-profit organization
+      "nonprofit"
+  db.orgname.class-enum.attribute =
+    
+    ## Specifies the nature of the organization
+    attribute class { db.orgname.class.enumeration }
+  db.orgname.class-other.attributes =
+    
+    ## Specifies the nature of the organization
+    attribute class {
+      
+      ## Indicates a non-standard organization class
+      "other"
+    },
+    
+    ## Identifies the non-standard nature of the organization
+    attribute otherclass { text }
+  db.orgname.class.attribute =
+    db.orgname.class-enum.attribute | db.orgname.class-other.attributes
+  db.orgname.role.attribute = attribute role { text }
+  db.orgname.attlist =
+    db.orgname.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+    & db.orgname.class.attribute?
+  db.orgname =
+    
+    ## The name of an organization
+    element orgname { db.orgname.attlist, db._text }
+}
+div {
+  db.orgdiv.role.attribute = attribute role { text }
+  db.orgdiv.attlist =
+    db.orgdiv.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.orgdiv =
+    
+    ## A division of an organization
+    element orgdiv { db.orgdiv.attlist, db.all.inlines* }
+}
+div {
+  db.artpagenums.role.attribute = attribute role { text }
+  db.artpagenums.attlist =
+    db.artpagenums.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.artpagenums =
+    
+    ## The page numbers of an article as published
+    element artpagenums { db.artpagenums.attlist, db._text }
+}
+div {
+  db.personname.role.attribute = attribute role { text }
+  db.personname.attlist =
+    db.personname.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.personname =
+    
+    ## The personal name of an individual
+    element personname {
+      db.personname.attlist,
+      (db._text
+       | (db.honorific
+          | db.firstname
+          | db.surname
+          | db.lineage
+          | db.othername)+
+       | (db.honorific
+          | db.givenname
+          | db.surname
+          | db.lineage
+          | db.othername)+)
+    }
+}
+db.person.author.contentmodel =
+  db.personname,
+  (db.personblurb
+   | db.affiliation
+   | db.email
+   | db.uri
+   | db.address
+   | db.contrib)*
+db.org.author.contentmodel =
+  db.orgname,
+  (db.orgdiv
+   | db.affiliation
+   | db.email
+   | db.uri
+   | db.address
+   | db.contrib)*
+db.credit.contentmodel =
+  db.person.author.contentmodel | db.org.author.contentmodel
+div {
+  db.author.role.attribute = attribute role { text }
+  db.author.attlist =
+    db.author.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.author =
+    
+    ## The name of an individual author
+    element author { db.author.attlist, db.credit.contentmodel }
+}
+div {
+  db.authorgroup.role.attribute = attribute role { text }
+  db.authorgroup.attlist =
+    db.authorgroup.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.authorgroup =
+    
+    ## Wrapper for author information when a document has multiple authors or collaborators
+    element authorgroup {
+      db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+
+    }
+}
+div {
+  db.collab.role.attribute = attribute role { text }
+  db.collab.attlist =
+    db.collab.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.collab =
+    
+    ## Identifies a collaborator
+    element collab {
+      db.collab.attlist,
+      (db.person | db.personname | db.org | db.orgname)+,
+      db.affiliation*
+    }
+}
+div {
+  db.authorinitials.role.attribute = attribute role { text }
+  db.authorinitials.attlist =
+    db.authorinitials.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.authorinitials =
+    
+    ## The initials or other short identifier for an author
+    element authorinitials { db.authorinitials.attlist, db._text }
+}
+div {
+  db.person.role.attribute = attribute role { text }
+  db.person.attlist =
+    db.person.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.person =
+    
+    ## A person and associated metadata
+    element person {
+      db.person.attlist,
+      db.personname,
+      (db.address
+       | db.affiliation
+       | db.email
+       | db.uri
+       | db.personblurb)*
+    }
+}
+div {
+  db.org.role.attribute = attribute role { text }
+  db.org.attlist =
+    db.org.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.org =
+    
+    ## An organization and associated metadata
+    element org {
+      db.org.attlist,
+      db.orgname,
+      (db.address | db.affiliation | db.email | db.uri | db.orgdiv)*
+    }
+}
+div {
+  db.confgroup.role.attribute = attribute role { text }
+  db.confgroup.attlist =
+    db.confgroup.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.confgroup =
+    
+    ## A wrapper for document meta-information about a conference
+    element confgroup {
+      db.confgroup.attlist,
+      (db.confdates
+       | db.conftitle
+       | db.confnum
+       | db.confsponsor
+       | db.address)*
+    }
+}
+div {
+  db.confdates.role.attribute = attribute role { text }
+  db.confdates.attlist =
+    db.confdates.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.confdates =
+    
+    ## The dates of a conference for which a document was written
+    element confdates { db.confdates.attlist, db._text }
+}
+div {
+  db.conftitle.role.attribute = attribute role { text }
+  db.conftitle.attlist =
+    db.conftitle.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.conftitle =
+    
+    ## The title of a conference for which a document was written
+    element conftitle { db.conftitle.attlist, db._text }
+}
+div {
+  db.confnum.role.attribute = attribute role { text }
+  db.confnum.attlist =
+    db.confnum.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.confnum =
+    
+    ## An identifier, frequently numerical, associated with a conference for which a document was written
+    element confnum { db.confnum.attlist, db._text }
+}
+div {
+  db.confsponsor.role.attribute = attribute role { text }
+  db.confsponsor.attlist =
+    db.confsponsor.role.attribute?
+    & db.common.attributes
+    & db.common.linking.attributes
+  db.confsponsor =
+    
+    ## The sponsor of a conference for which a document was written

[... 8027 lines stripped ...]