From 1a556bae0bc8e021a921c15f418fa813a4886651 Mon Sep 17 00:00:00 2001 From: Packit Service Date: Dec 09 2020 12:31:07 +0000 Subject: docbook5-schemas-5.0 base --- diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..13e557b --- /dev/null +++ b/ChangeLog @@ -0,0 +1,1699 @@ +2008-02-06 14:01 nwalsh + + * spec/docbook.xml: Fix document draft status + +2008-02-06 13:57 nwalsh + + * howto/howto.xml: Fixed pubdate + +2008-02-06 13:53 nwalsh + + * spec/docbook.xml: Fixed pubdate + +2008-02-06 13:52 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, spec/docbook.xml, src/admonitions.rnc, + src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/core.rnc, src/docbook.rnc, src/ebnf.rnc, + src/error.rnc, src/glossary.rnc, src/gui.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/keyboard.rnc, src/markup.rnc, + src/math.rnc, src/mathml.rnc, src/msgset.rnc, src/os.rnc, + src/pool.rnc, src/product.rnc, src/programming.rnc, + src/qandaset.rnc, src/refentry.rnc, src/refsect1.rnc, + src/sect1.rnc, src/svg.rnc, src/tasks.rnc, src/technical.rnc, + src/toc.rnc, src/xlink.rnc: DocBook V5.0 released + +2008-01-23 00:55 rlhamilton + + * howto/howto.xml: Copy edit for spelling, typos and minor + grammatical + glitches. Updated the link to the xsl2 stylesheet + snapshot. + +2007-12-16 17:03 nwalsh + + * tests/local/dtd.xml: Tweaked to test refsect2 bugs + +2007-12-14 19:17 mzjn + + * src/pool.rnc: Removed "other than a corporation" from refpurpose + for orgname. + +2007-12-07 17:55 kosek + + * howto/howto.xml: Added link to a new superentity file. + +2007-11-24 17:24 mzjn + + * howto/howto.xml: Fixed typo. + +2007-11-24 16:46 mzjn + + * howto/howto.xml: Some punctuation, spelling, and wording fixes. + +2007-11-17 14:33 mzjn + + * howto/howto.xml: Removed obsolete paragraph saying that profiling + stylesheets are needed for HTML Help, + JavaHelp, or Eclipse. + Added info about the warning message that is output if the + stylesheets are unable to + add @xml:base. + Changed Saxon 8 to Saxon 9. + +2007-11-10 16:50 kosek + + * howto/howto.xml: Add instructions for using JNVDL + +2007-11-10 09:31 kosek + + * howto/howto.xml: Prepare for 5.0 release + +2007-10-28 22:14 kosek + + * howto/howto.xml: Validation with XIncludes, new links + +2007-10-28 14:19 kosek + + * howto/howto.xml: Fixed typo + +2007-10-28 10:38 kosek + + * howto/TODO, howto/howto.css, howto/howto.xml: Small improvements, + updated to CR7 + +2007-10-28 10:20 kosek + + * howto/howto.xml: Information about referencing DocBook schema + +2007-10-27 21:48 kosek + + * howto/TODO, howto/howto.xml: Some additions for a new release + +2007-10-02 02:20 nwalsh + + * src/callouts.rnc: Fix typo in documentation for the units + enumeration + +2007-09-28 19:06 nwalsh + + * spec/docbook.xml: Updated for 5.0CR7 + +2007-09-28 18:50 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/admonitions.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/core.rnc, src/docbook.rnc, src/ebnf.rnc, src/error.rnc, + src/glossary.rnc, src/gui.rnc, src/hier.rnc, src/htmltbl.rnc, + src/index.rnc, src/keyboard.rnc, src/markup.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/os.rnc, src/pool.rnc, + src/product.rnc, src/programming.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/technical.rnc, src/toc.rnc, src/xlink.rnc: + DocBook V5.0CR7 released + +2007-09-28 18:34 nwalsh + + * src/admonitions.rnc, src/core.rnc, src/docbook.rnc, + src/error.rnc, src/gui.rnc, src/keyboard.rnc, src/markup.rnc, + src/os.rnc, src/pool.rnc, src/product.rnc, src/programming.rnc, + src/technical.rnc: Refactor to make the work of the Publishing + Subcommitee easier + +2007-09-27 18:09 nwalsh + + * spec/docbook.xml: Updated revision history + +2007-09-27 14:03 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, spec/docbook.xml, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Version 5.0CR6 released + +2007-09-27 13:11 nwalsh + + * src/pool.rnc: Fix RFE 1759782: Allow uri anywhere email occurs + +2007-09-27 12:55 nwalsh + + * src/hier.rnc, src/pool.rnc: Fix (part of) RFE 1784312: Allow book + to be completely empty + +2007-09-27 12:52 nwalsh + + * src/pool.rnc: Fix (part of) RFE 1784312: Allow personblurb and + titleabbrev in biblioentry (and other bibliographic contexts) + +2007-09-27 12:45 nwalsh + + * src/mathml.rnc: Fix RFE 1795884: Allow MathML in inlineequation + +2007-09-27 12:43 nwalsh + + * src/pool.rnc: Fix RFE 1800916: Allow keycap etc. in userinput + +2007-08-30 01:45 xmldoc + + * howto/stylesheets/fo-ns.xsl, howto/stylesheets/fo.xsl, + howto/stylesheets/html-ns.xsl, howto/stylesheets/html.xsl: + Updated stylesheets to display data on titlepage from othercredit + content (not just in author content). If there is an otherclass + attribute, the value of the is displayed. It really should also + look for the value of the class attribute, and use that unless it + is "other" (in which case it uses the otherclass value instead), + but that change will have to wait til later... + +2007-08-30 01:41 xmldoc + + * howto/howto.xml: Created dbxsl-ns section and added myself to + list of contributors. + +2007-08-29 05:25 xmldoc + + * howto/Makefile, howto/stylesheets/fo-ns.xsl, + howto/stylesheets/html-ns.xsl: Added customization layers for + XSL-NS stylesheets, and set up + added targets to makefile for generating output using those. + +2007-08-02 20:07 kosek + + * dbits/dbits.rnc: Refactored to use new pattern introduced in CR5 + +2007-07-18 20:43 nwalsh + + * src/pool.rnc: Move Bob's olink text up to the schema source + location + +2007-07-12 13:38 nwalsh + + * src/pool.rnc: Fix stupid pattern typo + +2007-07-12 12:58 nwalsh + + * spec/Makefile, spec/rfc.xml: Update media type RFC + +2007-07-12 12:46 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Updated version number to 5.0CR5 + +2007-07-12 12:41 nwalsh + + * spec/docbook.xml: Added 5.0CR5 release notes + +2007-07-12 12:37 nwalsh + + * src/pool.rnc: Refactored the 'common attributes extension + pattern' a bit + +2007-07-08 16:41 mzjn + + * howto/howto.xml: Updated link to cloak script (now points to SVN + repository). + +2007-06-06 12:10 kosek + + * dbits/dbits.rnc: Added ITS conformance information + +2007-05-22 11:20 nwalsh + + * src/pool.rnc: Added db.common.extension.attributes pattern for + easier extensibility of common attributes + +2007-05-21 14:59 nwalsh + + * Makefile: Add docbook.nvdl to distrib + +2007-05-18 19:29 nwalsh + + * spec/docbook.xml: DocBook V5.0CR4 published + +2007-05-18 18:03 nwalsh + + * .cvsignore: Removed: we're using subversion now + +2007-05-18 17:58 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Updated version numbers + +2007-05-18 17:47 nwalsh + + * Makefile: Change pattern of specname + +2007-05-18 17:26 nwalsh + + * src/callouts.rnc, src/pool.rnc: RFE #1708032: Fix pattern naming + inconsistency with db.href.attribute*s* + +2007-05-18 17:19 nwalsh + + * src/glossary.rnc: RFE #1700154: added sortas to termdef + +2007-05-18 17:14 nwalsh + + * docbook.nvdl: Added NVDL rules file contributed by George Bina + +2007-05-18 17:08 nwalsh + + * src/pool.rnc: RFE #1705596: add programming inlines to code + +2007-05-07 20:34 kosek + + * howto/howto.xml: Updated list of renamed/removed elements + +2007-05-01 20:00 kosek + + * dbits/dbits.rnc: Fixed typo + +2007-04-30 14:54 kosek + + * dbits/dbits.rnc: Id property again + +2007-04-30 14:46 kosek + + * dbits/dbits.rnc: Trying to set CVS Id tag + +2007-04-30 14:45 kosek + + * Makefile, dbits, dbits/Makefile, dbits/dbits.rnc, dbits/its.rnc: + Added module for DocBook + ITS markup to improve DocBook + suitability for localization industry + +2007-04-11 13:16 kosek + + * howto/howto.xml: Versioning was approved almost year ago, so this + section is no more draft. + +2007-03-27 20:25 nwalsh + + * src/glossary.rnc: Fix RFE #1689228: typo in Schematron assertion + for termdef; thanks George Bina + +2007-03-22 17:20 nwalsh + + * spec: Ignore *.txt files too + +2007-03-22 17:18 nwalsh + + * spec/docbook.xml: DocBook V5.0CR3 published + +2007-03-22 17:08 nwalsh + + * defguide/defguide.rnc: Changed version number from 5.0CR2 to + 5.0CR3 + +2007-03-22 17:08 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc: Changed version number + from 5.0CR2 to 5.0CR3 + +2007-03-22 17:08 nwalsh + + * docbookxi/docbookxi.rnc, docbookxi/xinclude.rnc: Changed version + number from 5.0CR2 to 5.0CR3 + +2007-03-22 17:07 nwalsh + + * docbook/docbook.rnc: Changed version number from 5.0CR2 to 5.0CR3 + +2007-03-22 17:07 nwalsh + + * src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, + src/hier.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Changed version number + from 5.0CR2 to 5.0CR3 + +2007-03-22 14:21 nwalsh + + * src/pool.rnc: Added note about XLink role value + http://docbook.org/xlink/role/olink to the description of + xlink:role + +2007-03-22 13:02 nwalsh + + * tests/unit-tests/htmlinfo.xml, tests/unit-tests/rfe1682917.xml: + New unit tests + +2007-03-22 13:01 nwalsh + + * src/htmltbl.rnc: Allow info inside html tables + +2007-03-22 12:46 nwalsh + + * src/pool.rnc: RFE #1682917: Add pgwide to example + +2007-03-22 12:35 nwalsh + + * src/hier.rnc: Fix syntax error + +2007-03-22 12:31 nwalsh + + * src/pool.rnc: Whitespace + +2007-03-22 12:25 nwalsh + + * src/calstbl.rnc, src/htmltbl.rnc: RFE 1644553#: Added label + attribute to CALS and HTML tables + +2007-03-22 12:24 nwalsh + + * src/math.rnc: Rearranged patterns for a little greater + consistency + +2007-03-22 12:13 nwalsh + + * src/hier.rnc: RFE #1588693: Add an acknowledgements element, peer + to dedication, replacing ackno which had only been available at + the end of article + +2007-03-22 11:52 nwalsh + + * src/glossary.rnc, src/pool.rnc: Change semantics of termdef so + that a firstterm is required; move the addition of termdef to the + technical inlines into the glossary module where it belongs + +2007-03-17 20:12 nwalsh + + * src/pool.rnc: Attribute documentation improvements + +2007-03-17 01:58 nwalsh + + * src/callouts.rnc: Removed duplicate line, thanks to Jirka + +2007-03-15 14:27 nwalsh + + * spec/Makefile, spec/rfc.xml: Make an RFC + +2007-03-13 13:13 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Updated version numbers to CR2 + +2007-03-13 13:11 nwalsh + + * spec/docbook.xml: DocBook V5.0CR2 + +2007-03-13 12:58 nwalsh + + * src/glossary.rnc, src/pool.rnc: Fix RFE #1669465: Schematron + rules refer to @id where @xml:id is required + +2007-03-13 12:35 nwalsh + + * tests/skip/calloutlist.003.xml, tests/unit-tests, + tests/unit-tests/rfe1589139.xml, tests/unit-tests/rfe1627845.xml, + tests/unit-tests/rfe1630203.xml: Added tests/unit-tests; added + calloutlist.003.xml to the skip list (it intentionally uses a + broken IDREF) + +2007-03-13 12:34 nwalsh + + * Makefile, docbook/Makefile, spec/Makefile: Use saxon from + buildtools + +2007-03-12 21:39 nwalsh + + * src/glossary.rnc: Fix RFE #1630203: allow empty glossary + +2007-03-12 21:37 nwalsh + + * src/calstbl.rnc: Fix RFE #1627845: allow optional caption on CALS + table and informaltable + +2007-03-12 21:36 nwalsh + + * src/htmltbl.rnc: Allow inlines in HTML table caption + +2007-03-12 21:34 nwalsh + + * src/qandaset.rnc: FIX RFE #1589139 and #1621178: allow title and + titleabbrev on qandaentry + +2007-03-12 14:47 nwalsh + + * src/pool.rnc: Fix RFE #1675932 add localname, prefix, and + namespace to tag + +2007-03-01 10:59 xmldoc + + * Makefile, howto/Makefile, spec/Makefile: Renamed cvstools dir to + buildtools, and replaced all + references to "cvstools" in makefiles and elsewhere + with "buildtools". + +2007-02-22 14:13 nwalsh + + * spec/docbook.xml: Fixed Dick's association + +2007-02-21 16:58 xmldoc + + * docbookxi/docbookxi.rnc: Ported changes from docs-in-db5 branch. + +2006-12-21 17:23 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Updated version numbers to CR1 + +2006-12-21 17:21 nwalsh + + * Makefile: Improve the clean target + +2006-12-21 17:21 nwalsh + + * spec/docbook.xml: DocBook V5.0CR1 + +2006-12-05 18:59 nwalsh + + * src/pool.rnc: Make content model of blockquote broader + +2006-12-05 18:44 nwalsh + + * src/pool.rnc: Fix RFE #1575537: allow markup from other + namespaces in info + +2006-11-15 23:15 nwalsh + + * src/hier.rnc: Fix content model of ackno so it's the same as in + DocBook 4.x + +2006-11-15 23:14 nwalsh + + * src/calstbl.rnc: Fix bug where caption was accidentally allowed + in CALS tables + +2006-10-26 13:10 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, spec/docbook.xml, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: DocBook V5.0b9 released + +2006-10-24 12:54 nwalsh + + * src/glossary.rnc: Fixed bug #1568419: inverted schematron + assertion for termdef + +2006-10-24 12:52 nwalsh + + * docbook/Makefile: Fixed bug #1568417: duplicate schematron rules + +2006-10-24 09:16 nwalsh + + * src/pool.rnc: Allow jobtitle inline; removed a few extraneous + comments + +2006-10-22 19:06 kosek + + * howto/howto.xml: Fixed broken link + +2006-10-22 18:48 kosek + + * howto/howto.xml: Preparing new release + +2006-10-22 18:47 kosek + + * howto/howto.xml: Updated XXE instructions, link to Bob's XSLT 1.0 + based experimental stylesheets + +2006-10-18 22:04 nwalsh + + * src/tasks.rnc: Fix typo: titles are required on tasks + +2006-10-11 21:08 nwalsh + + * src/pool.rnc: Make targetdoc optional on olink + +2006-09-27 10:32 nwalsh + + * spec/docbook.xml: Fixed pubdate + +2006-09-26 22:57 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, spec/docbook.xml, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: DocBook V5.0b8 released + +2006-09-26 16:36 nwalsh + + * src/mathml.rnc, src/svg.rnc: Added refpurpose to format + attributes + +2006-09-26 13:57 nwalsh + + * src/calstbl.rnc: Oops: typos + +2006-09-26 13:51 nwalsh + + * src/calstbl.rnc: Fix documentation for enumerated values + +2006-09-26 12:37 nwalsh + + * src/htmltbl.rnc: Improved refpurposes + +2006-09-26 12:25 nwalsh + + * src/math.rnc: Fix bug #1549632: inlineequation should use + inlinemediaobject + +2006-09-26 12:23 nwalsh + + * docbook/Makefile: docbook.dtd depends on ../tools/xml2dtd.xsl + +2006-09-26 11:33 nwalsh + + * src/calstbl.rnc, src/ebnf.rnc, src/htmltbl.rnc, src/pool.rnc: Fix + RFE #1535166: Improve datatypes for attributes + +2006-08-16 20:06 nwalsh + + * src/pool.rnc: Remove bogus 'empty' from imagedata + +2006-07-21 17:28 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, spec/docbook.xml, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: DocBook V5.0b7 released + +2006-07-21 17:16 nwalsh + + * src/mathml.rnc, src/svg.rnc: Use correct info patterns + +2006-07-21 13:02 nwalsh + + * .: Ignore ChangeLog + +2006-07-20 13:37 nwalsh + + * _footer.mak: Make the targets depend on the stylesheets that + create them + +2006-07-20 11:32 nwalsh + + * src/msgset.rnc: Make msgaud, msgorig, and msglevel optional on + simplemsgentry (this should remain true irrespective of their + names) + +2006-07-20 11:27 nwalsh + + * src/pool.rnc: Added startingnumber attribute to orderedlist + +2006-07-20 11:27 nwalsh + + * src/msgset.rnc: Rename audience, origin, and level on + simplemsgentry to make room for the newly added audience + effectivity attribute (this is an optimistic change that may get + reversed by the TC) + +2006-07-20 10:53 nwalsh + + * src/pool.rnc: Added audience effectivity attribute + +2006-07-19 20:47 nwalsh + + * src/pool.rnc: Fix RFE #1520074: define separate patterns for all + the effectivity attributes + +2006-06-07 12:53 nwalsh + + * src/mathml.rnc, src/svg.rnc: Fix attributes on + db.imagedata.mathml and db.imagedata.svg + +2006-06-07 11:54 nwalsh + + * src/mathml.rnc: Added annotations for db.imagedata.mathml and + db.imagedata.svg + +2006-06-07 11:53 nwalsh + + * src/svg.rnc: Added annotations for db.imagedata.mathml and + db.imagedata.svg + +2006-06-07 09:57 kosek + + * src/mathml.rnc, src/svg.rnc: Fixed bug where fileref|entityref + was required on imagedata when content was inline MathML/SVG. + +2006-06-05 21:06 rlhamilton + + * howto/.cvsignore: Back out accidental commit. Now same as + revision 6022. + +2006-06-05 20:52 rlhamilton + + * howto/.cvsignore, howto/howto.xml: No change to text. + +2006-06-05 20:33 rlhamilton + + * howto/howto.xml: Fix minor typo (Toolchain --> Tool chain) and + test commit + +2006-06-02 19:14 nwalsh + + * Makefile: Publish ChangeLog + +2006-06-02 19:12 nwalsh + + * howto/Makefile, howto/howto.xml: Fix validation; update to 5.0b6 + (version) + +2006-06-02 15:09 nwalsh + + * docbookxi/xinclude.rnc: Allow XInclude in reference + +2006-06-02 15:08 nwalsh + + * src/refentry.rnc: Add a pattern for the contents of reference + +2006-06-02 14:22 nwalsh + + * spec/docbook.xml: Updated for V5.0b6 + +2006-06-02 13:58 nwalsh + + * src/mathml.rnc, src/pool.rnc, src/svg.rnc: Allow svg:* and mml:* + in imagedata. Removed svg:* as an /alternative/ to imagedata; + that seems wrong: the alignment, scaling, etc. attributes are on + imagedata. + +2006-06-02 13:55 nwalsh + + * tests/local/dtd.xml: A DTD test + +2006-06-02 12:58 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Changed version numbers + +2006-06-02 12:52 nwalsh + + * tests, tests/passed: Updated + +2006-05-24 19:44 nwalsh + + * src/pool.rnc: Remove 'default' as an option for xml:space on + 'modifier' because of brokenness in the XML Schema build if its + allowed. Not specifying it is the same as 'default' so that seems + acceptable, at least for beta 6 + +2006-05-18 20:55 nwalsh + + * src/pool.rnc: Support aspect-oriented programming by allow + modifier before parameter in methodparam and allow modifier to + specify xml:space + +2006-05-18 13:37 nwalsh + + * src/pool.rnc: Added person and org per the Apr 2006 minutes + +2006-05-18 12:40 nwalsh + + * src/pool.rnc: Allow all db.publishing.inlines in bibliographic + elements + +2006-05-17 21:34 kosek + + * howto/howto.xml: Incorporated link to the list of various + versions of DocBook schemas. + +2006-05-16 20:23 kosek + + * howto/howto.css, howto/stylesheets/fo.xsl, + howto/stylesheets/html.xsl: Improved display of programlistings + (language attribute is shown as a label) + +2006-05-16 20:18 kosek + + * howto/howto.xml: Fixed programlisting types + +2006-05-16 20:10 kosek + + * howto/howto.xml: Preparing new release + +2006-05-15 21:47 rlhamilton + + * howto/howto.xml: Copy edit pass over the version numbering + description. + +2006-04-20 06:29 kosek + + * howto/howto.xml: Align free text with the syntax diagram of + versioning schema + +2006-04-19 21:38 kosek + + * howto/howto.xml: Added description of a new versioning scheme + +2006-04-12 17:44 nwalsh + + * Makefile, dbforms/dbforms.rnc, dbforms/htmlform.rnc, + defguide/defguide.rnc, docbook/docbook.rnc, + docbookxi/docbookxi.rnc, docbookxi/xinclude.rnc, + src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, + src/hier.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Changed version + numbers + +2006-04-12 16:02 nwalsh + + * spec/docbook.xml: V5.0b5 + +2006-04-12 16:00 nwalsh + + * dbforms/htmlform.rnc: Fixed typo in refpurpose + +2006-04-12 12:42 nwalsh + + * src/refentry.rnc: Made class on refmiscinfo a class/otherclass + enumerated value attribute + +2006-04-06 21:00 kosek + + * howto/howto.xml: Style improvement + +2006-04-06 20:32 kosek + + * howto/howto.xml: Added proposal of versioning section + +2006-04-05 21:19 nwalsh + + * docbookxi/xinclude.rnc: Allow XInclude inside info elements + +2006-04-05 21:17 nwalsh + + * src/pool.rnc: Added parameter to the db.technical.inlines + +2006-04-05 16:07 rlhamilton + + * howto/howto.xml: Removed RNG and RNC tags and unneeded pubdate + +2006-04-05 15:26 nwalsh + + * ., .cvsignore: Oh bother, just ignore all the random bits at this + level + +2006-04-05 14:56 nwalsh + + * spec/docbook.xml: Updated pubdate and date + +2006-04-04 22:27 rlhamilton + + * howto/howto.xml: Add Customization section. + +2006-03-03 13:31 nwalsh + + * Makefile: Version 5.0b4 + +2006-03-03 13:01 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xlink.rnc: Version 5.0b4 + +2006-03-03 11:05 nwalsh + + * spec/Makefile, spec/docbook.xml, spec/fo.xsl, spec/html.xsl: + Updated for b4 and formatting tweaks + +2006-03-03 08:19 nwalsh + + * src/pool.rnc: Fix typo that made limit required on symbol + +2006-03-03 08:04 nwalsh + + * src/pool.rnc: Make @width text instead of integer + +2006-03-03 08:03 nwalsh + + * src/pool.rnc: Added class/otherclass semantics to othercredit + +2006-03-02 17:26 nwalsh + + * dbforms/htmlform.rnc: Added documentation for attributes and + attribute values; rearranged some patterns + +2006-03-02 16:33 nwalsh + + * src/pool.rnc: Fixed RFE 1416903 (added cover); corrected + "pubnumber" typo; allow + title/titleabbrev/subtitle anywhere in info, not just at the + beginning; renamed "sgmlcomment" to just "comment"; renamed the + class attribute of refmiscinfo to type; added descriptions for + many more attribute values. + +2006-03-02 13:43 nwalsh + + * src/xlink.rnc: Added documentation for attributes and attribute + values; rearranged some patterns + +2006-03-02 13:38 nwalsh + + * src/refentry.rnc: Added documentation for attributes and + attribute values + +2006-03-02 13:33 nwalsh + + * src/math.rnc: Make use of db.label.attribute pattern + +2006-03-02 13:30 nwalsh + + * src/hier.rnc: Added documentation for attributes and attribute + values + +2006-03-02 13:08 nwalsh + + * src/bibliography.rnc: Added documentation for attributes and + attribute values; rearranged some patterns + +2006-03-02 13:06 nwalsh + + * src/annotations.rnc: Added documentation for attributes and + attribute values + +2006-03-02 12:58 nwalsh + + * src/glossary.rnc: Added documentation for attributes and + attribute values + +2006-03-02 10:56 nwalsh + + * src/index.rnc: Added documentation for attributes and attribute + values + +2006-03-02 10:38 nwalsh + + * src/callouts.rnc: Make use of db.label.attribute and + db.linkends.attribute patterns + +2006-03-02 09:33 nwalsh + + * src/ebnf.rnc: Added documentation for attributes and attribute + values + +2006-03-02 09:09 nwalsh + + * src/msgset.rnc, src/qandaset.rnc: Added documentation for + attributes and attribute values + +2006-03-02 08:27 nwalsh + + * src/toc.rnc: Added a toc.pagenum.attribute pattern. Added a + refpurpose for the pagenum attribute. + +2006-02-28 21:44 kosek + + * howto/howto.xml: More copy edit changes from Dick, new release + +2006-02-28 21:33 kosek + + * howto/howto.css, howto/howto.xml, howto/images/oxygen1.png, + howto/images/oxygen2.png, howto/stylesheets/html.xsl: Additions + from Dick, schema version is parametrized, oXygen supports + embedded Schematron + +2006-02-24 21:56 nwalsh + + * Makefile: Add docbook.xsd as a dependency for distrib + +2006-02-24 21:20 nwalsh + + * docbook/Makefile: Added rule to create the .xsd files + +2006-02-24 21:18 nwalsh + + * src/pool.rnc: Addec cover element + +2006-02-01 15:04 nwalsh + + * Makefile, dbforms/dbforms.rnc, dbforms/htmlform.rnc, + defguide/defguide.rnc, docbook/docbook.rnc, + docbookxi/docbookxi.rnc, docbookxi/xinclude.rnc, + spec/docbook.xml, src/annotations.rnc, src/bibliography.rnc, + src/callouts.rnc, src/calstbl.rnc, src/docbook.rnc, src/ebnf.rnc, + src/glossary.rnc, src/hier.rnc, src/htmltbl.rnc, src/index.rnc, + src/math.rnc, src/mathml.rnc, src/msgset.rnc, src/pool.rnc, + src/qandaset.rnc, src/refentry.rnc, src/refsect1.rnc, + src/sect1.rnc, src/svg.rnc, src/tasks.rnc, src/toc.rnc, + src/xlink.rnc: Version 5.0b3 released + +2006-02-01 13:30 nwalsh + + * src/pool.rnc: Fix typo in pattern name + +2006-01-29 21:22 nwalsh + + * src/pool.rnc: Added attribute default values per Jan 2006 telcon + +2006-01-29 15:33 nwalsh + + * src/callouts.rnc: Fix bug #1358844: allow multiple imageobjects + inside an imageobjectco + +2006-01-27 21:37 nwalsh + + * src/pool.rnc: Reduce content model of blockquote to something + reasonable + +2006-01-16 21:16 nwalsh + + * dbforms/htmlform.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/glossary.rnc, src/htmltbl.rnc, + src/mathml.rnc, src/pool.rnc, src/svg.rnc: Improved documentation + +2006-01-12 23:06 nwalsh + + * Makefile, dbforms/dbforms.rnc, dbforms/htmlform.rnc, + defguide/defguide.rnc, docbook/docbook.rnc, + docbookxi/docbookxi.rnc, docbookxi/xinclude.rnc, + src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, + src/hier.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Updated version + numbers + +2006-01-12 23:00 nwalsh + + * spec/Makefile, spec/docbook.xml: Updated for 5.0b2 + +2006-01-12 21:49 nwalsh + + * src/callouts.rnc: Fix bug #1380477: allow area to inherit from + areaset + +2006-01-12 21:48 nwalsh + + * dbforms/Makefile: Make dbforms actually different from docbook + +2005-12-28 13:13 kosek + + * howto/stylesheets/fo.xsl: Minor formatting tweaks. + +2005-12-28 13:04 kosek + + * howto/howto.xml: Preparing for new release, added xml:ids to all + FAQs + +2005-12-20 21:08 kosek + + * howto/howto.xml: Added info about combining DocBook schema with + MathML and SVG + +2005-12-14 12:25 nwalsh + + * src/mathml.rnc, src/svg.rnc: Where svg:* or mml:* are allowed, + allow svg:*+ or mml:*+ respectively + +2005-12-14 11:38 nwalsh + + * src/callouts.rnc: Allow alt in area as per Nov 2005 TC minutes + +2005-12-14 11:35 nwalsh + + * src/math.rnc: Fix content model of equation and informalequation + wrt alt + +2005-12-14 11:35 nwalsh + + * src/refentry.rnc: docfix: Fix refname of refmiscinfo + +2005-12-14 11:27 nwalsh + + * src/pool.rnc: Fix RFE #1356238: olink xrefstyle attribute type + +2005-11-18 21:49 kosek + + * howto/howto.xml: Corrected XMLSpy related FAQ entry. Hardwiring + xml.xsd inside a program code? What they smoke in Vienna? >:-( + +2005-11-17 10:57 kosek + + * _footer.mak: Once we move (rename) file there should not be + reason for removing it. + +2005-11-14 03:45 xmldoc + + * Makefile: As far as I can tell, $(MV) is not an implicit variable + in make or + GNU make (as $(RM) is). But it was used, without being defined, + in + the _footer.mak file. So I added a "MV ?= mv" definiton for it in + the master Makefile, which should cause it to be defined as "mv" + only if it's not already defined in the user's environment. + +2005-10-28 12:41 nwalsh + + * Makefile: Remove (unnecessary) xs:imports from generated + xlink.xsd and xml.xsd files + +2005-10-28 12:39 nwalsh + + * howto/howto.xml: Added some more xml:ids + +2005-10-28 12:37 nwalsh + + * spec/docbook.xml: Added some xml:ids + +2005-10-27 22:17 nwalsh + + * howto/howto.xml: Added xml:ids to the sections that didn't have + them + +2005-10-27 15:52 kosek + + * howto/howto.xml: Added pointers to on-line validator and cloak + script. + Added FAQ that can save users of f&@#!d XMLSpy. + +2005-10-27 15:46 nwalsh + + * howto/stylesheets/fo.xsl, howto/stylesheets/html.xsl: Fix ref to + info; in V1 stylesheets, it's articleinfo + +2005-10-27 15:45 nwalsh + + * README: Fix ref to spec in docs directory + +2005-10-27 15:44 nwalsh + + * Makefile: Rename spec in distrib + +2005-10-27 14:16 nwalsh + + * ., .cvsignore: Ignore the .sch file too + +2005-10-27 14:14 nwalsh + + * dbforms/dbforms.rnc, dbforms/htmlform.rnc, defguide/defguide.rnc, + docbook/docbook.rnc, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc: Fix file headers + +2005-10-27 14:14 nwalsh + + * README: Added README + +2005-10-27 14:09 nwalsh + + * src/htmltbl.rnc, src/pool.rnc: Make dir a common attribute + +2005-10-27 14:06 nwalsh + + * howto/howto.xml: Fix version and pubdate + +2005-10-27 14:05 nwalsh + + * spec, spec/.cvsignore, spec/Makefile, spec/fo.xsl, spec/html.xsl: + Stylesheet tweaks + +2005-10-27 13:59 nwalsh + + * spec/docbook.xml: Change pubdate, version, and reference to TDG + +2005-10-27 13:59 nwalsh + + * Makefile: Make distrib directory under build + +2005-10-26 13:30 nwalsh + + * howto/howto.xml, howto/stylesheets/fo.xsl, + howto/stylesheets/html.xsl: Use pubdate instead of bibliocoverage + (what was I thinking?). Fixed pubdate. + +2005-10-26 12:45 nwalsh + + * src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, + src/hier.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Change file headers: + this (will be) DocBook V5.0b1 + +2005-10-26 12:29 nwalsh + + * src/pool.rnc: Refactor the content model of step to avoid UPA + issues + +2005-10-26 11:43 nwalsh + + * src/index.rnc: Add type attribute to indexterm elements + +2005-10-25 23:33 nwalsh + + * spec/docbook.xml: Converted to DocBook V5 + +2005-10-25 23:32 nwalsh + + * spec/Makefile: Make pdf; validate with jing + +2005-10-25 23:30 nwalsh + + * howto/Makefile: Make the PDF too + +2005-10-25 23:30 nwalsh + + * docbook/Makefile: Keep the Schematron + +2005-10-25 23:29 nwalsh + + * Makefile: Add a distrib target + +2005-10-25 09:37 kosek + + * howto/stylesheets/fo.xsl: Authorgroup is labeled as Authors, the + same way as in HTML + +2005-10-25 09:35 kosek + + * howto/Makefile: Use $(XJPARSE) instead of xjparse to improve + portability of makefile + +2005-10-24 12:22 nwalsh + + * howto/howto.xml: Updated pubdate; we'll fix this again before we + really publish + +2005-10-24 12:20 nwalsh + + * howto/howto.xml: Fixed bogus namespace prefix + +2005-10-24 12:17 nwalsh + + * howto/howto.css, howto/howto.xml, howto/stylesheets/html.xsl: + Updates + +2005-10-21 16:49 nwalsh + + * howto, howto/.cvsignore, howto/Makefile, howto/howto.css, + howto/howto.xml, howto/images, howto/images/emacs.png, + howto/images/oxygen1.png, howto/images/oxygen2.png, + howto/images/oxygen3.png, howto/images/xxe.png, + howto/stylesheets, howto/stylesheets/fo.xsl, + howto/stylesheets/html.xsl: Checked in HOWTO sources + +2005-10-20 18:33 nwalsh + + * src/glossary.rnc, src/pool.rnc: Add s:pattern elements to + Schematron rules + +2005-10-20 18:28 nwalsh + + * docbook/Makefile: Add docbook.sch as a target + +2005-10-20 18:27 nwalsh + + * _footer.mak: Handle reworked cleanup.pl script properly + +2005-10-20 12:52 nwalsh + + * src/hier.rnc: Make a pattern for set components + +2005-10-16 22:15 nwalsh + + * spec/docbook.xml: Updates from Dick Hamilton + +2005-10-16 22:10 nwalsh + + * _footer.mak: Remove redundant build step that was causing + duplicate Schematron rules + +2005-07-23 20:51 nwalsh + + * _footer.mak, dbforms/dbforms.rnc, dbforms/htmlform.rnc, + defguide/defguide.rnc, docbook/docbook.rnc, + docbookxi/docbookxi.rnc, docbookxi/xinclude.rnc, + src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, + src/hier.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: DocBook NG: The PTO + Release + +2005-07-22 11:22 nwalsh + + * src/sect1.rnc: Allow simplesect after sect1 + +2005-07-21 21:35 nwalsh + + * docbookxi/Makefile: We're not rebuilding docbookxi.rnc so don't + delete it. + +2005-07-21 21:34 nwalsh + + * defguide/.cvsignore, defguide/Makefile, defguide/defguide.rnc: + Don't rebuild defguide.rnc + +2005-07-21 21:20 nwalsh + + * docbookxi/Makefile, docbookxi/docbookxi.rnc: Don't rebuild + docbookxi.rnc automatically + +2005-07-21 20:52 nwalsh + + * src/hier.rnc: Documentation improvements. + +2005-07-21 20:45 nwalsh + + * ., .cvsignore: Updated + +2005-07-21 20:45 nwalsh + + * src/hier.rnc, src/sect1.rnc: Allow simplesect to occur after + section elements + +2005-07-21 20:43 nwalsh + + * Makefile, dbforms/Makefile, defguide/Makefile, docbook/Makefile, + docbookxi, docbookxi/Makefile, docbookxi/docbookxi.rnc, + docbookxi/xinclude.rnc, src/docbook.rnc, src/xinclude.rnc: + Refactor XInclude support + +2005-07-14 11:13 nwalsh + + * src/annotations.rnc: Allow annotation to appear in info + +2005-07-14 00:12 nwalsh + + * src/pool.rnc: More documentation improvements + +2005-07-13 23:11 nwalsh + + * src/pool.rnc: Documentation improvements; first stab at + documenting attribute values + +2005-07-08 10:16 nwalsh + + * src/dbforms.rnc: Moved to ../dbforms + +2005-07-08 10:13 nwalsh + + * src/pool.rnc: Added refname/refpurpose for db._emphasis and + db._phrase + +2005-07-08 10:12 nwalsh + + * src/toc.rnc: Added refpurpose for tocdiv + +2005-07-08 10:11 nwalsh + + * src/refentry.rnc: Added refpurpose for refmiscinfo + +2005-07-08 10:09 nwalsh + + * src/callouts.rnc: Fixed refpurpose for callout + +2005-07-08 10:08 nwalsh + + * src/bibliography.rnc: Added refpurpose for biblioref + +2005-07-08 10:08 nwalsh + + * src/htmlform.rnc: Moved to ../dbforms + +2005-07-07 14:28 nwalsh + + * Makefile, dbforms/Makefile, dbforms/dbforms.rnc, + dbforms/htmlform.rnc, docbook/Makefile, docbook/docbook.rnc, + src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/dbforms.rnc, src/docbook.rnc, src/ebnf.rnc, + src/glossary.rnc, src/hier.rnc, src/htmlform.rnc, + src/htmltbl.rnc, src/index.rnc, src/math.rnc, src/mathml.rnc, + src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, src/refentry.rnc, + src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, src/tasks.rnc, + src/toc.rnc, src/xinclude.rnc, src/xlink.rnc: DocBook NG: The + Mezcal Release + +2005-07-07 12:02 nwalsh + + * src/hier.rnc, src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, + src/xinclude.rnc: Restore section/simplesect + +2005-07-07 11:54 nwalsh + + * docbook/Makefile: Added tests: target + +2005-07-07 11:49 nwalsh + + * Makefile, defguide, defguide/.cvsignore, defguide/Makefile: Added + defguide module + +2005-07-07 11:37 nwalsh + + * tests/local, tests/local/xinc.xml: Added local tests + +2005-07-06 20:18 nwalsh + + * ., .cvsignore, Makefile, _footer.mak, _header.mak, dbforms, + dbforms/Makefile, dbforms/dbforms.rnc, dbforms/htmlform.rnc, + docbook, docbook/Makefile, docbook/docbook.rnc: Checkin new build + system + +2005-07-06 20:15 nwalsh + + * src/xinclude.rnc: Support XInclude in more places + +2005-07-06 20:12 nwalsh + + * src/hier.rnc, src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc: + Fix totally bogus patterns for optional/required section elements + at various levels + +2005-07-06 19:10 nwalsh + + * src/sect1.rnc: Fix content model for toplevel sections and + article components + +2005-07-06 19:06 nwalsh + + * src/hier.rnc: Fix content model for toplevel and recursive + sections + +2005-07-02 16:42 nwalsh + + * src/xinclude.rnc: Fix regex for href to prevent fragids, not + require a hash! + +2005-07-01 19:28 nwalsh + + * spec/docbook.xml: Added Schematron to the bibliography; fixed + typo + +2005-07-01 19:20 nwalsh + + * build: Removed + +2005-07-01 19:04 nwalsh + + * src/docbook.rnc, src/xinclude.rnc: Added XInclude + +2005-06-29 10:47 nwalsh + + * spec/docbook.xml: Updated for 5.0a1 + +2005-06-25 12:38 nwalsh + + * src/pool.rnc: Documentation changes + +2005-06-25 12:16 nwalsh + + * src/calstbl.rnc: Documentation improvements + +2005-06-25 11:47 nwalsh + + * src/xlink.rnc: Changed prefix for annotations namespace + +2005-05-28 02:55 xmldoc + + * Makefile: Portability tweaks for the build. + + - pull in cvstools/Makefile.incl, mainly so that we can use + cvstools/runtrang + + - "trang" -> $(RUNTRANG) so that cvstools/runtrang is used; if + users don't have trang binary installed, that will find + trang.jar and run it. Also allows users to manually specify + what trang they want (e.g., "make RUNTRANG=trang") + + - "clean" target now also removes dbforms* files + + - "clean" target now also does "make -C build clean" + + - "xsltproc" -> $(XSLTPROC) + +2005-05-27 08:41 xmldoc + + * build/Makefile: Make build more portable. + + Added include for $DOCBOOK_CVS/cvstools dir and: + + - replaced hard-coded "saxon" with $(XSLT) + - replaced hard-coded "trang" with $(RUNTRANG) + - added PERL=perl variable and replaced hard-coded "perl" with + $(PERL) + - replaced hard-coded rm with $(RM) + +2005-04-24 17:09 nwalsh + + * src/docbook.rnc: DocBook NG: The Lillet Release + +2005-04-24 16:58 nwalsh + + * src/dbforms.rnc: Changed version number + +2005-04-24 16:58 nwalsh + + * ., .cvsignore, Makefile: Updated + +2005-04-24 16:12 nwalsh + + * src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmlform.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Changed version number + +2005-04-24 16:08 nwalsh + + * src/dbforms.rnc: DocBook with HTML Forms extension + +2005-04-23 21:42 nwalsh + + * spec/docbook.xml: Checkpoint; more editing + +2005-04-23 21:39 nwalsh + + * spec/Makefile: Support reorganized directory structure + +2005-04-23 21:38 nwalsh + + * src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmlform.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Use the official + namespace + +2005-04-23 21:34 nwalsh + + * src/docbook.rnc: Skip the htmlforms module and use the official + namespace + +2005-04-23 21:31 nwalsh + + * tests/skip/bibliography.001.xml, tests/skip/bibliography.002.xml, + tests/skip/cmdsynopsis.002.xml, tests/skip/legalnotice.001.xml, + tests/skip/toc.001.xml, tests/skip/variablelist.002.xml, + tests/skip/xref.002.xml: Still broken + +2005-04-23 21:31 nwalsh + + * tests/skip/glossary.002.xml, tests/skip/olink.001.xml, + tests/skip/refentry.006.xml: These pass now + +2005-04-22 15:43 nwalsh + + * Makefile, build/Makefile: Much simpler build mechanics + +2005-04-22 13:57 nwalsh + + * src/pool.rnc: Fixed typo + +2005-04-21 21:42 nwalsh + + * src/htmltbl.rnc, src/math.rnc, src/pool.rnc: Remove @float; make + sure caption appears in informal objects + +2005-04-21 15:31 nwalsh + + * src/callouts.rnc: Allow area to have either linkends or + xlink:href + +2005-04-21 13:13 nwalsh + + * src/pool.rnc: Restore OLink; it's only a matter of time before + someone asks and there's no way to justify its removal + +2005-04-21 12:33 nwalsh + + * src/annotations.rnc: Support annotations as per the 20 Apr 2005 + DocBook TC meeting + +2005-04-21 12:31 nwalsh + + * src/calstbl.rnc: Fix typo + +2005-04-21 12:23 nwalsh + + * src/annotations.rnc, src/calstbl.rnc, src/math.rnc, src/pool.rnc: + Allow alt in more places + +2005-04-21 12:12 nwalsh + + * src/math.rnc: Allow title to be optional on equation + +2005-04-21 12:10 nwalsh + + * src/htmlform.rnc: Fix action attribute; add enctype and accept + attributes; support fieldset + +2005-04-21 11:44 nwalsh + + * src/mathml.rnc, src/pool.rnc, src/svg.rnc: Improve definition of + db._any + +2005-04-21 11:41 nwalsh + + * src/htmltbl.rnc: Allow common attributes on HTML table elements; + allow orient, pgwide, tabstyle, and floatstyle on HTML table + element + +2005-04-21 11:40 nwalsh + + * src/htmlform.rnc: Method attribute values in lowercase; action is + an xsd:anyURI + +2005-04-21 11:01 nwalsh + + * src/calstbl.rnc: Allow floatstyle on table and informaltable + +2005-04-21 10:56 nwalsh + + * src/calstbl.rnc, src/pool.rnc: Allow caption in mediaobject, + figure, example, and table + +2005-04-21 10:47 nwalsh + + * src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, src/index.rnc, + src/math.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/toc.rnc: Make separate patterns for + attributes and enumerations + +2005-04-21 09:32 nwalsh + + * src/pool.rnc: Renamed pattern + +2005-04-12 13:30 nwalsh + + * src/docbook.rnc: DocBook NG: The Kahlua Release + +2005-04-12 13:29 nwalsh + + * src/annotations.rnc, src/bibliography.rnc, src/callouts.rnc, + src/calstbl.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmlform.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Updated version name + +2005-04-12 13:18 nwalsh + + * src/pool.rnc: Fix stupid search-and-replace bug in systemitem + class values + +2005-04-12 13:02 nwalsh + + * ., .cvsignore, Makefile, build/Makefile: Updated for new build + environment + +2005-04-12 12:52 nwalsh + + * tests, tests/skip, tests/skip/README, + tests/skip/bibliography.001.xml, tests/skip/bibliography.002.xml, + tests/skip/cmdsynopsis.002.xml, tests/skip/glossary.002.xml, + tests/skip/indexterm.004.xml, tests/skip/indexterm.005.xml, + tests/skip/legalnotice.001.xml, tests/skip/olink.001.xml, + tests/skip/refentry.006.xml, tests/skip/template.xml, + tests/skip/toc.001.xml, tests/skip/variablelist.002.xml, + tests/skip/xref.002.xml: Reorganize CVS directory structure + +2005-04-12 12:45 nwalsh + + * ., .cvsignore, Makefile, build, build/.cvsignore, build/Makefile, + spec, spec/Makefile, spec/docbook.xml, src, src/annotations.rnc, + src/bibliography.rnc, src/callouts.rnc, src/calstbl.rnc, + src/docbook.rnc, src/ebnf.rnc, src/glossary.rnc, src/hier.rnc, + src/htmlform.rnc, src/htmltbl.rnc, src/index.rnc, src/math.rnc, + src/mathml.rnc, src/msgset.rnc, src/pool.rnc, src/qandaset.rnc, + src/refentry.rnc, src/refsect1.rnc, src/sect1.rnc, src/svg.rnc, + src/tasks.rnc, src/toc.rnc, src/xlink.rnc: Reorganize CVS + directory structure + diff --git a/README b/README new file mode 100644 index 0000000..abd1c7f --- /dev/null +++ b/README @@ -0,0 +1,25 @@ +README for the DocBook Schema + +For more information about DocBook, please see + + http://www.oasis-open.org/docbook/ + +Please send all questions, comments, concerns, and bug reports to the +DocBook mailing list: docbook@lists.oasis-open.org + +This distribution contains: + + README This file + VERSION The version of DocBook in this distribution + docs/ Documentation (see also http://docbook.org/tdg5/en/) + docs/howto.* A "HOWTO" describing how to upgrade from DocBook V4.x + docs/*docbook.* The DocBook specification + tools/ Tools for working with DocBook + tools/db4-upgrade.xsl An XSLT (1.0) stylesheet for upgrading DocBook V4.x + documents to DocBook V5.x + tools/db4-entities.pl A Perl script to aid in the transition from external + parsed entities to XInclude + rng/ DocBook schemas implemented in RELAX NG + dtd/ DocBook schemas implemented in XML DTDs + xsd/ DocBook schemas implemented in W3C XML Schema + sch/ Additional normative constraints expressed in Schematron diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..819e07a --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +5.0 diff --git a/catalog.xml b/catalog.xml new file mode 100644 index 0000000..4c24614 --- /dev/null +++ b/catalog.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docbook.nvdl b/docbook.nvdl new file mode 100644 index 0000000..a3d8730 --- /dev/null +++ b/docbook.nvdl @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/docbook-5.0-spec-cd-01.html b/docs/docbook-5.0-spec-cd-01.html new file mode 100644 index 0000000..c1b9138 --- /dev/null +++ b/docs/docbook-5.0-spec-cd-01.html @@ -0,0 +1,1115 @@ + + + + + +The DocBook Schema + + + + + + + + + + + + + +
+
+ +

The DocBook Schema

+

Committee Draft, 06 February 2008

+
+
Document identifier:
+
+

docbook-5.0-spec-cd-01 (.xml, .html, .pdf)

+
+
Location:
+
+

http://www.oasis-open.org/docbook/specs

+
+
Editor:
+
+

Norman Walsh, Sun Microsystems, Inc. 

+
+
Abstract:
+
+

DocBook is a general purpose [xml-rec] schema particularly well suited to books and papers about computer hardware and software (though it is by no means limited to these applications).

+

The Version 5.0 release is a complete rewrite of DocBook in RELAX NG. The intent of this rewrite is to produce a schema that is true to the spirit of DocBook while simultaneously removing inconsistencies that have arisen as a natural consequence of DocBook's long, slow evolution. The Technical Committee has taken this opportunity to simplify a number of content models and tighten constraints where RELAX NG makes that possible.

+

The Technical Committee provides the DocBook 5.0 schema in other schema languages, including W3C XML Schema and an XML DTD, but the RELAX NG Schema is now the normative schema.

+
+
Status:
+
+

This is a Committee Draft. It does not necessarily represent the consensus of the committee.

+

Please send comments on this specification to the list. To subscribe, please use the OASIS Subscription Manager.

+

The errata page for this specification is at http://www.oasis-open.org/docbook/specs/docbook5-errata.html.

+
+
+ +
+
+ +
+
+
+
+

1. Introduction

+
+
+

DocBook is general purpose XML schema particularly well suited to books and papers about computer hardware and software (though it is by no means limited to these applications).

+

The DocBook Technical Committee maintains the DocBook schema. Starting with V5.0, DocBook is normatively available as a [relaxng] Schema (with some additional Schematron assertions). W3C XML Schema and Document Type Definition (DTD) versions are also available.

+

The Version 5.0 release is a complete rewrite. In programming-language terms, think of it as a code refactoring.

+

This rewrite introduces a large number of backwards-incompatible changes. Essentially all DocBook V4.x documents will have to be modified to validate against DocBook V5.0. An XSLT 1.0 stylesheet is provided to ease this transition.

+

The DocBook Technical Committee welcomes bug reports and requests for enhancement (RFEs) from the user community. The current list of outstanding requests is available through the SourceForge tracker interface. This is also the preferred mechanism for submitting new requests. Old RFEs, from a previous legacy tracking +system, are archived for reference.

+
+
+
+
+

2. Terminology

+
+
+

The key words must, must not, required, shall, shall not, should, should not, recommended, may, and optional in this Committee Draft are to be interpreted as described in [rfc2119]. +Note that for reasons of style, these words are not capitalized in this document.

+
+
+
+
+

3. The DocBook RELAX NG Schema V5.0

+
+
+

The DocBook RELAX NG Schema is distributed from the DocBook site at OASIS. DocBook is also available from the mirror on http://docbook.org/.

+
+
+
+

3.1. Changes in DocBook V5.0

+
+
+

There are no user-visible changes in 5.0 (Public Review Draft 1).

+

This version of DocBook V5.0 will become the official Committee Specification version of DocBook V5.0 as soon as the Technical Committee balloting process is finished.

+
+
+
+
+

3.2. Changes in DocBook V5.0CR7

+
+
+

There are no user-visible changes in 5.0CR7. Some of the sources we reorganized to make future customization easier.

+

If no bug reports are received before the November 7, 2007 DocBook TC meeting, this version will become the official DocBook V5.0 release.

+
+
+
+
+

3.3. Changes in DocBook V5.0CR6

+
+
+

This release contains a few bug fixes and improvements over V5.0CR5.

+
+
    +
  1. +

    Fixed RFE 1759782: Allow uri anywhere email occurs.

    +
  2. +
  3. +

    Fixed RFE 1784312: Allow book to be completely empty; allow personblurb and titleabbrev in bibliographic contexts.

    +
  4. +
  5. +

    Fixed RFE 1795884: Allow MathML in inlineequation.

    +
  6. +
  7. +

    Fixed RFE 1800916: Allow keycap (and friends) in userinput.

    +
  8. +
+
+
+
+
+
+

3.4. Changes in DocBook V5.0CR5

+
+
+

There are no user-visible changes in DocBook V5.0CR5.

+
+
+
+
+

3.5. Changes in DocBook V5.0CR4

+
+
+

This release contains a few improvements over V5.0CR3.

+
+
    +
  1. +

    Fixed RFE 1708032: Fixed pattern naming inconsistency; changed db.href.attribute to db.href.attributes.

    +
  2. +
  3. +

    Fixed RFE 1700154: Added sortas to termdef.

    +
  4. +
  5. +

    Fixed RFE 1686919: Added an NVDL rules file.

    +
  6. +
  7. +

    Fixed RFE 1705596: Aded db.programming.inlines (classname, exceptionname, function, initializer, interfacename, methodname, modifier, ooclass, ooexception, oointerface, parameter, returnvalue, type, and varname) to the content model of code.

    +
  8. +
  9. +

    Fixed RFE 1689228: Fixed typo in Schematron assertion.

    +
  10. +
+
+
+
+
+
+

3.6. Changes in DocBook V5.0CR3

+
+
+

This release contains a few improvements over V5.0CR2.

+
+
    +
  1. +

    Fixed RFE 1679775: Changed semantics of termdef. A firstterm is now required (instead of a glossterm as in previous releases).

    +
  2. +
  3. +

    Fixed RFE 1673820: Adopted “http://docbook.org/xlink/role/olink” as an XLink role value (xlink:role) to identify OLinks expressed using XLink attributes.

    +
  4. +
  5. +

    Allow info in HTML tables.

    +
  6. +
  7. +

    Fixed RFE 1682917: Added pgwide attribute to example.

    +
  8. +
  9. +

    Fixed RFE 1644553: Added label attribute to CALS and HTML tables.

    +
  10. +
  11. +

    Fixed RFE 1588693: Added an acknowledgements element, peer to dedication, replacing ackno which had only been available at the end of article.

    +
  12. +
+
+
+
+
+
+

3.7. Changes in DocBook V5.0CR2

+
+
+

This release contains a few improvements over V5.0CR1 and a few bug fixes.

+
+
    +
  1. +

    Fixed RFE 1630203: Allow empty glossary.

    +
  2. +
  3. +

    Fixed RFE 1627845: Allow optional caption on CALS table and informaltable.

    +
  4. +
  5. +

    Related to RFE 1627845: Allow inlines in HTML table caption.

    +
  6. +
  7. +

    Fixed RFE 1589139 (and RFE 1621178): Allow title and titleabbrev on qandaentry.

    +
  8. +
  9. +

    Fixed RFE 1675932: Restore localname, prefix and namespace as class attribute values on tag.

    +
  10. +
  11. +

    Fixed RFE 1669465: Schematron rules should refer to @xml:id, not @id.

    +
  12. +
+
+
+
+
+
+

3.8. Changes in DocBook V5.0CR1

+
+
+

This release contains a few improvements over V5.0b9 and a few bug fixes.

+
+
    +
  1. +

    Made the content model of blockquote broader. It was restricted too far in the transition to 5.0.

    +
  2. +
  3. +

    Fixed RFE 1575537: Allow markup from other namespaces in info.

    +
  4. +
  5. +

    Fix the content model of ackno so that it's the same as DocBook 4.x.

    +
  6. +
  7. +

    Fix bug where caption was accidentally allowed in CALS tables.

    +
  8. +
+
+
+
+
+
+

3.9. Changes in DocBook V5.0b9

+
+
+

This release contains several improvements over V5.0b8.

+
+
    +
  1. +

    Fixed RFE 1537424: Allow jobtitle inline.

    +
  2. +
  3. +

    Fixed typo; titles are now required on task, consistent with DocBook V4.x.

    +
  4. +
  5. +

    Fixed RFE 1554914: Make targetdoc attribute on olink optional.

    +
  6. +
  7. +

    Fixed RFE 1568417: Don't generate duplicate Schematron rules.

    +
  8. +
  9. +

    Fixed RFE 1568419: Inverted Schematron assertion for termdef.

    +
  10. +
+
+
+
+
+
+

3.10. Changes in DocBook V5.0b8

+
+
+

This release contains several improvements over V5.0b7.

+
+
    +
  1. +

    Fixed RFE 1535166: Improve the data types of attributes in DocBook.

    +
  2. +
  3. +

    Fixed RFE 1549632: The inlineequation element should use inlinemediaobject not mediaobject.

    +
  4. +
  5. +

    A number of small documentation improvements in the area of attribute and attribute enumerations.

    +
  6. +
+
+
+
+
+
+

3.11. Changes in DocBook V5.0b7

+
+
+

This release contains several improvements over V5.0b6.

+
+
    +
  1. +

    Fixed RFE 1520074: Define separate patterns for all the effectivity attributes to make customization easier.

    +
  2. +
  3. +

    Attempted to address RFE 1512505: Added an audience effectivity attribute.

    +
  4. +
  5. +

    Rename audience, origin, and level on simplemsgentry to msgaud, msgorig, and msglevel, respectively. This is a better parallel with the descendent elements of msgentry and avoids a conflict with the +newly introduced audience effectivity attribute.

    +
  6. +
  7. +

    Added startinglinenumber attribute to orderedlist.

    +
  8. +
  9. +

    Fixed bug where one of fileref or entityref was required on imagedata even when the content was inline MathML or SVG.

    +
  10. +
+
+
+
+
+
+

3.12. Changes in DocBook V5.0b6

+
+
+

This release contains several improvements over V5.0b5.

+
+
    +
  1. +

    Fixed RFE 1434294: Allow MathML and SVG in imagedata. Note: SVG is no longer allowed as an alternative to imagedata. The alignment, scaling, and other presentational attributes are on imagedata so it seems more +reasonable to allow SVG and MathML inside it.

    +
  2. +
  3. +

    Fixed RFE 1468921: Add person element. Added person and org.

    +
  4. +
  5. +

    Fixed RFE 1306027: Support for aspect-oriented programming. Allow modifier to appear in more places, and allow xml:space on modifier.

    +
  6. +
  7. +

    Added db.publishing.inlines to db.bibliographic.elements so that, for example, foreignphrase can be used in bibliomixed.

    +
  8. +
+
+
+
+
+
+

3.13. Changes in DocBook V5.0b5

+
+
+

This release contains several improvements over V5.0b4.

+
+
    +
  1. +

    Restored the class attribute on refmiscinfo (removing the type attribute introduced in V5.0b4). The class attribute is now an enumerated list with the standard otherclass extension point.

    +
  2. +
  3. +

    Added parameter to db.technical.inlines. This allows parameter to occur in places like userinput and computeroutput.

    +
  4. +
  5. +

    Allow XInclude elements in info elements (in the docbookxi schemas).

    +
  6. +
  7. +

    Fixed bugs in the build process that resulted in broken DTD versions of beta 4 and earlier betas.

    +
  8. +
+
+
+
+
+
+

3.14. Changes in DocBook V5.0b4

+
+
+

This release contains several improvements over V5.0b3.

+
+
    +
  1. +

    Fixed RFE 1416903: Added a cover element to hold additional material for document covers. Updated reference documentation.

    +
  2. +
  3. +

    Corrected a typo in the list of values allowed on the class attribute of biblioid: changed “pubnumber” to “pubsnumber” (note the “s”). This is consistent with its use as a replacement for the pubsnumber tag that has been removed in DocBook V5.0.

    +
  4. +
  5. +

    Fixed a bug in the content model of the various “info” elements. In previous beta releases, the title-related elements (title, titleabbrev, and subtitle) were erroneously required to appear first. The requirement is only that they appear exactly or at most once, depending on the context.

    +
  6. +
  7. +

    Renamed the “sgmlcomment” attribute value of the class attribute of tag. There's no significant difference between XML and SGML comments and the “SGML” name implies that there ought to be an “xmlcomment” value, which there is not. The new value is simply “comment”.

    +
  8. +
  9. +

    Renamed the “class” attribute of refmiscinfo. The DocBook semantics of class attributes is that they have enumerated values. This attribute should always have been called “type” as it is now.

    +
  10. +
  11. +

    Updated renderas on bridgehead and class on othercredit to have “attribute/otherattribute” co-constraints. (In other words, if you select “other” for renderas on bridgehead or class on othercredit, you +have to also provide a value for otherrenderas or othercredit, respectively.

    +
  12. +
  13. +

    Changed width attribute in media objects to be “text” instead of “xs:integer”.

    +
  14. +
  15. +

    Fixed bug in the build process that resulted in unusable XML Schema versions of beta 2 and beta 3.

    +
  16. +
  17. +

    Improved reference documentation for attributes on many elements.

    +
  18. +
+
+
+
+
+
+

3.15. Changes in DocBook V5.0b3

+
+
+

This release contains several small improvements over V5.0b2.

+
+
    +
  1. +

    Fixed RFE 1358844: allow multiple imageobjects inside an imageobjectco. Updated reference documentation.

    +
  2. +
  3. +

    Restored default values to the type attribute on simplelist and the choice and rep attributes on methodparam, arg, and group. Fixed a bug in paramdef where plain was +accidentally allowed as a choice. These defaults are reflected in the generated XML DTD as well.

    +
  4. +
  5. +

    Reduced the content model of blockquote which seemed way too broad.

    +
  6. +
  7. +

    Improved reference documentation for attributes on many elements.

    +
  8. +
+
+
+
+
+
+

3.16. Changes in DocBook V5.0b2

+
+
+

This release addresses several bugs identified in V5.0b1.

+
+
    +
  1. +

    When SVG or MathML are used, allow more than one element from the respective namespace to be used in the appropriate location.

    +
  2. +
  3. +

    Fixed RFE 1356238: the xrefstyle attribute on olink is now “text” rather than “xsd:IDREF”.

    +
  4. +
  5. +

    Fixed RFE 1380477: Make xml:id optional on areas within areaset; allow linking attributes on areaset; establish the semantics that an area inside an areaset inherits its linking attributes from the areaset if it doesn't have linking attributes of its own.

    +
  6. +
  7. +

    Allow alt inside equation, informalequation, and inlineequation.

    +
  8. +
  9. +

    Fixed RFE 1356254: dbforms.rnc schema now supports the HTML form elements.

    +
  10. +
+
+
+
+
+
+

3.17. Changes in DocBook V5.0

+
+
+

In V5.0, DocBook has been rewritten as a native RELAX NG grammar. The goals of this redesign were to produce a schema that:

+
+
    +
  1. +

    “feels like” DocBook. Most existing documents should still be valid or it should be possible to transform them in simple, mechanical ways into valid documents.

    +
  2. +
  3. +

    enforces as many constraints as possible in the schema. Some additional constraints are expressed with Schematron rules.

    +
  4. +
  5. +

    cleans up the content models.

    +
  6. +
  7. +

    gives users the flexibility to extend or subset the schema in an easy and straightforward way.

    +
  8. +
  9. +

    can be used to generate XML DTD and W3C XML Schema versions of DocBook.

    +
  10. +
+
+

Under the ordinary operating rules of DocBook evolution, the only backwards incompatible changes that could be made in DocBook V5.0 were those announced in DocBook V4.0. In light of the fact that this is a complete rewrite, the Technical Committee gave itself the freedom to make "unannounced" backwards-incompatible changes for this one release.

+
+
+
+

3.17.1. Removing Legacy Elements

+
+
+

A number of elements have been removed from DocBook. Many of these have been replaced by simpler, more versatile alternatives. Others have simply been removed because they are not believed to be widely used.

+
+

Table 1. DocBook Element Changes

+
+ +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Element(s)Explanation
+

articleinfo, bookinfoinfo, …, *info

+
+

Replaced by info, see Section 3.17.3, “Uniform Info Elements”.

+
+

authorblurb

+
+

Replaced by personblurb. This more general name better reflects the fact that it is available in elements other than author (e.g., editor).

+
+

collabname, corpauthor, corpcredit, corpname

+
+

Replaced by orgname and the updated content models of author, editor, and othercredit.

+
+

graphic, graphicco, inlinegraphic, mediaobjectco

+
+

Removed in favor of mediaobject and inlinemediaobject.

+
+

isbn, issn, pubsnumber

+
+

Replaced by biblioid.

+
+

lot, lotentry, tocback, tocchap, tocfront, toclevel1, toclevel2, toclevel3, toclevel4, toclevel5, tocpart

+
+

Replaced by simpler tocdiv element.

+
+

ulink

+
+

Replaced by ubiquitous linking, see Section 3.17.9, “Universal Linking”.

+
+

sgmltag

+
+

Replaced by tag.

+
+

action, beginpage, highlights, interface, invpartnumber, medialabel, modespec, structfield, structname

+
+

Removed.

+
+
+
+
+
+
+
+

3.17.2. Smaller Content Models

+
+
+

The content models of many inlines have been reduced, sometimes drastically. The parameter entity customization of DocBook V4.x and previous versions resulted in very broad content models for some inlines.

+

Consider, for example, command in DocBook V4.4:

+
+command ::=
+   (#PCDATA|link|olink|ulink|action|application|classname|methodname|
+   interfacename|exceptionname|ooclass|oointerface|ooexception|
+   command|computeroutput|database|email|envar|errorcode|errorname|
+   errortype|errortext|filename|function|guibutton|guiicon|guilabel|
+   guimenu|guimenuitem|guisubmenu|hardware|interface|keycap|keycode|
+   keycombo|keysym|literal|code|constant|markup|medialabel|
+   menuchoice|mousebutton|option|optional|parameter|prompt|property|
+   replaceable|returnvalue|sgmltag|structfield|structname|symbol|
+   systemitem|uri|token|type|userinput|varname|nonterminal|anchor|
+   remark|subscript|superscript|inlinegraphic|inlinemediaobject|
+   indexterm|beginpage)*
+
+

In DocBook V5.0, command has a much smaller, more rational content model:

+
+command ::=
+
+  * Zero or more of:
+      o text
+      o alt
+      o anchor
+      o annotation
+      o biblioref
+      o indexterm
+      o inlinemediaobject
+      o link
+      o phrase
+      o remark
+      o replaceable
+      o subscript
+      o superscript
+      o xref
+
+

DocBook V5.0 may be overzealous in its simplification of content models. The Technical Committee expects to adjust these simplifications during user testing. Users are encouraged to report places where formally valid documents can no longer be made valid because content models have been reduced.

+
+
+
+
+

3.17.3. Uniform Info Elements

+
+
+

DocBook V4.x has setinfo, bookinfo, chapterinfo, appendixinfo, sectioninfo, etc. DocBook would be smaller and simpler if it had a single info element in all these places.

+

There’s an historical reason for the large number of unique names: customizers might very well want to adjust the content models of info elements at different levels. For example, a copyright statement might be required at the book level, or an author forbidden at the sub-section level. In DTDs, there’s only one content model allowed per element name, so in order to support independent customization, each info element must have a different name.

+

In RELAX NG, no such limitation exists. We can use patterns to achieve both a single info element while still allowing customizers to change its content model in different contexts. In light of this functionality, we've replaced all the various flavors of info with a single element name.

+
+
+
+
+

3.17.4. Required Titles

+
+
+

DocBook V5.0 enforces the constraint that titles are required on articles and other large structures where they are effectively optional in DocBook V4.x. (They are optional only in the sense that DTDs are unable to enforce the constraint that they be present, the documentation has always made it clear that titles were required.)

+
+
+
+
+

3.17.5. Required Version

+
+
+

In DocBook V4.x and earlier, the presence of a document type declaration served as a mechanism for identifying the DocBook version of a document. Although the declaration was not actually required, it was present in the vast majority of DocBook documents.

+

In RELAX NG, no similar declaration exists. Although a document type declaration might still be present, it seems likely that this will not usually be the case.

+

Nevertheless, downstream processors may benefit from some indication of the version of DocBook being used. As a result DocBook V5.0 adds a new version attribute which must be present on the document element of a DocBook document.

+

Mixing versions is explicitly allowed and the version attribute may be used on other elements as well. This might be the case, for example, in a compound document constructed from multiple documents each with its own version.

+
+
+
+
+

3.17.6. Co-Constraints

+
+
+

DocBook V5.0 enforces attribute co-constraints such as the class/otherclass attributes on biblioid.

+
+
+
+
+

3.17.7. Improved HTML and CALS Table Support

+
+
+

In DocBook V5.0, HTML tables and CALS tables are independently specified. Where the DTD of DocBook V4.x allows for incoherent mixing of the two models, DocBook V5.0 forbids such mixtures.

+
+
+
+
+

3.17.8. Data Types

+
+
+

DocBook V5.0 adds a few simple data types. For example, the cols attribute on tgroup must be a positive integer.

+

Some of these constraints, such as the requirement that elements like pubdate include a proper date-time type, may prove controversial. Users are encouraged to report places where formally valid documents can no longer be made valid because data types have been introduced.

+
+
+
+
+

3.17.9. Universal Linking

+
+
+

Starting with DocBook V5.0, the linkend and xlink:href attributes are available on almost all elements.

+

The linkend attribute provides an ID/IDREF link within the document. The xlink:href attribute provides a URI-based link.

+

The ulink element has been removed from DocBook as URI-based links can now be achieved directly from the appropriate inline (such as productname or command). For instances where no specific semantic inline is needed, link is still available. Where link used to be limited to ID/IDREF linking, it now sports an xlink:href attribute as well.

+

Support for extended links are provided through the extendedlink, arc, and locator elements.

+
+
+
+
+

3.17.10. Improved Accessibility

+
+
+

Accessibility is improved by allowing both inline and block annotations in most context. The alt element is now allowed in most places for inline annotations, the new element annotation supports block annotations.

+
+
+
+
+

3.17.11. Simplified Table of Contents Markup

+
+
+

The DocBook V4.x markup for Tables of Contents, or more generally for Lists of Titles, was complex and had not evolved quite in step with the rest of DocBook. In DocBook V5.0, it has all been replaced by a quite simple, recursive toc/tocdiv/tocentry structure.

+

While most Tables of Contents and Lists of Titles are generated automatically and authors never have to produce markup for them by hand, this simplified content model should make it easier for authors to generate them when necessary. One possible application of hand-authored toc markup is to generate custom hierarchies which can be assembled on-the-fly from a library of topics marked up in DocBook.

+
+
+
+
+

3.17.12. Extra-Grammatical Constraints

+
+
+

Grammar based validation technologies (like RELAX NG) and rule based validation technologies (like Schematron) are naturally complementary. Mixing them allows us to play to the strengths of each without stretching either to enforce constraints that they aren’t readily designed to enforce.

+

For example, DocBook NG requires that the root element of a document have an explicit version attribute. Because there are a great many elements that can be root elements in DocBook, and because they can almost all appear as descendants of a root element as well, it would be tedious to express this constraint in RELAX NG. But it is easy in a rule-based schema language.

+

DocBook V5.0 uses Schematron where appropriate.

+
+
+
+
+

3.17.13. Customization

+
+
+

From the very beginning, one of the goals of DocBook has been that users should be able to produce customizations that are either subsets of extensions of DocBook.

+

Customization is possible in DocBook V4.x, but because of the intricacies of XML DTD syntax and the complex and highly stylized patterns of parameter entitiy usage in DocBook, it's not as easy as we would like it to be.

+

In DocBook V5.0, we hope to take advantage of RELAX NGs more robust design (and it's lack of pernicious determinism rules) to make customization easier.

+

Three schema design patterns get us most of the way there.

+
+
+
+
3.17.13.1. Logical Groupings
+
+
+

DocBook elements, particularly the inlines, can be divided into broad classes: general purpose, technical, error-related, operating-system related, bibliographic, publishing, etc. In DocBook V5.0, these are collected together in named patterns.

+

To add a new inline, endpoint for example, to the list of technical inlines, one need only extend the appropriate pattern. If an element should appear in several classes, they can all be extended in the same way:

+
+db.technical.inlines |= endpoint
+db.programming.inlines |= endpoint
+db.os.inlines |= endpoint
+
+

Much the same concept was used in DocBook V4.x, where instead of patterns we had parameter entities. However, the constraints of DTD validation severely limit the circumstances under which an element can appear twice in a content model. That meant that adding an element to one parameter entity might make it an error to add it to another. Such constraints do not exist in RELAX NG which greatly simplifies the customization.

+
+
+
+
+
3.17.13.2. Element Definitions
+
+
+

Each element in DocBook V5.0 is defined by its own pattern. To change the content model of an element, only that pattern need be redefined. To remove an element from DocBook, that pattern can be redefined as "notAllowed".

+
+
+
+
+
3.17.13.3. Attribute Definitions
+
+
+

Each attribute list in DocBook V5.0 is defined by its own pattern. To change the list of attributes available on an element, only that pattern need be redefined. To remove all the attributes, that pattern can be redefined as "empty".

+
+
+
+
+
+

3.17.14. Conversion

+
+
+

There’s an XSLT 1.0 stylesheet for performing conversion from DocBook V4.x to DocBook V5.0. Presented with a valid DocBook V4.x document, it attempts to produce a valid DocBook V5.0 document.

+

It succeeds entirely automatically for the most part, though human intervention is suggested for constructs that might have multiple interpretations (and therefore multiple possible transformations).

+

Users are encouraged to report documents that are not successfully transformed by the stylesheet, especially those which do have valid DocBook V5.0 representations.

+
+
+
+
+
+
+

4. Release Notes

+
+
+

See http://www.relaxng.org/ for a list of tools that can validate an XML document using RELAX NG. Note that not all products are capable of evaluating the Schematron assertions in the schema.

+
+
+

A. The DocBook Media Type

+

This appendix registers a new MIME media type, "application/docbook+xml".

+
+
+
+

1. Registration of MIME media type application/docbook+xml

+
+
+
+
+
MIME media type name:
+
+

application

+
+
MIME subtype name:
+
+

docbook+xml

+
+
Required parameters:
+
+

None.

+
+
Optional parameters:
+
+
+
+
charset
+
+

This parameter has identical semantics to the charset parameter of the application/xml media type as specified in [rfc3023] or its successors.

+
+
+
+
+
Encoding considerations:
+
+

By virtue of DocBook XML content being XML, it has the same considerations when sent as "application/docbook+xml" as does XML. See [rfc3023], Section 3.2.

+
+
Security considerations:
+
+

Several DocBook elements may refer to arbitrary URIs. In this case, the security issues of RFC 2396, section 7, should be considered.

+
+
Interoperability considerations:
+
+

None.

+
+
Published specification:
+
+

This media type registration is for DocBook documents as described by [bib.docbooktdg5].

+
+
Applications which use this media type:
+
+

There is no experimental, vendor specific, or personal tree predecessor to "application/docbook+xml", reflecting the fact that no applications currently recognize it. This new type is being registered in order to allow for the deployment of DocBook on the World Wide Web, as a first class XML application.

+
+
Additional information:
+
+
+
+
Magic number(s):
+
+

There is no single initial octet sequence that is always present in DocBook documents.

+
+
File extension(s):
+
+

DocBook documents are most often identified with the extension ".xml".

+
+
Macintosh File Type Code(s):
+
+

TEXT

+
+
+
+
+
Person & email address to contact for further information:
+
+

Norman Walsh, .

+
+
Intended usage:
+
+

COMMON

+
+
Author/Change controller:
+
+

The DocBook specification is a work product of the DocBook Technical Committee at OASIS.

+
+
+
+
+
+
+
+

2. Fragment Identifiers

+
+
+

For documents labeled as "application/docbook+xml", the fragment identifier notation is exactly that for "application/xml", as specified in [rfc3023] or its successors.

+
+
+
+

B. OASIS DocBook Technical Committee (Non-Normative)

+

The following individuals were members of the committee during the formulation of this Committee Draft:

+
+
    +
  • +

    Steve Cogorno, Sun Microsystems

    +
  • +
  • +

    Gary Cornelius, Individual

    +
  • +
  • +

    Adam Di Carlo, Debian

    +
  • +
  • +

    Paul Grosso, Arbortext

    +
  • +
  • +

    Dick Hamilton, Individual

    +
  • +
  • +

    Nancy Harrison, IBM

    +
  • +
  • +

    Scott Hudson, Individual

    +
  • +
  • +

    Mark Johnson, Debian

    +
  • +
  • +

    Gershon Joseph, Tech-Tav Documentation Ltd.

    +
  • +
  • +

    Jirka Kosek, Individual

    +
  • +
  • +

    Larry Rowland, Hewlett-Packard

    +
  • +
  • +

    Michael Smith, Individual

    +
  • +
  • +

    Robert Stayton, Individual (Secretary)

    +
  • +
  • +

    Norman Walsh, Sun Microsystems (Chair, Editor)

    +
  • +
+
+
+
+

C. Notices

+

Copyright © The Organization for the Advancement of Structured Information Standards [OASIS] 2001, 2002, 2003, 2004, 2005. All Rights Reserved.

+

OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of +claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.

+

OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.

+

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to +OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.

+

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

+

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

+

OASIS has been notified of intellectual property rights claimed in regard to some or all of the contents of this specification. For more information consult the online list of claimed rights.

+
+
+

D. Intellectual Property Rights

+

For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the DocBook web page (http://www.oasis-open.org/committees/docbook/)

+
+
+

E. Revision History

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Revision Committee Draft “Public Review Draft 1”6 February 2008
Revision Working Draft “Candidate Release 7”28 September 2007
Revision Working Draft “Candidate Release 6”27 September 2007
Revision Working Draft “Candidate Release 1”21 December 2006
Revision Working Draft “Beta 9”26 October 2006
Revision Working Draft “Beta 8”26 September 2006
Revision Working Draft “Beta 7”21 July 2006
Revision Working Draft “Beta 6”2 June 2006
Revision Working Draft “Beta 5”16 April 2006
Revision Working Draft “Beta 4”9 March 2006
Revision Working Draft “Beta 3”1 February 2006
Revision Working Draft “Beta 2”12 January 2006
Revision Working Draft “Beta 1”27 October 2005
Revision Working Draft “Alpha 1”26 June 2005
+
+
+
+
+
+

References

+
+
+
+

Normative

+
+

[relaxng] Error: no bibliography entry: relaxng found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[xml-rec] Error: no bibliography entry: xml-rec found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[xlink11] Error: no bibliography entry: xlink11 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[rfc2119] Error: no bibliography entry: rfc2119 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[rfc3023] Error: no bibliography entry: rfc3023 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[bib.docbooktdg5] Error: no bibliography entry: bib.docbooktdg5 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+
+

Non-Normative

+
+

[iso8879] Error: no bibliography entry: iso8879 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[xmlschema-1] Error: no bibliography entry: xmlschema-1 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[xmlschema-2] Error: no bibliography entry: xmlschema-2 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+

[schematron2000] Error: no bibliography entry: schematron2000 found in http://docbook.sourceforge.net/release/bibliography/bibliography.xml

+
+
+
+
+ + diff --git a/docs/docbook-5.0-spec-cd-01.pdf b/docs/docbook-5.0-spec-cd-01.pdf new file mode 100644 index 0000000..f8e963f Binary files /dev/null and b/docs/docbook-5.0-spec-cd-01.pdf differ diff --git a/docs/docbook-5.0-spec-cd-01.xml b/docs/docbook-5.0-spec-cd-01.xml new file mode 100644 index 0000000..37820ea --- /dev/null +++ b/docs/docbook-5.0-spec-cd-01.xml @@ -0,0 +1,1549 @@ + + + + +]> +
+ + +$Id: docbook.xml 7664 2008-02-06 14:01:48Z nwalsh $ + + + docbook + 5.0 + + cd + 01 + + + +&root;specs + +The DocBook Schema + + + + + Norman + Walsh + + + Sun + Sun Microsystems, Inc. +
Norman.Walsh@Sun.COM
+
+
+
+ +2008-02-06 + + +200120022003 +200420052006 +20072008 +The Organization for the Advancement of Structured Information +Standards [OASIS]. All Rights Reserved. + + +DocBook is a general purpose schema +particularly well suited to books and papers about computer hardware +and software (though it is by no means limited to these applications). + +The Version 5.0 release is a complete rewrite of DocBook in +RELAX NG. The intent of this rewrite is to produce a schema that is +true to the spirit of DocBook while simultaneously removing +inconsistencies that have arisen as a natural consequence of DocBook's +long, slow evolution. The Technical Committee has taken this +opportunity to simplify a number of content models and tighten +constraints where RELAX NG makes that possible. + +The Technical Committee provides the DocBook 5.0 schema in other +schema languages, including W3C XML Schema and an +XML DTD, but the RELAX NG Schema is now the normative schema. + + + + + +This is a &standard;. It does not necessarily +represent the consensus of the committee. + + +Please send comments on this specification to the +docbook@lists.oasis-open.org list. To subscribe, please +use the +OASIS Subscription +Manager. + +The errata page for this specification is at +. + + +
+ +
+Introduction + +DocBook is general purpose XML schema +particularly well suited to books and papers about computer hardware +and software (though it is by no means limited to these applications). + + +The DocBook +Technical Committee maintains the DocBook schema. Starting +with V5.0, DocBook is normatively available as a Schema (with some additional Schematron assertions). +W3C XML Schema and Document Type +Definition (DTD) versions are also available. + + +The Version 5.0 release is a complete rewrite. In +programming-language terms, think of it as a code refactoring. + +This rewrite introduces a large number of backwards-incompatible +changes. Essentially all DocBook V4.x documents will have to be +modified to validate against DocBook V5.0. An XSLT 1.0 stylesheet is +provided to ease this transition. + +The DocBook Technical Committee welcomes bug reports and +requests for enhancement (RFEs) from the user community. The current list +of outstanding requests is available through the +SourceForge +tracker +interface. This is also the preferred mechanism for submitting new requests. +Old RFEs, from a previous legacy tracking system, are +archived +for reference. + +
+ +
Terminology + +The key words must, must +not, required, +shall, shall not, +should, should not, +recommended, may, and +optional in this &standard; are to be +interpreted as described in . Note that for +reasons of style, these words are not capitalized in this +document. + +
+ +
+The DocBook RELAX NG Schema V5.0 + +The DocBook +RELAX NG Schema is distributed +from the +DocBook site at +OASIS. +DocBook is also available from the mirror on +. + + + + +
+Changes in DocBook V5.0 + +There are no user-visible changes in 5.0 (Public Review Draft 1). + + +This version of DocBook V5.0 will become the official Committee +Specification version of DocBook V5.0 as soon as the Technical Committee +balloting process is finished. +
+ +
+Changes in DocBook V5.0CR7 + +There are no user-visible changes in 5.0CR7. Some of the sources +we reorganized to make future customization easier. + +If no bug reports are received before the November 7, 2007 +DocBook TC meeting, this version will become the official DocBook V5.0 +release. +
+ +
+Changes in DocBook V5.0CR6 + +This release contains a few bug fixes and improvements over V5.0CR5. + + + +Fixed RFE 1759782: +Allow uri anywhere email occurs. + + +Fixed RFE 1784312: +Allow book to be completely empty; allow personblurb +and titleabbrev in bibliographic contexts. + + +Fixed RFE 1795884: +Allow MathML in inlineequation. + + +Fixed RFE 1800916: +Allow keycap (and friends) in userinput. + + +
+ +
+Changes in DocBook V5.0CR5 + +There are no user-visible changes in DocBook V5.0CR5. +
+ +
+Changes in DocBook V5.0CR4 + +This release contains a few improvements over V5.0CR3. + + + +Fixed RFE 1708032: +Fixed pattern naming inconsistency; changed +db.href.attribute to +db.href.attributes. + + + +Fixed RFE 1700154: +Added sortas to +termdef. + + + +Fixed RFE 1686919: +Added an NVDL rules file. + + + +Fixed RFE 1705596: +Aded db.programming.inlines +(classname, +exceptionname, +function, +initializer, +interfacename, +methodname, +modifier, +ooclass, +ooexception, +oointerface, +parameter, +returnvalue, +type, and +varname) +to the content model of code. + + + +Fixed RFE 1689228: +Fixed typo in Schematron assertion. + + + +
+ +
+Changes in DocBook V5.0CR3 + +This release contains a few improvements over V5.0CR2. + + + +Fixed RFE 1679775: +Changed semantics of termdef. A +firstterm is now required (instead of a glossterm as +in previous releases). + + +Fixed RFE 1673820: +Adopted “http://docbook.org/xlink/role/olink” +as an XLink role value (xlink:role) to +identify OLinks expressed using XLink attributes. + + +Allow info in HTML tables. + + +Fixed RFE 1682917: +Added pgwide attribute to +example. + + +Fixed RFE 1644553: +Added label attribute to CALS and +HTML tables. + + +Fixed RFE 1588693: +Added an acknowledgements element, peer to +dedication, replacing ackno which had only +been available at the end of article. + + +
+ +
+Changes in DocBook V5.0CR2 + +This release contains a few improvements over V5.0CR1 and a +few bug fixes. + + + +Fixed RFE 1630203: +Allow empty glossary. + + +Fixed RFE 1627845: +Allow optional caption on CALS table and +informaltable. + + +Related to RFE 1627845: +Allow inlines in HTML table caption. + + +Fixed RFE 1589139 +(and RFE 1621178): +Allow title and titleabbrev on qandaentry. + + + +Fixed RFE 1675932: +Restore localname, prefix +and namespace as class +attribute values on tag. + + + +Fixed RFE 1669465: +Schematron rules should refer to @xml:id, not @id. + + + +
+ +
+Changes in DocBook V5.0CR1 + +This release contains a few improvements over V5.0b9 and a +few bug fixes. + + + +Made the content model of blockquote broader. It was +restricted too far in the transition to 5.0. + + +Fixed RFE 1575537: +Allow markup from other namespaces in info. + + +Fix the content model of ackno so that it's the same +as DocBook 4.x. + + +Fix bug where caption was accidentally allowed in +CALS tables. + + +
+ +
+Changes in DocBook V5.0b9 + +This release contains several improvements over V5.0b8. + + + +Fixed RFE 1537424: +Allow jobtitle inline. + + +Fixed typo; titles are now required on task, +consistent with DocBook V4.x. + + +Fixed RFE 1554914: +Make targetdoc attribute on olink +optional. + + +Fixed RFE 1568417: +Don't generate duplicate Schematron rules. + + + +Fixed RFE 1568419: +Inverted Schematron assertion for termdef. + + + +
+ +
+Changes in DocBook V5.0b8 + +This release contains several improvements over V5.0b7. + + + +Fixed RFE 1535166: +Improve the data types of attributes in DocBook. + + + +Fixed RFE 1549632: +The inlineequation element should use +inlinemediaobject not mediaobject. + + + +A number of small documentation improvements in the area of +attribute and attribute enumerations. + + +
+ +
+Changes in DocBook V5.0b7 + +This release contains several improvements over V5.0b6. + + + +Fixed RFE 1520074: +Define separate patterns for all the effectivity attributes to make +customization easier. + + +Attempted to address +RFE 1512505: +Added an audience effectivity attribute. + + + +Rename audience, +origin, and level +on simplemsgentry to msgaud, +msgorig, and msglevel, +respectively. This is a better parallel with the descendent elements of +msgentry and avoids a conflict with the newly introduced +audience effectivity attribute. + + +Added startinglinenumber attribute +to orderedlist. + + + +Fixed bug where one of fileref or +entityref was required on +imagedata even when the content was inline MathML or SVG. + + + +
+ +
+Changes in DocBook V5.0b6 + +This release contains several improvements over V5.0b5. + + + +Fixed RFE 1434294: +Allow MathML and SVG in imagedata. Note: SVG is no longer +allowed as an alternative to imagedata. +The alignment, scaling, and other presentational attributes are on +imagedata so it seems more reasonable to allow SVG and MathML +inside it. + + + +Fixed RFE 1468921: +Add person element. Added person and org. + + + + +Fixed RFE 1306027: +Support for aspect-oriented programming. Allow modifier to +appear in more places, and allow xml:space +on modifier. + + + + +Added db.publishing.inlines to +db.bibliographic.elements so that, for example, +foreignphrase can be used in bibliomixed. + + + +
+ +
+Changes in DocBook V5.0b5 + +This release contains several improvements over V5.0b4. + + + +Restored the class attribute on +refmiscinfo (removing the type +attribute introduced in +V5.0b4). The class +attribute is now an enumerated list with the standard +otherclass extension point. + + + +Added parameter to db.technical.inlines. +This allows parameter to occur in places like +userinput and computeroutput. + + + + +Allow XInclude elements in info elements (in the +docbookxi schemas). + + + + +Fixed bugs in the build process that resulted in broken DTD versions +of beta 4 and earlier betas. + + + +
+
+Changes in DocBook V5.0b4 + +This release contains several improvements over V5.0b3. + + + +Fixed RFE 1416903: +Added a cover element to hold additional material for +document covers. Updated reference documentation. + + + + +Corrected a typo in the list of values allowed on the +class attribute of biblioid: +changed “pubnumber” to “pubsnumber” (note the “s”). This is consistent +with its use as a replacement for the pubsnumber tag that +has been removed in DocBook V5.0. + + + +Fixed a bug in the content model of the various “info” +elements. In previous beta releases, the title-related elements +(title, titleabbrev, and subtitle) +were erroneously required to appear first. The requirement is only that +they appear exactly or at most once, depending on the context. + + + +Renamed the “sgmlcomment” attribute +value of the class attribute of +tag. There's no significant difference between XML and +SGML comments and the “SGML” name implies that there ought to be +an “xmlcomment” value, which there is not. +The new value is simply “comment”. + + + + +Renamed the “class” attribute of +refmiscinfo. The DocBook semantics of class attributes is +that they have enumerated values. This attribute should always have +been called “type” as it is now. + + + + +Updated renderas on +bridgehead and class on +othercredit to have “attribute/otherattribute” co-constraints. +(In other words, if you select “other” for +renderas on bridgehead +or class on othercredit, +you have to also provide a value for otherrenderas +or othercredit, respectively. + + + +Changed width attribute in media objects +to be “text” instead of “xs:integer”. + + + + +Fixed bug in the build process that resulted in unusable XML +Schema versions of beta 2 and beta 3. + + + + +Improved reference documentation for attributes on many elements. + + + + +
+ +
+Changes in DocBook V5.0b3 + +This release contains several small improvements over V5.0b2. + + + +Fixed RFE 1358844: +allow multiple imageobjects inside an +imageobjectco. Updated reference documentation. + + + + +Restored default values to the +type attribute on simplelist +and the choice and +rep attributes on +methodparam, +arg, and +group. Fixed a bug in paramdef where +plain was accidentally allowed as a +choice. These defaults are reflected in the +generated XML DTD as well. + + + +Reduced the content model of blockquote which seemed +way too broad. + + + +Improved reference documentation for attributes on many elements. + + + + +
+
+Changes in DocBook V5.0b2 + +This release addresses several bugs identified in V5.0b1. + + + +When SVG or MathML are used, allow more than one element from the +respective namespace to be used in the appropriate location. + + + +Fixed RFE 1356238: +the xrefstyle attribute on +olink is now “text” rather than +“xsd:IDREF”. + + + +Fixed RFE 1380477: +Make xml:id optional on +areas within areaset; allow linking attributes on +areaset; establish the semantics that an area +inside an areaset inherits its linking attributes from the +areaset if it doesn't have linking attributes of its own. + + +Allow alt inside equation, +informalequation, and inlineequation. + + + +Fixed RFE 1356254: +dbforms.rnc schema now supports the HTML form elements. + + + + +
+
+Changes in DocBook V5.0 + +In V5.0, DocBook has been rewritten as a native RELAX NG +grammar. The goals of this redesign were to produce a schema +that: + + + +“feels like” DocBook. Most existing documents should still be +valid or it should be possible to transform them in simple, mechanical +ways into valid documents. + + + +enforces as many constraints as possible in the schema. Some additional +constraints are expressed with Schematron rules. + + + +cleans up the content models. + + + +gives users the flexibility to extend or subset the schema in an +easy and straightforward way. + + + +can be used to generate XML DTD and W3C XML Schema versions of DocBook. + + + + +Under the ordinary operating rules of DocBook evolution, the +only backwards incompatible changes that could be made in DocBook V5.0 +were those announced in DocBook V4.0. In light of the fact that this +is a complete rewrite, the Technical Committee gave itself the freedom +to make unannounced backwards-incompatible changes for +this one release. + +
+Removing Legacy Elements + +A number of elements have been removed from DocBook. Many of +these have been replaced by simpler, more versatile alternatives. +Others have simply been removed because they are not believed to be +widely used. + + +DocBook Element Changes + + + + Element(s) + Explanation + + + + + +articleinfo +bookinfoinfo + +*info + +Replaced by info, see +. + + + + + +authorblurb + +Replaced by personblurb. This more general +name better reflects the fact that it is available in elements other +than author (e.g., editor). + + + + + +collabname +corpauthor +corpcredit +corpname + +Replaced by orgname and the updated +content models of author, editor, +and othercredit. + + + + + +graphic +graphicco +inlinegraphic +mediaobjectco + +Removed in favor of mediaobject and +inlinemediaobject. + + + + + +isbn +issn +pubsnumber + +Replaced by biblioid. + + + + + +lot +lotentry +tocback +tocchap +tocfront +toclevel1 +toclevel2 +toclevel3 +toclevel4 +toclevel5 +tocpart + +Replaced by simpler tocdiv element. + + + + + +ulink + +Replaced by ubiquitous linking, see +. + + + + + +sgmltag + +Replaced by tag. + + + + + +action +beginpage +highlights +interface +invpartnumber +medialabel +modespec +structfield +structname + +Removed. + + + + +
+ +
+ +
+Smaller Content Models + +The content models of many inlines have been reduced, sometimes +drastically. The parameter entity customization of DocBook V4.x and +previous versions resulted in very broad content models for some +inlines. + +Consider, for example, +command in DocBook V4.4: + +command ::= + (#PCDATA|link|olink|ulink|action|application|classname|methodname| + interfacename|exceptionname|ooclass|oointerface|ooexception| + command|computeroutput|database|email|envar|errorcode|errorname| + errortype|errortext|filename|function|guibutton|guiicon|guilabel| + guimenu|guimenuitem|guisubmenu|hardware|interface|keycap|keycode| + keycombo|keysym|literal|code|constant|markup|medialabel| + menuchoice|mousebutton|option|optional|parameter|prompt|property| + replaceable|returnvalue|sgmltag|structfield|structname|symbol| + systemitem|uri|token|type|userinput|varname|nonterminal|anchor| + remark|subscript|superscript|inlinegraphic|inlinemediaobject| + indexterm|beginpage)* + +In DocBook V5.0, command has a much smaller, more +rational content model: + +command ::= + + * Zero or more of: + o text + o alt + o anchor + o annotation + o biblioref + o indexterm + o inlinemediaobject + o link + o phrase + o remark + o replaceable + o subscript + o superscript + o xref + +DocBook V5.0 may be overzealous in its simplification of content +models. The Technical Committee expects to adjust these simplifications +during user testing. Users are encouraged to report places where formally +valid documents can no longer be made valid because content models have +been reduced. +
+ +
+Uniform Info Elements + +DocBook V4.x has setinfo, +bookinfo, chapterinfo, +appendixinfo, sectioninfo, etc. +DocBook would be smaller and simpler if it had a single +info element in all these places. + +There’s an historical reason for the large number of unique +names: customizers might very well want to adjust the content models +of info elements at different levels. For example, a copyright +statement might be required at the book level, or an author +forbidden at the sub-section level. In DTDs, there’s only one content +model allowed per element name, so in order to support independent +customization, each info element must have a different name. + +In RELAX NG, no such limitation exists. We can use patterns to +achieve both a single info element while still allowing +customizers to change its content model in different contexts. In light +of this functionality, we've replaced all the various flavors of info +with a single element name. +
+ +
+Required Titles + +DocBook V5.0 enforces the constraint that titles are required on +articles and other large structures where they are +effectively optional in DocBook V4.x. (They are optional only in the sense +that DTDs are unable to enforce the constraint that they be present, the +documentation has always made it clear that titles were required.) + +
+ +
+Required Version + +In DocBook V4.x and earlier, the presence of a document type declaration +served as a mechanism for identifying the DocBook version of a document. +Although the declaration was not actually required, it was present in the +vast majority of DocBook documents. + +In RELAX NG, no similar declaration exists. Although a document type +declaration might still be present, it seems likely that this will not usually +be the case. + +Nevertheless, downstream processors may benefit from some indication +of the version of DocBook being used. As a result DocBook V5.0 adds a new +version attribute which +must be present on the document element of a DocBook +document. + +Mixing versions is explicitly allowed and the version attribute +may be used on other elements as well. This might be the case, for +example, in a compound document constructed from multiple documents each +with its own version. + +
+ +
+Co-Constraints + +DocBook V5.0 enforces attribute co-constraints such as the +class/otherclass +attributes on biblioid. + +
+ +
+Improved HTML and CALS Table Support + +In DocBook V5.0, HTML tables and CALS tables are independently specified. +Where the DTD of DocBook V4.x allows for incoherent mixing of the two +models, DocBook V5.0 forbids such mixtures. + +
+ +
+Data Types + +DocBook V5.0 adds a few simple data types. For example, the +cols attribute on tgroup +must be a positive integer. + +Some of these constraints, such as the requirement that elements +like pubdate include a proper date-time type, may +prove controversial. Users are encouraged to report places where formally +valid documents can no longer be made valid because data types have been +introduced. + +
+ +
+Universal Linking + +Starting with DocBook V5.0, the +linkend and +xlink:href attributes are available on +almost all elements. + +The linkend attribute provides an +ID/IDREF link within the document. The +xlink:href attribute provides a URI-based +link. + +The ulink element has been removed from +DocBook as URI-based links can now be achieved directly from +the appropriate inline (such as productname or +command). For instances where no specific semantic +inline is needed, link is still available. Where +link used to be limited to ID/IDREF linking, it now +sports an xlink:href attribute as +well. + +Support for +extended links +are provided through the +extendedlink, arc, and +locator elements. + +
+ +
+Improved Accessibility + +Accessibility is improved by allowing both inline and block +annotations in most context. The alt element is now +allowed in most places for inline annotations, the new element +annotation supports block annotations. + +
+ +
+Simplified Table of Contents Markup + +The DocBook V4.x markup for Tables of Contents, or more generally for +Lists of Titles, was complex and had not evolved quite in step with the +rest of DocBook. In DocBook V5.0, it has all been replaced by a quite +simple, recursive +toc/tocdiv/tocentry +structure. + +While most Tables of Contents and Lists of Titles are generated +automatically and authors never have to produce markup for them by +hand, this simplified content model should make it easier for authors +to generate them when necessary. One possible application of hand-authored +toc markup is to generate custom hierarchies which +can be assembled on-the-fly from a library of topics marked up in +DocBook. +
+ +
+Extra-Grammatical Constraints + +Grammar based validation technologies (like RELAX NG) and rule based +validation technologies (like Schematron) are naturally complementary. Mixing +them allows us to play to the strengths of each without stretching either +to enforce constraints that they aren’t readily designed to enforce. + +For example, DocBook NG requires that the root element of a +document have an explicit version attribute. Because there are a great +many elements that can be root elements in DocBook, and because they +can almost all appear as descendants of a root element as well, it +would be tedious to express this constraint in RELAX NG. But it is +easy in a rule-based schema language. + +DocBook V5.0 uses Schematron where appropriate. +
+ +
+Customization + +From the very beginning, one of the goals of DocBook has been +that users should be able to produce customizations that are either +subsets of extensions of DocBook. + +Customization is possible in DocBook V4.x, but because of the +intricacies of XML DTD syntax and the complex and highly stylized +patterns of parameter entitiy usage in DocBook, it's not as easy as we +would like it to be. + +In DocBook V5.0, we hope to take advantage of RELAX NGs more +robust design (and it's lack of pernicious determinism rules) to make +customization easier. + +Three schema design patterns get us most of the way there. + +
+Logical Groupings + +DocBook elements, particularly the inlines, can be divided into +broad classes: general purpose, technical, error-related, operating-system +related, bibliographic, publishing, etc. In DocBook V5.0, these are collected +together in named patterns. + +To add a new inline, endpoint for example, +to the list of technical inlines, one need only extend the appropriate +pattern. If an element should appear in several classes, they can all +be extended in the same way: + +db.technical.inlines |= endpoint +db.programming.inlines |= endpoint +db.os.inlines |= endpoint + + +Much the same concept was used in DocBook V4.x, where instead of +patterns we had parameter entities. However, the constraints of DTD +validation severely limit the circumstances under which an element can +appear twice in a content model. That meant that adding an element to +one parameter entity might make it an error to add it to another. Such +constraints do not exist in RELAX NG which greatly simplifies the +customization. +
+ +
+Element Definitions + +Each element in DocBook V5.0 is defined by its own pattern. To +change the content model of an element, only that pattern need be +redefined. To remove an element from DocBook, that pattern can be +redefined as notAllowed. + +
+ +
+Attribute Definitions + +Each attribute list in DocBook V5.0 is defined by its own +pattern. To change the list of attributes available on an element, +only that pattern need be redefined. To remove all the attributes, +that pattern can be redefined as +empty. + +
+
+ +
+Conversion + +There’s an XSLT 1.0 stylesheet for performing conversion from +DocBook V4.x to DocBook V5.0. Presented with a valid DocBook V4.x document, +it attempts to produce a valid DocBook V5.0 document. + +It succeeds entirely automatically for the most part, though human +intervention is suggested for constructs that might have multiple +interpretations (and therefore multiple possible transformations). + +Users are encouraged to report documents that are not +successfully transformed by the stylesheet, especially those which do +have valid DocBook V5.0 representations. + +
+
+
+ +
+Release Notes + +See for a list of tools that +can validate an XML document using RELAX NG. Note that not all products +are capable of evaluating the Schematron assertions in the schema. + +
+ + +The DocBook Media Type + +This appendix registers a new MIME media type, +application/docbook+xml. + +
+Registration of MIME media type application/docbook+xml + + + +MIME media type name: + +application + + + + + +MIME subtype name: + +docbook+xml + + + + + +Required parameters: + +None. + + + + + +Optional parameters: + + + + charset + + + This parameter has identical semantics to the charset +parameter of the application/xml media type as +specified in or its successors. + + + + + + + + +Encoding considerations: + +By virtue of DocBook XML content being XML, it has the same +considerations when sent as application/docbook+xml +as does XML. See , Section 3.2. + + + + + +Security considerations: + +Several DocBook elements may refer to arbitrary URIs. +In this case, the security issues of RFC 2396, section 7, +should be considered. + + + + +Interoperability considerations: + +None. + + + + +Published specification: + +This media type registration is for DocBook documents as described by +. + + + + +Applications which use this media type: + +There is no experimental, vendor specific, or personal tree +predecessor to application/docbook+xml, +reflecting the fact that no applications currently recognize it. This +new type is being registered in order to allow for the +deployment of DocBook on the World Wide Web, as a first class XML +application. + + + + + +Additional information: + + + + Magic number(s): + + + There is no single initial octet sequence that is always present in +DocBook documents. + + + + + + File extension(s): + + DocBook documents are most often identified with the extension +.xml. + + + + + + Macintosh File Type Code(s): + + TEXT + + + + + + + +Person & email address to contact for further information: + +Norman Walsh, ndw@nwalsh.com. + + + + +Intended usage: + +COMMON + + + + +Author/Change controller: + +The DocBook specification is a work product of the DocBook +Technical Committee at OASIS. + + + +
+ +
+Fragment Identifiers + +For documents labeled as +application/docbook+xml, +the fragment +identifier notation is exactly that for +application/xml, +as specified in or its successors. +
+
+ + +OASIS DocBook Technical Committee + +The following individuals were members of the committee during +the formulation of this &standard;: + + +Steve Cogorno, Sun Microsystems +Gary Cornelius, Individual +Adam Di Carlo, Debian +Paul Grosso, Arbortext +Dick Hamilton, Individual +Nancy Harrison, IBM +Scott Hudson, Individual +Mark Johnson, Debian +Gershon Joseph, Tech-Tav Documentation Ltd. +Jirka Kosek, Individual +Larry Rowland, Hewlett-Packard +Michael Smith, Individual +Robert Stayton, Individual (Secretary) +Norman Walsh, Sun Microsystems (Chair, Editor) + + + + +Notices + +Copyright © The Organization for the Advancement of +Structured Information Standards [OASIS] 2001, 2002, 2003, 2004, 2005. +All Rights Reserved. + +OASIS takes no position regarding the validity +or scope of any intellectual property or other rights +that might be claimed to pertain to the implementation +or use of the technology described in this document +or the extent to which any license under such rights +might or might not be available; neither does it represent +that it has made any effort to identify any such rights. +Information on OASIS's procedures with respect to rights +in OASIS specifications can be found at the OASIS website. +Copies of claims of rights made available for publication +and any assurances of licenses to be made available, +or the result of an attempt made to obtain a general +license or permission for the use of such proprietary +rights by implementors or users of this specification, +can be obtained from the OASIS Executive Director. + +OASIS invites any interested party to bring to +its attention any copyrights, patents or patent applications, +or other proprietary rights which may cover technology +that may be required to implement this specification. +Please address the information to the OASIS Executive +Director. + +This document and translations of it may be copied +and furnished to others, and derivative works that comment +on or otherwise explain it or assist in its implementation +may be prepared, copied, published and distributed, +in whole or in part, without restriction of any kind, +provided that the above copyright notice and this paragraph +are included on all such copies and derivative works. +However, this document itself may not be modified in +any way, such as by removing the copyright notice or +references to OASIS, except as needed for the purpose +of developing OASIS specifications, in which case the +procedures for copyrights defined in the OASIS Intellectual +Property Rights document must be followed, or as required +to translate it into languages other than English. + +The limited permissions granted above are perpetual +and will not be revoked by OASIS or its successors or +assigns. + +This document and the information contained herein +is provided on an AS IS basis and OASIS DISCLAIMS +ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES +OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +OASIS has been notified of intellectual property +rights claimed in regard to some or all of the contents +of this specification. For more information consult +the online list of claimed rights. + + + + +Intellectual Property Rights + +For information on whether any patents have been disclosed that may be +essential to implementing this specification, and any offers of patent +licensing terms, please refer to the Intellectual Property Rights section +of the DocBook web page +() + + + + + +Revision History + + + + + Committee Draft “Public Review Draft 1” + 6 February 2008 + + + Working Draft “Candidate Release 7” + 28 September 2007 + + + Working Draft “Candidate Release 6” + 27 September 2007 + + + Working Draft “Candidate Release 1” + 21 December 2006 + + + Working Draft “Beta 9” + 26 October 2006 + + + Working Draft “Beta 8” + 26 September 2006 + + + Working Draft “Beta 7” + 21 July 2006 + + + Working Draft “Beta 6” + 2 June 2006 + + + Working Draft “Beta 5” + 16 April 2006 + + + Working Draft “Beta 4” + 9 March 2006 + + + Working Draft “Beta 3” + 1 February 2006 + + + Working Draft “Beta 2” + 12 January 2006 + + + Working Draft “Beta 1” + 27 October 2005 + + + Working Draft “Alpha 1” + 26 June 2005 + + + + + + +References + +Normative + + + + + + + + + + +Non-Normative + + + + + + + + + + +
diff --git a/docs/howto.html b/docs/howto.html new file mode 100644 index 0000000..2434d77 --- /dev/null +++ b/docs/howto.html @@ -0,0 +1,1808 @@ + + + DocBook V5.0

DocBook V5.0

The Transition Guide

06 February 2008


+ + +

This document is targeted at DocBook users who are considering +switching from DocBook V4.x to DocBook V5.0. It describes +differences between DocBook V4.x and V5.0 and provides some suggestions about +how to edit and process DocBook V5.0 documents. There is +also a section devoted to conversion of legacy documents from DocBook +4.x to DocBook V5.0.

+ +

At the time this was written the current version of DocBook V5.0 +was 5.0. However, almost all of the information in this document is +general and applies to any newer version of DocBook V5.0. +

+ +

Introduction

+ + +

The differences between DocBook V4.x and V5.0 are quite radical in +some aspects, but the basic idea behind DocBook is still the same, and +almost all element names are unchanged. Because of this it is very +easy to become familiar with DocBook V5.0 if you know any previous version of +DocBook. You can find a complete list of changes in +[DB5SPEC], here we will discuss only the most +fundamental changes.

+ +

Finally in a namespace

+ + +

All DocBook V5.0 elements are in the namespace +http://docbook.org/ns/docbook. XML namespaces are used to distinguish +between different element sets. In the last few years, almost all new +XML grammars have used their own namespace. It is easy to +create compound documents that contain elements from different XML +vocabularies. DocBook V5.0 is following this design rule. Using +namespaces in your documents is very easy. Consider this +simple article marked up in DocBook V4.5:

+ +
<article>
+  <title>Sample article</title>
+  <para>This is a really short article.</para>
+</article>
+ +

The corresponding DocBook V5.0 article will look very similar:

+ +
<article xmlns="http://docbook.org/ns/docbook" …>
+  <title>Sample article</title>
+  <para>This is a really short article.</para>
+</article>
+ +

The only change is the addition of a default namespace declaration +(xmlns="http://docbook.org/ns/docbook") on the root +element. This declaration applies the namespace to the root element and +all nested elements. Each +element is now uniquely identified by its local name and namespace.

+ +

Note

+

The namespace name http://docbook.org/ns/docbook serves +only as an identifier. This resource is not fetched during processing +of DocBook documents, and you are not required to have an Internet +connection during processing. If you access the namespace URI with a browser, +you will find a short explanatory document about the namespace. In the +future this document will probably conform to (some version of) RDDL +and provide pointers to related resources.

+
+ +
+ +

Relaxing with DocBook

+ + +

For more than a decade, the DocBook schema was defined using a +DTD. However, DTDs have serious limitations, and DocBook V5.0 is thus +defined using a very powerful schema language called RELAX NG. Thanks +to RELAX NG, it is now much easier to create customized versions of +DocBook, and some content models are now cleaner and more +precise.

+ +

Using RELAX NG has an impact on the document prolog. The following +example shows the typical prolog of a DocBook V4.x document. The version of +the DocBook DTD (in this case 4.5) is indicated in the document type +declaration (!DOCTYPE) which points to a particular version of the +DTD.

+ +

Example 1. DocBook V4.5 document

+ +
<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN'
+                         'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'>
+<article lang="en">
+  <title>Sample article</title>
+  <para>This is a very short article.</para>
+</article>
+

+ +

In contrast, DocBook V5.0 does not depend on DTDs anymore. This +mean that there is no document type declaration and the version of DocBook +used is indicated with the version +attribute instead.

+ +

Example 2. DocBook V5.0 document

+ +
<?xml version="1.0" encoding="utf-8"?>
+<article xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
+  <title>Sample article</title>
+  <para>This is a very short article.</para>
+</article>
+

+ +

As you can see, DocBook V5.0 is built on top of existing XML +standards as much as possible, for example the lang attribute is superseded by the standard +xml:lang attribute.

+ +

Another fundamental change is that there is no direct indication +of the schema used. Later in this document, you will learn how you can +specify a schema to be used for document validation.

+ +

Note

+

Although we recommend the RELAX NG schema for DocBook +V5.0, there are also DTD and W3C XML Schema versions available (see the section called “Where to get the schemas”) for tools that do not yet support RELAX NG.

+
+ +
+ +

Why switch to DocBook V5.0?

+ + +

The simple answer is “because DocBook V5.0 is the +future”. Apart from this marketing blurb, there are also more +technical reasons:

+ +
  • +

    DocBook V4.x is feature frozen.DocBook V4.5 +is the last version of DocBook in the V4.x series. Any new DocBook +development, like the addition of new elements, will be done in +DocBook V5.0. It is only matter of time before useful, new elements +will be added into DocBook V5.0, but they are not likely to be back +ported into DocBook V4.x. DocBook V4.x will be in maintenance mode and +errata will be published if necessary.

    +
  • +

    DocBook V5.0 offers new functionality. +DocBook V5.0 provides significant improvements over DocBook V4.x. For +example there is general markup for annotations, a new and flexible +system for linking, and unified markup for information sections using +the info element.

    +
  • +

    DocBook V5.0 is more extensible. Having +DocBook V5.0 in a separate namespace allows you to easily mix DocBook +markup with other XML-based languages like SVG, MathML, XHTML or even +FooBarML.

    +
  • +

    DocBook V5.0 is easier to customize. RELAX +NG offers many powerful constructs that make customization much easier +than it would be using a DTD (see the section called “Customizing DocBook V5.0”).

    +
+ +
+ +

Schema jungle

+ + +

Schemas for DocBook V5.0 are available in several formats at +http://www.oasis-open.org/docbook/xml/5.0/ (or the +mirror at http://docbook.org/xml/5.0/). +Only the RELAX NG schema is normative +and it is preferred over the other schema languages. However, for your +convenience there are also DTD and W3C XML Schema versions provided for DocBook +V5.0. But please note that neither the DTD nor the W3C XML schema are able to +capture all the constraints of DocBook V5.0. This mean that a +document that validates against the DTD or XML schema is not necessarily +valid against the RELAX NG schema and thus may not be a valid +DocBook V5.0 document.

+ +

DTD and W3C XML Schema versions of the DocBook V5.0 grammar are provided +as a convenience for users who want to use DocBook V5.0 with legacy tools +that don't support RELAX NG. Authors are encouraged to switch to RELAX +NG based tools as soon as possible, or at least to validate documents +against the RELAX NG schema before further processing.

+ +

Some document constraints can't be expressed in schema languages +like RELAX NG or W3C XML Schema. To check for these additional +constraints DocBook V5.0 uses Schematron. We recommend that you +validate your document against both the RELAX NG and +Schematron schemas.

+ +

Where to get the schemas

+ + +

The latest versions of schemas can be obtained from http://docbook.org/schemas/5x.html. At the time this was +written the latest version was 5.0. Individual schemas are +available at the following locations:

+ + + +

These schemas are also available from the mirror at +http://www.oasis-open.org/docbook/xml/5.0/.

+ +
+ +

DocBook documentation

+ + +

Detailed documentation about each DocBook V5.0 element is +presented in the reference part +of DocBook: The Definitive Guide.

+ +

Note

+

Other parts of DocBook: The Definitive +Guide have not yet been updated to reflect the changes +made in DocBook V5.0. Please do not be confused by this.

+
+ +
+ +
+ +
+ +

Tool chain

+ + +

This section briefly describes tools and procedures to edit and +process content stored in DocBook V5.0.

+ +

Editing DocBook V5.0

+ + +

Because DocBook is an XML-based format and XML is a text-based +format, you can use any text editor to create and edit DocBook V5.0 +documents. However, using “dumb” editors like Notepad is +not very productive. You will do better if you use an editor that +supports XML. Although there are DTD and W3C XML Schemas available for +DocBook V5.0, which means you can use any editor that works with DTDs +or W3C XML Schemas, we recommend that you use the RELAX NG grammar +with DocBook V5.0. The rest of this section contains an overview of +XML editors (listed in alphabetical order) that are known to work with +RELAX NG schemas and that offer guided editing based on the RELAX NG +schema.

+ +

Emacs and nXML

+ + +

nXML +mode is an add-on for the GNU +Emacs text editor. By installing nXML you can turn Emacs +into a very powerful XML editor that offers guided editing and +validation of XML documents.

+ +

Figure 1. Emacs with nXML mode provides guided editing and validation

+ +
Emacs with nXML mode provides guided editing and validation
+

+ +

nXML uses a special configuration file named +schemas.xml to associate schemas with XML +documents. Often you will find this file in the directory +site-lisp/nxml/schema inside the Emacs installation +directory. Adding the following line into the configuration file, +will associate DocBook V5.0 elements with the appropriate +schema:

+ +
<namespace ns="http://docbook.org/ns/docbook" uri="/path/to/docbook.rnc"/>
+ +

Note

+

Please note that nXML ships with a file named +docbook.rnc. This file contains the RELAX NG grammar +for DocBook V4.x. Be sure that you associate the DocBook V5.0 namespace +with the corresponding DocBook V5.0 grammar.

+
+ +

If you can't edit the global schemas.xml file, +you can create this file in the same directory as your document. nXML will +find associations placed there also. In this case you must create a +complete configuration file like:

+ +
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+  <namespace ns="http://docbook.org/ns/docbook" uri="/path/to/docbook.rnc"/>
+</locatingRules>
+ +
+ +

oXygen

+ + +

oXygen is a feature +rich XML editor. It has built-in support for many schema languages +including RELAX NG. If you want to smoothly edit and validate DocBook +5.0 documents you should associate the DocBook namespace with the +corresponding schema. Go to +OptionsPreferences…EditorDefault +Schema Associations. Then click the +New button to add a new association. Type in +the DocBook namespace and the RELAX NG schema location, choose the +RNG Schema + Schematron type of schema as, and +confirm your choice by clicking the OK +button.

+ +

Figure 2. Adding a new schema association in oXygen

+ +
Adding a new schema association in oXygen
+

+ +

Because oXygen comes with preconfigured associations for +DocBook V4.x, you must move your newly added configuration to the +top of the list (using the Up button). +That way you will be able to use +oXygen with both DocBook V4.x and DocBook V5.0.

+ +

Figure 3. DocBook V5.0 association must precede associations for DocBook V4.x

+ +
DocBook V5.0 association must precede associations for DocBook V4.x
+

+ +

Now you can close the preference box by clicking on the +OK button. oXygen will assist +you with writing DocBook V5.0 content, and you will be able to validate +your documents against both RELAX NG and Schematron schemas.

+ +

Figure 4. DocBook V5.0 document opened in oXygen

+ +
DocBook V5.0 document opened in oXygen
+

+ +
+ +

XML Mind XML editor

+ + +

XML +Mind XML editor (XXE) is a visual validating XML editor that +provides a wordprocessor-like interface to users. It is available in +two versions, Standard and Professional. The Standard version is free and +provides everything you need to edit DocBook V5.0 documents.

+ +

Figure 5. XML Mind XML Editor – feels almost like MS Word but real DocBook V5.0 markup is created

+ +
XML Mind XML Editor – feels almost like MS Word but real DocBook V5.0 markup is created
+

+ +

In order to use DocBook V5.0 in XXE you have to install +an add-on. Go to +OptionsInstall +Add-ons…. Then choose DocBook +5 configuration and press the OK +button. After restart, XXE is ready to work with DocBook V5.0 +documents.

+ +
+ +
+ +

Validating DocBook V5.0

+ + +

If you are not using a RELAX NG-based validating editor when you +create documents, we strongly recommend that you validate your +documents against RELAX NG and Schematron schemas before processing +them. Only after successful validation can you be sure that your +document is really DocBook V5.0 and that processing tools will be able +to process it correctly.

+ +

For validation you can use tools that support simultaneous RELAX NG and +Schematron validation, or you can use NVDL to orchestrate validation using +the two schemas.

+ +

Using RELAX NG and Schematron

+ + +

You can find a list of RELAX NG validators at http://relaxng.org/#validators. It is best to use +validators with support for embedded Schematron rules inside RELAX NG +schemas. Schematron is a rule-based validation language which is used +to impose additional constraints on DocBook documents. Schematron rules +assert conditions which are impossible or difficult to express +in a pure RELAX NG schema.

+ +

Sun +Multi-Schema XML Validator (MSV) is able to validate an XML +document against a RELAX NG schema and Schematron rules at the same time. +To install and use MSV follow these steps:

+ +
  1. +

    Download relames.zip from https://msv.dev.java.net/servlets/ProjectDocumentList?folderID=101.

    +
  2. +

    Unpack the downloaded file into an arbitrary directory.

    +
  3. +

    Validate your document using the following command:

    +
    java -Xss512K -jar /path/to/relames.jar /path/to/docbook.rng document.xml
    +

    Note

    +

    The switch -Xss512K increases the stack size +of the Java virtual machine. This is necessary because the DocBook schema is +quite large. If you get stack overflow errors from MSV, increase +this value. You may get spurious error messages if the value +is too small, so if you get a stack overflow error, ignore any other error +messages and try a larger value for the stack size. +If you are not using Sun's Java implementation, please consult the +documentation for your virtual machine to learn how to increase the stack +size.

    +
    +
+ +

There is also an on-line DocBook V5.0 +validator that validates DocBook V5.0 documents against the normative +RELAX NG schema with embedded Schematron rules.

+ +
+ +

Using NVDL

+ + +

NVDL is a meta-schema language which can validate a document +against several schemas. DocBook V5.0 comes with a NVDL +schema which specifies that DocBook documents should be validated +against both RELAX NG and Schematron schemas.

+ +

You can find a list of NVDL validators at http://nvdl.org/. The following procedures show how to +install and use the oNVDL and +JNVDL +validators.

+ +

Procedure 1. oNVDL installation and usage

  1. +

    Download onvdl-20070517.zip.

    +
  2. +

    Unpack the downloaded file into an arbitrary directory.

    +
  3. +

    Validate your document using the following command:

    +
    java -jar /path/to/oNVDL/bin/onvdl.jar /path/to/docbook.nvdl document.xml
    +
+ +

Procedure 2. JNVDL installation and usage

  1. +

    Download the latest release of JNVDL from http://sourceforge.net/project/showfiles.php?group_id=164464.

    +
  2. +

    Unpack the downloaded file into an arbitrary directory.

    +
  3. +

    Modify file jnvdl.bat (or jnvdl.sh on Unix based systems) to include -Xss512K switch directly after java command.

    +
  4. +

    On Windows systems, validate your document using the following command:

    +
    /path/to/jnvdl/jnvdl -nt -s /path/to/docbook.nvdl document.xml
    +

    On Unix systems, validate your document using the following command:

    +
    /path/to/jnvdl/jnvdl.sh -nt -s /path/to/docbook.nvdl document.xml
    +
+ +
+ +
+ +

Processing DocBook V5.0

+ + +

Part of DocBook's great success can be attributed to the +availability of free +tools that can be used to transform DocBook content into various +target formats including HTML and PDF. The DocBook XSL Stylesheets are +very popular tools.

+ +

DocBook XSL Stylesheets

+ + +

The DocBook stylesheets are designed to process content written in +different versions of DocBook (for example 3.1 and 4.2). Recent +versions of the stylesheets are also able to process DocBook V5.0 +with some limitations.

+ +

You can process DocBook V5.0 documents with the DocBook XSL +stylesheets in exactly the same way you process DocBook V4.x documents. +You do not need special software; you can stick to your preferred +XSLT processor, be it Saxon, xsltproc, Xalan or whatever else (but see +the note about the lost base URI below).

+ +

During document processing, the stylesheets strip +namespaces from DocBook V5.0 to get a document which will be +very similar to DocBook V4.x. This is necessary because from the XSLT +point of view, elements from different namespaces are distinct and cannot +be easily processed by the same set of templates. This process is +completely transparent to the user. If you are processing DocBook V5.0 +documents, the only difference is that you will see the following +additional message:

+ +
Note: namesp. cut : stripped namespace before processing
+Note: namesp. cut : processing stripped document
+ +

Although you can successfully use the existing stylesheets to +process DocBook V5.0, there are some limitations and unsupported +features. The unsupported features include:

+ +
  • general annotations;

  • general XLink links on all elements.

+ +

Note

+

During namespace stripping, the base URI of the document is +lost. This means that in rare situations, relatively referenced +resources like images or programlistings can be processed incorrectly. +The stylesheets attempt to compensate for this problem, but that is not always +possible. When an XSLT processor other than Saxon or Xalan is used, a warning +message is generated: + +

WARNING: cannot add @xml:base to node set root element. Relative paths may not work.

+

+ +
+
+ +

DocBook XSL-NS Stylesheets

+ +

As you can see from reading the previous section, namespace + stripping has limitations that will cause trouble in some + situations. To overcome those limitations, Bob Stayton created a + build system for taking the non-namespace-aware DocBook XSL + stylesheets and generating namespace-aware versions from them. + The DocBook XSL-NS stylesheets are the result.

+ +

The DocBook XSL-NS stylesheets are released side-by-side + with the DocBook XSL stylesheets, as a separate docbook-xsl-ns package. They are the +recommended XSLT 1.0 stylesheets to use for transforming +namespaced (DocBook V5.0) documents.

+
+ +

XSLT 2.0 based re-implementation

+ + +

XSLT 1.0 is missing some important features. To work around +these missing features, the current DocBook XSL stylesheets use some +implementation-specific extensions. +XSLT 2.0 adds many new and previously missing features into the language. +A new set of DocBook stylesheets is being implemented based on XSLT 2.0 +to take advantage of these features and to fully support DocBook V5.0. +

+ +

The XSLT 2.0 based stylesheets have many new features, including:

+ +
  • seamless integration of profiling (conditional +documents) with external bibliographies and +glossaries;

  • no need for (most) external extensions;

  • internationalized indexes;

  • easy to customize titlepage templates.

+ +

The XSLT 2.0 based stylesheets are still under development. At +this writing, they only support HTML and chunked HTML output. As time +permits, the stylesheet developers will be adding other formats. Since +the stylesheets are developed in the limited free time the developers +have, there's no specific schedule.

+ +

There are not very many XSLT 2.0 implementations available. +But, if you want to try the new stylesheets, grab a snapshot of +the development version from http://docbook.sourceforge.net/snapshots/docbook-xsl2-snapshot.tar.bz2 +and unpack it somewhere. Then download and install Saxon 9 from http://saxon.sf.net.

+ +

To transform a DocBook V5.0 document to a single HTML page use the command:

+ +
java -jar /path/to/saxon9.jar -o output.html document.xml /path/to/docbook-xsl2-snapshot/html/docbook.xsl
+ +

To transform a DocBook V5.0 document to a set of chunked HTML pages use the command:

+ +
java -jar /path/to/saxon9.jar document.xml /path/to/docbook-xsl2-snapshot/html/chunk.xsl
+ +
+ +
+ +
+ +

Markup changes

+ + +

This section describes the most common markup changes +between DocBook V4.x and V5.0. +You can find a complete list of changes in +[DB5SPEC].

+ +

Improved cross-referencing and linking

+ + +

In DocBook V4.x the attribute id is +used to assign a unique identifier to an element. In DocBook V5.0 this +attribute is renamed xml:id in order +to comply with [XMLID].

+ +

Now you can use almost any inline element as the source of a link, +not just xref or link. For example, the following +DocBook 4.x content:

+ +
<section id="dir">
+  <title>DIR command</title>
+  <para>...</para>
+</section>
+
+<section id="ls">
+  <title>LS command</title>
+  <para>This command is a synonym for <link linkend="dir"><command>DIR</command></link> command.</para>
+</section>
+ +

is written in DocBook V5.0 as:

+ +
<section xml:id="dir">
+  <title>DIR command</title>
+  <para>...</para>
+</section>
+
+<section xml:id="ls">
+  <title>LS command</title>
+  <para>This command is a synonym for <command linkend="dir">DIR</command> command.</para>
+</section>
+ +

The linkend attribute was added to all +inline elements together with the href +attribute from the XLink namespace. This means that you can use any inline +element as the source of a hypertext link. To use XLinks you have +to declare the XLink namespace (most often on the root element of your +document):

+ +
<article xmlns="http://docbook.org/ns/docbook" 
+         xmlns:xl="http://www.w3.org/1999/xlink" version="5.0">
+  <title>Test article</title>
+
+  <para><application xl:href="http://www.gnu.org/software/emacs/emacs.html">Emacs</application> 
+    is my favourite text editor.</para>
+  …
+ +

The ulink element was removed from DocBook V5.0 +in favor of XLink linking. Instead of the DocBook V4.x ulink +element:

+ +
<ulink url="http://docbook.org">DocBook site</ulink>
+ +

you can now use link

+ +
<link xl:href="http://docbook.org">DocBook site</link>
+ +

XLink links may contain a fragment identifier, which you can +use instead of linkend to form +cross-references inside a document; for example:

+ +
<command xl:href="#dir">DIR</command>
+ +

However XLink links are not checked during validation, while xml:id/linkend +links are checked for ID/IDREF consistency. +One place where the XLink-based, fragment identifier scheme is +useful is when XInclude is being used, since XML ID/IDREF links +cannot span XInclude boundaries. +You can use whichever approach better suits your needs.

+
+ +

Renamed elements

+ + +

Some elements were renamed to better express their meaning or to +reduce the total number of elements available in DocBook.

+ +
+ +
+ +

Removed elements

+ + +

The following elements were removed from DocBook V5.0 without +direct replacements: action, beginpage, highlights, +interface, invpartnumber, medialabel, modespec, +structfield, structname. +If you use one or more of these elements, here are some suggestions +as to how to re-code them in DocBook V5.0. +

+ +

Table 2. Recommended mapping for removed elements

+ +
Old nameRecommended mapping
actionUse <phrase remap="action">.
beginpageRemove: beginpage is advisory only +and has tended to cause confusion. A processing instruction or +comment should be a workable replacement if one is needed.
highlightsUse abstract. Note that because highlights has a broader content model, you may +need to wrap contents in a para inside +abstract.
interfaceUse one of the “gui*” elements +(guibutton, guiicon, guilabel, +guimenu, guimenuitem, or +guisubmenu).
invpartnumberUse <biblioid class="other" +otherclass="medialabel">. The +productnumber element is another alternative.
medialabelUse <citetitle +pubwork="mediatype">, +where mediatype is the type of media being +labeled (e.g.,cdrom or dvd).
modespecNo longer needed. The current processing model for +olink renders modespec +unnecessary.
structfield, structnameUse varname. If you need to distinguish between the +two, use <varname +remap="structname or +structfield">. In some contexts, it +may also be appropriate to use property for structfield.
+

+ +
+ +
+ +

Converting DocBook V4.x documents to DocBook V5.0

+ + +

The DocBook V5.0 schema ships with an XSLT 1.0 stylesheet that +is designed to transform valid DocBook V4.x documents to valid +DocBook V5.0 documents.

+ +

To convert your document, doc.xml in the +examples below, follow these steps:

+ +
  1. +

    Check the validity of your DocBook XML V4.x document. The +conversion tool assumes that the input document is valid. If the input +document contains markup errors, the results will be unpredictable at +best.

    +
  2. +

    Transform doc.xml to +newdoc.xml with the +db4-upgrade.xsl stylesheet included in the +DocBook V5.0 distribution that you are using.

    +
  3. +

    Check the validity of your DocBook XML V5.0 document against +the DocBook V5.0 RELAX NG grammar.

    +
+ +

In the vast majority of cases, the resulting document should +be valid and your conversion process is finished.

+ +

If the document is not valid, please report the problem. +(Over time, we'll have more experience with the sorts of things +that can go wrong and we'll update this document to reflect that +experience.)

+ +

What About Entities?

+ + +

Using XSLT to transform existing documents to DocBook V5.0 has +one potential disadvantage: it removes all entity references from +your document.

+ +

If preserving entities is an important aspect of your production +work flow, you will have to engage in a semi-manual process to +preserve them.

+ +
  1. +

    Open your existing document using your favorite editing tool. +You must use a tool that is not XML-aware, or one +that allows you to edit markup “in the raw”.

    +
  2. +

    Replace all occurrences of the entity references that you want +to preserve with some unique string. For example, if you want to preserve +“&Product;” references, you could replace them +all with “[[[Product]]]” (assuming that the string +“[[[Product]]]” doesn't occur anywhere else in your document).

    +
  3. +

    Copy the document type declaration off of your document and save +it some place. The document type declaration is everything from +“<!DOCTYPE” to the closing “]>”. +

    +
  4. +

    Perform the conversion described in the section called “Converting DocBook V4.x documents to DocBook V5.0”. +

    +
  5. +

    Open the new document using your favorite editing tool. Replace +all occurrences of the unique string you used to save the entity references +with the corresponding entity references.

    +
  6. +

    Paste the document type declaration that you saved onto the top +of your new document.

    +
  7. +

    Remove the external identifier (the PUBLIC +and/or SYSTEM keywords) from the document type +declaration. A document that begins:

    +
    <!DOCTYPE book [
    +<!ENTITY someEntity "some replacement text">
    +]>
    +

    is perfectly well-formed. If you don't remove the references to +the DTD, then your parser will likely try to validate against DocBook +V4.0 and that's not going to work. Alternatively, you could refer +to the DocBook V5.0 DTD.

    +
+ +

Tip

+

Steps 2 and 5 from previous procedure can be automated using the +cloak +script written by Michael Smith.

+
+ +

External Parsed Entities

+ + +

External parsed entities, entities which load part of a document +from another file, are a special case. These can often be replaced +with XInclude elements.

+ +

The Perl script db4-entities.pl, also included +in the DocBook V5.0 distribution attempts to perform this replacement +for you. To use the script, perform the following steps:

+ +
  1. +

    Process your document with db4-entities.pl. +The script expects a single filename and prints the XInclude version +on standard output.

    +
  2. +

    Process the XInclude version as described in the section called “Converting DocBook V4.x documents to DocBook V5.0”. +

    +
+
+
+ +
+ +

Customizing DocBook V5.0

+ + + +

+ It's much easier to customize DocBook V5.0 than it was to + customize earlier releases. This is partly because RELAX NG + provides better support for modifications than DTDs and partly + because the DocBook schema is designed to take full advantage + of the capabilities RELAX NG provides. + This section describes the organization of the RELAX NG schema for + DocBook, methods and examples for adding, removing, and modifying elements + and attributes, and conventions for naming and versioning + DocBook customizations. + It assumes some familiarity with RELAX NG. If you are unfamiliar + with RELAX NG, you can find a tutorial introduction in + [RNCTUT]. +

+

DocBook RELAX NG schema organization

+ +

+ The DocBook RELAX NG schema is highly modular, using named + patterns extensively. Every element, attribute, attribute + list, and enumeration has its own named pattern. In addition, + there are named patterns for logical combinations of elements + and attributes. These named patterns provide “hooks” + into the schema that allow you to do a wide range of customization + by simply redefining one or more of the named patterns. +

+

+ An important design characteristic of the schema is that + duplication is minimized. This is done through the use of + named patterns for common groupings that can be re-used. + For example, the imagedata and videodata + elements each have an align attribute + that takes the same set of enumerated values. Rather than + repeating those values, a single pattern, + db.halign.enumeration is referenced by + the db.videodata.align.enumeration + and db.imagedata.align.enumeration patterns, + which are in turn referenced by the + db.videodata.align.attribute + and db.imagedata.align.attribute patterns. + While this may seem like overkill, it allows a customizer to modify + the allowed enumerations for these two attributes separately or together, + or to completely re-define the allowed content of either or both, + by redefining one or more of these named patterns. +

+

Pattern Names

+

+ Because named patterns are used extensively, the RELAX NG schema uses + several naming conventions. These are: +

  • +

    + Names have two or more parts, separated by dots “.” +

    +
  • +

    + The first part of each name is the prefix “db” +

    +
  • +

    + Each element has a named pattern in the form + db.elementname. + Elements that have different content models in different + contexts will also have patterns in the form + db.context.elementname. For example, db.figure.info + defines the content model for the info element + when it appears as a child of the figure element. + Context may have several parts. + For example, db.cals.entrytbl.thead. +

    +
  • +

    + Most attributes have a named pattern in the form + db.attributename.attribute. + Attributes that have different content models in different + contexts will also have patterns in the form + db.context.attributename.attribute. + For example, + db.olink.localinfo.attribute defines the content + model of the localinfo attribute when + it appears in olink. + There are a few attributes that do not have individual named + patterns. For example, the effectivity attributes are grouped + into db.effectivity.attributes and not identified + separately. +

    +
  • +

    + Each element has a named pattern for its attribute list in + the form + db.elementname.attlist + + that defines the list of attributes for that element. + Elements that have different attribute lists in different + contexts will also have patterns in the form + db.context.elementname.attlist + For example, db.html.table.attlist defines + the attribute list for the html table element and + db.cals.table.attlist defines the attribute + list for a cals table element. +

    +
  • +

    + Each attribute that has enumerated values has a + named pattern in the form + db.[context.]attributename.enumeration. + If the enumeration for a particular attribute depends on + context, optional context is provided. + For example, + db.verbatim.continuation.enumeration defines + the enumeration values for the + continuation attribute that is used + in verbatim contexts like screen. + Unlike elements and attributes, there is not necessarily a + named pattern for enumerated attributes outside their context. + For example, there is no db.class.enumeration + because the class attribute has + a broad and non-intersecting range of uses. +

    +
  • +

    + There are several different groupings of elements and attributes. + Here are the major ones: +

    inlines
    +

    + Combinations of inline elements, for example, + db.error.inlines, which contains + db.errorcode, + db.errortext, etc. +

    +
    blocks
    +

    + Combinations of block elements, for example, + db.verbatim.blocks, which contains + db.programlisting, + db.screen, etc. +

    +
    attributes
    +

    + Combinations of attributes, for example, + db.effectivity.attributes, + which contains the attributes + arch, + condition, + conformance, etc. +

    +
    components
    +

    + High level components of the schema, for example, + db.navigation.components, which contains + db.glossary, + db.bibliography, + db.index, and + db.toc, and is used inside the + content model for chapter, appendix, + and preface. +

    +
    contentmodel
    +

    + Shared content models, for example, + db.admonition.contentmodel, which contains + the content model for tip, warning, + note, etc. +

    +

    +

    +

    + There are a couple of other groupings designed to minimize + duplication, but these are the most important. +

    +

+

+
+
+

General customization considerations

+ +

+ Creating a customized schema is similar to + creating a customization layer for XSL. The schema customization + layer is a new RELAX NG schema that defines your changes and + includes the standard docbook schema. You then validate using + the schema customization as your schema. +

+

+ Example 3 is an empty + RELAX NG customization that does nothing + except define the name spaces and include the standard DocBook schema. + The href attribute of the + include element points to + the location of the standard DocBook V5.0 + schema.[1] + All of the examples are given in both RNG and RNC form. +

Example 3. Empty customization file

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + + <!-- redefinitions of named patterns --> + +</grammar>
+
r
n
c
namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" inherit = db +# redefinitions of named patterns
+


+

+
+

Elements

+ +

Adding elements

+ +

+ Adding an element typically takes two definitions. + The first defines the new element and + its content model, and the second adds the + new element into the schema. We'll show two examples. +

+

+ Example 4 + adds a new element, + person, with the same + content model as author. The new element will be + allowed to appear wherever author can appear. +

+

+ The db.author pattern is copied + and renamed dbx.person, defining + a new element called person. + Then, the db.author pattern is redefined + to be a choice of the current value or dbx.person. + The combine attribute tells + RELAX NG to combine this pattern with the existing named + pattern. In this case, the value + of the combine attribute is + “choice”, which tells the parser that either + the original pattern or this new pattern is a valid match. +

+

Example 4. Adding a new element by duplicating an existing one

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + <!-- define the new element --> + <define name="dbx.person"> + <element name="person"> + <ref name="db.author.attlist"/> + <ref name="db.credit.contentmodel"/> + </element> + </define> + <!-- redefine the db.author pattern to allow db.person in + the same places as db.author --> + <define name="db.author" combine="choice"> + <ref name="dbx.person"/> + </define> +</grammar>
+
r
n
c
default namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" +# define the new element +dbx.person = + element person { db.author.attlist, db.credit.contentmodel } +# redefine the db.author pattern to allow db.person in +# the same places as db.author +db.author |= dbx.person
+

+

+ The preceding method works well when you'd like a new element + to be a clone or near-clone of an existing element. It gives + you complete control over the content model, but + only limited control over where the element is allowed. It + works well when you want to allow the element in the same places + as an existing element, and for this example that works + nicely, since author is allowed in four different + named patterns, each of which would have had to be redefined to + allow person. + But, if you can't find an existing element that is allowed in + exactly the places you need, this method doesn't work as well. +

+

+ Example 5 + adds two new elements by combining them into + a higher level pattern. In this example, we'll add + two new inline elements for writing about assembly language, + register and + instruction. + We will allow them wherever programming inlines + or operating system inlines are allowed. + Example 5 + defines the two elements, creates a new named pattern + (dbx.asm.inlines) that contains them, and adds + that pattern to db.programming.inlines and + db.os.inlines. Since these two patterns + don't have any elements in common, the strategy used in + Example 4 + would require selecting two different elements to “clone”, + which would be messy. +

+

Example 5. Adding new inline elements

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + <!-- define the new elements --> + <define name="dbx.register"> + <element name="register"> + <text/> + </element> + </define> + <define name="dbx.instruction"> + <element name="instruction"> + <text/> + </element> + </define> + <!-- create a new pattern that contains the new inlines --> + <define name="dbx.asm.inlines"> + <choice> + <ref name="dbx.register"/> + <ref name="dbx.instruction"/> + </choice> + </define> + <!-- add the new inlines to programming and os inlines --> + <define name="db.programming.inlines" combine="choice"> + <ref name="dbx.asm.inlines"/> + </define> + <define name="db.os.inlines" combine="choice"> + <ref name="dbx.asm.inlines"/> + </define> +</grammar>
+
r
n
c
default namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" +# define the new elements +dbx.register = element register { text } +dbx.instruction = element instruction { text } +# create a new pattern that contains the new inlines +dbx.asm.inlines = dbx.register | dbx.instruction +# add the new inlines to programming and os inlines +db.programming.inlines |= dbx.asm.inlines +db.os.inlines |= dbx.asm.inlines
+

+
+

Deleting elements

+ +

+ Deleting elements is straightforward, but takes some + care and planning. Example 6 deletes + the important admonition element by redefining + it with a content model of notAllowed. + Note that in this example, the redefinition is inside + the include element. + This is required for + redefinitions that completely replace an existing pattern. +

+

+ Be careful; If you delete an element that is a required part + of another element's content model, you can make it + impossible to create a valid document. + For example, if you delete the title + element, you won't be able to validate a book + because a book requires a title. +

+

Example 6. Deleting an element

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"> + <!-- redefine important element as notAllowed --> + <define name="db.important"> + <notAllowed/> + </define> + </include> +</grammar>
+
r
n
c
namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" inherit = db { + # redefine important element as notAllowed + db.important = notAllowed +}
+

+
+

Customizing the content model of existing elements

+ +

+ Example 7 + expands the definition of author to include two + new elements, born and + died. + The author element allows two content models, + db.person.author.contentmodel, which + defines an author who is a person, and + db.org.author.contentmodel, which + defines an author that is an organization. We will modify + db.person.author.contentmodel so that + only authors who are persons can have the new elements. +

Example 7. Modifying the content model of an element

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + + <define name="db.person.author.contentmodel" combine="interleave"> + <interleave> + <optional> + <element name="born"> + <ref name="db.date.contentmodel"/> + </element> + </optional> + <optional> + <element name="died"> + <ref name="db.date.contentmodel"/> + </element> + </optional> + </interleave> + </define> +</grammar>
+
r
n
c
default namespace = "http://docbook.org/ns/docbook" +namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" + +db.person.author.contentmodel &= + element born { db.date.contentmodel }? + & element died { db.date.contentmodel }?
+


+

+

+ This modification will allow instances like this: +

<author>
+  <personname>Babe Ruth</personname>
+  <born>02/06/1895</born>
+  <died>08/16/1948</died>
+</author>

+but because we only modified the content model for authors +who are human, it won't allow an instance like this, which +uses db.org.author.contentmodel: +

<!-- INVALID -->
+<author>
+  <orgname>Boston Red Sox</orgname>
+  <died>1919</died>
+  <born>2004</born>
+</author>

+

+
+
+

Attributes

+ +

Adding attributes

+ +

+ The simplest way to add an attribute to a single element + is to add it to the attlist pattern for that element. + Example 8 + adds the optional attributes born + and died to the attribute + list for author. + The db.author.attlist + named pattern is redefined with the + combine attribute set to + “interleave”, which interleaves the two new + optional attributes with the existing attributes on the list. +

+

Example 8. Adding attributes

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + + <define name="db.author.attlist" combine="interleave"> + <interleave> + <optional> + <attribute name="born"> + <ref name="db.date.contentmodel"/> + </attribute> + </optional> + <optional> + <attribute name="died"> + <ref name="db.date.contentmodel"/> + </attribute> + </optional> + </interleave> + </define> +</grammar>
+
r
n
c
namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" inherit = db + +db.author.attlist &= + attribute born { db.date.contentmodel }? + & attribute died { db.date.contentmodel }?
+

+

+ Unlike + Example 7, + Example 8 allows + the new attributes to appear on any author + element, not just those using the person content model. +

+

+ Example 9 shows + how you could limit the use of these attributes to authors who + are persons. In this example, the new attributes are interleaved + with the db.person.author.contentmodel. + The only difference between this example and + Example 7 is + that the added patterns are identified as attributes rather than + elements. This shows some of the flexibility of RELAX NG, which + treats attributes and elements very consistently. +

Example 9. Adding attributes; alternate method

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + <!-- redefinitions of named patterns --> + <define name="db.person.author.contentmodel" combine="interleave"> + <interleave> + <optional> + <attribute name="born"> + <ref name="db.date.contentmodel"/> + </attribute> + </optional> + <optional> + <attribute name="died"> + <ref name="db.date.contentmodel"/> + </attribute> + </optional> + </interleave> + </define> +</grammar>
+
r
n
c
namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" inherit = db +# redefinitions of named patterns +db.person.author.contentmodel &= + attribute born { db.date.contentmodel }? + & attribute died { db.date.contentmodel }?
+


+There is one difference in the treatment of attributes and elements +that is worth noting. By the XML 1.0 definition, the relative order +of attributes is not significant. Therefore, the +interleave block is not required for +attributes, though it does no harm. +

+
+

Deleting attributes

+ +

+ Deleting an attribute is similar to deleting an element, + except that you use the RELAX NG empty + pattern rather than notAllowed. + Example 10 + deletes the linking attributes, which are collected in the + db.common.linking.attributes pattern, + by defining that pattern as empty. +

+

Example 10. Deleting an attribute

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"> + <define name="db.common.linking.attributes"> + <empty/> + </define> + </include> +</grammar>
+
r
n
c
namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" inherit = db { + db.common.linking.attributes = empty +}
+

+

+ Generally, empty is used when deleting + attributes and notAllowed is used when + deleting elements. +

+
+

Changing permitted content of attributes

+ +

+ Example 11 + modifies db.spacing.enumeration to + add the additional value “large”. Note + that to remove a value from an enumeration, you need + to redefine the entire enumeration, minus the values + you don't need. +

+

Example 11. Deleting an attribute

+
r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:db="http://docbook.org/ns/docbook" + ns="http://docbook.org/ns/docbook" + xmlns="http://relaxng.org/ns/structure/1.0"> + <include href="docbook.rng"/> + <!-- add value to an enumeration --> + <define name="db.spacing.enumeration" combine="choice"> + <value>large</value> + </define> +</grammar>
+
r
n
c
namespace db = "http://docbook.org/ns/docbook" + +include "docbook.rnc" inherit = db +# add value to an enumeration +db.spacing.enumeration |= "large"
+

+
+
+ +

Naming and versioning DocBook customizations

+ + +

DocBook V5.0 is not tightly coupled with some particular +validation technology like DTDs. This also means that DocBook V5.0 +documents don't have to (and usually don't) start with a +document type declaration (<!DOCTYPE…>) to specify the schema +(DTD) to use. Instead, DocBook V5.0 instances can be easily +distinguished from other XML vocabularies by using elements in the +http://docbook.org/ns/docbook namespace. This namespace is +enough to distinguish DocBook from other XML based formats. But the +DocBook schema evolves over time and there are several versions of +DocBook (e.g. 3.1, 4.2, 4.5 and 5.0). Since DocBook version 5.0, the +actual version used is indicated in the version attribute on a root element.

+ +
<book xmlns="http://docbook.org/ns/docbook"
+      version="5.0">
+  …
+</book>
+ +

Future versions of DocBook documents will start with the same +markup, except the version number will be raised, for example to 5.1 +or 6.0. +The namespace will remain the same until the semantics of the elements +change in a backward incompatible way, which is very unlikely to happen.

+ +

If you create a DocBook schema customization you must change the version attribute to distinguish your +customization from the “official” DocBook. Changing the +namespace is not recommended because that would break the processing +tools. Remember that changing namespaces is the same as renaming all +elements in the namespace.

+ +

When you customize the schema, use the following syntax to +identify your DocBook derivation:

+ +
base_version-[subset|extension|variant] [name[-version]?]+
+ +

For example:

+ +
5.0-subset simplified-1.0
+5.0-variant ASMBook
+5.0-variant ASMBook-2006
+5.0-extension MathML-2.0 SVG-1.1
+ +

The first part of the version identifier is the version number of the +DocBook schema from which you derived your customization.

+ +

If your schema is a proper subset, you can advertise this status +by using the subset keyword in the description. If +your schema contains any markup model extensions, you can advertise +this status by using the extension keyword. If +you'd rather not characterize your variant specifically as a subset or +an extension, use the variant keyword.

+ +

After these keywords you may add a whitespace separated list of +customization identifiers. Each name may be optionally followed by its +version number.

+ +
+ +
+ +

FAQ

+ + +
1. Authoring
1.1. How do I attach a schema to a DocBook V5.0 document when I do not +want to use DTDs and !DOCTYPE?
1.2. How do I use entities like &ndash; in +DocBook V5.0?
1.3. How to modularize documents?
1.4. How to validate documents which are composed by XInclude?
2. Stylesheets
2.1. Will the current DocBook XSL stylesheets (XSLT 1.0 based +implementation) be maintained and improved in the future since work on +a new XSLT 2.0 based implementation has started?
3. Schema customizations
3.1. How can I extend the DocBook schema with MathML elements?
3.2. How can I extend the DocBook schema with SVG elements?
3.3. Is it possible to use the previous two customizations for MathML +and SVG together?
3.4. Are there any other examples of schema customization +available?
4. Tool specific problems
4.1. I'm using Altova XMLSpy to validate DocBook V5.0 instances +against the W3C XML Schema (docbook.xsd). XMLSpy +complains about undefined xml:id +attributes?
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

1. Authoring

1.1. How do I attach a schema to a DocBook V5.0 document when I do not +want to use DTDs and !DOCTYPE?
1.2. How do I use entities like &ndash; in +DocBook V5.0?
1.3. How to modularize documents?
1.4. How to validate documents which are composed by XInclude?

1.1.

How do I attach a schema to a DocBook V5.0 document when I do not +want to use DTDs and !DOCTYPE?

There is no standard way of associating a RELAX NG schema with a +document. Most tools provide some mechanism for performing this +association, consult the documentation for your application. In some +tools you must specify schema manually each time you want to +edit/process your document.

1.2.

How do I use entities like &ndash; in +DocBook V5.0?

Modern schema languages (including RELAX NG and W3X XML Schema) +do not provide any means to define entities that can be used for easier +typing of special characters. Some editors provide functions or +special toolbars that allow you to easily pick necessary character +and insert it into document as a raw Unicode character or a numeric +character reference.

Another possibility is to include entity definitions in the +prolog of your document. Entity definition +files are now maintained by W3C. You can reference definition +files with entity definitions you are interested in and then reference +imported entities. For example:

<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE article [
+<!ENTITY % isopub SYSTEM "http://www.w3.org/2003/entities/iso8879/isopub.ent">
+%isopub;
+]>
+<article xmlns="http://docbook.org/ns/docbook" version="5.0">
+<title>DocBook V5.0 &ndash; the superb documentation format</title>
+…

For your convenience there is also flattened entity definition +file which contains all entity definitions.

<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE article [
+<!ENTITY % allent SYSTEM "http://www.w3.org/2003/entities/2007/w3centities-f.ent">
+%allent;
+]>
+<article xmlns="http://docbook.org/ns/docbook" version="5.0">
+<title>DocBook V5.0 &ndash; the superb documentation format</title>
+…

1.3.

How to modularize documents?

You can use XInclude for this +task. There is an alternative schema for DocBook V5.0 that +contains XInclude elements. This is necessary to make some XML editors +happy. This schema can be found in files that end with letters “xi”, e.g. +docbookxi.rnc instead of +docbook.rnc.

1.4.

How to validate documents which are composed by XInclude?

If you are using XIncludes you should make sure that the final +document after resolving all inclusions is valid DocBook V5.0 +instance. This means that all XIncludes should be processed before +validation takes place. The following command can be used to enable +XInclude processing in oNVDL.

java -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration -jar /path/to/oNVDL/bin/onvdl.jar /path/to/docbook.nvdl document.xml

For JNVDL you can use switch -xi to enable XInclude processing.

2. Stylesheets

2.1. Will the current DocBook XSL stylesheets (XSLT 1.0 based +implementation) be maintained and improved in the future since work on +a new XSLT 2.0 based implementation has started?

2.1.

Will the current DocBook XSL stylesheets (XSLT 1.0 based +implementation) be maintained and improved in the future since work on +a new XSLT 2.0 based implementation has started?

Yes, the current stylesheets (like 1.73.x) will be supported and +improved further because they are very widely deployed and work with +many existing XSLT processors.

Surely there will be a point in a future when all new development +will be switched to the XSLT 2.0 based implementation. But this +will not happen until all features of the current stylesheets are +implemented in the new stylesheets, and until there is more than +one usable XSLT 2.0 processor available.

3. Schema customizations

3.1. How can I extend the DocBook schema with MathML elements?
3.2. How can I extend the DocBook schema with SVG elements?
3.3. Is it possible to use the previous two customizations for MathML +and SVG together?
3.4. Are there any other examples of schema customization +available?

3.1.

How can I extend the DocBook schema with MathML elements?

The basic DocBook schema allows elements from the MathML namespace +to appear inside the equation element. This means that you can +validate a DocBook+MathML document, but MathML content will be ignored +during the validation. You will also not be able to use guided editing +for the MathML content.

If you need strict validation of MathML content or guided +editing for MathML, you can easily extend the base DocBook schema with +the MathML schema.

Procedure 3. Extending the DocBook schema with the MathML schema

  1. +

    Download the MathML RELAX NG schema from http://yupotan.sppd.ne.jp/relax-ng/mml2.html and unpack it +somewhere (e.g. into a mathml subdirectory).

    +
  2. +

    Create a schema customization in compact syntax—dbmathml.rnc:

    +
    r
    n
    c
    namespace html = "http://www.w3.org/1999/xhtml" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace db = "http://docbook.org/ns/docbook" + +include "/path/to/docbook.rnc" { + db._any.mml = external "mathml/mathml2.rnc" + db._any = + element * - (db:* | html:* | mml:*) { + (attribute * { text } + | text + | db._any)* + } +}
    +

    Or, alternatively, you can use the XML syntax of RELAX NG—dbmathml.rng:

    +
    r
    n
    g
    <?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + +<include href="/path/to/docbook.rng"> + <define name="db._any.mml"> + <externalRef href="mathml/mathml2.rng"/> + </define> + + <define name="db._any"> + <element> + <anyName> + <except> + <nsName ns="http://docbook.org/ns/docbook"/> + <nsName ns="http://www.w3.org/1999/xhtml"/> + <nsName ns="http://www.w3.org/1998/Math/MathML"/> + </except> + </anyName> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <ref name="db._any"/> + </choice> + </zeroOrMore> + </element> + </define> +</include> + +</grammar>
    +
  3. +

    Now use the customized schema (dbmathml.rnc +or dbmathml.rng) instead of the original +DocBook schema.

    +

3.2.

How can I extend the DocBook schema with SVG elements?

The situation is the same as with MathML support. You can use +elements from the SVG namespace inside the imageobject +element.

Procedure 4. Extending the DocBook schema with the SVG schema

  1. +

    Download the SVG RELAX NG schema from http://www.w3.org/Graphics/SVG/1.1/rng/rng.zip and unpack it +somewhere (e.g. into an svg subdirectory).

    +
  2. +

    Create a schema customization in compact syntax—dbsvg.rnc:

    +
    r
    n
    c
    namespace html = "http://www.w3.org/1999/xhtml" +namespace db = "http://docbook.org/ns/docbook" +namespace svg = "http://www.w3.org/2000/svg" + +include "/path/to/docbook.rnc" { + db._any.svg = external "svg/svg11.rnc" + db._any = + element * - (db:* | html:* | svg:*) { + (attribute * { text } + | text + | db._any)* + } +}
    +

    Or, alternatively, you can use the XML syntax of RELAX NG—dbsvg.rng:

    +
    r
    n
    g
    <?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + +<include href="/path/to/docbook.rng"> + <define name="db._any.svg"> + <externalRef href="svg/svg11.rng"/> + </define> + + <define name="db._any"> + <element> + <anyName> + <except> + <nsName ns="http://docbook.org/ns/docbook"/> + <nsName ns="http://www.w3.org/1999/xhtml"/> + <nsName ns="http://www.w3.org/2000/svg"/> + </except> + </anyName> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <ref name="db._any"/> + </choice> + </zeroOrMore> + </element> + </define> +</include> + +</grammar>
    +
  3. +

    Now use the customized schema (dbsvg.rnc +or dbsvg.rng) instead of the original +DocBook schema.

    +

3.3.

Is it possible to use the previous two customizations for MathML +and SVG together?

Yes, you can create a special schema customization that combines +both MathML and SVG with the DocBook schema. In compact syntax, the merged +schema is:

r
n
c
namespace html = "http://www.w3.org/1999/xhtml" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace db = "http://docbook.org/ns/docbook" +namespace svg = "http://www.w3.org/2000/svg" + +include "/path/to/docbook.rnc" { + db._any.mml = external "mahtml/mathml2.rnc" + db._any.svg = external "svg/svg11.rnc" + db._any = + element * - (db:* | html:* | mml:* | svg:*) { + (attribute * { text } + | text + | db._any)* + } +}

Or alternatively in the full RELAX NG syntax:

r
n
g
<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + +<include href="/path/to/docbook.rng"> + <define name="db._any.mml"> + <externalRef href="mathml/mathml2.rng"/> + </define> + + <define name="db._any.svg"> + <externalRef href="svg/svg11.rng"/> + </define> + + <define name="db._any"> + <element> + <anyName> + <except> + <nsName ns="http://docbook.org/ns/docbook"/> + <nsName ns="http://www.w3.org/1999/xhtml"/> + <nsName ns="http://www.w3.org/1998/Math/MathML"/> + <nsName ns="http://www.w3.org/2000/svg"/> + </except> + </anyName> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <ref name="db._any"/> + </choice> + </zeroOrMore> + </element> + </define> +</include> + +</grammar>

3.4.

Are there any other examples of schema customization +available?

Sure. Some of the are listed bellow:

4. Tool specific problems

4.1. I'm using Altova XMLSpy to validate DocBook V5.0 instances +against the W3C XML Schema (docbook.xsd). XMLSpy +complains about undefined xml:id +attributes?

4.1.

I'm using Altova XMLSpy to validate DocBook V5.0 instances +against the W3C XML Schema (docbook.xsd). XMLSpy +complains about undefined xml:id +attributes?

XMLSpy always uses its own bundled version of +xml.xsd which unfortunately doesn't define the xml:id attribute. The bundled version of +xml.xsd is hardwired into the program and cannot +be replaced by a newer version. To solve this problem you must upgrade +to version 2006 SP1.

+
+ +

Bibliography

+ +

[RNCTUT] + +Clark, James – Cowan, John – MURATA, Makoto: RELAX NG Compact Syntax Tutorial. +Working Draft, 26 March 2003. OASIS. http://relaxng.org/compact-tutorial-20030326.html +

+ +

[NVDLTUT] + +Nálevka, Petr: +NVDL Tutorial. +http://jnvdl.sourceforge.net/tutorial.html +

+ +

[XMLID] + +Marsh, Jonathan – +Veillard, Daniel – +Walsh, Norman: xml:id Version 1.0. W3C Recommendation, 9 September 2005. http://www.w3.org/TR/xml-id/ +

+ +

[DB5SPEC] + +Norman, Walsh: The DocBook Schema. +Working Draft 5.0a1, OASIS, 29 June 2005. +http://www.docbook.org/specs/wd-docbook-docbook-5.0a1.html +

+ +
+ +


[1] The examples in this section use + docbook.rng as the schema location. If you want + to create a portable schema customization you should use a standard + web-accessible location like + http://docbook.org/xml/5.0/rng/docbook.rng and + then use XML + catalogs to resolve this location to your local copy of the + schema for improved performance. Unfortunately, at the time of + this writing not all RELAX NG validators support XML catalogs.

\ No newline at end of file diff --git a/docs/howto.pdf b/docs/howto.pdf new file mode 100644 index 0000000..5713d3b Binary files /dev/null and b/docs/howto.pdf differ diff --git a/docs/howto.xml b/docs/howto.xml new file mode 100644 index 0000000..fa18c65 --- /dev/null +++ b/docs/howto.xml @@ -0,0 +1,2183 @@ + + +]> +
+ +DocBook V5.0 +The Transition Guide + + +Jirka Kosek + jirka@kosek.cz +Norman Walsh + ndw@nwalsh.com + §convert4to5, proofreading +Dick Hamilton + rlhamilton@frii.com + §changes-removed, customization, proofreading +Michael(tm) Smith + smith@sideshowbarker.net + §dbxsl-ns + + + +2008-02-06 +2007-10-28 +2006-10-22 +2006-05-16 +2006-03-01 +2005-12-28 +2005-10-27 + + + +This document is targeted at DocBook users who are considering +switching from DocBook V4.x to DocBook V5.0. It describes +differences between DocBook V4.x and V5.0 and provides some suggestions about +how to edit and process DocBook V5.0 documents. There is +also a section devoted to conversion of legacy documents from DocBook +4.x to DocBook V5.0. + +At the time this was written the current version of DocBook V5.0 +was &version;. However, almost all of the information in this document is +general and applies to any newer version of DocBook V5.0. + + +
+Introduction + +The differences between DocBook V4.x and V5.0 are quite radical in +some aspects, but the basic idea behind DocBook is still the same, and +almost all element names are unchanged. Because of this it is very +easy to become familiar with DocBook V5.0 if you know any previous version of +DocBook. You can find a complete list of changes in +DB5SPEC, here we will discuss only the most +fundamental changes. + +
+Finally in a namespace + +All DocBook V5.0 elements are in the namespace +http://docbook.org/ns/docbook. XMLExtensible +Markup Language namespaces are used to distinguish +between different element sets. In the last few years, almost all new +XML grammars have used their own namespace. It is easy to +create compound documents that contain elements from different XML +vocabularies. DocBook V5.0 is following this design rule. Using +namespaces in your documents is very easy. Consider this +simple article marked up in DocBook V4.5: + + + Sample article + This is a really short article. +
]]> + +The corresponding DocBook V5.0 article will look very similar: + + + Sample article + This is a really short article. +]]> + +The only change is the addition of a default namespace declaration +(xmlns="http://docbook.org/ns/docbook") on the root +element. This declaration applies the namespace to the root element and +all nested elements. Each +element is now uniquely identified by its local name and namespace. + + +The namespace name http://docbook.org/ns/docbook serves +only as an identifier. This resource is not fetched during processing +of DocBook documents, and you are not required to have an Internet +connection during processing. If you access the namespace URI with a browser, +you will find a short explanatory document about the namespace. In the +future this document will probably conform to (some version of) RDDL +and provide pointers to related resources. + + + + +
+Relaxing with DocBook + +For more than a decade, the DocBook schema was defined using a +DTD. However, DTDs have serious limitations, and DocBook V5.0 is thus +defined using a very powerful schema language called RELAX NG. Thanks +to RELAX NG, it is now much easier to create customized versions of +DocBook, and some content models are now cleaner and more +precise. + +Using RELAX NG has an impact on the document prolog. The following +example shows the typical prolog of a DocBook V4.x document. The version of +the DocBook DTD (in this case 4.5) is indicated in the document type +declaration (!DOCTYPE) which points to a particular version of the +DTD. + + +DocBook V4.5 document + + +
+ Sample article + This is a very short article. +
]]>
+
+ +In contrast, DocBook V5.0 does not depend on DTDs anymore. This +mean that there is no document type declaration and the version of DocBook +used is indicated with the version +attribute instead. + + +DocBook V5.0 document + +
+ Sample article + This is a very short article. +
]]>
+
+ +As you can see, DocBook V5.0 is built on top of existing XML +standards as much as possible, for example the lang attribute is superseded by the standard +xml:lang attribute. + +Another fundamental change is that there is no direct indication +of the schema used. Later in this document, you will learn how you can +specify a schema to be used for document validation. + + +Although we recommend the RELAX NG schema for DocBook +V5.0, there are also DTD and W3C XML Schema versions available (see ) for tools that do not yet support RELAX NG. + + +
+ +
+Why switch to DocBook V5.0? + +The simple answer is because DocBook V5.0 is the +future. Apart from this marketing blurb, there are also more +technical reasons: + + + +DocBook V4.x is feature frozen.DocBook V4.5 +is the last version of DocBook in the V4.x series. Any new DocBook +development, like the addition of new elements, will be done in +DocBook V5.0. It is only matter of time before useful, new elements +will be added into DocBook V5.0, but they are not likely to be back +ported into DocBook V4.x. DocBook V4.x will be in maintenance mode and +errata will be published if necessary. + + +DocBook V5.0 offers new functionality. +DocBook V5.0 provides significant improvements over DocBook V4.x. For +example there is general markup for annotations, a new and flexible +system for linking, and unified markup for information sections using +the info element. + + +DocBook V5.0 is more extensible. Having +DocBook V5.0 in a separate namespace allows you to easily mix DocBook +markup with other XML-based languages like SVG, MathML, XHTML or even +FooBarML. + + +DocBook V5.0 is easier to customize. RELAX +NG offers many powerful constructs that make customization much easier +than it would be using a DTD (see ). + + + +
+ +
+Schema jungle + +Schemas for DocBook V5.0 are available in several formats at + (or the +mirror at ). +Only the RELAX NG schema is normative +and it is preferred over the other schema languages. However, for your +convenience there are also DTD and W3C XML Schema versions provided for DocBook +V5.0. But please note that neither the DTD nor the W3C XML schema are able to +capture all the constraints of DocBook V5.0. This mean that a +document that validates against the DTD or XML schema is not necessarily +valid against the RELAX NG schema and thus may not be a valid +DocBook V5.0 document. + +DTD and W3C XML Schema versions of the DocBook V5.0 grammar are provided +as a convenience for users who want to use DocBook V5.0 with legacy tools +that don't support RELAX NG. Authors are encouraged to switch to RELAX +NG based tools as soon as possible, or at least to validate documents +against the RELAX NG schema before further processing. + +Some document constraints can't be expressed in schema languages +like RELAX NG or W3C XML Schema. To check for these additional +constraints DocBook V5.0 uses Schematron. We recommend that you +validate your document against both the RELAX NG and +Schematron schemas. + +
+Where to get the schemas + +The latest versions of schemas can be obtained from . At the time this was +written the latest version was &version;. Individual schemas are +available at the following locations: + + + +RELAX NG schema + + + +RELAX NG schema in compact syntax + + + +DTD + + + +W3C XML Schema + + + +Schematron schema with additional checks + + + + +These schemas are also available from the mirror at +. + +
+ +
+DocBook documentation + +Detailed documentation about each DocBook V5.0 element is +presented in the reference part +of DocBook: The Definitive Guide. + + +Other parts of DocBook: The Definitive +Guide have not yet been updated to reflect the changes +made in DocBook V5.0. Please do not be confused by this. + + +
+ +
+ + + +
+Tool chain + +This section briefly describes tools and procedures to edit and +process content stored in DocBook V5.0. + +
+Editing DocBook V5.0 + +Because DocBook is an XML-based format and XML is a text-based +format, you can use any text editor to create and edit DocBook V5.0 +documents. However, using dumb editors like Notepad is +not very productive. You will do better if you use an editor that +supports XML. Although there are DTD and W3C XML Schemas available for +DocBook V5.0, which means you can use any editor that works with DTDs +or W3C XML Schemas, we recommend that you use the RELAX NG grammar +with DocBook V5.0. The rest of this section contains an overview of +XML editors (listed in alphabetical order) that are known to work with +RELAX NG schemas and that offer guided editing based on the RELAX NG +schema. + +
+Emacs and nXML + +nXML +mode is an add-on for the GNU +Emacs text editor. By installing nXML you can turn Emacs +into a very powerful XML editor that offers guided editing and +validation of XML documents. + +
+Emacs with nXML mode provides guided editing and validation + + + + + + + + +
+ +nXML uses a special configuration file named +schemas.xml to associate schemas with XML +documents. Often you will find this file in the directory +site-lisp/nxml/schema inside the Emacs installation +directory. Adding the following line into the configuration file, +will associate DocBook V5.0 elements with the appropriate +schema: + +<namespace ns="http://docbook.org/ns/docbook" uri="/path/to/docbook.rnc"/> + + +Please note that nXML ships with a file named +docbook.rnc. This file contains the RELAX NG grammar +for DocBook V4.x. Be sure that you associate the DocBook V5.0 namespace +with the corresponding DocBook V5.0 grammar. + + +If you can't edit the global schemas.xml file, +you can create this file in the same directory as your document. nXML will +find associations placed there also. In this case you must create a +complete configuration file like: + +<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0"> + <namespace ns="http://docbook.org/ns/docbook" uri="/path/to/docbook.rnc"/> +</locatingRules> + +
+ +
+oXygen + +oXygen is a feature +rich XML editor. It has built-in support for many schema languages +including RELAX NG. If you want to smoothly edit and validate DocBook +5.0 documents you should associate the DocBook namespace with the +corresponding schema. Go to +OptionsPreferences…EditorDefault +Schema Associations. Then click the +New button to add a new association. Type in +the DocBook namespace and the RELAX NG schema location, choose the +RNG Schema + Schematron type of schema as, and +confirm your choice by clicking the OK +button. + +
+Adding a new schema association in oXygen + + + + + +
+ +Because oXygen comes with preconfigured associations for +DocBook V4.x, you must move your newly added configuration to the +top of the list (using the Up button). +That way you will be able to use +oXygen with both DocBook V4.x and DocBook V5.0. + +
+DocBook V5.0 association must precede associations for DocBook V4.x + + + + + +
+ +Now you can close the preference box by clicking on the +OK button. oXygen will assist +you with writing DocBook V5.0 content, and you will be able to validate +your documents against both RELAX NG and Schematron schemas. + +
+DocBook V5.0 document opened in oXygen + + + + + +
+ +
+ +
+XML Mind XML editor + +XML +Mind XML editor (XXE) is a visual validating XML editor that +provides a wordprocessor-like interface to users. It is available in +two versions, Standard and Professional. The Standard version is free and +provides everything you need to edit DocBook V5.0 documents. + +
+XML Mind XML Editor – feels almost like MS Word but real DocBook V5.0 markup is created + + + + + +
+ +In order to use DocBook V5.0 in XXE you have to install +an add-on. Go to +OptionsInstall +Add-ons…. Then choose DocBook +5 configuration and press the OK +button. After restart, XXE is ready to work with DocBook V5.0 +documents. + +
+ +
+ +
+Validating DocBook V5.0 + +If you are not using a RELAX NG-based validating editor when you +create documents, we strongly recommend that you validate your +documents against RELAX NG and Schematron schemas before processing +them. Only after successful validation can you be sure that your +document is really DocBook V5.0 and that processing tools will be able +to process it correctly. + +For validation you can use tools that support simultaneous RELAX NG and +Schematron validation, or you can use NVDL to orchestrate validation using +the two schemas. + +
+Using RELAX NG and Schematron + +You can find a list of RELAX NG validators at . It is best to use +validators with support for embedded Schematron rules inside RELAX NG +schemas. Schematron is a rule-based validation language which is used +to impose additional constraints on DocBook documents. Schematron rules +assert conditions which are impossible or difficult to express +in a pure RELAX NG schema. + +Sun +Multi-Schema XML Validator (MSV) is able to validate an XML +document against a RELAX NG schema and Schematron rules at the same time. +To install and use MSV follow these steps: + + + +Download relames.zip from . + + +Unpack the downloaded file into an arbitrary directory. + + +Validate your document using the following command: +java -Xss512K -jar /path/to/relames.jar /path/to/docbook.rng document.xml + +The switch increases the stack size +of the Java virtual machine. This is necessary because the DocBook schema is +quite large. If you get stack overflow errors from MSV, increase +this value. You may get spurious error messages if the value +is too small, so if you get a stack overflow error, ignore any other error +messages and try a larger value for the stack size. +If you are not using Sun's Java implementation, please consult the +documentation for your virtual machine to learn how to increase the stack +size. + + + + +There is also an on-line DocBook V5.0 +validator that validates DocBook V5.0 documents against the normative +RELAX NG schema with embedded Schematron rules. + +
+ +
+Using NVDL + +NVDL is a meta-schema language which can validate a document +against several schemas. DocBook V5.0 comes with a NVDL +schema which specifies that DocBook documents should be validated +against both RELAX NG and Schematron schemas. + +You can find a list of NVDL validators at . The following procedures show how to +install and use the oNVDL and +JNVDL +validators. + + +oNVDL installation and usage + +Download onvdl-20070517.zip. + + +Unpack the downloaded file into an arbitrary directory. + + +Validate your document using the following command: +java -jar /path/to/oNVDL/bin/onvdl.jar /path/to/docbook.nvdl document.xml + + + + +JNVDL installation and usage + +Download the latest release of JNVDL from . + + +Unpack the downloaded file into an arbitrary directory. + + +Modify file jnvdl.bat (or jnvdl.sh on Unix based systems) to include switch directly after java command. + + +On Windows systems, validate your document using the following command: +/path/to/jnvdl/jnvdl -nt -s /path/to/docbook.nvdl document.xml +On Unix systems, validate your document using the following command: +/path/to/jnvdl/jnvdl.sh -nt -s /path/to/docbook.nvdl document.xml + + + +
+ +
+ +
+Processing DocBook V5.0 + +Part of DocBook's great success can be attributed to the +availability of free +tools that can be used to transform DocBook content into various +target formats including HTML and PDF. The DocBook XSL Stylesheets are +very popular tools. + +
+DocBook XSL Stylesheets + +The DocBook stylesheets are designed to process content written in +different versions of DocBook (for example 3.1 and 4.2). Recent +versions of the stylesheets are also able to process DocBook V5.0 +with some limitations. + +You can process DocBook V5.0 documents with the DocBook XSL +stylesheets in exactly the same way you process DocBook V4.x documents. +You do not need special software; you can stick to your preferred +XSLT processor, be it Saxon, xsltproc, Xalan or whatever else (but see +the note about the lost base URI below). + +During document processing, the stylesheets strip +namespaces from DocBook V5.0 to get a document which will be +very similar to DocBook V4.x. This is necessary because from the XSLT +point of view, elements from different namespaces are distinct and cannot +be easily processed by the same set of templates. This process is +completely transparent to the user. If you are processing DocBook V5.0 +documents, the only difference is that you will see the following +additional message: + +Note: namesp. cut : stripped namespace before processing +Note: namesp. cut : processing stripped document + +Although you can successfully use the existing stylesheets to +process DocBook V5.0, there are some limitations and unsupported +features. The unsupported features include: + + +general annotations; +general XLink links on all elements. + + + +During namespace stripping, the base URI of the document is +lost. This means that in rare situations, relatively referenced +resources like images or programlistings can be processed incorrectly. +The stylesheets attempt to compensate for this problem, but that is not always +possible. When an XSLT processor other than Saxon or Xalan is used, a warning +message is generated: + +WARNING: cannot add @xml:base to node set root element. Relative paths may not work. + + + +
+ +
+DocBook XSL-NS Stylesheets +As you can see from reading the previous section, namespace + stripping has limitations that will cause trouble in some + situations. To overcome those limitations, Bob Stayton created a + build system for taking the non-namespace-aware DocBook XSL + stylesheets and generating namespace-aware versions from them. + The DocBook XSL-NS stylesheets are the result. + +The DocBook XSL-NS stylesheets are released side-by-side + with the DocBook XSL stylesheets, as a separate docbook-xsl-ns package. They are the +recommended XSLT 1.0 stylesheets to use for transforming +namespaced (DocBook V5.0) documents. +
+ +
+XSLT 2.0 based re-implementation + +XSLT 1.0 is missing some important features. To work around +these missing features, the current DocBook XSL stylesheets use some +implementation-specific extensions. +XSLT 2.0 adds many new and previously missing features into the language. +A new set of DocBook stylesheets is being implemented based on XSLT 2.0 +to take advantage of these features and to fully support DocBook V5.0. + + +The XSLT 2.0 based stylesheets have many new features, including: + + +seamless integration of profiling (conditional +documents) with external bibliographies and +glossaries; +no need for (most) external extensions; +internationalized indexes; +easy to customize titlepage templates. + + +The XSLT 2.0 based stylesheets are still under development. At +this writing, they only support HTML and chunked HTML output. As time +permits, the stylesheet developers will be adding other formats. Since +the stylesheets are developed in the limited free time the developers +have, there's no specific schedule. + +There are not very many XSLT 2.0 implementations available. +But, if you want to try the new stylesheets, grab a snapshot of +the development version from +and unpack it somewhere. Then download and install Saxon 9 from . + +To transform a DocBook V5.0 document to a single HTML page use the command: + +java -jar /path/to/saxon9.jar -o output.html document.xml /path/to/docbook-xsl2-snapshot/html/docbook.xsl + +To transform a DocBook V5.0 document to a set of chunked HTML pages use the command: + +java -jar /path/to/saxon9.jar document.xml /path/to/docbook-xsl2-snapshot/html/chunk.xsl + +
+ +
+ +
+ +
+Markup changes + +This section describes the most common markup changes +between DocBook V4.x and V5.0. +You can find a complete list of changes in +DB5SPEC. + +
+Improved cross-referencing and linking + +In DocBook V4.x the attribute id is +used to assign a unique identifier to an element. In DocBook V5.0 this +attribute is renamed xml:id in order +to comply with XMLID. + +Now you can use almost any inline element as the source of a link, +not just xref or link. For example, the following +DocBook 4.x content: + + + DIR command + ... +
+ +
+ LS command + This command is a synonym for DIR command. +
]]> + +is written in DocBook V5.0 as: + + + DIR command + ... +
+ +
+ LS command + This command is a synonym for DIR command. +
]]> + +The linkend attribute was added to all +inline elements together with the href +attribute from the XLink namespace. This means that you can use any inline +element as the source of a hypertext link. To use XLinks you have +to declare the XLink namespace (most often on the root element of your +document): + + + Test article + + Emacs + is my favourite text editor.]]> + … + +The ulink element was removed from DocBook V5.0 +in favor of XLink linking. Instead of the DocBook V4.x ulink +element: + +DocBook site]]> + +you can now use link + +DocBook site]]> + +XLink links may contain a fragment identifier, which you can +use instead of linkend to form +cross-references inside a document; for example: + +DIR]]> + +However XLink links are not checked during validation, while xml:id/linkend +links are checked for ID/IDREF consistency. +One place where the XLink-based, fragment identifier scheme is +useful is when XInclude is being used, since XML ID/IDREF links +cannot span XInclude boundaries. +You can use whichever approach better suits your needs. + + +
+Renamed elements + +Some elements were renamed to better express their meaning or to +reduce the total number of elements available in DocBook. + + +Renamed elements + + + +Old name +New name + + + + +sgmltag +tag + + +bookinfo, articleinfo, +chapterinfo, *info +info + + +authorblurb +personblurb + + +collabname, corpauthor, +corpcredit, corpname +orgname + + +isbn, issn, +pubsnumber +biblioid + + +lot, lotentry, tocback, +tocchap, tocfront, toclevel1, +toclevel2, toclevel3, toclevel4, +toclevel5, tocpart +tocdiv + + +graphic, graphicco, +inlinegraphic, mediaobjectco +mediaobject and inlinemediaobject + + +ulink +link + + +ackno +acknowledgements + + + +
+ +
+ +
+Removed elements + +The following elements were removed from DocBook V5.0 without +direct replacements: action, beginpage, highlights, +interface, invpartnumber, medialabel, modespec, +structfield, structname. +If you use one or more of these elements, here are some suggestions +as to how to re-code them in DocBook V5.0. + + + +Recommended mapping for removed elements + + + +Old name +Recommended mapping + + + + +action +Use <phrase remap="action">. + + +beginpage +Remove: beginpage is advisory only +and has tended to cause confusion. A processing instruction or +comment should be a workable replacement if one is needed. + + +highlights +Use abstract. Note that because highlights has a broader content model, you may +need to wrap contents in a para inside +abstract. + + +interface +Use one of the gui* elements +(guibutton, guiicon, guilabel, +guimenu, guimenuitem, or +guisubmenu). + + +invpartnumber +Use <biblioid class="other" +otherclass="medialabel">. The +productnumber element is another alternative. + + +medialabel +Use <citetitle +pubwork="mediatype">, +where mediatype is the type of media being +labeled (e.g.,cdrom or dvd). + + +modespec +No longer needed. The current processing model for +olink renders modespec +unnecessary. + + +structfield, structname +Use varname. If you need to distinguish between the +two, use <varname +remap="structname or +structfield">. In some contexts, it +may also be appropriate to use property for structfield. + + + +
+ +
+ + + +
+Converting DocBook V4.x documents to DocBook V5.0 + +The DocBook V5.0 schema ships with an XSLT 1.0 stylesheet that +is designed to transform valid DocBook V4.x documents to valid +DocBook V5.0 documents. + +To convert your document, doc.xml in the +examples below, follow these steps: + + + +Check the validity of your DocBook XML V4.x document. The +conversion tool assumes that the input document is valid. If the input +document contains markup errors, the results will be unpredictable at +best. + + +Transform doc.xml to +newdoc.xml with the +db4-upgrade.xsl stylesheet included in the +DocBook V5.0 distribution that you are using. + + +Check the validity of your DocBook XML V5.0 document against +the DocBook V5.0 RELAX NG grammar. + + + +In the vast majority of cases, the resulting document should +be valid and your conversion process is finished. + +If the document is not valid, please report the problem. +(Over time, we'll have more experience with the sorts of things +that can go wrong and we'll update this document to reflect that +experience.) + +
+What About Entities? + +Using XSLT to transform existing documents to DocBook V5.0 has +one potential disadvantage: it removes all entity references from +your document. + +If preserving entities is an important aspect of your production +work flow, you will have to engage in a semi-manual process to +preserve them. + + + +Open your existing document using your favorite editing tool. +You must use a tool that is not XML-aware, or one +that allows you to edit markup “in the raw”. + + +Replace all occurrences of the entity references that you want +to preserve with some unique string. For example, if you want to preserve +“&Product;” references, you could replace them +all with “[[[Product]]]” (assuming that the string +“[[[Product]]]” doesn't occur anywhere else in your document). + + +Copy the document type declaration off of your document and save +it some place. The document type declaration is everything from +“<!DOCTYPE” to the closing “]>”. + + + +Perform the conversion described in . + + + +Open the new document using your favorite editing tool. Replace +all occurrences of the unique string you used to save the entity references +with the corresponding entity references. + + +Paste the document type declaration that you saved onto the top +of your new document. + + +Remove the external identifier (the PUBLIC +and/or SYSTEM keywords) from the document type +declaration. A document that begins: + +]>]]> +is perfectly well-formed. If you don't remove the references to +the DTD, then your parser will likely try to validate against DocBook +V4.0 and that's not going to work. Alternatively, you could refer +to the DocBook V5.0 DTD. + + + + +Steps 2 and 5 from previous procedure can be automated using the +cloak +script written by Michael Smith. + + +
+External Parsed Entities + +External parsed entities, entities which load part of a document +from another file, are a special case. These can often be replaced +with XInclude elements. + +The Perl script db4-entities.pl, also included +in the DocBook V5.0 distribution attempts to perform this replacement +for you. To use the script, perform the following steps: + + + +Process your document with db4-entities.pl. +The script expects a single filename and prints the XInclude version +on standard output. + + +Process the XInclude version as described in . + + + +
+
+ +
+ +
+ Customizing DocBook V5.0 + + + + It's much easier to customize DocBook V5.0 than it was to + customize earlier releases. This is partly because RELAX NG + provides better support for modifications than DTDs and partly + because the DocBook schema is designed to take full advantage + of the capabilities RELAX NG provides. + This section describes the organization of the RELAX NG schema for + DocBook, methods and examples for adding, removing, and modifying elements + and attributes, and conventions for naming and versioning + DocBook customizations. + It assumes some familiarity with RELAX NG. If you are unfamiliar + with RELAX NG, you can find a tutorial introduction in + RNCTUT. + +
+ DocBook RELAX NG schema organization + + The DocBook RELAX NG schema is highly modular, using named + patterns extensively. Every element, attribute, attribute + list, and enumeration has its own named pattern. In addition, + there are named patterns for logical combinations of elements + and attributes. These named patterns provide hooks + into the schema that allow you to do a wide range of customization + by simply redefining one or more of the named patterns. + + + An important design characteristic of the schema is that + duplication is minimized. This is done through the use of + named patterns for common groupings that can be re-used. + For example, the imagedata and videodata + elements each have an align attribute + that takes the same set of enumerated values. Rather than + repeating those values, a single pattern, + db.halign.enumeration is referenced by + the db.videodata.align.enumeration + and db.imagedata.align.enumeration patterns, + which are in turn referenced by the + db.videodata.align.attribute + and db.imagedata.align.attribute patterns. + While this may seem like overkill, it allows a customizer to modify + the allowed enumerations for these two attributes separately or together, + or to completely re-define the allowed content of either or both, + by redefining one or more of these named patterns. + +
Pattern Names + + Because named patterns are used extensively, the RELAX NG schema uses + several naming conventions. These are: + + + + Names have two or more parts, separated by dots . + + + + + The first part of each name is the prefix db + + + + + Each element has a named pattern in the form + db.elementname. + Elements that have different content models in different + contexts will also have patterns in the form + db.context.elementname. For example, db.figure.info + defines the content model for the info element + when it appears as a child of the figure element. + Context may have several parts. + For example, db.cals.entrytbl.thead. + + + + + Most attributes have a named pattern in the form + db.attributename.attribute. + Attributes that have different content models in different + contexts will also have patterns in the form + db.context.attributename.attribute. + For example, + db.olink.localinfo.attribute defines the content + model of the localinfo attribute when + it appears in olink. + There are a few attributes that do not have individual named + patterns. For example, the effectivity attributes are grouped + into db.effectivity.attributes and not identified + separately. + + + + + Each element has a named pattern for its attribute list in + the form + db.elementname.attlist + + that defines the list of attributes for that element. + Elements that have different attribute lists in different + contexts will also have patterns in the form + db.context.elementname.attlist + For example, db.html.table.attlist defines + the attribute list for the html table element and + db.cals.table.attlist defines the attribute + list for a cals table element. + + + + + Each attribute that has enumerated values has a + named pattern in the form + db.[context.]attributename.enumeration. + If the enumeration for a particular attribute depends on + context, optional context is provided. + For example, + db.verbatim.continuation.enumeration defines + the enumeration values for the + continuation attribute that is used + in verbatim contexts like screen. + Unlike elements and attributes, there is not necessarily a + named pattern for enumerated attributes outside their context. + For example, there is no db.class.enumeration + because the class attribute has + a broad and non-intersecting range of uses. + + + + + There are several different groupings of elements and attributes. + Here are the major ones: + + + inlines + + + Combinations of inline elements, for example, + db.error.inlines, which contains + db.errorcode, + db.errortext, etc. + + + + + blocks + + + Combinations of block elements, for example, + db.verbatim.blocks, which contains + db.programlisting, + db.screen, etc. + + + + + attributes + + + Combinations of attributes, for example, + db.effectivity.attributes, + which contains the attributes + arch, + condition, + conformance, etc. + + + + + components + + + High level components of the schema, for example, + db.navigation.components, which contains + db.glossary, + db.bibliography, + db.index, and + db.toc, and is used inside the + content model for chapter, appendix, + and preface. + + + + + contentmodel + + + Shared content models, for example, + db.admonition.contentmodel, which contains + the content model for tip, warning, + note, etc. + + + + + + + There are a couple of other groupings designed to minimize + duplication, but these are the most important. + + + + +
+
+
+ General customization considerations + + Creating a customized schema is similar to + creating a customization layer for XSL. The schema customization + layer is a new RELAX NG schema that defines your changes and + includes the standard docbook schema. You then validate using + the schema customization as your schema. + + + is an empty + RELAX NG customization that does nothing + except define the name spaces and include the standard DocBook schema. + The href attribute of the + include element points to + the location of the standard DocBook V5.0 + schema.The examples in this section use + docbook.rng as the schema location. If you want + to create a portable schema customization you should use a standard + web-accessible location like + http://docbook.org/xml/&version;/rng/docbook.rng and + then use XML + catalogs to resolve this location to your local copy of the + schema for improved performance. Unfortunately, at the time of + this writing not all RELAX NG validators support XML catalogs. + All of the examples are given in both RNG and RNC form. +Empty customization file + + + + + + +]]> + + + +
+
+ Elements +
+ Adding elements + + Adding an element typically takes two definitions. + The first defines the new element and + its content model, and the second adds the + new element into the schema. We'll show two examples. + + + + adds a new element, + person, with the same + content model as author. The new element will be + allowed to appear wherever author can appear. + + + The db.author pattern is copied + and renamed dbx.person, defining + a new element called person. + Then, the db.author pattern is redefined + to be a choice of the current value or dbx.person. + The combine attribute tells + RELAX NG to combine this pattern with the existing named + pattern. In this case, the value + of the combine attribute is + choice, which tells the parser that either + the original pattern or this new pattern is a valid match. + +Adding a new element by duplicating an existing one + + + + + + + + + + + + + + +]]> + + + + The preceding method works well when you'd like a new element + to be a clone or near-clone of an existing element. It gives + you complete control over the content model, but + only limited control over where the element is allowed. It + works well when you want to allow the element in the same places + as an existing element, and for this example that works + nicely, since author is allowed in four different + named patterns, each of which would have had to be redefined to + allow person. + But, if you can't find an existing element that is allowed in + exactly the places you need, this method doesn't work as well. + + + + adds two new elements by combining them into + a higher level pattern. In this example, we'll add + two new inline elements for writing about assembly language, + register and + instruction. + We will allow them wherever programming inlines + or operating system inlines are allowed. + + defines the two elements, creates a new named pattern + (dbx.asm.inlines) that contains them, and adds + that pattern to db.programming.inlines and + db.os.inlines. Since these two patterns + don't have any elements in common, the strategy used in + + would require selecting two different elements to clone, + which would be messy. + +Adding new inline elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + +
+
+ Deleting elements + + Deleting elements is straightforward, but takes some + care and planning. deletes + the important admonition element by redefining + it with a content model of notAllowed. + Note that in this example, the redefinition is inside + the include element. + This is required for + redefinitions that completely replace an existing pattern. + + + Be careful; If you delete an element that is a required part + of another element's content model, you can make it + impossible to create a valid document. + For example, if you delete the title + element, you won't be able to validate a book + because a book requires a title. + +Deleting an element + + + + + + + + +]]> + + +
+
+ Customizing the content model of existing elements + + + expands the definition of author to include two + new elements, born and + died. + The author element allows two content models, + db.person.author.contentmodel, which + defines an author who is a person, and + db.org.author.contentmodel, which + defines an author that is an organization. We will modify + db.person.author.contentmodel so that + only authors who are persons can have the new elements. +Modifying the content model of an element + + + + + + + + + + + + + + + + + + +]]> + + + + + This modification will allow instances like this: + + Babe Ruth + 02/06/1895 + 08/16/1948 +]]> +but because we only modified the content model for authors +who are human, it won't allow an instance like this, which +uses db.org.author.contentmodel: + + + Boston Red Sox + 1919 + 2004 +]]> + +
+
+
+ Attributes +
+ Adding attributes + + The simplest way to add an attribute to a single element + is to add it to the attlist pattern for that element. + + adds the optional attributes born + and died to the attribute + list for author. + The db.author.attlist + named pattern is redefined with the + combine attribute set to + interleave, which interleaves the two new + optional attributes with the existing attributes on the list. + +Adding attributes + + + + + + + + + + + + + + + + + + +]]> + + + + Unlike + , + allows + the new attributes to appear on any author + element, not just those using the person content model. + + + shows + how you could limit the use of these attributes to authors who + are persons. In this example, the new attributes are interleaved + with the db.person.author.contentmodel. + The only difference between this example and + is + that the added patterns are identified as attributes rather than + elements. This shows some of the flexibility of RELAX NG, which + treats attributes and elements very consistently. +Adding attributes; alternate method + + + + + + + + + + + + + + + + + + +]]> + + +There is one difference in the treatment of attributes and elements +that is worth noting. By the XML 1.0 definition, the relative order +of attributes is not significant. Therefore, the +interleave block is not required for +attributes, though it does no harm. + +
+
+ Deleting attributes + + Deleting an attribute is similar to deleting an element, + except that you use the RELAX NG empty + pattern rather than notAllowed. + + deletes the linking attributes, which are collected in the + db.common.linking.attributes pattern, + by defining that pattern as empty. + +Deleting an attribute + + + + + + + +]]> + + + + Generally, empty is used when deleting + attributes and notAllowed is used when + deleting elements. + +
+
+ Changing permitted content of attributes + + + modifies db.spacing.enumeration to + add the additional value large. Note + that to remove a value from an enumeration, you need + to redefine the entire enumeration, minus the values + you don't need. + +Deleting an attribute + + + + + + large + +]]> + + +
+
+ +
+Naming and versioning DocBook customizations + +DocBook V5.0 is not tightly coupled with some particular +validation technology like DTDs. This also means that DocBook V5.0 +documents don't have to (and usually don't) start with a +document type declaration (<!DOCTYPE…>) to specify the schema +(DTD) to use. Instead, DocBook V5.0 instances can be easily +distinguished from other XML vocabularies by using elements in the +http://docbook.org/ns/docbook namespace. This namespace is +enough to distinguish DocBook from other XML based formats. But the +DocBook schema evolves over time and there are several versions of +DocBook (e.g. 3.1, 4.2, 4.5 and 5.0). Since DocBook version 5.0, the +actual version used is indicated in the version attribute on a root element. + + + … +]]> + +Future versions of DocBook documents will start with the same +markup, except the version number will be raised, for example to 5.1 +or 6.0. +The namespace will remain the same until the semantics of the elements +change in a backward incompatible way, which is very unlikely to happen. + +If you create a DocBook schema customization you must change the version attribute to distinguish your +customization from the official DocBook. Changing the +namespace is not recommended because that would break the processing +tools. Remember that changing namespaces is the same as renaming all +elements in the namespace. + +When you customize the schema, use the following syntax to +identify your DocBook derivation: + +base_version-[subset|extension|variant] [name[-version]?]+ + +For example: + +5.0-subset simplified-1.0 +5.0-variant ASMBook +5.0-variant ASMBook-2006 +5.0-extension MathML-2.0 SVG-1.1 + +The first part of the version identifier is the version number of the +DocBook schema from which you derived your customization. + +If your schema is a proper subset, you can advertise this status +by using the subset keyword in the description. If +your schema contains any markup model extensions, you can advertise +this status by using the extension keyword. If +you'd rather not characterize your variant specifically as a subset or +an extension, use the variant keyword. + +After these keywords you may add a whitespace separated list of +customization identifiers. Each name may be optionally followed by its +version number. + +
+ +
+ +
+FAQ + + + +Authoring + + + +How do I attach a schema to a DocBook V5.0 document when I do not +want to use DTDs and !DOCTYPE? + + +There is no standard way of associating a RELAX NG schema with a +document. Most tools provide some mechanism for performing this +association, consult the documentation for your application. In some +tools you must specify schema manually each time you want to +edit/process your document. + + + + + +How do I use entities like ndash in +DocBook V5.0? + + +Modern schema languages (including RELAX NG and W3X XML Schema) +do not provide any means to define entities that can be used for easier +typing of special characters. Some editors provide functions or +special toolbars that allow you to easily pick necessary character +and insert it into document as a raw Unicode character or a numeric +character reference. +Another possibility is to include entity definitions in the +prolog of your document. Entity definition +files are now maintained by W3C. You can reference definition +files with entity definitions you are interested in and then reference +imported entities. For example: + + +%isopub; +]> +
+DocBook V5.0 – the superb documentation format]]> +… +For your convenience there is also flattened entity definition +file which contains all entity definitions. + + +%allent; +]> +
+DocBook V5.0 – the superb documentation format]]> +… + + + + + +How to modularize documents? + + +You can use XInclude for this +task. There is an alternative schema for DocBook V5.0 that +contains XInclude elements. This is necessary to make some XML editors +happy. This schema can be found in files that end with letters xi, e.g. +docbookxi.rnc instead of +docbook.rnc. + + + + + +How to validate documents which are composed by XInclude? + + +If you are using XIncludes you should make sure that the final +document after resolving all inclusions is valid DocBook V5.0 +instance. This means that all XIncludes should be processed before +validation takes place. The following command can be used to enable +XInclude processing in oNVDL. +java -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration -jar /path/to/oNVDL/bin/onvdl.jar /path/to/docbook.nvdl document.xml +For JNVDL you can use switch to enable XInclude processing. + + + + + + +Stylesheets + + + +Will the current DocBook XSL stylesheets (XSLT 1.0 based +implementation) be maintained and improved in the future since work on +a new XSLT 2.0 based implementation has started? + + +Yes, the current stylesheets (like 1.73.x) will be supported and +improved further because they are very widely deployed and work with +many existing XSLT processors. +Surely there will be a point in a future when all new development +will be switched to the XSLT 2.0 based implementation. But this +will not happen until all features of the current stylesheets are +implemented in the new stylesheets, and until there is more than +one usable XSLT 2.0 processor available. + + + + + + +Schema customizations + + + +How can I extend the DocBook schema with MathML elements? + + +The basic DocBook schema allows elements from the MathML namespace +to appear inside the equation element. This means that you can +validate a DocBook+MathML document, but MathML content will be ignored +during the validation. You will also not be able to use guided editing +for the MathML content. +If you need strict validation of MathML content or guided +editing for MathML, you can easily extend the base DocBook schema with +the MathML schema. + +Extending the DocBook schema with the MathML schema + +Download the MathML RELAX NG schema from and unpack it +somewhere (e.g. into a mathml subdirectory). + + +Create a schema customization in compact syntax—dbmathml.rnc: +namespace html = "http://www.w3.org/1999/xhtml" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace db = "http://docbook.org/ns/docbook" + +include "/path/to/docbook.rnc" { + db._any.mml = external "mathml/mathml2.rnc" + db._any = + element * - (db:* | html:* | mml:*) { + (attribute * { text } + | text + | db._any)* + } +} +Or, alternatively, you can use the XML syntax of RELAX NG—dbmathml.rng: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + +Now use the customized schema (dbmathml.rnc +or dbmathml.rng) instead of the original +DocBook schema. + + + + + + + +How can I extend the DocBook schema with SVG elements? + + +The situation is the same as with MathML support. You can use +elements from the SVG namespace inside the imageobject +element. + +Extending the DocBook schema with the SVG schema + +Download the SVG RELAX NG schema from and unpack it +somewhere (e.g. into an svg subdirectory). + + +Create a schema customization in compact syntax—dbsvg.rnc: +namespace html = "http://www.w3.org/1999/xhtml" +namespace db = "http://docbook.org/ns/docbook" +namespace svg = "http://www.w3.org/2000/svg" + +include "/path/to/docbook.rnc" { + db._any.svg = external "svg/svg11.rnc" + db._any = + element * - (db:* | html:* | svg:*) { + (attribute * { text } + | text + | db._any)* + } +} +Or, alternatively, you can use the XML syntax of RELAX NG—dbsvg.rng: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + +Now use the customized schema (dbsvg.rnc +or dbsvg.rng) instead of the original +DocBook schema. + + + + + + + +Is it possible to use the previous two customizations for MathML +and SVG together? + + +Yes, you can create a special schema customization that combines +both MathML and SVG with the DocBook schema. In compact syntax, the merged +schema is: +namespace html = "http://www.w3.org/1999/xhtml" +namespace mml = "http://www.w3.org/1998/Math/MathML" +namespace db = "http://docbook.org/ns/docbook" +namespace svg = "http://www.w3.org/2000/svg" + +include "/path/to/docbook.rnc" { + db._any.mml = external "mahtml/mathml2.rnc" + db._any.svg = external "svg/svg11.rnc" + db._any = + element * - (db:* | html:* | mml:* | svg:*) { + (attribute * { text } + | text + | db._any)* + } +} +Or alternatively in the full RELAX NG syntax: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + +Are there any other examples of schema customization +available? + + +Sure. Some of the are listed bellow: + +Sample +customization of ITS and DocBook +Examples on +DocBook WiKi + + + + + + + +Tool specific problems + + + +I'm using Altova XMLSpy to validate DocBook V5.0 instances +against the W3C XML Schema (docbook.xsd). XMLSpy +complains about undefined xml:id +attributes? + + +XMLSpy always uses its own bundled version of +xml.xsd which unfortunately doesn't define the xml:id attribute. The bundled version of +xml.xsd is hardwired into the program and cannot +be replaced by a newer version. To solve this problem you must upgrade +to version 2006 SP1. + + + + + + +
+ + + + +RNCTUT +Clark, James – Cowan, John – MURATA, Makoto: RELAX NG Compact Syntax Tutorial. +Working Draft, 26 March 2003. OASIS. + + + +NVDLTUT +Nálevka, Petr: +NVDL Tutorial. + + + + +XMLID +Marsh, Jonathan – +Veillard, Daniel – +Walsh, Norman: xml:id Version 1.0. W3C Recommendation, 9 September 2005. + + + +DB5SPEC +Norman, Walsh: The DocBook Schema. +Working Draft 5.0a1, OASIS, 29 June 2005. + + + + + + diff --git a/docs/images/emacs.png b/docs/images/emacs.png new file mode 100644 index 0000000..92e215a Binary files /dev/null and b/docs/images/emacs.png differ diff --git a/docs/images/oxygen1.png b/docs/images/oxygen1.png new file mode 100644 index 0000000..7a50f98 Binary files /dev/null and b/docs/images/oxygen1.png differ diff --git a/docs/images/oxygen2.png b/docs/images/oxygen2.png new file mode 100644 index 0000000..482959f Binary files /dev/null and b/docs/images/oxygen2.png differ diff --git a/docs/images/oxygen3.png b/docs/images/oxygen3.png new file mode 100644 index 0000000..8db1c09 Binary files /dev/null and b/docs/images/oxygen3.png differ diff --git a/docs/images/xxe.png b/docs/images/xxe.png new file mode 100644 index 0000000..3cd9ff7 Binary files /dev/null and b/docs/images/xxe.png differ diff --git a/dtd/docbook.dtd b/dtd/docbook.dtd new file mode 100644 index 0000000..4b408cf --- /dev/null +++ b/dtd/docbook.dtd @@ -0,0 +1,4199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rng/docbook.rnc b/rng/docbook.rnc new file mode 100644 index 0000000..104d46b --- /dev/null +++ b/rng/docbook.rnc @@ -0,0 +1,10643 @@ +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://www.ascc.net/xml/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace xlink = "http://www.w3.org/1999/xlink" + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ + prefix = "dbx" + uri = + "http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" +] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://www.ascc.net/xml/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +# DocBook V5.0CR5 + +# See http://docbook.org/ns/docbook + +# This file is part of DocBook V5.0 +# +# Copyright 1992-2008 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). +# +# Release: $Id: docbook.rnc 7661 2008-02-06 13:52:59Z nwalsh $ +# +# 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/. +# +# ====================================================================== +start = + (db.set + | db.book + | db.divisions + | db.components + | db.navigation.components + | db.section + | db.para) + | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) + | (db.refentry | db.refsection) + | (db.refsect1 | db.refsect2 | db.refsect3) + | db.setindex +div { + db._any.attribute = + + ## Any attribute including in 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.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link + "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.href.attributes = + db.xlink.href.attribute + & db.xlink.type.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +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.href.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.href.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.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.language.attribute? + & db.verbatim.xml.space.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.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 document object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## 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.superscript + | db.subscript + | db.link.inlines + | db.alt) + | db.annotation + | db.indexterm +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.extension.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.extension.inlines = notAllowed +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.extension.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.extension.blocks = notAllowed +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.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info.title.only + 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 in the 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._text } +} +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 in the 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 in the 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 in the 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 in the 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 in the 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:indexterm)" + "indexterm must not occur in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:para" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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.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.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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 + } +} +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.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.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.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.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + 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.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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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.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.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 collabarators + 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 + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## Some other contributor + "other" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db._text } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## The first name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## A family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a persons name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + db.citetitle.pubwork.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, (db._text | db._emphasis)* } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H2 + ## O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x^2, the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + name = "Footnote reference type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:footnoteref" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the applicatoin when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference +db.components = + db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = db.set | db.book +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:set" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:book" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element book { + db.book.attlist, + db.book.info, + (db.navigation.components | db.components | db.divisions)* + } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:dedication" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:acknowledgements" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:colophon" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element colophon { + db.colophon.attlist, db.colophon.info, db.all.blocks+ + } +} +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a Book or Article + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:appendix" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element appendix { + db.appendix.attlist, db.appendix.info, db.component.contentmodel + } +} +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:chapter" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element chapter { + db.chapter.attlist, db.chapter.info, db.component.contentmodel + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:part" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element part { + db.part.attlist, db.part.info, db.partintro?, db.part.components+ + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:preface" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:section" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element section { + db.section.attlist, + db.section.info, + db.recursive.blocks.or.sections, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks+ + } +} +db.article.components = db.toplevel.sections +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:article" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element article { + db.article.attlist, + db.article.info, + (db.navigation.components + | db.appendix + | db.acknowledgements + | db.colophon)*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + (db.navigation.components + | db.appendix + | db.acknowledgements + | db.colophon)* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one ore more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:annotation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur in the descendants of annotation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN }? +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN }? +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN }? +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect1" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect1 { + db.sect1.attlist, + db.sect1.info, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections), + db.navigation.components* + } +} +db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a Sect1 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect2" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect2 { + db.sect2.attlist, + db.sect2.info, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections), + db.navigation.components* + } +} +db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a Sect2 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect3" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect3 { + db.sect3.attlist, + db.sect3.info, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections), + db.navigation.components* + } +} +db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a Sect3 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect4" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect4 { + db.sect4.attlist, + db.sect4.info, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections), + db.navigation.components* + } +} +db.sect5.sections = db.simplesect+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a Sect4 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect5" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect5 { + db.sect5.attlist, + db.sect5.info, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections), + db.navigation.components* + } +} +db.toplevel.refsection = db.refsection+ | db.refsect1+ +db.secondlevel.refsection = db.refsection+ | db.refsect2+ +db.reference.components = db.refentry +div { + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:reference" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components+ + } +} +div { + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refentry" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsection" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsect1" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsect2" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsect3" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = db.firstterm | db.glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a Glossary or GlossList + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a GlossEntry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + name = "Glosssary 'see' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:glosssee[@otherterm]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one GlossEntry to another + [ + s:pattern [ + name = "Glossary 'seealso' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:glossseealso[@otherterm]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + name = "Glossary 'firstterm' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:firstterm[@linkend]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + name = "Glossary 'glossterm' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:glossterm[@linkend]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:glossary" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a Glossary + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + name = "Glossary term definition constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:termdef" + "\x{a}" ~ + " " + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## An entry in a Bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## An entry in a Bibliography + element bibliomixed { + db.bibliomixed.attlist, (text | db.bibliographic.elements)* + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, (db._text | db.bibliographic.elements)* + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:bibliography" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a Bibliography + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of box) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + db.primary?, + ((db.secondary, + ((db.tertiary, (db.see | db.seealso+)?) + | db.see + | db.seealso+)?) + | db.see + | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.attlist = + db.see.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.attlist = + db.seealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:index" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:setindex" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:toc" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + db.callout = + + ## A called out + ## description of a marked Area + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.href.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a Callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.href.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a Callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.href.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + db.entry = + + ## A cell in a table + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an Entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:example)" + "example must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:figure)" + "figure must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:equation)" + "equation must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:example)" + "example must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:figure)" + "figure must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:equation)" + "equation must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.attlist = + db.html.attrs & db.html.table.attributes + db.html.informaltable = + + ## An HTML table without a title + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the descendants of caption" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a QandASet + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a QandASet + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a QandASet + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a QandASet + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a Question or Answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.attlist = + db.equation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:example)" + "example must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:figure)" + "figure must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:table)" + "table must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:equation)" + "equation must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & 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.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db._any.mml+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & 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.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + element imagedata { + db.imagedata.svg.attlist, db.imagedata.svg.info, db._any.svg+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, db._text } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" or "Return" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a CmdSynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a CmdSynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a CmdSynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + name = "Synopsis fragment type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:synopfragmentref" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.oo.inlines +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis = + + ## The syntax summary for a function definition + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the FuncDefs of a FuncSynopsis + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void | db.varargs | (db.paramdef+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, (db._text | db.type | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.type + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + element classsynopsis { + db.classsynopsis.attlist, + db.oo.inlines+, + (db.classsynopsisinfo + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a ClassSynopsis + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, (db.package | db.modifier)*, db.classname + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.modifier*, + db.type?, + db.varname, + db.initializer? + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer = + + ## The initializer for a FieldSynopsis + element initializer { db.initializer.attlist, db._text } +} +div { + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.modifier*, + db.methodname?, + (db.methodparam+ | db.void?), + db.exceptionname* + } +} +div { + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.modifier*, + db.methodname?, + (db.methodparam+ | db.void?), + db.exceptionname* + } +} +div { + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + element methodsynopsis { + db.methodsynopsis.attlist, + db.modifier*, + (db.type | db.void)?, + db.methodname, + (db.methodparam+ | db.void), + db.exceptionname*, + db.modifier* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + db.modifier*, + db.type?, + ((db.modifier*, db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.type = + + ## The classification of a value + element type { db.type.attlist, db._text } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration } + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, db._text } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} diff --git a/rng/docbook.rng b/rng/docbook.rng new file mode 100644 index 0000000..019c84b --- /dev/null +++ b/rng/docbook.rng @@ -0,0 +1,15292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Any attribute including in any attribute in any namespace. + + + + + + Any element from almost any namespace + + + + + + + + + + + + + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies. + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + + Identifies the XLink title of the link + + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + 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. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + 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. + none + 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. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + 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. + none + 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. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts. + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered. + + + + + + Specifies the initial line number. + + + + + + Identifies the language (i.e. programming language) of the verbatim content. + + + + + 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. + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content. + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional. + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A document object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + + sidebar must not occur in the descendants of sidebar + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + + footnote must not occur in the descendants of footnote + + + + + example must not occur in the descendants of footnote + + + + + figure must not occur in the descendants of footnote + + + + + table must not occur in the descendants of footnote + + + + + equation must not occur in the descendants of footnote + + + + + indexterm must not occur in the descendants of footnote + + + + + sidebar must not occur in the descendants of footnote + + + + + task must not occur in the descendants of footnote + + + + + epigraph must not occur in the descendants of footnote + + + + + caution must not occur in the descendants of footnote + + + + + important must not occur in the descendants of footnote + + + + + note must not occur in the descendants of footnote + + + + + tip must not occur in the descendants of footnote + + + + + warning must not occur in the descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + + The root element must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number. + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + + + + + + + + + +
+
+ + + + + + 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 + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation. + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + + example must not occur in the descendants of example + + + + + figure must not occur in the descendants of example + + + + + table must not occur in the descendants of example + + + + + equation must not occur in the descendants of example + + + + + caution must not occur in the descendants of example + + + + + important must not occur in the descendants of example + + + + + note must not occur in the descendants of example + + + + + tip must not occur in the descendants of example + + + + + warning must not occur in the descendants of example + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + + example must not occur in the descendants of figure + + + + + figure must not occur in the descendants of figure + + + + + table must not occur in the descendants of figure + + + + + equation must not occur in the descendants of figure + + + + + caution must not occur in the descendants of figure + + + + + important must not occur in the descendants of figure + + + + + note must not occur in the descendants of figure + + + + + tip must not occur in the descendants of figure + + + + + warning must not occur in the descendants of figure + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + + + +
+
+ + + + + + + + + + + + + + + + + + Pointer to external audio data + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + + example must not occur in the descendants of caption + + + + + figure must not occur in the descendants of caption + + + + + table must not occur in the descendants of caption + + + + + equation must not occur in the descendants of caption + + + + + sidebar must not occur in the descendants of caption + + + + + task must not occur in the descendants of caption + + + + + caution must not occur in the descendants of caption + + + + + important must not occur in the descendants of caption + + + + + note must not occur in the descendants of caption + + + + + tip must not occur in the descendants of caption + + + + + warning must not occur in the descendants of caption + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collabarators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + other + Some other contributor + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + The first name of a person + + + + +
+
+ + + + + + + + + + + + + + + A family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a persons name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + + + + + Identifies the nature of the publication being cited + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in H2 +O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x^2, the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the applicatoin when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + + The root element must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + + The root element must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + + The root element must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + + The root element must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + + The root element must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a Book or Article + + + The root element must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + + The root element must have a version attribute. + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + + The root element must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + + The root element must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + + The root element must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + + + + + + +
+ + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one ore more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + + annotation must not occur in the descendants of annotation + + + + + + + + + +
+ + + + Specifies the XLink traversal-from + + + + + + + + Specifies the XLink label + + + + + + + + Specifies the XLink traversal-to + + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect1 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect2 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect3 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect4 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + + The root element must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + + The root element must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a Glossary or GlossList + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a GlossEntry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one GlossEntry to another + + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a Glossary + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + An entry in a Bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in a Bibliography + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a Bibliography + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of box) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + + The root element must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + A called out + description of a marked Area + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a Callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a Callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an Entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + + example must not occur in the descendants of table + + + + + figure must not occur in the descendants of table + + + + + equation must not occur in the descendants of table + + + + + informaltable must not occur in the descendants of table + + + + + caution must not occur in the descendants of table + + + + + important must not occur in the descendants of table + + + + + note must not occur in the descendants of table + + + + + tip must not occur in the descendants of table + + + + + warning must not occur in the descendants of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + + [0-9]+% + + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + + [0-9]+% + + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + + [0-9]+% + + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + + [0-9]+% + + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + + example must not occur in the descendants of table + + + + + figure must not occur in the descendants of table + + + + + equation must not occur in the descendants of table + + + + + informaltable must not occur in the descendants of table + + + + + caution must not occur in the descendants of table + + + + + important must not occur in the descendants of table + + + + + note must not occur in the descendants of table + + + + + tip must not occur in the descendants of table + + + + + warning must not occur in the descendants of table + + + + + + +
+
+ + + + + + + + + An HTML table without a title + + + + +
+
+ + + + + + An HTML table caption + + + example must not occur in the descendants of caption + + + + + figure must not occur in the descendants of caption + + + + + table must not occur in the descendants of caption + + + + + equation must not occur in the descendants of caption + + + + + sidebar must not occur in the descendants of caption + + + + + task must not occur in the descendants of caption + + + + + caution must not occur in the descendants of caption + + + + + important must not occur in the descendants of caption + + + + + note must not occur in the descendants of caption + + + + + tip must not occur in the descendants of caption + + + + + warning must not occur in the descendants of caption + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a QandASet + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a QandASet + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a QandASet + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a QandASet + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a Question or Answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + + example must not occur in the descendants of equation + + + + + figure must not occur in the descendants of equation + + + + + table must not occur in the descendants of equation + + + + + equation must not occur in the descendants of equation + + + + + caution must not occur in the descendants of equation + + + + + important must not occur in the descendants of equation + + + + + note must not occur in the descendants of equation + + + + + tip must not occur in the descendants of equation + + + + + warning must not occur in the descendants of equation + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" or "Return" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a CmdSynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a CmdSynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a CmdSynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the FuncDefs of a FuncSynopsis + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a ClassSynopsis + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + + + + + + + + + + The name of a field in a class definition + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initializer for a FieldSynopsis + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntax summary for a method + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + + + + + + + + + + The classification of a value + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + + caution must not occur in the descendants of caution + + + + + important must not occur in the descendants of caution + + + + + note must not occur in the descendants of caution + + + + + tip must not occur in the descendants of caution + + + + + warning must not occur in the descendants of caution + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + + caution must not occur in the descendants of important + + + + + important must not occur in the descendants of important + + + + + note must not occur in the descendants of important + + + + + tip must not occur in the descendants of important + + + + + warning must not occur in the descendants of important + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + + caution must not occur in the descendants of note + + + + + important must not occur in the descendants of note + + + + + note must not occur in the descendants of note + + + + + tip must not occur in the descendants of note + + + + + warning must not occur in the descendants of note + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + + caution must not occur in the descendants of tip + + + + + important must not occur in the descendants of tip + + + + + note must not occur in the descendants of tip + + + + + tip must not occur in the descendants of tip + + + + + warning must not occur in the descendants of tip + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + + caution must not occur in the descendants of warning + + + + + important must not occur in the descendants of warning + + + + + note must not occur in the descendants of warning + + + + + tip must not occur in the descendants of warning + + + + + warning must not occur in the descendants of warning + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + Identifies the nature of the system item + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
diff --git a/rng/docbookxi.rnc b/rng/docbookxi.rnc new file mode 100644 index 0000000..02c5fd9 --- /dev/null +++ b/rng/docbookxi.rnc @@ -0,0 +1,10666 @@ +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://www.ascc.net/xml/schematron" +namespace svg = "http://www.w3.org/2000/svg" +namespace xi = "http://www.w3.org/2001/XInclude" +namespace xlink = "http://www.w3.org/1999/xlink" + +s:ns [ + prefix = "a" + uri = "http://relaxng.org/ns/compatibility/annotations/1.0" +] +s:ns [ prefix = "ctrl" uri = "http://nwalsh.com/xmlns/schema-control/" ] +s:ns [ prefix = "db" uri = "http://docbook.org/ns/docbook" ] +s:ns [ + prefix = "dbx" + uri = + "http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" +] +s:ns [ prefix = "html" uri = "http://www.w3.org/1999/xhtml" ] +s:ns [ prefix = "mml" uri = "http://www.w3.org/1998/Math/MathML" ] +s:ns [ prefix = "rng" uri = "http://relaxng.org/ns/structure/1.0" ] +s:ns [ prefix = "s" uri = "http://www.ascc.net/xml/schematron" ] +s:ns [ prefix = "svg" uri = "http://www.w3.org/2000/svg" ] +s:ns [ prefix = "xi" uri = "http://www.w3.org/2001/XInclude" ] +s:ns [ prefix = "xlink" uri = "http://www.w3.org/1999/xlink" ] +# DocBook V5.0CR5 + +# See http://docbook.org/ns/docbook +start = + (db.set + | db.book + | db.divisions + | db.components + | db.navigation.components + | db.section + | db.para) + | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5) + | (db.refentry | db.refsection) + | (db.refsect1 | db.refsect2 | db.refsect3) + | db.setindex +div { + db._any.attribute = + + ## Any attribute including in 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.type.attribute = + + ## Identifies the XLink link type + attribute xlink:type { + + ## An XLink simple link + "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.href.attributes = + db.xlink.href.attribute + & db.xlink.type.attribute? + & db.xlink.role.attribute? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? +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.href.attributes)? +db.common.req.linking.attributes = + db.linkend.attribute | db.href.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.attributes = + db.verbatim.continuation.attribute? + & db.verbatim.linenumbering.attribute? + & db.verbatim.startinglinenumber.attribute? + & db.verbatim.language.attribute? + & db.verbatim.xml.space.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.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 document object identifier. + "doi" + | + ## An international standard book number. + "isbn" + | + ## An international standard technical report number (ISO 10444). + "isrn" + | + ## An international standard serial number. + "issn" + | + ## 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.superscript + | db.subscript + | db.link.inlines + | db.alt) + | db.annotation + | db.indexterm +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.extension.inlines) + | db.xi.include +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.extension.inlines = notAllowed +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.extension.blocks) + | db.annotation + | db.xi.include +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.extension.blocks = notAllowed +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.xi.include +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.role.attribute = attribute role { text } + db.sidebar.attlist = + db.sidebar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.sidebar.info = db._info.title.only + 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 in the 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._text } +} +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 in the 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 in the 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 in the 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 in the 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 in the 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:indexterm)" + "indexterm must not occur in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:para" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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.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.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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 + } +} +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.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.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.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.attlist = + db.audiodata.role.attribute? + & db.common.attributes + & db.common.data.attributes + 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.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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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.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.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 collabarators + 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 + element confsponsor { db.confsponsor.attlist, db._text } +} +div { + db.contractnum.role.attribute = attribute role { text } + db.contractnum.attlist = + db.contractnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractnum = + + ## The contract number of a document + element contractnum { db.contractnum.attlist, db._text } +} +div { + db.contractsponsor.role.attribute = attribute role { text } + db.contractsponsor.attlist = + db.contractsponsor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contractsponsor = + + ## The sponsor of a contract + element contractsponsor { db.contractsponsor.attlist, db._text } +} +div { + db.copyright.role.attribute = attribute role { text } + db.copyright.attlist = + db.copyright.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.copyright = + + ## Copyright information about a document + element copyright { db.copyright.attlist, db.year+, db.holder* } +} +div { + db.year.role.attribute = attribute role { text } + db.year.attlist = + db.year.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.year = + + ## The year of publication of a document + element year { db.year.attlist, db._text } +} +div { + db.holder.role.attribute = attribute role { text } + db.holder.attlist = + db.holder.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.holder = + + ## The name of the individual or organization that holds a copyright + element holder { db.holder.attlist, db._text } +} +db.cover.contentmodel = + (db.para.blocks + | db.extension.blocks + | db.list.blocks + | db.informal.blocks + | db.publishing.blocks + | db.graphic.blocks + | db.technical.blocks + | db.verbatim.blocks + | db.bridgehead + | db.remark + | db.revhistory) + | db.synopsis.blocks +div { + db.cover.role.attribute = attribute role { text } + db.cover.attlist = + db.cover.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.cover = + + ## Additional content for the cover of a publication + element cover { db.cover.attlist, db.cover.contentmodel+ } +} +db.date.contentmodel = + xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text +div { + db.date.role.attribute = attribute role { text } + db.date.attlist = + db.date.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.date = + + ## The date of publication or revision of a document + element date { db.date.attlist, db.date.contentmodel } +} +div { + db.edition.role.attribute = attribute role { text } + db.edition.attlist = + db.edition.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.edition = + + ## The name or number of an edition of a document + element edition { db.edition.attlist, db._text } +} +div { + db.editor.role.attribute = attribute role { text } + db.editor.attlist = + db.editor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.editor = + + ## The name of the editor of a document + element editor { db.editor.attlist, db.credit.contentmodel } +} +div { + db.biblioid.role.attribute = attribute role { text } + db.biblioid.attlist = + db.biblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.biblioid = + + ## An identifier for a document + element biblioid { db.biblioid.attlist, db._text } +} +div { + db.citebiblioid.role.attribute = attribute role { text } + db.citebiblioid.attlist = + db.citebiblioid.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.citebiblioid = + + ## A citation of a bibliographic identifier + element citebiblioid { db.citebiblioid.attlist, db._text } +} +div { + db.bibliosource.role.attribute = attribute role { text } + db.bibliosource.attlist = + db.bibliosource.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + db.bibliosource = + + ## The source of a document + element bibliosource { db.bibliosource.attlist, db._text } +} +div { + db.bibliorelation.type.enumeration = + + ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + "hasformat" + | + ## The described resource includes the referenced resource either physically or logically + "haspart" + | + ## The described resource has a version, edition, or adaptation, namely, the referenced resource + "hasversion" + | + ## The described resource is the same intellectual content of the referenced resource, but presented in another format + "isformatof" + | + ## The described resource is a physical or logical part of the referenced resource + "ispartof" + | + ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource + "isreferencedby" + | + ## The described resource is supplanted, displaced, or superceded by the referenced resource + "isreplacedby" + | + ## The described resource is required by the referenced resource, either physically or logically + "isrequiredby" + | + ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + "isversionof" + | + ## The described resource references, cites, or otherwise points to the referenced resource + "references" + | + ## The described resource supplants, displaces, or supersedes the referenced resource + "replaces" + | + ## The described resource requires the referenced resource to support its function, delivery, or coherence of content + "requires" + db.bibliorelation.type-enum.attribute = + + ## Identifies the type of relationship + attribute type { db.bibliorelation.type.enumeration }? + db.bibliorelation.type-other.attributes = + + ## Identifies the type of relationship + attribute type { + + ## The described resource has a non-standard relationship with the referenced resource + "othertype" + }?, + + ## A keyword that identififes the type of the non-standard relationship + attribute othertype { xsd:NMTOKEN } + db.bibliorelation.type.attribute = + db.bibliorelation.type-enum.attribute + | db.bibliorelation.type-other.attributes + db.bibliorelation.role.attribute = attribute role { text } + db.bibliorelation.attlist = + db.bibliorelation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblio.class.attribute + & db.bibliorelation.type.attribute + db.bibliorelation = + + ## The relationship of a document to another + element bibliorelation { db.bibliorelation.attlist, db._text } +} +div { + db.bibliocoverage.spacial.enumeration = + + ## The DCMI Point identifies a point in space using its geographic coordinates + "dcmipoint" + | + ## ISO 3166 Codes for the representation of names of countries + "iso3166" + | + ## The DCMI Box identifies a region of space using its geographic limits + "dcmibox" + | + ## The Getty Thesaurus of Geographic Names + "tgn" + db.bibliocoverage.spatial-enum.attribute = + + ## Specifies the type of spatial coverage + attribute spatial { db.bibliocoverage.spacial.enumeration }? + db.bibliocoverage.spatial-other.attributes = + + ## Specifies the type of spatial coverage + attribute spatial { + + ## Identifies a non-standard type of coverage + "otherspatial" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute otherspatial { xsd:NMTOKEN } + db.bibliocoverage.spatial.attribute = + db.bibliocoverage.spatial-enum.attribute + | db.bibliocoverage.spatial-other.attributes + db.bibliocoverage.temporal.enumeration = + + ## A specification of the limits of a time interval + "dcmiperiod" + | + ## W3C Encoding rules for dates and times—a profile based on ISO 8601 + "w3c-dtf" + db.bibliocoverage.temporal-enum.attribute = + + ## Specifies the type of temporal coverage + attribute temporal { db.bibliocoverage.temporal.enumeration }? + db.bibliocoverage.temporal-other.attributes = + + ## Specifies the type of temporal coverage + attribute temporal { + + ## Specifies a non-standard type of coverage + "othertemporal" + }?, + + ## A keyword that identifies the type of non-standard coverage + attribute othertemporal { xsd:NMTOKEN } + db.bibliocoverage.temporal.attribute = + db.bibliocoverage.temporal-enum.attribute + | db.bibliocoverage.temporal-other.attributes + db.bibliocoverage.coverage.attrib = + db.bibliocoverage.spatial.attribute + & db.bibliocoverage.temporal.attribute + db.bibliocoverage.role.attribute = attribute role { text } + db.bibliocoverage.attlist = + db.bibliocoverage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliocoverage.coverage.attrib + db.bibliocoverage = + + ## The spatial or temporal coverage of a document + element bibliocoverage { db.bibliocoverage.attlist, db._text } +} +div { + db.legalnotice.role.attribute = attribute role { text } + db.legalnotice.attlist = + db.legalnotice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.legalnotice.info = db._info.title.only + db.legalnotice = + + ## A statement of legal obligations or requirements + element legalnotice { + db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+ + } +} +div { + db.othercredit.class.enumeration = + + ## A copy editor + "copyeditor" + | + ## A graphic designer + "graphicdesigner" + | + ## Some other contributor + "other" + | + ## A production editor + "productioneditor" + | + ## A technical editor + "technicaleditor" + | + ## A translator + "translator" + db.othercredit.class-enum.attribute = + + ## Identifies the nature of the contributor + attribute class { db.othercredit.class.enumeration }? + db.othercredit.class-other.attribute = + + ## Identifies the nature of the non-standard contribution + attribute otherclass { xsd:NMTOKEN } + db.othercredit.class-other.attributes = + + ## Identifies the nature of the contributor + attribute class { + + ## Identifies a non-standard contribution + "other" + } + & db.othercredit.class-other.attribute + db.othercredit.class.attribute = + db.othercredit.class-enum.attribute + | db.othercredit.class-other.attributes + db.othercredit.role.attribute = attribute role { text } + db.othercredit.attlist = + db.othercredit.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.othercredit.class.attribute + db.othercredit = + + ## A person or entity, other than an author or editor, credited in a document + element othercredit { + db.othercredit.attlist, db.credit.contentmodel + } +} +div { + db.pagenums.role.attribute = attribute role { text } + db.pagenums.attlist = + db.pagenums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pagenums = + + ## The numbers of the pages in a book, for use in a bibliographic entry + element pagenums { db.pagenums.attlist, db._text } +} +div { + db.contrib.role.attribute = attribute role { text } + db.contrib.attlist = + db.contrib.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.contrib = + + ## A summary of the contributions made to a document by a credited source + element contrib { db.contrib.attlist, db._text } +} +div { + db.honorific.role.attribute = attribute role { text } + db.honorific.attlist = + db.honorific.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.honorific = + + ## The title of a person + element honorific { db.honorific.attlist, db._text } +} +div { + db.firstname.role.attribute = attribute role { text } + db.firstname.attlist = + db.firstname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.firstname = + + ## The first name of a person + element firstname { db.firstname.attlist, db._text } +} +div { + db.surname.role.attribute = attribute role { text } + db.surname.attlist = + db.surname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.surname = + + ## A family name; in western cultures the last name + element surname { db.surname.attlist, db._text } +} +div { + db.lineage.role.attribute = attribute role { text } + db.lineage.attlist = + db.lineage.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineage = + + ## The portion of a person's name indicating a relationship to ancestors + element lineage { db.lineage.attlist, db._text } +} +div { + db.othername.role.attribute = attribute role { text } + db.othername.attlist = + db.othername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.othername = + + ## A component of a persons name that is not a first name, surname, or lineage + element othername { db.othername.attlist, db._text } +} +div { + db.printhistory.role.attribute = attribute role { text } + db.printhistory.attlist = + db.printhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.printhistory = + + ## The printing history of a document + element printhistory { db.printhistory.attlist, db.para.blocks+ } +} +div { + db.pubdate.role.attribute = attribute role { text } + db.pubdate.attlist = + db.pubdate.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.pubdate = + + ## The date of publication of a document + element pubdate { db.pubdate.attlist, db.date.contentmodel } +} +div { + db.publisher.role.attribute = attribute role { text } + db.publisher.attlist = + db.publisher.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publisher = + + ## The publisher of a document + element publisher { + db.publisher.attlist, db.publishername, db.address* + } +} +div { + db.publishername.role.attribute = attribute role { text } + db.publishername.attlist = + db.publishername.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.publishername = + + ## The name of the publisher of a document + element publishername { db.publishername.attlist, db._text } +} +div { + db.releaseinfo.role.attribute = attribute role { text } + db.releaseinfo.attlist = + db.releaseinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.releaseinfo = + + ## Information about a particular release of a document + element releaseinfo { db.releaseinfo.attlist, db._text } +} +div { + db.revhistory.role.attribute = attribute role { text } + db.revhistory.attlist = + db.revhistory.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revhistory.info = db._info.title.only + db.revhistory = + + ## A history of the revisions to a document + element revhistory { + db.revhistory.attlist, db.revhistory.info, db.revision+ + } +} +div { + db.revision.role.attribute = attribute role { text } + db.revision.attlist = + db.revision.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revision = + + ## An entry describing a single revision in the history of the revisions to a document + element revision { + db.revision.attlist, + db.revnumber?, + db.date, + (db.authorinitials | db.author)*, + (db.revremark | db.revdescription)? + } +} +div { + db.revnumber.role.attribute = attribute role { text } + db.revnumber.attlist = + db.revnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revnumber = + + ## A document revision number + element revnumber { db.revnumber.attlist, db._text } +} +div { + db.revremark.role.attribute = attribute role { text } + db.revremark.attlist = + db.revremark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revremark = + + ## A description of a revision to a document + element revremark { db.revremark.attlist, db._text } +} +div { + db.revdescription.role.attribute = attribute role { text } + db.revdescription.attlist = + db.revdescription.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.revdescription = + + ## A extended description of a revision to a document + element revdescription { db.revdescription.attlist, db.all.blocks* } +} +div { + db.seriesvolnums.role.attribute = attribute role { text } + db.seriesvolnums.attlist = + db.seriesvolnums.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seriesvolnums = + + ## Numbers of the volumes in a series of books + element seriesvolnums { db.seriesvolnums.attlist, db._text } +} +div { + db.volumenum.role.attribute = attribute role { text } + db.volumenum.attlist = + db.volumenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.volumenum = + + ## The volume number of a document in a set (as of books in a set or articles in a journal) + element volumenum { db.volumenum.attlist, db._text } +} +div { + db.issuenum.role.attribute = attribute role { text } + db.issuenum.attlist = + db.issuenum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.issuenum = + + ## The number of an issue of a journal + element issuenum { db.issuenum.attlist, db._text } +} +div { + db.package.role.attribute = attribute role { text } + db.package.attlist = + db.package.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.package = + + ## A software or application package + element package { db.package.attlist, db._text } +} +div { + db.email.role.attribute = attribute role { text } + db.email.attlist = + db.email.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.email = + + ## An email address + element email { db.email.attlist, db._text } +} +div { + db.lineannotation.role.attribute = attribute role { text } + db.lineannotation.attlist = + db.lineannotation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lineannotation = + + ## A comment on a line in a verbatim listing + element lineannotation { db.lineannotation.attlist, db._text } +} +div { + db.parameter.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + db.parameter.class.attribute = + + ## Identifies the class of parameter + attribute class { db.parameter.class.enumeration } + db.parameter.role.attribute = attribute role { text } + db.parameter.attlist = + db.parameter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.parameter.class.attribute? + db.parameter = + + ## A value or a symbolic reference to a value + element parameter { db.parameter.attlist, db._text } +} +db.replaceable.inlines = db._text | db.co +div { + db.replaceable.class.enumeration = + + ## A command + "command" + | + ## A function + "function" + | + ## An option + "option" + | + ## A parameter + "parameter" + db.replaceable.class.attribute = + + ## Identifies the nature of the replaceable text + attribute class { db.replaceable.class.enumeration } + db.replaceable.role.attribute = attribute role { text } + db.replaceable.attlist = + db.replaceable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.replaceable.class.attribute? + db.replaceable = + + ## Content that may or must be replaced by the user + element replaceable { + db.replaceable.attlist, db.replaceable.inlines* + } +} +div { + db.uri.type.attribute = + + ## Identifies the type of URI specified + attribute type { text }? + db.uri.role.attribute = attribute role { text } + db.uri.attlist = + db.uri.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.uri.type.attribute + db.uri = + + ## A Uniform Resource Identifier + element uri { db.uri.attlist, db._text } +} +div { + db.abbrev.role.attribute = attribute role { text } + db.abbrev.attlist = + db.abbrev.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.abbrev = + + ## An abbreviation, especially one followed by a period + element abbrev { + db.abbrev.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.acronym.role.attribute = attribute role { text } + db.acronym.attlist = + db.acronym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.acronym = + + ## An often pronounceable word made from the initial (or selected) letters of a name or phrase + element acronym { + db.acronym.attlist, + (db._text | db.superscript | db.subscript | db.trademark)* + } +} +div { + db.citation.role.attribute = attribute role { text } + db.citation.attlist = + db.citation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citation = + + ## An inline bibliographic reference to another published work + element citation { db.citation.attlist, db.all.inlines* } +} +div { + db.citerefentry.role.attribute = attribute role { text } + db.citerefentry.attlist = + db.citerefentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.citerefentry = + + ## A citation to a reference page + element citerefentry { + db.citerefentry.attlist, db.refentrytitle, db.manvolnum? + } +} +div { + db.refentrytitle.role.attribute = attribute role { text } + db.refentrytitle.attlist = + db.refentrytitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refentrytitle = + + ## The title of a reference page + element refentrytitle { db.refentrytitle.attlist, db.all.inlines* } +} +div { + db.manvolnum.role.attribute = attribute role { text } + db.manvolnum.attlist = + db.manvolnum.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.manvolnum = + + ## A reference volume number + element manvolnum { db.manvolnum.attlist, db._text } +} +div { + db.citetitle.pubwork.enumeration = + + ## An article + "article" + | + ## A bulletin board system + "bbs" + | + ## A book + "book" + | + ## A CD-ROM + "cdrom" + | + ## A chapter (as of a book) + "chapter" + | + ## A DVD + "dvd" + | + ## An email message + "emailmessage" + | + ## A gopher page + "gopher" + | + ## A journal + "journal" + | + ## A manuscript + "manuscript" + | + ## A posting to a newsgroup + "newsposting" + | + ## A part (as of a book) + "part" + | + ## A reference entry + "refentry" + | + ## A section (as of a book or article) + "section" + | + ## A series + "series" + | + ## A set (as of books) + "set" + | + ## A web page + "webpage" + | + ## A wiki page + "wiki" + db.citetitle.pubwork.attribute = + + ## Identifies the nature of the publication being cited + attribute pubwork { db.citetitle.pubwork.enumeration } + db.citetitle.role.attribute = attribute role { text } + db.citetitle.attlist = + db.citetitle.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.citetitle.pubwork.attribute? + db.citetitle = + + ## The title of a cited work + element citetitle { db.citetitle.attlist, db.all.inlines* } +} +div { + db.emphasis.role.attribute = attribute role { text } + db.emphasis.attlist = + db.emphasis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.emphasis = + + ## Emphasized text + element emphasis { db.emphasis.attlist, db.all.inlines* } +} +div { + db._emphasis = + + ## A limited span of emphasized text + element emphasis { db.emphasis.attlist, (db._text | db._emphasis)* } +} +div { + db.foreignphrase.role.attribute = attribute role { text } + db.foreignphrase.attlist = + db.foreignphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.foreignphrase = + + ## A word or phrase in a language other than the primary language of the document + element foreignphrase { + db.foreignphrase.attlist, (text | db.general.inlines)* + } +} +div { + db.phrase.role.attribute = attribute role { text } + db.phrase.attlist = + db.phrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.phrase = + + ## A span of text + element phrase { db.phrase.attlist, db.all.inlines* } +} +div { + db._phrase = + + ## A limited span of text + element phrase { db.phrase.attlist, db._text } +} +div { + db.quote.role.attribute = attribute role { text } + db.quote.attlist = + db.quote.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.quote = + + ## An inline quotation + element quote { db.quote.attlist, db.all.inlines* } +} +div { + db.subscript.role.attribute = attribute role { text } + db.subscript.attlist = + db.subscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.subscript = + + ## A subscript (as in H2 + ## O, the molecular formula for water) + element subscript { db.subscript.attlist, db._text } +} +div { + db.superscript.role.attribute = attribute role { text } + db.superscript.attlist = + db.superscript.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.superscript = + + ## A superscript (as in x^2, the mathematical notation for x multiplied by itself) + element superscript { db.superscript.attlist, db._text } +} +div { + db.trademark.class.enumeration = + + ## A copyright + "copyright" + | + ## A registered copyright + "registered" + | + ## A service + "service" + | + ## A trademark + "trade" + db.trademark.class.attribute = + + ## Identifies the class of trade mark + attribute class { db.trademark.class.enumeration } + db.trademark.role.attribute = attribute role { text } + db.trademark.attlist = + db.trademark.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.trademark.class.attribute? + db.trademark = + + ## A trademark + element trademark { db.trademark.attlist, db._text } +} +div { + db.wordasword.role.attribute = attribute role { text } + db.wordasword.attlist = + db.wordasword.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.wordasword = + + ## A word meant specifically as a word and not representing anything else + element wordasword { db.wordasword.attlist, db._text } +} +div { + db.footnoteref.role.attribute = attribute role { text } + db.footnoteref.label.attribute = db.label.attribute + db.footnoteref.attlist = + db.footnoteref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.footnoteref.label.attribute? + db.footnoteref = + + ## A cross reference to a footnote (a footnote mark) + [ + s:pattern [ + name = "Footnote reference type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:footnoteref" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on footnoteref must point to a footnote." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element footnoteref { db.footnoteref.attlist, empty } +} +div { + db.xref.role.attribute = attribute role { text } + db.xref.xrefstyle.attribute = db.xrefstyle.attribute + db.xref.endterm.attribute = db.endterm.attribute + db.xref.attlist = + db.xref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.xref.xrefstyle.attribute? + & db.xref.endterm.attribute? + db.xref = + + ## A cross reference to another part of the document + element xref { db.xref.attlist, empty } +} +div { + db.link.role.attribute = attribute role { text } + db.link.xrefstyle.attribute = db.xrefstyle.attribute + db.link.endterm.attribute = db.endterm.attribute + db.link.attlist = + db.link.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.link.xrefstyle.attribute? + & db.link.endterm.attribute? + db.link = + + ## A hypertext link + element link { db.link.attlist, db.all.inlines* } +} +div { + db.olink.role.attribute = attribute role { text } + db.olink.xrefstyle.attribute = db.xrefstyle.attribute + db.olink.localinfo.attribute = + + ## Holds additional information that may be used by the applicatoin when resolving the link + attribute localinfo { text } + db.olink.targetdoc.attribute = + + ## Specifies the URI of the document in which the link target appears + attribute targetdoc { xsd:anyURI } + db.olink.targetptr.attribute = + + ## Specifies the location of the link target in the document + attribute targetptr { text } + db.olink.type.attribute = + + ## Identifies application-specific customization of the link behavior + attribute type { text } + db.olink.attlist = + db.common.attributes + & db.olink.targetdoc.attribute? + & db.olink.role.attribute? + & db.olink.xrefstyle.attribute? + & db.olink.localinfo.attribute? + & db.olink.targetptr.attribute? + & db.olink.type.attribute? + db.olink = + + ## A link that addresses its target indirectly + element olink { db.olink.attlist, db.all.inlines* } +} +div { + db.anchor.role.attribute = attribute role { text } + db.anchor.attlist = + db.anchor.role.attribute? & db.common.idreq.attributes + db.anchor = + + ## A spot in the document + element anchor { db.anchor.attlist, empty } +} +div { + db.alt.role.attribute = attribute role { text } + db.alt.attlist = db.alt.role.attribute? & db.common.attributes + db.alt = + + ## A text-only annotation, often used for accessibility + element alt { db.alt.attlist, (text | db.inlinemediaobject)* } +} +db.status.attribute = + + ## Identifies the editorial or publication status of the element on which it occurs + attribute status { text } +db.toplevel.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | (db.sect1+, db.simplesect*) + | db.refentry+ + | ((db.section | db.xi.include)+ | (db.simplesect | db.xi.include)+) + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ + | (db.sect1 | db.xi.include)+ +db.toplevel.blocks.or.sections = + (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections +db.recursive.sections = + ((db.section+, db.simplesect*) | db.simplesect+) + | db.refentry+ + | ((db.section | db.xi.include)+ | (db.simplesect | db.xi.include)+) + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ +db.recursive.blocks.or.sections = + (db.all.blocks+, db.recursive.sections?) | db.recursive.sections +db.divisions = db.part | db.reference | db.xi.include +db.components = + (db.dedication + | db.acknowledgements + | db.preface + | db.chapter + | db.appendix + | db.article + | db.colophon) + | db.xi.include +db.navigation.components = + notAllowed | db.glossary | db.bibliography | db.index | db.toc +db.component.contentmodel = + db.navigation.components*, + db.toplevel.blocks.or.sections, + db.navigation.components* +db.setindex.components = notAllowed | db.setindex +db.toc.components = notAllowed | db.toc +db.set.components = db.set | db.book +div { + db.set.status.attribute = db.status.attribute + db.set.role.attribute = attribute role { text } + db.set.attlist = + db.set.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.set.status.attribute? + db.set.info = db._info.title.req + db.set = + + ## A collection of books + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:set" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element set { + db.set.attlist, + db.set.info, + db.toc.components?, + db.set.components+, + db.setindex.components? + } +} +div { + db.book.status.attribute = db.status.attribute + db.book.role.attribute = attribute role { text } + db.book.attlist = + db.book.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.book.status.attribute? + db.book.info = db._info + db.book = + + ## A book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:book" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element book { + db.book.attlist, + db.book.info, + (db.navigation.components | db.components | db.divisions)* + } +} +div { + db.dedication.status.attribute = db.status.attribute + db.dedication.role.attribute = attribute role { text } + db.dedication.attlist = + db.dedication.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.dedication.status.attribute? + db.dedication.info = db._info + db.dedication = + + ## The dedication of a book or other component + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:dedication" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element dedication { + db.dedication.attlist, db.dedication.info, db.all.blocks+ + } +} +div { + db.acknowledgements.status.attribute = db.status.attribute + db.acknowledgements.role.attribute = attribute role { text } + db.acknowledgements.attlist = + db.acknowledgements.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.acknowledgements.status.attribute? + db.acknowledgements.info = db._info + db.acknowledgements = + + ## Acknowledgements of a book or other component + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:acknowledgements" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element acknowledgements { + db.acknowledgements.attlist, + db.acknowledgements.info, + db.all.blocks+ + } +} +div { + db.colophon.status.attribute = db.status.attribute + db.colophon.role.attribute = attribute role { text } + db.colophon.attlist = + db.colophon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.colophon.status.attribute? + db.colophon.info = db._info + db.colophon = + + ## Text at the back of a book describing facts about its production + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:colophon" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element colophon { + db.colophon.attlist, db.colophon.info, db.all.blocks+ + } +} +div { + db.appendix.status.attribute = db.status.attribute + db.appendix.role.attribute = attribute role { text } + db.appendix.attlist = + db.appendix.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.appendix.status.attribute? + db.appendix.info = db._info.title.req + db.appendix = + + ## An appendix in a Book or Article + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:appendix" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element appendix { + db.appendix.attlist, db.appendix.info, db.component.contentmodel + } +} +div { + db.chapter.status.attribute = db.status.attribute + db.chapter.role.attribute = attribute role { text } + db.chapter.attlist = + db.chapter.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.chapter.status.attribute? + db.chapter.info = db._info.title.req + db.chapter = + + ## A chapter, as of a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:chapter" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element chapter { + db.chapter.attlist, db.chapter.info, db.component.contentmodel + } +} +db.part.components = + (db.navigation.components | db.components) + | (db.refentry | db.reference) + | db.xi.include +div { + db.part.status.attribute = db.status.attribute + db.part.role.attribute = attribute role { text } + db.part.attlist = + db.part.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.part.status.attribute? + db.part.info = db._info.title.req + db.part = + + ## A division in a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:part" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element part { + db.part.attlist, db.part.info, db.partintro?, db.part.components+ + } +} +div { + db.preface.status.attribute = db.status.attribute + db.preface.role.attribute = attribute role { text } + db.preface.attlist = + db.preface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.preface.status.attribute? + db.preface.info = db._info.title.req + db.preface = + + ## Introductory matter preceding the first chapter of a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:preface" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element preface { + db.preface.attlist, db.preface.info, db.component.contentmodel + } +} +div { + db.partintro.status.attribute = db.status.attribute + db.partintro.role.attribute = attribute role { text } + db.partintro.attlist = + db.partintro.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.partintro.status.attribute? + db.partintro.info = db._info + db.partintro = + + ## An introduction to the contents of a part + element partintro { + db.partintro.attlist, + db.partintro.info, + db.toplevel.blocks.or.sections + } +} +div { + db.section.status.attribute = db.status.attribute + db.section.role.attribute = attribute role { text } + db.section.attlist = + db.section.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.section.status.attribute? + db.section.info = db._info.title.req + db.section = + + ## A recursive section + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:section" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element section { + db.section.attlist, + db.section.info, + db.recursive.blocks.or.sections, + db.navigation.components* + } +} +div { + db.simplesect.status.attribute = db.status.attribute + db.simplesect.role.attribute = attribute role { text } + db.simplesect.attlist = + db.simplesect.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.simplesect.status.attribute? + db.simplesect.info = db._info.title.req + db.simplesect = + + ## A section of a document with no subdivisions + element simplesect { + db.simplesect.attlist, db.simplesect.info, db.all.blocks+ + } +} +db.article.components = db.toplevel.sections +div { + db.article.status.attribute = db.status.attribute + db.article.class.enumeration = + + ## A collection of frequently asked questions. + "faq" + | + ## An article in a journal or other periodical. + "journalarticle" + | + ## A description of a product. + "productsheet" + | + ## A specification. + "specification" + | + ## A technical report. + "techreport" + | + ## A white paper. + "whitepaper" + db.article.class.attribute = + + ## Identifies the nature of the article + attribute class { db.article.class.enumeration } + db.article.role.attribute = attribute role { text } + db.article.attlist = + db.article.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.article.status.attribute? + & db.article.class.attribute? + db.article.info = db._info.title.req + db.article = + + ## An article + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:article" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element article { + db.article.attlist, + db.article.info, + (db.navigation.components + | db.appendix + | db.acknowledgements + | db.colophon)*, + ((db.all.blocks+, db.article.components?) + | db.article.components), + (db.navigation.components + | db.appendix + | db.acknowledgements + | db.colophon)* + } +} +db.annotations.attribute = + + ## Identifies one or more annotations that apply to this element + attribute annotations { text } +div { + db.annotation.role.attribute = attribute role { text } + db.annotation.annotates.attribute = + + ## Identifies one ore more elements to which this annotation applies + attribute annotates { text } + db.annotation.attlist = + db.annotation.role.attribute? + & db.annotation.annotates.attribute? + & db.common.attributes + db.annotation.info = db._info.title.only + db.annotation = + + ## An annotation + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:annotation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:annotation)" + "annotation must not occur in the descendants of annotation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element annotation { + db.annotation.attlist, db.annotation.info, db.all.blocks+ + } +} +db.xlink.from.attribute = + + ## Specifies the XLink traversal-from + attribute xlink:from { xsd:NMTOKEN }? +db.xlink.label.attribute = + + ## Specifies the XLink label + attribute xlink:label { xsd:NMTOKEN }? +db.xlink.to.attribute = + + ## Specifies the XLink traversal-to + attribute xlink:to { xsd:NMTOKEN }? +div { + db.extendedlink.role.attribute = attribute role { text } + db.extendedlink.attlist = + db.extendedlink.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "extended" ] + attribute xlink:type { + + ## An XLink extended link + "extended" + }? + & db.xlink.role.attribute? + & db.xlink.title.attribute? + db.extendedlink = + + ## An XLink extended link + element extendedlink { + db.extendedlink.attlist, (db.locator | db.arc)+ + } +} +div { + db.locator.role.attribute = attribute role { text } + db.locator.attlist = + db.locator.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "locator" ] + attribute xlink:type { + + ## An XLink locator link + "locator" + }? + & db.xlink.href.attribute + & db.xlink.role.attribute? + & db.xlink.title.attribute? + & db.xlink.label.attribute? + db.locator = + + ## An XLink locator in an extendedlink + element locator { db.locator.attlist, empty } +} +div { + db.arc.role.attribute = attribute role { text } + db.arc.attlist = + db.arc.role.attribute? + & db.common.attributes + & + ## Identifies the XLink link type + [ a:defaultValue = "arc" ] + attribute xlink:type { + + ## An XLink arc link + "arc" + }? + & db.xlink.arcrole.attribute? + & db.xlink.title.attribute? + & db.xlink.show.attribute? + & db.xlink.actuate.attribute? + & db.xlink.from.attribute? + & db.xlink.to.attribute? + db.arc = + + ## An XLink arc in an extendedlink + element arc { db.arc.attlist, empty } +} +db.sect1.sections = + ((db.sect2+, db.simplesect*) | db.simplesect+) + | (db.sect2 | db.xi.include)+ +div { + db.sect1.status.attribute = db.status.attribute + db.sect1.role.attribute = attribute role { text } + db.sect1.attlist = + db.sect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect1.status.attribute? + db.sect1.info = db._info.title.req + db.sect1 = + + ## A top-level section of document + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect1" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect1 { + db.sect1.attlist, + db.sect1.info, + ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections), + db.navigation.components* + } +} +db.sect2.sections = + ((db.sect3+, db.simplesect*) | db.simplesect+) + | (db.sect3 | db.xi.include)+ +div { + db.sect2.status.attribute = db.status.attribute + db.sect2.role.attribute = attribute role { text } + db.sect2.attlist = + db.sect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect2.status.attribute? + db.sect2.info = db._info.title.req + db.sect2 = + + ## A subsection within a Sect1 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect2" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect2 { + db.sect2.attlist, + db.sect2.info, + ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections), + db.navigation.components* + } +} +db.sect3.sections = + ((db.sect4+, db.simplesect*) | db.simplesect+) + | (db.sect4 | db.xi.include)+ +div { + db.sect3.status.attribute = db.status.attribute + db.sect3.role.attribute = attribute role { text } + db.sect3.attlist = + db.sect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect3.status.attribute? + db.sect3.info = db._info.title.req + db.sect3 = + + ## A subsection within a Sect2 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect3" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect3 { + db.sect3.attlist, + db.sect3.info, + ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections), + db.navigation.components* + } +} +db.sect4.sections = + ((db.sect5+, db.simplesect*) | db.simplesect+) + | (db.sect5 | db.xi.include)+ +div { + db.sect4.status.attribute = db.status.attribute + db.sect4.role.attribute = attribute role { text } + db.sect4.attlist = + db.sect4.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect4.status.attribute? + db.sect4.info = db._info.title.req + db.sect4 = + + ## A subsection within a Sect3 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect4" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect4 { + db.sect4.attlist, + db.sect4.info, + ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections), + db.navigation.components* + } +} +db.sect5.sections = db.simplesect+ | (db.simplesect | db.xi.include)+ +div { + db.sect5.status.attribute = db.status.attribute + db.sect5.role.attribute = attribute role { text } + db.sect5.attlist = + db.sect5.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.sect5.status.attribute? + db.sect5.info = db._info.title.req + db.sect5 = + + ## A subsection within a Sect4 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:sect5" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element sect5 { + db.sect5.attlist, + db.sect5.info, + ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections), + db.navigation.components* + } +} +db.toplevel.refsection = + db.refsection+ + | db.refsect1+ + | (db.refentry | db.xi.include)+ + | (db.refsect1 | db.xi.include)+ +db.secondlevel.refsection = + db.refsection+ + | db.refsect2+ + | (db.refentry | db.xi.include)+ + | (db.refsect2 | db.xi.include)+ +db.reference.components = db.refentry | db.xi.include +div { + db.reference.role.attribute = attribute role { text } + db.reference.attlist = + db.reference.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.status.attribute? + & db.label.attribute? + db.reference.info = db._info.title.req + db.reference = + + ## A collection of reference entries + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:reference" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element reference { + db.reference.attlist, + db.reference.info, + db.partintro?, + db.reference.components+ + } +} +div { + db.refentry.role.attribute = attribute role { text } + db.refentry.attlist = + db.refentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.status.attribute? + & db.label.attribute? + db.refentry.info = db._info.title.forbidden + db.refentry = + + ## A reference page (originally a UNIX man-style reference page) + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refentry" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refentry { + db.refentry.attlist, + db.indexterm*, + db.refentry.info, + db.refmeta?, + db.refnamediv+, + db.refsynopsisdiv?, + db.toplevel.refsection + } +} +div { + db.refmeta.role.attribute = attribute role { text } + db.refmeta.attlist = + db.refmeta.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refmeta = + + ## Meta-information for a reference entry + element refmeta { + db.refmeta.attlist, + db.indexterm*, + db.refentrytitle, + db.manvolnum?, + db.refmiscinfo*, + db.indexterm* + } +} +db.refmiscinfo.class.enumeration = + + ## The name of the software product or component to which this topic applies + "source" + | + ## The version of the software product or component to which this topic applies + "version" + | + ## The section title of the reference page (e.g., User Commands) + "manual" + | + ## The section title of the reference page (believed synonymous with "manual" but in wide use) + "sectdesc" + | + ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + "software" +db.refmiscinfo.class-enum.attribute = + + ## Identifies the kind of miscellaneous information + attribute class { db.refmiscinfo.class.enumeration }? +db.refmiscinfo.class-other.attribute = + + ## Identifies the nature of non-standard miscellaneous information + attribute otherclass { text } +db.refmiscinfo.class-other.attributes = + + ## Identifies the kind of miscellaneious information + attribute class { + + ## Indicates that the information is some 'other' kind. + "other" + } + & db.refmiscinfo.class-other.attribute +db.refmiscinfo.class.attribute = + db.refmiscinfo.class-enum.attribute + | db.refmiscinfo.class-other.attributes +div { + db.refmiscinfo.role.attribute = attribute role { text } + db.refmiscinfo.attlist = + db.refmiscinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.refmiscinfo.class.attribute? + db.refmiscinfo = + + ## Meta-information for a reference entry other than the title and volume number + element refmiscinfo { db.refmiscinfo.attlist, db._text } +} +div { + db.refnamediv.role.attribute = attribute role { text } + db.refnamediv.attlist = + db.refnamediv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refnamediv = + + ## The name, purpose, and classification of a reference page + element refnamediv { + db.refnamediv.attlist, + db.refdescriptor?, + db.refname+, + db.refpurpose, + db.refclass* + } +} +div { + db.refdescriptor.role.attribute = attribute role { text } + db.refdescriptor.attlist = + db.refdescriptor.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refdescriptor = + + ## A description of the topic of a reference page + element refdescriptor { db.refdescriptor.attlist, db.all.inlines* } +} +div { + db.refname.role.attribute = attribute role { text } + db.refname.attlist = + db.refname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refname = + + ## The name of (one of) the subject(s) of a reference page + element refname { db.refname.attlist, db.all.inlines* } +} +div { + db.refpurpose.role.attribute = attribute role { text } + db.refpurpose.attlist = + db.refpurpose.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refpurpose = + + ## A short (one sentence) synopsis of the topic of a reference page + element refpurpose { db.refpurpose.attlist, db.all.inlines* } +} +div { + db.refclass.role.attribute = attribute role { text } + db.refclass.attlist = + db.refclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refclass = + + ## The scope or other indication of applicability of a reference entry + element refclass { db.refclass.attlist, (text | db.application)* } +} +div { + db.refsynopsisdiv.role.attribute = attribute role { text } + db.refsynopsisdiv.attlist = + db.refsynopsisdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.refsynopsisdiv.info = db._info + db.refsynopsisdiv = + + ## A syntactic synopsis of the subject of the reference page + element refsynopsisdiv { + db.refsynopsisdiv.attlist, + db.refsynopsisdiv.info, + ((db.all.blocks+, db.secondlevel.refsection?) + | db.secondlevel.refsection) + } +} +div { + db.refsection.role.attribute = attribute role { text } + db.refsection.attlist = + db.refsection.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.status.attribute? + & db.label.attribute? + db.refsection.info = db._info.title.req + db.refsection = + + ## A recursive section in a refentry + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsection" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsection { + db.refsection.attlist, + db.refsection.info, + ((db.all.blocks+, db.refsection*) | db.refsection+) + } +} +db.refsect1.sections = db.refsect2+ +div { + db.refsect1.status.attribute = db.status.attribute + db.refsect1.role.attribute = attribute role { text } + db.refsect1.attlist = + db.refsect1.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect1.status.attribute? + db.refsect1.info = db._info.title.req + db.refsect1 = + + ## A major subsection of a reference entry + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsect1" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsect1 { + db.refsect1.attlist, + db.refsect1.info, + ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections) + } +} +db.refsect2.sections = db.refsect3+ +div { + db.refsect2.status.attribute = db.status.attribute + db.refsect2.role.attribute = attribute role { text } + db.refsect2.attlist = + db.refsect2.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect2.status.attribute? + db.refsect2.info = db._info.title.req + db.refsect2 = + + ## A subsection of a refsect1 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsect2" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsect2 { + db.refsect2.attlist, + db.refsect2.info, + ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections) + } +} +div { + db.refsect3.status.attribute = db.status.attribute + db.refsect3.role.attribute = attribute role { text } + db.refsect3.attlist = + db.refsect3.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.refsect3.status.attribute? + db.refsect3.info = db._info.title.req + db.refsect3 = + + ## A subsection of a refsect2 + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:refsect3" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element refsect3 { + db.refsect3.attlist, db.refsect3.info, db.all.blocks+ + } +} +db.glossary.inlines = db.firstterm | db.glossterm +db.baseform.attribute = + + ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + attribute baseform { text }? +div { + db.glosslist.role.attribute = attribute role { text } + db.glosslist.attlist = + db.glosslist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.glosslist.info = db._info.title.only + db.glosslist = + + ## A wrapper for a list of glossary entries + element glosslist { + db.glosslist.attlist, + db.glosslist.info?, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.glossentry.role.attribute = attribute role { text } + db.glossentry.sortas.attribute = + + ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + attribute sortas { text } + db.glossentry.attlist = + db.glossentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossentry.sortas.attribute? + db.glossentry = + + ## An entry in a Glossary or GlossList + element glossentry { + db.glossentry.attlist, + db.glossterm, + db.acronym?, + db.abbrev?, + db.indexterm*, + (db.glosssee | db.glossdef+) + } +} +div { + db.glossdef.role.attribute = attribute role { text } + db.glossdef.subject.attribute = + + ## Specifies a list of keywords for the definition + attribute subject { text } + db.glossdef.attlist = + db.glossdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossdef.subject.attribute? + db.glossdef = + + ## A definition in a GlossEntry + element glossdef { + db.glossdef.attlist, db.all.blocks+, db.glossseealso* + } +} +div { + db.glosssee.role.attribute = attribute role { text } + db.glosssee.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glosssee.attlist = + db.glosssee.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glosssee.otherterm.attribute? + db.glosssee = + + ## A cross-reference from one glossentry + ## to another + [ + s:pattern [ + name = "Glosssary 'see' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:glosssee[@otherterm]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glosssee must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glosssee { db.glosssee.attlist, db.all.inlines* } +} +div { + db.glossseealso.role.attribute = attribute role { text } + db.glossseealso.otherterm.attribute = + + ## Identifies the other term + attribute otherterm { xsd:IDREF } + db.glossseealso.attlist = + db.glossseealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.glossseealso.otherterm.attribute? + db.glossseealso = + + ## A cross-reference from one GlossEntry to another + [ + s:pattern [ + name = "Glossary 'seealso' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:glossseealso[@otherterm]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'" + "@otherterm on glossseealso must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glossseealso { db.glossseealso.attlist, db.all.inlines* } +} +div { + db.firstterm.role.attribute = attribute role { text } + db.firstterm.attlist = + db.firstterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.firstterm = + + ## The first occurrence of a term + [ + s:pattern [ + name = "Glossary 'firstterm' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:firstterm[@linkend]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on firstterm must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element firstterm { db.firstterm.attlist, db.all.inlines* } +} +div { + db.glossterm.role.attribute = attribute role { text } + db.glossterm.attlist = + db.glossterm.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.glossterm = + + ## A glossary term + [ + s:pattern [ + name = "Glossary 'glossterm' type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:glossterm[@linkend]" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on glossterm must point to a glossentry." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glossterm { db.glossterm.attlist, db.all.inlines* } +} +div { + db.glossary.status.attribute = db.status.attribute + db.glossary.role.attribute = attribute role { text } + db.glossary.attlist = + db.glossary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossary.status.attribute? + db.glossary.info = db._info + db.glossary = + + ## A glossary + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:glossary" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element glossary { + db.glossary.attlist, + db.glossary.info, + db.all.blocks*, + (db.glossdiv* | db.glossentry*), + db.bibliography? + } +} +div { + db.glossdiv.status.attribute = db.status.attribute + db.glossdiv.role.attribute = attribute role { text } + db.glossdiv.attlist = + db.glossdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.glossdiv.status.attribute? + db.glossdiv.info = db._info.title.req + db.glossdiv = + + ## A division in a Glossary + element glossdiv { + db.glossdiv.attlist, + db.glossdiv.info, + db.all.blocks*, + db.glossentry+ + } +} +div { + db.termdef.role.attribute = attribute role { text } + db.termdef.attlist = + db.termdef.role.attribute? + & db.glossentry.sortas.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.baseform.attribute + db.termdef = + + ## An inline definition of a term + [ + s:pattern [ + name = "Glossary term definition constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:termdef" + "\x{a}" ~ + " " + s:assert [ + test = "count(db:firstterm) = 1" + "A termdef must contain exactly one firstterm" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element termdef { db.termdef.attlist, db.all.inlines* } +} +db.relation.attribute = + + ## Identifies the relationship between the bibliographic elemnts + attribute relation { text } +div { + db.biblioentry.role.attribute = attribute role { text } + db.biblioentry.attlist = + db.biblioentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.biblioentry = + + ## An entry in a Bibliography + element biblioentry { + db.biblioentry.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomixed.role.attribute = attribute role { text } + db.bibliomixed.attlist = + db.bibliomixed.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomixed = + + ## An entry in a Bibliography + element bibliomixed { + db.bibliomixed.attlist, (text | db.bibliographic.elements)* + } +} +div { + db.biblioset.relation.attribute = db.relation.attribute + db.biblioset.role.attribute = attribute role { text } + db.biblioset.attlist = + db.biblioset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.biblioset.relation.attribute? + db.biblioset = + + ## A raw container for related bibliographic information + element biblioset { + db.biblioset.attlist, db.bibliographic.elements+ + } +} +div { + db.bibliomset.relation.attribute = db.relation.attribute + db.bibliomset.role.attribute = attribute role { text } + db.bibliomset.attlist = + db.bibliomset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.bibliomset.relation.attribute? + db.bibliomset = + + ## A cooked container for related bibliographic information + element bibliomset { + db.bibliomset.attlist, (db._text | db.bibliographic.elements)* + } +} +div { + db.bibliomisc.role.attribute = attribute role { text } + db.bibliomisc.attlist = + db.bibliomisc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliomisc = + + ## Untyped bibliographic information + element bibliomisc { db.bibliomisc.attlist, db._text } +} +div { + db.bibliography.status.attrib = db.status.attribute + db.bibliography.role.attribute = attribute role { text } + db.bibliography.attlist = + db.bibliography.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliography.status.attrib? + db.bibliography.info = db._info + db.bibliography = + + ## A bibliography + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:bibliography" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element bibliography { + db.bibliography.attlist, + db.bibliography.info, + db.all.blocks*, + (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+) + } +} +div { + db.bibliodiv.status.attrib = db.status.attribute + db.bibliodiv.role.attribute = attribute role { text } + db.bibliodiv.attlist = + db.bibliodiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.bibliodiv.status.attrib? + db.bibliodiv.info = db._info.title.req + db.bibliodiv = + + ## A section of a Bibliography + element bibliodiv { + db.bibliodiv.attlist, + db.bibliodiv.info, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.bibliolist.role.attribute = attribute role { text } + db.bibliolist.attlist = + db.bibliolist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.bibliolist.info = db._info.title.only + db.bibliolist = + + ## A wrapper for a list of bibliography entries + element bibliolist { + db.bibliolist.attlist, + db.bibliolist.info?, + db.all.blocks*, + (db.biblioentry | db.bibliomixed)+ + } +} +div { + db.biblioref.role.attribute = attribute role { text } + db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute + db.biblioref.endterm.attribute = db.endterm.attribute + db.biblioref.units.attribute = + + ## The units (for example, pages) used to identify the beginning and ending of a reference. + attribute units { xsd:token } + db.biblioref.begin.attribute = + + ## Identifies the beginning of a reference; the location within the work that is being referenced. + attribute begin { xsd:token } + db.biblioref.end.attribute = + + ## Identifies the end of a reference. + attribute end { xsd:token } + db.biblioref.attlist = + db.biblioref.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + & db.biblioref.xrefstyle.attribute? + & db.biblioref.endterm.attribute? + & db.biblioref.units.attribute? + & db.biblioref.begin.attribute? + & db.biblioref.end.attribute? + db.biblioref = + + ## A cross-reference to a bibliographic entry + element biblioref { db.biblioref.attlist, empty } +} +db.significance.enumeration = + + ## Normal + "normal" + | + ## Preferred + "preferred" +db.significance.attribute = + + ## Specifies the significance of the term + attribute significance { db.significance.enumeration } +db.zone.attribute = + + ## Specifies the IDs of the elements to which this term applies + attribute zone { xsd:IDREFS } +db.indexterm.pagenum.attribute = + + ## Indicates the page on which this index term occurs in some version of the printed document + attribute pagenum { text } +db.scope.enumeration = + + ## All indexes + "all" + | + ## The global index (as for a combined index of a set of box) + "global" + | + ## The local index (the index for this document only) + "local" +db.scope.attribute = + + ## Specifies the scope of the index term + attribute scope { db.scope.enumeration } +db.sortas.attribute = + + ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used + attribute sortas { text } +db.index.type.attribute = + + ## Specifies the target index for this term + attribute type { text } +div { + db.itermset.role.attribute = attribute role { text } + db.itermset.attlist = + db.itermset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.itermset = + + ## A set of index terms in the meta-information of a document + element itermset { db.itermset.attlist, db.indexterm.singular+ } +} +db.indexterm.contentmodel = + db.primary?, + ((db.secondary, + ((db.tertiary, (db.see | db.seealso+)?) + | db.see + | db.seealso+)?) + | db.see + | db.seealso+)? +div { + db.indexterm.singular.role.attribute = attribute role { text } + db.indexterm.singular.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## A singular index term + "singular" + } + db.indexterm.singular.attlist = + db.indexterm.singular.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.singular.class.attribute? + db.indexterm.singular = + + ## A wrapper for an indexed term + element indexterm { + db.indexterm.singular.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.startofrange.role.attribute = attribute role { text } + db.indexterm.startofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The start of a range + "startofrange" + } + db.indexterm.startofrange.attlist = + db.indexterm.startofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.significance.attribute? + & db.zone.attribute? + & db.indexterm.pagenum.attribute? + & db.scope.attribute? + & db.index.type.attribute? + & db.indexterm.startofrange.class.attribute + db.indexterm.startofrange = + + ## A wrapper for an indexed term that covers a range + element indexterm { + db.indexterm.startofrange.attlist, db.indexterm.contentmodel + } +} +div { + db.indexterm.endofrange.role.attribute = attribute role { text } + db.indexterm.endofrange.class.attribute = + + ## Identifies the class of index term + attribute class { + + ## The end of a range + "endofrange" + } + db.indexterm.endofrange.startref.attribute = + + ## Points to the start of the range + attribute startref { xsd:IDREF } + db.indexterm.endofrange.attlist = + db.indexterm.endofrange.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.indexterm.endofrange.class.attribute + & db.indexterm.endofrange.startref.attribute + db.indexterm.endofrange = + + ## Identifies the end of a range associated with an indexed term + element indexterm { db.indexterm.endofrange.attlist, empty } +} +div { + db.indexterm = + db.indexterm.singular + | db.indexterm.startofrange + | db.indexterm.endofrange +} +div { + db.primary.role.attribute = attribute role { text } + db.primary.attlist = + db.primary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.primary = + + ## The primary word or phrase under which an index term should be sorted + element primary { db.primary.attlist, db.all.inlines* } +} +div { + db.secondary.role.attribute = attribute role { text } + db.secondary.attlist = + db.secondary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.secondary = + + ## A secondary word or phrase in an index term + element secondary { db.secondary.attlist, db.all.inlines* } +} +div { + db.tertiary.role.attribute = attribute role { text } + db.tertiary.attlist = + db.tertiary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.sortas.attribute? + db.tertiary = + + ## A tertiary word or phrase in an index term + element tertiary { db.tertiary.attlist, db.all.inlines* } +} +div { + db.see.role.attribute = attribute role { text } + db.see.attlist = + db.see.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.see = + + ## Part of an index term directing the reader instead to another entry in the index + element see { db.see.attlist, db.all.inlines* } +} +div { + db.seealso.role.attribute = attribute role { text } + db.seealso.attlist = + db.seealso.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.seealso = + + ## Part of an index term directing the reader also to another entry in the index + element seealso { db.seealso.attlist, db.all.inlines* } +} +div { + db.index.status.attribute = db.status.attribute + db.index.role.attribute = attribute role { text } + db.index.attlist = + db.index.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.index.status.attribute? + & db.index.type.attribute? + db.index.info = db._info + # + # Yes, db.indexdiv* and db.indexentry*; that way an is valid. + # Authors can use an empty index to indicate where a generated index should + # appear. + db.index = + + ## An index to a book or part of a book + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:index" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element index { + db.index.attlist, + db.index.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry* | db.segmentedlist) + } +} +div { + db.setindex.status.attribute = db.status.attribute + db.setindex.role.attribute = attribute role { text } + db.setindex.attlist = + db.setindex.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.setindex.status.attribute? + & db.index.type.attribute? + db.setindex.info = db._info + db.setindex = + + ## An index to a set of books + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:setindex" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element setindex { + db.setindex.attlist, + db.setindex.info, + db.all.blocks*, + (db.indexdiv* | db.indexentry*) + } +} +div { + db.indexdiv.status.attribute = db.status.attribute + db.indexdiv.role.attribute = attribute role { text } + db.indexdiv.attlist = + db.indexdiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.label.attribute? + & db.indexdiv.status.attribute? + db.indexdiv.info = db._info.title.req + db.indexdiv = + + ## A division in an index + element indexdiv { + db.indexdiv.attlist, + db.indexdiv.info, + db.all.blocks*, + (db.indexentry+ | db.segmentedlist) + } +} +div { + db.indexentry.role.attribute = attribute role { text } + db.indexentry.attlist = + db.indexentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.indexentry = + + ## An entry in an index + element indexentry { + db.indexentry.attlist, + db.primaryie, + (db.seeie | db.seealsoie)*, + (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)* + } +} +div { + db.primaryie.role.attribute = attribute role { text } + db.primaryie.attlist = + db.primaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.primaryie = + + ## A primary term in an index entry, not in the text + element primaryie { db.primaryie.attlist, db.all.inlines* } +} +div { + db.secondaryie.role.attribute = attribute role { text } + db.secondaryie.attlist = + db.secondaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.secondaryie = + + ## A secondary term in an index entry, rather than in the text + element secondaryie { db.secondaryie.attlist, db.all.inlines* } +} +div { + db.tertiaryie.role.attribute = attribute role { text } + db.tertiaryie.attlist = + db.tertiaryie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.tertiaryie = + + ## A tertiary term in an index entry, rather than in the text + element tertiaryie { db.tertiaryie.attlist, db.all.inlines* } +} +div { + db.seeie.role.attribute = attribute role { text } + db.seeie.attlist = + db.seeie.role.attribute? + & db.common.attributes + & db.linkend.attribute? + db.seeie = + + ## A See + ## entry in an index, rather than in the text + element seeie { db.seeie.attlist, db.all.inlines* } +} +div { + db.seealsoie.role.attribute = attribute role { text } + db.seealsoie.attlist = + db.seealsoie.role.attribute? + & db.common.attributes + & db.linkends.attribute? + db.seealsoie = + + ## A See also + ## entry in an index, rather than in the text + element seealsoie { db.seealsoie.attlist, db.all.inlines* } +} +db.toc.pagenum.attribute = + + ## Indicates the page on which this element occurs in some version of the printed document + attribute pagenum { text } +div { + db.toc.role.attribute = attribute role { text } + db.toc.attlist = + db.toc.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.toc.info = db._info.title.only + db.toc = + + ## A table of contents + [ + s:pattern [ + name = "Root must have version" + "\x{a}" ~ + " " + s:rule [ + context = "/db:toc" + "\x{a}" ~ + " " + s:assert [ + test = "@version" + "The root element must have a version attribute." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element toc { + db.toc.attlist, + db.toc.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)* + } +} +div { + db.tocdiv.role.attribute = attribute role { text } + db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute + db.tocdiv.attlist = + db.tocdiv.role.attribute? + & db.common.attributes + & db.tocdiv.pagenum.attribute? + & db.linkend.attribute? + db.tocdiv.info = db._info + db.tocdiv = + + ## A division in a table of contents + element tocdiv { + db.tocdiv.attlist, + db.tocdiv.info, + db.all.blocks*, + (db.tocdiv | db.tocentry)+ + } +} +div { + db.tocentry.role.attribute = attribute role { text } + db.tocentry.pagenum.attribute = db.toc.pagenum.attribute + db.tocentry.attlist = + db.tocentry.role.attribute? + & db.common.attributes + & db.tocentry.pagenum.attribute? + & db.linkend.attribute? + db.tocentry = + + ## A component title in a table of contents + element tocentry { db.tocentry.attlist, db.all.inlines* } +} +db.task.info = db._info.title.req +div { + db.task.role.attribute = attribute role { text } + db.task.attlist = + db.task.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.task = + + ## A task to be completed + element task { + db.task.attlist, + db.task.info, + db.tasksummary?, + db.taskprerequisites?, + db.procedure, + db.example*, + db.taskrelated? + } +} +div { + db.tasksummary.role.attribute = attribute role { text } + db.tasksummary.attlist = + db.tasksummary.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tasksummary.info = db._info.title.only + db.tasksummary = + + ## A summary of a task + element tasksummary { + db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+ + } +} +div { + db.taskprerequisites.role.attribute = attribute role { text } + db.taskprerequisites.attlist = + db.taskprerequisites.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskprerequisites.info = db._info.title.only + db.taskprerequisites = + + ## The prerequisites for a task + element taskprerequisites { + db.taskprerequisites.attlist, + db.taskprerequisites.info, + db.all.blocks+ + } +} +div { + db.taskrelated.role.attribute = attribute role { text } + db.taskrelated.attlist = + db.taskrelated.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.taskrelated.info = db._info.title.only + db.taskrelated = + + ## Information related to a task + element taskrelated { + db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+ + } +} +db.area.units.enumeration = + + ## Coordinates expressed as a pair of CALS graphic coordinates. + "calspair" + | + ## Coordinates expressed as a line and column. + "linecolumn" + | + ## Coordinates expressed as a pair of lines and columns. + "linecolumnpair" + | + ## Coordinates expressed as a line range. + "linerange" +db.area.units-enum.attribute = + + ## Identifies the units used in the coords attribute The default units vary according to the type of callout specified: calspair + ## for graphics and linecolumn + ## for line-oriented elements. + attribute units { db.area.units.enumeration }? +db.area.units-other.attributes = + + ## Indicates that non-standard units are used for this area + ## . In this case otherunits + ## must be specified. + attribute units { + + ## Coordinates expressed in some non-standard units. + "other" + }?, + + ## Identifies the units used in the coords + ## attribute when the units + ## attribute is other + ## . This attribute is forbidden otherwise. + attribute otherunits { xsd:NMTOKEN } +db.area.units.attribute = + db.area.units-enum.attribute | db.area.units-other.attributes +div { + db.calloutlist.role.attribute = attribute role { text } + db.calloutlist.attlist = + db.calloutlist.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.calloutlist.info = db._info.title.only + db.calloutlist = + + ## A list of callout + ## s + element calloutlist { + db.calloutlist.attlist, + db.calloutlist.info, + db.all.blocks*, + db.callout+ + } +} +div { + db.callout.role.attribute = attribute role { text } + db.callout.arearefs.attribute = + + ## Identifies the areas described by this callout. + attribute arearefs { xsd:IDREFS } + db.callout.attlist = + db.callout.role.attribute? + & db.common.attributes + & db.callout.arearefs.attribute + db.callout = + + ## A called out + ## description of a marked Area + element callout { db.callout.attlist, db.all.blocks+ } +} +div { + db.programlistingco.role.attribute = attribute role { text } + db.programlistingco.attlist = + db.programlistingco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.programlistingco.info = db._info.title.forbidden + db.programlistingco = + + ## A program listing with associated areas used in callouts + element programlistingco { + db.programlistingco.attlist, + db.programlistingco.info, + db.areaspec, + db.programlisting, + db.calloutlist* + } +} +div { + db.areaspec.role.attribute = attribute role { text } + db.areaspec.attlist = + db.areaspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.area.units.attribute + db.areaspec = + + ## A collection of regions in a graphic or code example + element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ } +} +div { + db.area.role.attribute = attribute role { text } + db.area.linkends.attribute = + + ## Point to the callout + ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + attribute linkends { xsd:IDREFS } + db.area.label.attribute = + + ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + attribute label { text } + db.area.coords.attribute = + + ## Provides the coordinates of the area. The coordinates must be interpreted using the units + ## specified. + attribute coords { text } + db.area.attlist = + db.area.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.href.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area = + + ## A region defined for a Callout in a graphic or code example + element area { db.area.attlist, db.alt? } +} +div { + # The only difference is that xml:id is optional + db.area.inareaset.attlist = + db.area.role.attribute? + & db.common.attributes + & db.area.units.attribute + & (db.area.linkends.attribute | db.href.attributes)? + & db.area.label.attribute? + & db.area.coords.attribute + db.area.inareaset = + + ## A region defined for a Callout in a graphic or code example + element area { db.area.inareaset.attlist, db.alt? } +} +div { + db.areaset.role.attribute = attribute role { text } + db.areaset.linkends.attribute = db.linkends.attribute + db.areaset.label.attribute = db.label.attribute + db.areaset.attlist = + db.areaset.role.attribute? + & db.common.idreq.attributes + & db.area.units.attribute + & (db.areaset.linkends.attribute | db.href.attributes)? + & db.areaset.label.attribute? + db.areaset = + + ## A set of related areas in a graphic or code example + element areaset { db.areaset.attlist, db.area.inareaset+ } +} +div { + db.screenco.role.attribute = attribute role { text } + db.screenco.attlist = + db.screenco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.screenco.info = db._info.title.forbidden + db.screenco = + + ## A screen with associated areas used in callouts + element screenco { + db.screenco.attlist, + db.screenco.info, + db.areaspec, + db.screen, + db.calloutlist* + } +} +div { + db.imageobjectco.role.attribute = attribute role { text } + db.imageobjectco.attlist = + db.imageobjectco.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.imageobjectco.info = db._info.title.forbidden + db.imageobjectco = + + ## A wrapper for an image object with callouts + element imageobjectco { + db.imageobjectco.attlist, + db.imageobjectco.info, + db.areaspec, + db.imageobject+, + db.calloutlist* + } +} +div { + db.co.role.attribute = attribute role { text } + db.co.linkends.attribute = db.linkends.attribute + db.co.label.attribute = db.label.attribute + db.co.attlist = + db.co.role.attribute? + & db.common.idreq.attributes + & db.co.linkends.attribute? + & db.co.label.attribute? + db.co = + + ## The location of a callout embedded in text + element co { db.co.attlist, empty } +} +div { + db.coref.role.attribute = attribute role { text } + db.coref.label.attribute = db.label.attribute + db.coref.attlist = + db.coref.role.attribute? + & db.common.attributes + & db.linkend.attribute + & db.coref.label.attribute? + db.coref = + + ## A cross reference to a co + element coref { db.coref.attlist, empty } +} +div { + db.productionset.role.attribute = attribute role { text } + db.productionset.attlist = + db.productionset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productionset.info = db._info.title.only + db.productionset = + + ## A set of EBNF productions + element productionset { + db.productionset.attlist, + db.productionset.info, + (db.production | db.productionrecap)+ + } +} +div { + db.production.role.attribute = attribute role { text } + db.production.attlist = + db.production.role.attribute? + & db.common.idreq.attributes + & db.common.linking.attributes + db.production = + + ## A production in a set of EBNF productions + element production { + db.production.attlist, db.lhs, db.rhs, db.constraint* + } +} +div { + db.lhs.role.attribute = attribute role { text } + db.lhs.attlist = + db.lhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.lhs = + + ## The left-hand side of an EBNF production + element lhs { db.lhs.attlist, text } +} +div { + db.rhs.role.attribute = attribute role { text } + db.rhs.attlist = + db.rhs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.rhs = + + ## The right-hand side of an EBNF production + element rhs { + db.rhs.attlist, + (text | db.nonterminal | db.lineannotation | db.sbr)* + } +} +div { + db.nonterminal.role.attribute = attribute role { text } + db.nonterminal.def.attribute = + + ## Specifies a URI that points to a production + ## where the nonterminal + ## is defined + attribute def { xsd:anyURI } + db.nonterminal.attlist = + db.nonterminal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.nonterminal.def.attribute + db.nonterminal = + + ## A non-terminal in an EBNF production + element nonterminal { db.nonterminal.attlist, text } +} +div { + db.constraint.role.attribute = attribute role { text } + db.constraint.attlist = + db.constraint.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.constraint = + + ## A constraint in an EBNF production + element constraint { db.constraint.attlist, empty } +} +div { + db.productionrecap.role.attribute = attribute role { text } + db.productionrecap.attlist = + db.productionrecap.role.attribute? + & db.common.attributes + & db.common.req.linking.attributes + db.productionrecap = + + ## A cross-reference to an EBNF production + element productionrecap { db.productionrecap.attlist, empty } +} +div { + db.constraintdef.role.attribute = attribute role { text } + db.constraintdef.attlist = + db.constraintdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.constraintdef.info = db._info.title.only + db.constraintdef = + + ## The definition of a constraint in an EBNF production + element constraintdef { + db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+ + } +} +db.char.attribute = + + ## Specifies the alignment character when align + ## is set to char + ## . + attribute char { text } +db.charoff.attribute = + + ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + ## when align + ## is set to char + ## . + attribute charoff { + xsd:decimal { minExclusive = "0" maxExclusive = "100" } + } +db.frame.attribute = + + ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + attribute frame { + + ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + "all" + | + ## Frame only the bottom of the table. + "bottom" + | + ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + "none" + | + ## Frame the left and right sides of the table. + "sides" + | + ## Frame the top of the table. + "top" + | + ## Frame the top and bottom of the table. + "topbot" + } +db.colsep.attribute = + + ## Specifies the presence or absence of the column separator + attribute colsep { + + ## No column separator rule. + "0" + | + ## Provide a column separator rule on the right + "1" + } +db.rowsep.attribute = + + ## Specifies the presence or absence of the row separator + attribute rowsep { + + ## No row separator rule. + "0" + | + ## Provide a row separator rule below + "1" + } +db.orient.attribute = + + ## Specifies the orientation of the table + attribute orient { + + ## 90 degrees counter-clockwise from the rest of the text flow. + "land" + | + ## The same orientation as the rest of the text flow. + "port" + } +db.tabstyle.attribute = + + ## Specifies the table style + attribute tabstyle { text } +db.rowheader.attribute = + + ## Indicates whether or not the entries in the first column should be considered row headers + attribute rowheader { + + ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + "firstcol" + | + ## Indicates that entries in the first column have no special significance with respect to column headers. + "norowheader" + } +db.align.attribute = + + ## Specifies the horizontal alignment of text in an entry. + attribute align { + + ## Centered. + "center" + | + ## Aligned on a particular character. + "char" + | + ## Left and right justified. + "justify" + | + ## Left justified. + "left" + | + ## Right justified. + "right" + } +db.valign.attribute = + + ## Specifies the vertical alignment of text in an entry. + attribute valign { + + ## Aligned on the bottom of the entry. + "bottom" + | + ## Aligned in the middle. + "middle" + | + ## Aligned at the top of the entry. + "top" + } +db.specify-col-by-colname.attributes = + + ## Specifies a column specification by name. + attribute colname { text } +db.specify-col-by-namest.attributes = + + ## Specifies a starting column by name. + attribute namest { text } +db.specify-span-by-spanspec.attributes = + + ## Specifies a span by name. + attribute spanname { text } +db.specify-span-directly.attributes = + + ## Specifies a starting column by name. + attribute namest { text } + & + ## Specifies an ending column by name. + attribute nameend { text } +db.column-spec.attributes = + db.specify-col-by-colname.attributes + | db.specify-col-by-namest.attributes + | db.specify-span-by-spanspec.attributes + | db.specify-span-directly.attributes +db.colname.attribute = + + ## Provides a name for a column specification. + attribute colname { text } +db.spanname.attribute = + + ## Provides a name for a span specification. + attribute spanname { text } +div { + db.tgroup.role.attribute = attribute role { text } + db.tgroup.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.tgroup.cols.attribute = + + ## The number of columns in the table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.tgroup.attlist = + db.tgroup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.tgroup.tgroupstyle.attribute? + & db.tgroup.cols.attribute + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.tgroup = + + ## A wrapper for the main content of a table, or part of a table + element tgroup { + db.tgroup.attlist, + db.colspec*, + db.spanspec*, + db.cals.thead?, + db.cals.tfoot?, + db.cals.tbody + } +} +div { + db.colspec.role.attribute = attribute role { text } + db.colspec.colnum.attribute = + + ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + attribute colnum { xsd:positiveInteger } + db.colspec.colwidth.attribute = + + ## Specifies the width of the column. + attribute colwidth { text } + db.colspec.attlist = + db.colspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.colspec.colnum.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.colspec.colwidth.attribute? + & db.charoff.attribute? + & db.colname.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.colspec = + + ## Specifications for a column in a table + element colspec { db.colspec.attlist, empty } +} +div { + db.spanspec.role.attribute = attribute role { text } + db.spanspec.namest.attribute = + + ## Specifies a starting column by name. + attribute namest { text } + db.spanspec.nameend.attribute = + + ## Specifies an ending column by name. + attribute nameend { text } + db.spanspec.attlist = + db.spanspec.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.spanname.attribute + & db.spanspec.namest.attribute + & db.spanspec.nameend.attribute + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.spanspec = + + ## Formatting information for a spanned column in a table + element spanspec { db.spanspec.attlist, empty } +} +div { + db.cals.thead.role.attribute = attribute role { text } + db.cals.thead.attlist = + db.cals.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.thead = + + ## A table header consisting of one or more rows + element thead { db.cals.thead.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tfoot.role.attribute = attribute role { text } + db.cals.tfoot.attlist = + db.cals.tfoot.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tfoot = + + ## A table footer consisting of one or more rows + element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ } +} +div { + db.cals.tbody.role.attribute = attribute role { text } + db.cals.tbody.attlist = + db.cals.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.tbody.attlist, db.row+ } +} +div { + db.row.role.attribute = attribute role { text } + db.row.attlist = + db.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.row = + + ## A row in a table + element row { db.row.attlist, (db.entry | db.entrytbl)+ } +} +div { + db.entry.role.attribute = attribute role { text } + db.entry.morerows.attribute = + + ## Specifies the number of additional rows which this entry occupies. Defaults to zero. + attribute morerows { xsd:integer } + db.entry.rotate.attribute = + + ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + attribute rotate { + + ## Do not rotate the cell. + "0" + | + ## Rotate the cell 90 degrees counter-clockwise. + "1" + } + db.entry.attlist = + db.entry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + & db.char.attribute? + & db.colsep.attribute? + & db.charoff.attribute? + & db.entry.morerows.attribute? + & db.column-spec.attributes? + & db.rowsep.attribute? + & db.entry.rotate.attribute? + & db.align.attribute? + db.entry = + + ## A cell in a table + element entry { + db.entry.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.entrytbl.role.attribute = attribute role { text } + db.entrytbl.tgroupstyle.attribute = + + ## Additional style information for downstream processing; typically the name of a style. + attribute tgroupstyle { text } + db.entrytbl.cols.attribute = + + ## The number of columns in the entry table. Must be an integer greater than zero. + attribute cols { xsd:positiveInteger } + db.entrytbl.attlist = + db.entrytbl.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.char.attribute? + & db.charoff.attribute? + & db.column-spec.attributes? + & db.entrytbl.tgroupstyle.attribute? + & db.entrytbl.cols.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.align.attribute? + db.entrytbl = + + ## A subtable appearing in place of an Entry in a table + element entrytbl { + db.entrytbl.attlist, + db.colspec*, + db.spanspec*, + db.cals.entrytbl.thead?, + db.cals.entrytbl.tbody + } +} +div { + db.cals.entrytbl.thead.role.attribute = attribute role { text } + db.cals.entrytbl.thead.attlist = + db.cals.entrytbl.thead.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.thead = + + ## A table header consisting of one or more rows + element thead { + db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+ + } +} +div { + db.cals.entrytbl.tbody.role.attribute = attribute role { text } + db.cals.entrytbl.tbody.attlist = + db.cals.entrytbl.tbody.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.valign.attribute? + db.cals.entrytbl.tbody = + + ## A wrapper for the rows of a table or informal table + element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ } +} +div { + db.entrytbl.row.role.attribute = attribute role { text } + db.entrytbl.row.attlist = + db.entrytbl.row.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.rowsep.attribute? + & db.valign.attribute? + db.entrytbl.row = + + ## A row in a table + element row { db.entrytbl.row.attlist, db.entry+ } +} +div { + db.cals.table.role.attribute = attribute role { text } + db.cals.table.label.attribute = db.label.attribute + db.cals.table.attlist = + db.cals.table.role.attribute? + & db.cals.table.label.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & + ## Indicates if the short or long title should be used in a List of Tables + attribute shortentry { + + ## Indicates that the full title should be used. + "0" + | + ## Indicates that the short short title (titleabbrev) should be used. + "1" + }? + & + ## Indicates if the table should appear in a List of Tables + attribute tocentry { + + ## Indicates that the table should not occur in the List of Tables. + "0" + | + ## Indicates that the table should appear in the List of Tables. + "1" + }? + & db.rowheader.attribute? + db.cals.table.info = db._info.title.onlyreq + db.cals.table = + + ## A formal table in a document + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:example)" + "example must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:figure)" + "figure must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:equation)" + "equation must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element table { + db.cals.table.attlist, + db.cals.table.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +div { + db.cals.informaltable.role.attribute = attribute role { text } + db.cals.informaltable.attlist = + db.cals.informaltable.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tabstyle.attribute? + & db.floatstyle.attribute? + & db.orient.attribute? + & db.colsep.attribute? + & db.rowsep.attribute? + & db.frame.attribute? + & db.pgwide.attribute? + & db.rowheader.attribute? + db.cals.informaltable.info = db._info.title.forbidden + db.cals.informaltable = + + ## A table without a title + element informaltable { + db.cals.informaltable.attlist, + db.cals.informaltable.info, + (db.alt? & db.indexing.inlines* & db.textobject*), + (db.mediaobject+ | db.tgroup+), + db.caption? + } +} +db.html.coreattrs = + + ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + attribute class { text }? + & + ## This attribute specifies style information for the current element. + attribute style { text }? + & + ## This attribute offers advisory information about the element for which it is set. + attribute title { text }? +db.html.i18n = + + ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + attribute lang { text }? +db.html.events = + + ## Occurs when the pointing device button is clicked over an element. + attribute onclick { text }? + & + ## Occurs when the pointing device button is double clicked over an element. + attribute ondblclick { text }? + & + ## Occurs when the pointing device button is pressed over an element. + attribute onmousedown { text }? + & + ## Occurs when the pointing device button is released over an element. + attribute onmouseup { text }? + & + ## Occurs when the pointing device is moved onto an element. + attribute onmouseover { text }? + & + ## Occurs when the pointing device is moved while it is over an element. + attribute onmousemove { text }? + & + ## Occurs when the pointing device is moved away from an element. + attribute onmouseout { text }? + & + ## Occurs when a key is pressed and released over an element. + attribute onkeypress { text }? + & + ## Occurs when a key is pressed down over an element. + attribute onkeydown { text }? + & + ## Occurs when a key is released over an element. + attribute onkeyup { text }? +db.html.attrs = + db.common.attributes + & db.html.coreattrs + & db.html.i18n + & db.html.events +db.html.cellhalign = + + ## Specifies the alignment of data and the justification of text in a cell. + attribute align { + + ## Left-flush data/Left-justify text. This is the default value for table data. + "left" + | + ## Center data/Center-justify text. This is the default value for table headers. + "center" + | + ## Right-flush data/Right-justify text. + "right" + | + ## Double-justify text. + "justify" + | + ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + "char" + }? + & + ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + attribute char { text }? + & + ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + attribute charoff { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? +db.html.cellvalign = + + ## Specifies the vertical position of data within a cell. + attribute valign { + + ## Cell data is flush with the top of the cell. + "top" + | + ## Cell data is centered vertically within the cell. This is the default value. + "middle" + | + ## Cell data is flush with the bottom of the cell. + "bottom" + | + ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + "baseline" + }? +db.html.table.attributes = + + ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + attribute summary { text }? + & + ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + attribute width { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? + & + ## Specifies the width (in pixels only) of the frame around a table. + attribute border { xsd:nonNegativeInteger }? + & + ## Specifies which sides of the frame surrounding a table will be visible. + attribute frame { + + ## No sides. This is the default value. + "void" + | + ## The top side only. + "above" + | + ## The bottom side only. + "below" + | + ## The top and bottom sides only. + "hsides" + | + ## The left-hand side only. + "lhs" + | + ## The right-hand side only. + "rhs" + | + ## The right and left sides only. + "vsides" + | + ## All four sides. + "box" + | + ## All four sides. + "border" + }? + & + ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + attribute rules { + + ## No rules. This is the default value. + "none" + | + ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + "groups" + | + ## Rules will appear between rows only. + "rows" + | + ## Rules will appear between columns only. + "cols" + | + ## Rules will appear between all rows and columns. + "all" + }? + & + ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + attribute cellspacing { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? + & + ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + attribute cellpadding { + xsd:integer + | xsd:string { pattern = "[0-9]+%" } + }? +db.html.tablecell.attributes = + + ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + attribute abbr { text }? + & + ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + attribute axis { text }? + & + ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + attribute headers { text }? + & + ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + attribute scope { + + ## The current cell provides header information for the rest of the row that contains it + "row" + | + ## The current cell provides header information for the rest of the column that contains it. + "col" + | + ## The header cell provides header information for the rest of the row group that contains it. + "rowgroup" + | + ## The header cell provides header information for the rest of the column group that contains it. + "colgroup" + }? + & + ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all rows from the current row to the last row of the table section (thead + ## , tbody + ## , or tfoot + ## ) in which the cell is defined. + attribute rowspan { xsd:nonNegativeInteger }? + & + ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 + ## ). The value zero (0 + ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup + ## ) in which the cell is defined. + attribute colspan { xsd:nonNegativeInteger }? +db.html.table.info = db._info.title.forbidden +db.html.table.model = + db.html.table.info?, + db.html.caption, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +db.html.informaltable.info = db._info.title.forbidden +db.html.informaltable.model = + db.html.informaltable.info?, + (db.html.col* | db.html.colgroup*), + db.html.thead?, + db.html.tfoot?, + (db.html.tbody+ | db.html.tr+) +div { + db.html.table.role.attribute = attribute role { text } + db.html.table.label.attribute = db.label.attribute + db.html.table.attlist = + db.html.attrs + & db.html.table.attributes + & db.html.table.role.attribute? + & db.html.table.label.attribute? + & db.orient.attribute? + & db.pgwide.attribute? + & db.tabstyle.attribute? + & db.floatstyle.attribute? + db.html.table = + + ## A formal (captioned) HTML table in a document + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:example)" + "example must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:figure)" + "figure must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:equation)" + "equation must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:informaltable)" + "informaltable must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:table" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of table" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element table { db.html.table.attlist, db.html.table.model } +} +div { + db.html.informaltable.attlist = + db.html.attrs & db.html.table.attributes + db.html.informaltable = + + ## An HTML table without a title + element informaltable { + db.html.informaltable.attlist, db.html.informaltable.model + } +} +div { + db.html.caption.attlist = db.html.attrs + db.html.caption = + + ## An HTML table 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the 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 in the descendants of caption" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element caption { db.html.caption.attlist, db.all.inlines* } +} +div { + db.html.col.attlist = + db.html.attrs + & + ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned + ## by the col + ## element; the col + ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + ## element shares its attributes with the next N-1 columns. + attribute span { xsd:nonNegativeInteger }? + & + ## Specifies a default width for each column spanned by the current col + ## element. It has the same meaning as the width + ## attribute for the colgroup + ## element and overrides it. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.col = + + ## Specifications for a column in an HTML table + element col { db.html.col.attlist, empty } +} +div { + db.html.colgroup.attlist = + db.html.attrs + & + ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + ## element contains one or more col + ## elements. + attribute span { xsd:nonNegativeInteger }? + & + ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + ## element. + attribute width { text }? + & db.html.cellhalign + & db.html.cellvalign + db.html.colgroup = + + ## A group of columns in an HTML table + element colgroup { db.html.colgroup.attlist, db.html.col* } +} +div { + db.html.thead.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.thead = + + ## A table header consisting of one or more rows in an HTML table + element thead { db.html.thead.attlist, db.html.tr+ } +} +div { + db.html.tfoot.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tfoot = + + ## A table footer consisting of one or more rows in an HTML table + element tfoot { db.html.tfoot.attlist, db.html.tr+ } +} +div { + db.html.tbody.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tbody = + + ## A wrapper for the rows of an HTML table or informal HTML table + element tbody { db.html.tbody.attlist, db.html.tr+ } +} +div { + db.html.tr.attlist = + db.html.attrs & db.html.cellhalign & db.html.cellvalign + db.html.tr = + + ## A row in an HTML table + element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ } +} +div { + db.html.th.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.th = + + ## A table header entry in an HTML table + element th { + db.html.th.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.html.td.attlist = + db.html.attrs + & db.html.tablecell.attributes + & db.html.cellhalign + & db.html.cellvalign + db.html.td = + + ## A table entry in an HTML table + element td { + db.html.td.attlist, (db.all.inlines* | db.all.blocks*) + } +} +div { + db.msgset.role.attribute = attribute role { text } + db.msgset.attlist = + db.msgset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgset.info = db._info.title.only + db.msgset = + + ## A detailed set of messages, usually error messages + element msgset { + db.msgset.attlist, + db.msgset.info, + (db.msgentry+ | db.simplemsgentry+) + } +} +div { + db.msgentry.role.attribute = attribute role { text } + db.msgentry.attlist = + db.msgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgentry = + + ## A wrapper for an entry in a message set + element msgentry { + db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan* + } +} +div { + db.simplemsgentry.role.attribute = attribute role { text } + db.simplemsgentry.msgaud.attribute = + + ## The audience to which the message relevant + attribute msgaud { text } + db.simplemsgentry.msgorig.attribute = + + ## The origin of the message + attribute msgorig { text } + db.simplemsgentry.msglevel.attribute = + + ## The level of importance or severity of a message + attribute msglevel { text } + db.simplemsgentry.attlist = + db.simplemsgentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.simplemsgentry.msgaud.attribute? + & db.simplemsgentry.msgorig.attribute? + & db.simplemsgentry.msglevel.attribute? + db.simplemsgentry = + + ## A wrapper for a simpler entry in a message set + element simplemsgentry { + db.simplemsgentry.attlist, db.msgtext, db.msgexplan+ + } +} +div { + db.msg.role.attribute = attribute role { text } + db.msg.attlist = + db.msg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msg.info = db._info.title.only + db.msg = + + ## A message in a message set + element msg { + db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)* + } +} +div { + db.msgmain.role.attribute = attribute role { text } + db.msgmain.attlist = + db.msgmain.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgmain.info = db._info.title.only + db.msgmain = + + ## The primary component of a message in a message set + element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext } +} +div { + db.msgsub.role.attribute = attribute role { text } + db.msgsub.attlist = + db.msgsub.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgsub.info = db._info.title.only + db.msgsub = + + ## A subcomponent of a message in a message set + element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext } +} +div { + db.msgrel.role.attribute = attribute role { text } + db.msgrel.attlist = + db.msgrel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgrel.info = db._info.title.only + db.msgrel = + + ## A related component of a message in a message set + element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext } +} +div { + db.msgtext.role.attribute = attribute role { text } + db.msgtext.attlist = + db.msgtext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgtext = + + ## The actual text of a message component in a message set + element msgtext { db.msgtext.attlist, db.all.blocks+ } +} +div { + db.msginfo.role.attribute = attribute role { text } + db.msginfo.attlist = + db.msginfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msginfo = + + ## Information about a message in a message set + element msginfo { + db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)* + } +} +div { + db.msglevel.role.attribute = attribute role { text } + db.msglevel.attlist = + db.msglevel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msglevel = + + ## The level of importance or severity of a message in a message set + element msglevel { db.msglevel.attlist, db._text } +} +div { + db.msgorig.role.attribute = attribute role { text } + db.msgorig.attlist = + db.msgorig.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgorig = + + ## The origin of a message in a message set + element msgorig { db.msgorig.attlist, db._text } +} +div { + db.msgaud.role.attribute = attribute role { text } + db.msgaud.attlist = + db.msgaud.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgaud = + + ## The audience to which a message in a message set is relevant + element msgaud { db.msgaud.attlist, db._text } +} +div { + db.msgexplan.role.attribute = attribute role { text } + db.msgexplan.attlist = + db.msgexplan.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.msgexplan.info = db._info.title.only + db.msgexplan = + + ## Explanatory material relating to a message in a message set + element msgexplan { + db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+ + } +} +div { + db.qandaset.role.attribute = attribute role { text } + db.qandaset.defaultlabel.enumeration = + + ## No labels + "none" + | + ## Numeric labels + "number" + | + ## "Q:" and "A:" labels + "qanda" + db.qandaset.defaultlabel.attribute = + + ## Specifies the default labelling + attribute defaultlabel { db.qandaset.defaultlabel.enumeration } + db.qandaset.attlist = + db.qandaset.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.qandaset.defaultlabel.attribute? + db.qandaset.info = db._info.title.only + db.qandaset = + + ## A question-and-answer set + element qandaset { + db.qandaset.attlist, + db.qandaset.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandadiv.role.attribute = attribute role { text } + db.qandadiv.attlist = + db.qandadiv.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandadiv.info = db._info.title.only + db.qandadiv = + + ## A titled division in a QandASet + element qandadiv { + db.qandadiv.attlist, + db.qandadiv.info, + db.all.blocks*, + (db.qandadiv+ | db.qandaentry+) + } +} +div { + db.qandaentry.role.attribute = attribute role { text } + db.qandaentry.attlist = + db.qandaentry.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.qandaentry.info = db._info.title.only + db.qandaentry = + + ## A question/answer set within a QandASet + element qandaentry { + db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer* + } +} +div { + db.question.role.attribute = attribute role { text } + db.question.attlist = + db.question.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.question = + + ## A question in a QandASet + element question { db.question.attlist, db.label?, db.all.blocks+ } +} +div { + db.answer.role.attribute = attribute role { text } + db.answer.attlist = + db.answer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.answer = + + ## An answer to a question posed in a QandASet + element answer { db.answer.attlist, db.label?, db.all.blocks+ } +} +div { + db.label.role.attribute = attribute role { text } + db.label.attlist = + db.label.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.label = + + ## A label on a Question or Answer + element label { db.label.attlist, db._text } +} +db.math.inlines = db.inlineequation +db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+ +db.inlineequation.content = + (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+ +div { + db.equation.role.attribute = attribute role { text } + db.equation.label.attribute = db.label.attribute + db.equation.attlist = + db.equation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.equation.label.attribute? + & db.pgwide.attribute? + & db.floatstyle.attribute? + db.equation.info = db._info.title.only + db.equation = + + ## A displayed mathematical equation + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:example)" + "example must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:figure)" + "figure must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:table)" + "table must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:equation)" + "equation must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:equation" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of equation" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element equation { + db.equation.attlist, + db.equation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.informalequation.role.attribute = attribute role { text } + db.informalequation.attlist = + db.informalequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.informalequation.info = db._info.title.forbidden + db.informalequation = + + ## A displayed mathematical equation without a title + element informalequation { + db.informalequation.attlist, + db.informalequation.info, + db.alt?, + db.equation.content, + db.caption? + } +} +div { + db.inlineequation.role.attribute = attribute role { text } + db.inlineequation.attlist = + db.inlineequation.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.inlineequation = + + ## A mathematical equation or expression occurring inline + element inlineequation { + db.inlineequation.attlist, db.alt?, db.inlineequation.content + } +} +div { + db.mathphrase.role.attribute = attribute role { text } + db.mathphrase.attlist = + db.mathphrase.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mathphrase = + + ## A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup + element mathphrase { + db.mathphrase.attlist, + (db._text | db.ubiq.inlines | db._emphasis)* + } +} +div { + db.imagedata.mathml.role.attribute = attribute role { text } + db.imagedata.mathml.attlist = + db.imagedata.mathml.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is MathML + attribute format { + + ## Specifies MathML. + "mathml" + }? + & 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.mathml.info = db._info.title.forbidden + db.imagedata.mathml = + + ## A MathML expression in a media object + element imagedata { + db.imagedata.mathml.attlist, + db.imagedata.mathml.info, + db._any.mml+ + } +} +div { + db._any.mml = + + ## Any element from the MathML namespace + element mml:* { (db._any.attribute | text | db._any)* } +} +div { + db.imagedata.svg.role.attribute = attribute role { text } + db.imagedata.svg.attlist = + db.imagedata.svg.role.attribute? + & db.common.attributes + & + ## Specifies that the format of the data is SVG + attribute format { + + ## Specifies SVG. + "svg" + }? + & 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.svg.info = db._info.title.forbidden + db.imagedata.svg = + + ## An SVG drawing in a media object + element imagedata { + db.imagedata.svg.attlist, db.imagedata.svg.info, db._any.svg+ + } +} +div { + db._any.svg = + + ## Any element from the SVG namespace + element svg:* { (db._any.attribute | text | db._any)* } +} +db.markup.inlines = + db.tag + | db.markup + | db.token + | db.symbol + | db.literal + | db.code + | db.constant + | db.email + | db.uri +div { + db.markup.role.attribute = attribute role { text } + db.markup.attlist = + db.markup.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.markup = + + ## A string of formatting markup in text that is to be represented literally + element markup { db.markup.attlist, db._text } +} +div { + db.tag.role.attribute = attribute role { text } + db.tag.class.enumeration = + + ## An attribute + "attribute" + | + ## An attribute value + "attvalue" + | + ## An element + "element" + | + ## An empty element tag + "emptytag" + | + ## An end tag + "endtag" + | + ## A general entity + "genentity" + | + ## The local name part of a qualified name + "localname" + | + ## A namespace + "namespace" + | + ## A numeric character reference + "numcharref" + | + ## A parameter entity + "paramentity" + | + ## A processing instruction + "pi" + | + ## The prefix part of a qualified name + "prefix" + | + ## An SGML comment + "comment" + | + ## A start tag + "starttag" + | + ## An XML processing instruction + "xmlpi" + db.tag.class.attribute = + + ## Identifies the nature of the tag content + attribute class { db.tag.class.enumeration } + db.tag.namespace.attribute = + + ## Identifies the namespace of the tag content + attribute namespace { xsd:anyURI } + db.tag.attlist = + db.tag.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.tag.class.attribute? + & db.tag.namespace.attribute? + db.tag = + + ## A component of XML (or SGML) markup + element tag { db.tag.attlist, db._text } +} +div { + db.symbol.class.attribute = + + ## Identifies the class of symbol + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.symbol.role.attribute = attribute role { text } + db.symbol.attlist = + db.symbol.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.symbol.class.attribute? + db.symbol = + + ## A name that is replaced by a value before processing + element symbol { db.symbol.attlist, db._text } +} +div { + db.token.role.attribute = attribute role { text } + db.token.attlist = + db.token.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.token = + + ## A unit of information + element token { db.token.attlist, db._text } +} +div { + db.literal.role.attribute = attribute role { text } + db.literal.attlist = + db.literal.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.literal = + + ## Inline text that is some literal value + element literal { db.literal.attlist, db._text } +} +div { + code.language.attribute = + + ## Identifies the (computer) language of the code fragment + attribute language { text } + db.code.role.attribute = attribute role { text } + db.code.attlist = + db.code.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & code.language.attribute? + db.code = + + ## An inline code fragment + element code { + db.code.attlist, (db.programming.inlines | db._text)* + } +} +div { + db.constant.class.attribute = + + ## Identifies the class of constant + attribute class { + + ## The value is a limit of some kind + "limit" + } + db.constant.role.attribute = attribute role { text } + db.constant.attlist = + db.constant.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.constant.class.attribute? + db.constant = + + ## A programming or system constant + element constant { db.constant.attlist, db._text } +} +div { + db.productname.role.attribute = attribute role { text } + db.productname.class.enumeration = + + ## A name with a copyright + "copyright" + | + ## A name with a registered copyright + "registered" + | + ## A name of a service + "service" + | + ## A name which is trademarked + "trade" + db.productname.class.attribute = + + ## Specifies the class of product name + attribute class { db.productname.class.enumeration } + db.productname.attlist = + db.productname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.productname.class.attribute? + db.productname = + + ## The formal name of a product + element productname { db.productname.attlist, db._text } +} +div { + db.productnumber.role.attribute = attribute role { text } + db.productnumber.attlist = + db.productnumber.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.productnumber = + + ## A number assigned to a product + element productnumber { db.productnumber.attlist, db._text } +} +div { + db.database.class.enumeration = + + ## An alternate or secondary key + "altkey" + | + ## A constraint + "constraint" + | + ## A data type + "datatype" + | + ## A field + "field" + | + ## A foreign key + "foreignkey" + | + ## A group + "group" + | + ## An index + "index" + | + ## The first or primary key + "key1" + | + ## An alternate or secondary key + "key2" + | + ## A name + "name" + | + ## The primary key + "primarykey" + | + ## A (stored) procedure + "procedure" + | + ## A record + "record" + | + ## A rule + "rule" + | + ## The secondary key + "secondarykey" + | + ## A table + "table" + | + ## A user + "user" + | + ## A view + "view" + db.database.class.attribute = + + ## Identifies the class of database artifact + attribute class { db.database.class.enumeration } + db.database.role.attribute = attribute role { text } + db.database.attlist = + db.database.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.database.class.attribute? + db.database = + + ## The name of a database, or part of a database + element database { db.database.attlist, db._text } +} +div { + db.application.class.enumeration = + + ## A hardware application + "hardware" + | + ## A software application + "software" + db.application.class.attribute = + + ## Identifies the class of application + attribute class { db.application.class.enumeration } + db.application.role.attribute = attribute role { text } + db.application.attlist = + db.application.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.application.class.attribute? + db.application = + + ## The name of a software program + element application { db.application.attlist, db._text } +} +div { + db.hardware.role.attribute = attribute role { text } + db.hardware.attlist = + db.hardware.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.hardware = + + ## A physical part of a computer system + element hardware { db.hardware.attlist, db._text } +} +db.gui.inlines = + db.guiicon + | db.guibutton + | db.guimenuitem + | db.guimenu + | db.guisubmenu + | db.guilabel + | db.menuchoice + | db.mousebutton +div { + db.guibutton.role.attribute = attribute role { text } + db.guibutton.attlist = + db.guibutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guibutton = + + ## The text on a button in a GUI + element guibutton { + db.guibutton.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guiicon.role.attribute = attribute role { text } + db.guiicon.attlist = + db.guiicon.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guiicon = + + ## Graphic and/or text appearing as a icon in a GUI + element guiicon { + db.guiicon.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guilabel.role.attribute = attribute role { text } + db.guilabel.attlist = + db.guilabel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guilabel = + + ## The text of a label in a GUI + element guilabel { + db.guilabel.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenu.role.attribute = attribute role { text } + db.guimenu.attlist = + db.guimenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenu = + + ## The name of a menu in a GUI + element guimenu { + db.guimenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guimenuitem.role.attribute = attribute role { text } + db.guimenuitem.attlist = + db.guimenuitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guimenuitem = + + ## The name of a terminal menu item in a GUI + element guimenuitem { + db.guimenuitem.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.guisubmenu.role.attribute = attribute role { text } + db.guisubmenu.attlist = + db.guisubmenu.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.guisubmenu = + + ## The name of a submenu in a GUI + element guisubmenu { + db.guisubmenu.attlist, + (db._text | db.accel | db.superscript | db.subscript)* + } +} +div { + db.menuchoice.role.attribute = attribute role { text } + db.menuchoice.attlist = + db.menuchoice.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.menuchoice = + + ## A selection or series of selections from a menu + element menuchoice { + db.menuchoice.attlist, + db.shortcut?, + (db.guibutton + | db.guiicon + | db.guilabel + | db.guimenu + | db.guimenuitem + | db.guisubmenu)+ + } +} +div { + db.mousebutton.role.attribute = attribute role { text } + db.mousebutton.attlist = + db.mousebutton.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.mousebutton = + + ## The conventional name of a mouse button + element mousebutton { db.mousebutton.attlist, db._text } +} +db.keyboard.inlines = + db.keycombo + | db.keycap + | db.keycode + | db.keysym + | db.shortcut + | db.accel +div { + db.keycap.function.enumeration = + + ## The "Alt" key + "alt" + | + ## The "Backspace" key + "backspace" + | + ## The "Command" key + "command" + | + ## The "Control" key + "control" + | + ## The "Delete" key + "delete" + | + ## The down arrow + "down" + | + ## The "End" key + "end" + | + ## The "Enter" or "Return" key + "enter" + | + ## The "Escape" key + "escape" + | + ## The "Home" key + "home" + | + ## The "Insert" key + "insert" + | + ## The left arrow + "left" + | + ## The "Meta" key + "meta" + | + ## The "Option" key + "option" + | + ## The page down key + "pagedown" + | + ## The page up key + "pageup" + | + ## The right arrow + "right" + | + ## The "Shift" key + "shift" + | + ## The spacebar + "space" + | + ## The "Tab" key + "tab" + | + ## The up arrow + "up" + db.keycap.function-enum.attribute = + + ## Identifies the function key + attribute function { db.keycap.function.enumeration }? + db.keycap.function-other.attributes = + + ## Identifies the function key + attribute function { + + ## Indicates a non-standard function key + "other" + }?, + + ## Specifies a keyword that identifies the non-standard key + attribute otherfunction { text } + db.keycap.function.attrib = + db.keycap.function-enum.attribute + | db.keycap.function-other.attributes + db.keycap.role.attribute = attribute role { text } + db.keycap.attlist = + db.keycap.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycap.function.attrib + db.keycap = + + ## The text printed on a key on a keyboard + element keycap { db.keycap.attlist, db._text } +} +div { + db.keycode.role.attribute = attribute role { text } + db.keycode.attlist = + db.keycode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keycode = + + ## The internal, frequently numeric, identifier for a key on a keyboard + element keycode { db.keycode.attlist, db._text } +} +db.keycombination.contentmodel = + (db.keycap | db.keycombo | db.keysym) | db.mousebutton +div { + db.keycombo.action.enumeration = + + ## A (single) mouse click. + "click" + | + ## A double mouse click. + "double-click" + | + ## A mouse or key press. + "press" + | + ## Sequential clicks or presses. + "seq" + | + ## Simultaneous clicks or presses. + "simul" + db.keycombo.action-enum.attribute = + + ## Identifies the nature of the action taken. If keycombo + ## contains more than one element, simul + ## is the default, otherwise there is no default. + attribute action { db.keycombo.action.enumeration }? + db.keycombo.action-other.attributes = + + ## Identifies the nature of the action taken + attribute action { + + ## Indicates a non-standard action + "other" + }?, + + ## Identifies the non-standard action in some unspecified way. + attribute otheraction { text } + db.keycombo.action.attrib = + db.keycombo.action-enum.attribute + | db.keycombo.action-other.attributes + db.keycombo.role.attribute = attribute role { text } + db.keycombo.attlist = + db.keycombo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.keycombo.action.attrib + db.keycombo = + + ## A combination of input actions + element keycombo { + db.keycombo.attlist, db.keycombination.contentmodel+ + } +} +div { + db.keysym.role.attribute = attribute role { text } + db.keysym.attlist = + db.keysym.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.keysym = + + ## The symbolic name of a key on a keyboard + element keysym { db.keysym.attlist, db._text } +} +div { + db.accel.role.attribute = attribute role { text } + db.accel.attlist = + db.accel.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.accel = + + ## A graphical user interface (GUI) keyboard shortcut + element accel { db.accel.attlist, db._text } +} +div { + db.shortcut.action.attrib = db.keycombo.action.attrib + db.shortcut.role.attribute = attribute role { text } + db.shortcut.attlist = + db.shortcut.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.shortcut.action.attrib + db.shortcut = + + ## A key combination for an action that is also accessible through a menu + element shortcut { + db.shortcut.attlist, db.keycombination.contentmodel+ + } +} +db.os.inlines = + db.prompt + | db.envar + | db.filename + | db.command + | db.computeroutput + | db.userinput +db.computeroutput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines +db.userinput.inlines = + (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines) + | db.co + | db.markup.inlines + | db.gui.inlines + | db.keyboard.inlines +db.prompt.inlines = db._text | db.co +div { + db.prompt.role.attribute = attribute role { text } + db.prompt.attlist = + db.prompt.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.prompt = + + ## A character or string indicating the start of an input field in a computer display + element prompt { db.prompt.attlist, db.prompt.inlines* } +} +div { + db.envar.role.attribute = attribute role { text } + db.envar.attlist = + db.envar.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.envar = + + ## A software environment variable + element envar { db.envar.attlist, db._text } +} +div { + db.filename.class.enumeration = + + ## A device + "devicefile" + | + ## A directory + "directory" + | + ## A filename extension + "extension" + | + ## A header file (as for a programming language) + "headerfile" + | + ## A library file + "libraryfile" + | + ## A partition (as of a hard disk) + "partition" + | + ## A symbolic link + "symlink" + db.filename.class.attribute = + + ## Identifies the class of filename + attribute class { db.filename.class.enumeration } + db.filename.path.attribute = + + ## Specifies the path of the filename + attribute path { text } + db.filename.role.attribute = attribute role { text } + db.filename.attlist = + db.filename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.filename.path.attribute? + & db.filename.class.attribute? + db.filename = + + ## The name of a file + element filename { db.filename.attlist, db._text } +} +div { + db.command.role.attribute = attribute role { text } + db.command.attlist = + db.command.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.command = + + ## The name of an executable program or other software command + element command { db.command.attlist, db._text } +} +div { + db.computeroutput.role.attribute = attribute role { text } + db.computeroutput.attlist = + db.computeroutput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.computeroutput = + + ## Data, generally text, displayed or presented by a computer + element computeroutput { + db.computeroutput.attlist, db.computeroutput.inlines* + } +} +div { + db.userinput.role.attribute = attribute role { text } + db.userinput.attlist = + db.userinput.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.userinput = + + ## Data entered by the user + element userinput { db.userinput.attlist, db.userinput.inlines* } +} +div { + db.cmdsynopsis.role.attribute = attribute role { text } + db.cmdsynopsis.sepchar.attribute = + + ## Specifies the character that should separate the command and its top-level arguments + attribute sepchar { text } + db.cmdsynopsis.cmdlength.attribute = + + ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + attribute cmdlength { text } + db.cmdsynopsis.label.attribute = db.label.attribute + db.cmdsynopsis.attlist = + db.cmdsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.cmdsynopsis.sepchar.attribute? + & db.cmdsynopsis.cmdlength.attribute? + & db.cmdsynopsis.label.attribute? + db.cmdsynopsis.info = db._info.title.forbidden + db.cmdsynopsis = + + ## A syntax summary for a software command + element cmdsynopsis { + db.cmdsynopsis.attlist, + db.cmdsynopsis.info, + (db.command | db.arg | db.group | db.sbr)+, + db.synopfragment* + } +} +db.rep.enumeration = + + ## Can not be repeated. + "norepeat" + | + ## Can be repeated. + "repeat" +db.rep.attribute = + + ## Indicates whether or not repetition is possible. + [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration } +db.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted without indication. + "plain" + | + ## Formatted to indicate that it is required. + "req" +db.choice.opt.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration } +db.choice.req.attribute = + + ## Indicates optionality. + [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration } +div { + db.arg.role.attribute = attribute role { text } + db.arg.rep.attribute = db.rep.attribute + db.arg.choice.attribute = db.choice.opt.attribute + db.arg.attlist = + db.arg.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.arg.rep.attribute? + & db.arg.choice.attribute? + db.arg = + + ## An argument in a CmdSynopsis + element arg { + db.arg.attlist, + (db._text + | db.arg + | db.group + | db.option + | db.synopfragmentref + | db.sbr)* + } +} +div { + db.group.role.attribute = attribute role { text } + db.group.rep.attribute = db.rep.attribute + db.group.choice.attribute = db.choice.opt.attribute + db.group.attlist = + db.group.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.group.rep.attribute? + & db.group.choice.attribute? + db.group = + + ## A group of elements in a CmdSynopsis + element group { + db.group.attlist, + (db.arg + | db.group + | db.option + | db.synopfragmentref + | db.replaceable + | db.sbr)+ + } +} +div { + db.sbr.role.attribute = attribute role { text } + db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes + db.sbr = + + ## An explicit line break in a command synopsis + element sbr { db.sbr.attlist, empty } +} +div { + db.synopfragment.role.attribute = attribute role { text } + db.synopfragment.attlist = + db.synopfragment.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.synopfragment = + + ## A portion of a CmdSynopsis broken out from the main body of the synopsis + element synopfragment { + db.synopfragment.attlist, (db.arg | db.group)+ + } +} +div { + db.synopfragmentref.role.attribute = attribute role { text } + db.synopfragmentref.attlist = + db.synopfragmentref.role.attribute? + & db.common.attributes + & db.linkend.attribute + db.synopfragmentref = + + ## A reference to a fragment of a command synopsis + [ + s:pattern [ + name = "Synopsis fragment type constraint" + "\x{a}" ~ + " " + s:rule [ + context = "db:synopfragmentref" + "\x{a}" ~ + " " + s:assert [ + test = + "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'" + "@linkend on synopfragmentref must point to a synopfragment." + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element synopfragmentref { db.synopfragmentref.attlist, text } +} +db.programming.inlines = + db.function + | db.parameter + | db.varname + | db.returnvalue + | db.type + | db.classname + | db.exceptionname + | db.interfacename + | db.methodname + | db.modifier + | db.initializer + | db.oo.inlines +db.oo.inlines = db.ooclass | db.ooexception | db.oointerface +db.synopsis.blocks = + (db.funcsynopsis + | db.classsynopsis + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis) + | db.cmdsynopsis +div { + db.synopsis.role.attribute = attribute role { text } + db.synopsis.label.attribute = db.label.attribute + db.synopsis.attlist = + db.synopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.synopsis.label.attribute? + db.synopsis = + + ## A general-purpose element for representing the syntax of commands or functions + element synopsis { db.synopsis.attlist, db.verbatim.contentmodel } +} +div { + db.funcsynopsis.role.attribute = attribute role { text } + db.funcsynopsis.attlist = + db.funcsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.funcsynopsis.info = db._info.title.forbidden + db.funcsynopsis = + + ## The syntax summary for a function definition + element funcsynopsis { + db.funcsynopsis.attlist, + db.funcsynopsis.info, + (db.funcsynopsisinfo | db.funcprototype)+ + } +} +div { + db.funcsynopsisinfo.role.attribute = attribute role { text } + db.funcsynopsisinfo.attlist = + db.funcsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.funcsynopsisinfo = + + ## Information supplementing the FuncDefs of a FuncSynopsis + element funcsynopsisinfo { + db.funcsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.funcprototype.role.attribute = attribute role { text } + db.funcprototype.attlist = + db.funcprototype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcprototype = + + ## The prototype of a function + element funcprototype { + db.funcprototype.attlist, + db.modifier*, + db.funcdef, + (db.void | db.varargs | (db.paramdef+, db.varargs?)), + db.modifier* + } +} +div { + db.funcdef.role.attribute = attribute role { text } + db.funcdef.attlist = + db.funcdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcdef = + + ## A function (subroutine) name and its return type + element funcdef { + db.funcdef.attlist, (db._text | db.type | db.function)* + } +} +div { + db.function.role.attribute = attribute role { text } + db.function.attlist = + db.function.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.function = + + ## The name of a function or subroutine, as in a programming language + element function { db.function.attlist, db._text } +} +div { + db.void.role.attribute = attribute role { text } + db.void.attlist = + db.void.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.void = + + ## An empty element in a function synopsis indicating that the function in question takes no arguments + element void { db.void.attlist, empty } +} +div { + db.varargs.role.attribute = attribute role { text } + db.varargs.attlist = + db.varargs.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varargs = + + ## An empty element in a function synopsis indicating a variable number of arguments + element varargs { db.varargs.attlist, empty } +} +div { + db.paramdef.role.attribute = attribute role { text } + db.paramdef.choice.enumeration = + + ## Formatted to indicate that it is optional. + "opt" + | + ## Formatted to indicate that it is required. + "req" + db.paramdef.choice.attribute = + + ## Indicates optionality. + [ a:defaultValue = "opt" ] + attribute choice { db.paramdef.choice.enumeration } + db.paramdef.attlist = + db.paramdef.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.paramdef.choice.attribute? + db.paramdef = + + ## Information about a function parameter in a programming language + element paramdef { + db.paramdef.attlist, + (db._text + | db.initializer + | db.type + | db.parameter + | db.funcparams)* + } +} +div { + db.funcparams.role.attribute = attribute role { text } + db.funcparams.attlist = + db.funcparams.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.funcparams = + + ## Parameters for a function referenced through a function pointer in a synopsis + element funcparams { db.funcparams.attlist, db._text } +} +div { + db.classsynopsis.role.attribute = attribute role { text } + db.classsynopsis.class.enumeration = + + ## This is the synopsis of a class + "class" + | + ## This is the synopsis of an interface + "interface" + db.classsynopsis.class.attribute = + + ## Specifies the nature of the synopsis + attribute class { db.classsynopsis.class.enumeration } + db.classsynopsis.attlist = + db.classsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + & db.classsynopsis.class.attribute? + db.classsynopsis = + + ## The syntax summary for a class definition + element classsynopsis { + db.classsynopsis.attlist, + db.oo.inlines+, + (db.classsynopsisinfo + | db.methodsynopsis + | db.constructorsynopsis + | db.destructorsynopsis + | db.fieldsynopsis)* + } +} +div { + db.classsynopsisinfo.role.attribute = attribute role { text } + db.classsynopsisinfo.attlist = + db.classsynopsisinfo.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + db.classsynopsisinfo = + + ## Information supplementing the contents of a ClassSynopsis + element classsynopsisinfo { + db.classsynopsisinfo.attlist, db.verbatim.contentmodel + } +} +div { + db.ooclass.role.attribute = attribute role { text } + db.ooclass.attlist = + db.ooclass.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooclass = + + ## A class in an object-oriented programming language + element ooclass { + db.ooclass.attlist, (db.package | db.modifier)*, db.classname + } +} +div { + db.oointerface.role.attribute = attribute role { text } + db.oointerface.attlist = + db.oointerface.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.oointerface = + + ## An interface in an object-oriented programming language + element oointerface { + db.oointerface.attlist, + (db.package | db.modifier)*, + db.interfacename + } +} +div { + db.ooexception.role.attribute = attribute role { text } + db.ooexception.attlist = + db.ooexception.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.ooexception = + + ## An exception in an object-oriented programming language + element ooexception { + db.ooexception.attlist, + (db.package | db.modifier)*, + db.exceptionname + } +} +db.modifier.xml.space.attribute = + + ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + attribute xml:space { + + ## Extra whitespace and line breaks must be preserved. + [ + # Ideally the definition of xml:space used on modifier would be + # different from the definition used on the verbatim elements. The + # verbatim elements forbid the use of xml:space="default" which + # wouldn't be a problem on modifier. But doing that causes the + # generated XSD schemas to be broken so I'm just reusing the existing + # definition for now. It won't be backwards incompatible to fix this + # problem in the future. + # | ## Extra whitespace and line breaks are not preserved. + # "default" + + ] + "preserve" + } +div { + db.modifier.role.attribute = attribute role { text } + db.modifier.attlist = + db.modifier.xml.space.attribute? + & db.modifier.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.modifier = + + ## Modifiers in a synopsis + element modifier { db.modifier.attlist, db._text } +} +div { + db.interfacename.role.attribute = attribute role { text } + db.interfacename.attlist = + db.interfacename.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.interfacename = + + ## The name of an interface + element interfacename { db.interfacename.attlist, db._text } +} +div { + db.exceptionname.role.attribute = attribute role { text } + db.exceptionname.attlist = + db.exceptionname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.exceptionname = + + ## The name of an exception + element exceptionname { db.exceptionname.attlist, db._text } +} +div { + db.fieldsynopsis.role.attribute = attribute role { text } + db.fieldsynopsis.attlist = + db.fieldsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.fieldsynopsis = + + ## The name of a field in a class definition + element fieldsynopsis { + db.fieldsynopsis.attlist, + db.modifier*, + db.type?, + db.varname, + db.initializer? + } +} +div { + db.initializer.role.attribute = attribute role { text } + db.initializer.attlist = + db.initializer.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.initializer = + + ## The initializer for a FieldSynopsis + element initializer { db.initializer.attlist, db._text } +} +div { + db.constructorsynopsis.role.attribute = attribute role { text } + db.constructorsynopsis.attlist = + db.constructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.constructorsynopsis = + + ## A syntax summary for a constructor + element constructorsynopsis { + db.constructorsynopsis.attlist, + db.modifier*, + db.methodname?, + (db.methodparam+ | db.void?), + db.exceptionname* + } +} +div { + db.destructorsynopsis.role.attribute = attribute role { text } + db.destructorsynopsis.attlist = + db.destructorsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.destructorsynopsis = + + ## A syntax summary for a destructor + element destructorsynopsis { + db.destructorsynopsis.attlist, + db.modifier*, + db.methodname?, + (db.methodparam+ | db.void?), + db.exceptionname* + } +} +div { + db.methodsynopsis.role.attribute = attribute role { text } + db.methodsynopsis.attlist = + db.methodsynopsis.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.language.attribute? + db.methodsynopsis = + + ## A syntax summary for a method + element methodsynopsis { + db.methodsynopsis.attlist, + db.modifier*, + (db.type | db.void)?, + db.methodname, + (db.methodparam+ | db.void), + db.exceptionname*, + db.modifier* + } +} +div { + db.methodname.role.attribute = attribute role { text } + db.methodname.attlist = + db.methodname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.methodname = + + ## The name of a method + element methodname { db.methodname.attlist, db._text } +} +div { + db.methodparam.role.attribute = attribute role { text } + db.methodparam.rep.attribute = db.rep.attribute + db.methodparam.choice.attribute = db.choice.req.attribute + db.methodparam.attlist = + db.methodparam.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.methodparam.rep.attribute? + & db.methodparam.choice.attribute? + db.methodparam = + + ## Parameters to a method + element methodparam { + db.methodparam.attlist, + db.modifier*, + db.type?, + ((db.modifier*, db.parameter, db.initializer?) | db.funcparams), + db.modifier* + } +} +div { + db.varname.role.attribute = attribute role { text } + db.varname.attlist = + db.varname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.varname = + + ## The name of a variable + element varname { db.varname.attlist, db._text } +} +div { + db.returnvalue.role.attribute = attribute role { text } + db.returnvalue.attlist = + db.returnvalue.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.returnvalue = + + ## The value returned by a function + element returnvalue { db.returnvalue.attlist, db._text } +} +div { + db.type.role.attribute = attribute role { text } + db.type.attlist = + db.type.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.type = + + ## The classification of a value + element type { db.type.attlist, db._text } +} +div { + db.classname.role.attribute = attribute role { text } + db.classname.attlist = + db.classname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.classname = + + ## The name of a class, in the object-oriented programming sense + element classname { db.classname.attlist, db._text } +} +div { + db.programlisting.role.attribute = attribute role { text } + db.programlisting.width.attribute = db.width.characters.attribute + db.programlisting.attlist = + db.programlisting.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.verbatim.attributes + & db.programlisting.width.attribute? + db.programlisting = + + ## A literal listing of all or part of a program + element programlisting { + db.programlisting.attlist, db.verbatim.contentmodel + } +} +db.admonition.blocks = + db.caution | db.important | db.note | db.tip | db.warning +db.admonition.contentmodel = db._info.title.only, db.all.blocks+ +div { + db.caution.role.attribute = attribute role { text } + db.caution.attlist = + db.caution.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.caution = + + ## A note of caution + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:caution" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of caution" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element caution { db.caution.attlist, db.admonition.contentmodel } +} +div { + db.important.role.attribute = attribute role { text } + db.important.attlist = + db.important.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.important = + + ## An admonition set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:important" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of important" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element important { + db.important.attlist, db.admonition.contentmodel + } +} +div { + db.note.role.attribute = attribute role { text } + db.note.attlist = + db.note.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.note = + + ## A message set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:note" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of note" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element note { db.note.attlist, db.admonition.contentmodel } +} +div { + db.tip.role.attribute = attribute role { text } + db.tip.attlist = + db.tip.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.tip = + + ## A suggestion to the user, set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:tip" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of tip" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element tip { db.tip.attlist, db.admonition.contentmodel } +} +div { + db.warning.role.attribute = attribute role { text } + db.warning.attlist = + db.warning.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.warning = + + ## An admonition set off from the text + [ + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:caution)" + "caution must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:important)" + "important must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:note)" + "note must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:tip)" + "tip must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + s:pattern [ + name = "Element exclusion" + "\x{a}" ~ + " " + s:rule [ + context = "db:warning" + "\x{a}" ~ + " " + s:assert [ + test = "not(.//db:warning)" + "warning must not occur in the descendants of warning" + ] + "\x{a}" ~ + " " + ] + "\x{a}" ~ + " " + ] + ] + element warning { db.warning.attlist, db.admonition.contentmodel } +} +db.error.inlines = + db.errorcode | db.errortext | db.errorname | db.errortype +div { + db.errorcode.role.attribute = attribute role { text } + db.errorcode.attlist = + db.errorcode.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorcode = + + ## An error code + element errorcode { db.errorcode.attlist, db._text } +} +div { + db.errorname.role.attribute = attribute role { text } + db.errorname.attlist = + db.errorname.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errorname = + + ## An error name + element errorname { db.errorname.attlist, db._text } +} +div { + db.errortext.role.attribute = attribute role { text } + db.errortext.attlist = + db.errortext.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortext = + + ## An error message. + element errortext { db.errortext.attlist, db._text } +} +div { + db.errortype.role.attribute = attribute role { text } + db.errortype.attlist = + db.errortype.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.errortype = + + ## The classification of an error message + element errortype { db.errortype.attlist, db._text } +} +db.systemitem.inlines = db._text | db.co +div { + db.systemitem.class.enumeration = + + ## A daemon or other system process (syslogd) + "daemon" + | + ## A domain name (example.com) + "domainname" + | + ## An ethernet address (00:05:4E:49:FD:8E) + "etheraddress" + | + ## An event of some sort (SIGHUP) + "event" + | + ## An event handler of some sort (hangup) + "eventhandler" + | + ## A filesystem (ext3) + "filesystem" + | + ## A fully qualified domain name (my.example.com) + "fqdomainname" + | + ## A group name (wheel) + "groupname" + | + ## An IP address (127.0.0.1) + "ipaddress" + | + ## A library (libncurses) + "library" + | + ## A macro + "macro" + | + ## A netmask (255.255.255.192) + "netmask" + | + ## A newsgroup (comp.text.xml) + "newsgroup" + | + ## An operating system name (Hurd) + "osname" + | + ## A process (gnome-cups-icon) + "process" + | + ## A protocol (ftp) + "protocol" + | + ## A resource + "resource" + | + ## A server (mail.example.com) + "server" + | + ## A service (ppp) + "service" + | + ## A system name (hephaistos) + "systemname" + | + ## A user name (ndw) + "username" + db.systemitem.class.attribute = + + ## Identifies the nature of the system item + attribute class { db.systemitem.class.enumeration } + db.systemitem.role.attribute = attribute role { text } + db.systemitem.attlist = + db.systemitem.role.attribute? + & db.common.attributes + & db.common.linking.attributes + & db.systemitem.class.attribute? + db.systemitem = + + ## A system-related item or term + element systemitem { db.systemitem.attlist, db.systemitem.inlines* } +} +div { + db.option.role.attribute = attribute role { text } + db.option.attlist = + db.option.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.option = + + ## An option for a software command + element option { db.option.attlist, db._text } +} +div { + db.optional.role.attribute = attribute role { text } + db.optional.attlist = + db.optional.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.optional = + + ## Optional information + element optional { db.optional.attlist, db._text } +} +div { + db.property.role.attribute = attribute role { text } + db.property.attlist = + db.property.role.attribute? + & db.common.attributes + & db.common.linking.attributes + db.property = + + ## A unit of data associated with some part of a computer system + element property { db.property.attlist, db._text } +} +div { + db.xi.include.attlist = + attribute href { + xsd:anyURI { pattern = "[^#]+" } + }?, + [ a:defaultValue = "xml" ] attribute parse { "xml" | "text" }?, + attribute xpointer { text }?, + attribute encoding { text }?, + attribute accept { text }?, + attribute accept-language { text }? + db.xi.include = + + ## An XInclude + element xi:include { db.xi.include.attlist, db.xi.fallback? } +} +div { + # The fallback element has no attributes + db.xi.fallback = + + ## An XInclude fallback + element xi:fallback { db.all.blocks+ | db.all.inlines+ | db._any* } +} diff --git a/rng/docbookxi.rng b/rng/docbookxi.rng new file mode 100644 index 0000000..4450a3c --- /dev/null +++ b/rng/docbookxi.rng @@ -0,0 +1,15457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Any attribute including in any attribute in any namespace. + + + + + + Any element from almost any namespace + + + + + + + + + + + + + + + +
+ + + Designates the computer or chip architecture to which the element applies + + + + + Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users. + + + + + provides a standard place for application-specific effectivity + + + + + Indicates standards conformance characteristics of the element + + + + + Indicates the operating system to which the element is applicable + + + + + Indicates the editorial revision to which the element belongs + + + + + Indicates something about the security level associated with the element to which it applies + + + + + Indicates the level of user experience for which the element applies + + + + + Indicates the computer vendor to which the element applies. + + + + + Indicates the word size (width in bits) of the computer architecture to which the element applies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Points to the element whose content is to be used as the text of the link + + + + + + Points to an internal link target by identifying the value of its xml:id attribute + + + + + + Points to one or more internal link targets by identifying the value of their xml:id attributes + + + + + + Identifies a link target with a URI + + + + + + Identifies the XLink link type + simple + An XLink simple link + + + + + Identifies the XLink role of the link + + + + + + Identifies the XLink arcrole of the link + + + + + + + Identifies the XLink title of the link + + + + + + new + An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. + replace + 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. + embed + An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. + other + 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. + none + 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. + + + + + Identifies the XLink show behavior of the link + + + + + + onLoad + An application should traverse to the ending resource immediately on loading the starting resource. + onRequest + An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. + other + 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. + none + 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. + + + + + Identifies the XLink actuate behavior of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the unique ID value of the element + + + + + + Specifies the DocBook version of the element and its descendants + + + + + Specifies the natural language of the element and its descendants + + + + + Specifies the base URI of the element and its descendants + + + + + + Provides the name or similar semantic identifier assigned to the content in some previous markup scheme + + + + + Provides the text that is to be generated for a cross reference to the element + + + + + Specifies a keyword or keywords identifying additional style information + + + + + changed + The element has been changed. + added + The element is new (has been added to the document). + deleted + The element has been deleted. + off + Explicitly turns off revision markup for this element. + + + + + Identifies the revision status of the element + + + + + + ltr + Left-to-right text + rtl + Right-to-left text + lro + Left-to-right override + rlo + Right-to-left override + + + + + Identifies the direction of text in an element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the format of the data + + + + + Indentifies the location of the data by URI + + + + Identifies the location of the data by external identifier (entity name) + + + + + + + continues + Line numbering continues from the immediately preceding element with the same name. + restarts + Line numbering restarts (begins at 1, usually). + + + + + Determines whether line numbering continues from the previous element or restarts. + + + + + + numbered + Lines are numbered. + unnumbered + Lines are not numbered. + + + + + Determines whether lines are numbered. + + + + + + Specifies the initial line number. + + + + + + Identifies the language (i.e. programming language) of the verbatim content. + + + + + 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. + preserve + Whitespace must be preserved. + + + + + + + + + + + + + + + + + + + + + + + + Specifies an identifying string for presentation purposes + + + + + Specifies the width (in characters) of the element + + + + + + compact + The spacing should be "compact". + normal + The spacing should be "normal". + + + + + Specifies (a hint about) the spacing of the content + + + + + + 0 + The element should be rendered in the current text flow (with the flow column width). + 1 + The element should be rendered across the full text page. + + + + + Indicates if the element is rendered across the column or the page + + + + + + Identifies the language (i.e. programming language) of the content. + + + + + optional + The content describes an optional step or steps. + required + The content describes a required step or steps. + + + + + Specifies if the content is required or optional. + + + + + + Specifies style information to be used when rendering the float + + + + + Specifies the width of the element + + + + + Specifies the depth of the element + + + + + Specifies the width of the content rectangle + + + + + Specifies the depth of the content rectangle + + + + + 0 + False (do not scale-to-fit; anamorphic scaling may occur) + 1 + True (scale-to-fit; anamorphic scaling is forbidden) + + + + + Specifies the scaling factor + + + + + + center + Centered horizontally + char + Aligned horizontally on the specified character + justify + Fully justified (left and right margins or edges) + left + Left aligned + right + Right aligned + + + + + bottom + Aligned on the bottom of the region + middle + Centered vertically + top + Aligned on the top of the region + + + + + doi + A document object identifier. + isbn + An international standard book number. + isrn + An international standard technical report number (ISO 10444). + issn + An international standard serial number. + libraryofcongress + A Library of Congress reference number. + pubsnumber + A publication number (an internal number or possibly organizational standard). + uri + A Uniform Resource Identifier + + + + + + Identifies the kind of bibliographic identifier + + + + + + + Identifies the nature of the non-standard bibliographic identifier + + + + + + + Identifies the kind of bibliographic identifier + other + Indicates that the identifier is some 'other' kind. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text of the title of a section of a document or of a formal block-level element + + + + + + +
+
+ + + + + + + + + + + + + + + The abbreviation of a title + + + + + + +
+
+ + + + + + + + + + + + + + + The subtitle of a document + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block with only a required title + + + + + + + + + +
+
+ + + + + + + + + + + + + + A wrapper for information about a component or other block without a title + + + + + + +
+
+ + + + + + Identifies the controlled vocabulary used by this set's terms + + + + + + + + + + + + + + + + + + A set of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + Specifies a ranking for this subject relative to other subjects in the same set + + + + + + + + + + + + + + + + + One of a group of terms describing the subject matter of a document + + + + + + +
+
+ + + + + + + + + + + + + + + A term in a group of terms describing the subject matter of a document + + + + +
+
+ + + + + + + + + + + + + + + A set of keywords describing the content of a document + + + + + + +
+
+ + + + + + + + + + + + + + + One of a set of keywords describing the content of a document + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of operations to be performed in a well-defined sequence + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A unit of action in a procedure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + Alternative steps in a procedure + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for steps that occur within steps in a procedure + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A portion of a document that is isolated from the main narrative flow + + + sidebar must not occur in the descendants of sidebar + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A short description or note about a person + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A quotation set off from the main text + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The source of a block quote or epigraph + + + + + + + + + + + + +
+
+ + + sect1 + Render as a first-level section + sect2 + Render as a second-level section + sect3 + Render as a third-level section + sect4 + Render as a fourth-level section + sect5 + Render as a fifth-level section + + + + + + Indicates how the bridge head should be rendered + + + + + + + Identifies the nature of the non-standard rendering + + + + + + + Indicates how the bridge head should be rendered + other + Identifies a non-standard rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + A free-floating heading + + + + + + +
+
+ + + + + + + + + + + + + + + A remark (or comment) intended for presentation in a draft manuscript + + + + +
+
+ + + + + + + + + + + + + + + + + + A short inscription at the beginning of a document or component + + + + + + + + + + + + + +
+
+ + + + + + Identifies the desired footnote mark + + + + + + + + + + + + + + + + + + A footnote + + + footnote must not occur in the descendants of footnote + + + + + example must not occur in the descendants of footnote + + + + + figure must not occur in the descendants of footnote + + + + + table must not occur in the descendants of footnote + + + + + equation must not occur in the descendants of footnote + + + + + indexterm must not occur in the descendants of footnote + + + + + sidebar must not occur in the descendants of footnote + + + + + task must not occur in the descendants of footnote + + + + + epigraph must not occur in the descendants of footnote + + + + + caution must not occur in the descendants of footnote + + + + + important must not occur in the descendants of footnote + + + + + note must not occur in the descendants of footnote + + + + + tip must not occur in the descendants of footnote + + + + + warning must not occur in the descendants of footnote + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph with a title + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph + + + The root element must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A paragraph that contains only text and inline markup, no block elements + + + + + + + +
+
+ + + + + + Identifies the type of mark to be used on items in this list + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a bullet or other dingbat + + + + + + + + + + +
+
+ + + + + + continues + Specifies that numbering should begin where the preceding list left off + restarts + Specifies that numbering should begin again at 1 + + + + + Indicates how list numbering should begin relative to the immediately preceding list + + + + + + Specifies the initial line number. + + + + + + ignore + Specifies that numbering should ignore list nesting + inherit + Specifies that numbering should inherit from outer-level lists + + + + + Indicates whether or not item numbering should be influenced by list nesting + + + + + + arabic + Specifies Arabic numeration (1, 2, 3, …) + upperalpha + Specifies upper-case alphabetic numeration (A, B, C, …) + loweralpha + Specifies lower-case alphabetic numeration (a, b, c, …) + upperroman + Specifies upper-case Roman numeration (I, II, III, …) + lowerroman + Specifies lower-case Roman numeration (i, ii, iii …) + + + + + Indicates the desired numeration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is marked with a sequentially incremented label + + + + + + + + + + +
+
+ + + + + + 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 + + + + + + + + + + + + + + + + + + A wrapper for the elements of a list item + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A segmented list, a list of sets of elements + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of an element of a list item in a segmented list + + + + + + +
+
+ + + + + + + + + + + + + + + A list item in a segmented list + + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a list item in a segmented list + + + + + + +
+
+ + + + + + horiz + A tabular presentation in row-major order. + vert + A tabular presentation in column-major order. + inline + An inline presentation, usually a comma-delimited list. + + + + + Specifies the type of list presentation. + + + + + + Specifies the number of columns for horizontal or vertical presentation + + + + + + + + + + + + + + + + + + + + + An undecorated list of single words or short phrases + + + + + + +
+
+ + + + + + + + + + + + + + + An element of a simple list + + + + + + +
+
+ + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + A list in which each entry is composed of a set of one or more terms and an associated description + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for a set of terms and the associated description in a variable list + + + + + + + +
+
+ + + + + + + + + + + + + + + The word or phrase being defined or described in a variable list + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal example, with a title + + + example must not occur in the descendants of example + + + + + figure must not occur in the descendants of example + + + + + table must not occur in the descendants of example + + + + + equation must not occur in the descendants of example + + + + + caution must not occur in the descendants of example + + + + + important must not occur in the descendants of example + + + + + note must not occur in the descendants of example + + + + + tip must not occur in the descendants of example + + + + + warning must not occur in the descendants of example + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed example without a title + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + monospaced + The literal layout should be formatted with a monospaced font + normal + The literal layout should be formatted with the current font + + + + + Specifies the class of literal layout + + + + + + + + + + + + + + + + + + + A block of text in which line breaks and white space are to be reproduced faithfully + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + Text that a user sees or might see on a computer screen + + + + +
+
+ + + + + + + + + + + + + + + + + + A representation of what the user sees or might see on a computer screen + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal figure, generally an illustration, with a title + + + example must not occur in the descendants of figure + + + + + figure must not occur in the descendants of figure + + + + + table must not occur in the descendants of figure + + + + + equation must not occur in the descendants of figure + + + + + caution must not occur in the descendants of figure + + + + + important must not occur in the descendants of figure + + + + + note must not occur in the descendants of figure + + + + + tip must not occur in the descendants of figure + + + + + warning must not occur in the descendants of figure + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A untitled figure + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A displayed media object (video, audio, image, etc.) + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + An inline media object (video, audio, image, and so on) + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for video data and its associated meta-information + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for audio data and its associated meta-information + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for image data and its associated meta-information + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a text description of an object and its associated meta-information + + + + + + + + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the video data + + + + + + + + + Specifies the vertical alignment of the video data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external video data + + + + +
+
+ + + + + + + + + + + + + + + + + + Pointer to external audio data + + + + +
+
+ + + + + + + + + Specifies the (horizontal) alignment of the image data + + + + + + + + + Specifies the vertical alignment of the image data + + + + + + + + + + + + + + + + + + + + + Determines if anamorphic scaling is forbidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pointer to external image data + + + + +
+
+ + + + + + Identifies the encoding of the text in the external file + + + + + + + + + + + + + + + + + + + + Pointer to external text data + + + + +
+
+ + + + + + + + + + + + + + + + + + A caption + + + example must not occur in the descendants of caption + + + + + figure must not occur in the descendants of caption + + + + + table must not occur in the descendants of caption + + + + + equation must not occur in the descendants of caption + + + + + sidebar must not occur in the descendants of caption + + + + + task must not occur in the descendants of caption + + + + + caution must not occur in the descendants of caption + + + + + important must not occur in the descendants of caption + + + + + note must not occur in the descendants of caption + + + + + tip must not occur in the descendants of caption + + + + + warning must not occur in the descendants of caption + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A real-world address, generally a postal address + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A street address in an address + + + + +
+
+ + + + + + + + + + + + + + + A post office box in an address + + + + +
+
+ + + + + + + + + + + + + + + A postal code in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a city in an address + + + + +
+
+ + + + + + + + + + + + + + + A state or province in an address + + + + +
+
+ + + + + + + + + + + + + + + The name of a country + + + + +
+
+ + + + + + + + + + + + + + + A telephone number + + + + +
+
+ + + + + + + + + + + + + + + A fax number + + + + +
+
+ + + + + + + + + + + + + + + Uncategorized information in address + + + + +
+
+ + + + + + + + + + + + + + + The institutional affiliation of an individual + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A brief description of an affiliation + + + + +
+
+ + + + + + + + + + + + + + + The title of an individual in an organization + + + + +
+
+ + + consortium + A consortium + corporation + A corporation + informal + An informal organization + nonprofit + A non-profit organization + + + + + Specifies the nature of the organization + + + + + + Specifies the nature of the organization + other + Indicates a non-standard organization class + + + Identifies the non-standard nature of the organization + + + + + + + + + + + + + + + + + + + + + + + + + + The name of an organization + + + + +
+
+ + + + + + + + + + + + + + + A division of an organization + + + + + + +
+
+ + + + + + + + + + + + + + + The page numbers of an article as published + + + + +
+
+ + + + + + + + + + + + + + + The personal name of an individual + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The name of an individual author + + + + +
+
+ + + + + + + + + + + + + + + Wrapper for author information when a document has multiple authors or collabarators + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Identifies a collaborator + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initials or other short identifier for an author + + + + +
+
+ + + + + + + + + + + + + + + A person and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An organization and associated metadata + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for document meta-information about a conference + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The dates of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The title of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + An identifier, frequently numerical, associated with a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a conference for which a document was written + + + + +
+
+ + + + + + + + + + + + + + + The contract number of a document + + + + +
+
+ + + + + + + + + + + + + + + The sponsor of a contract + + + + +
+
+ + + + + + + + + + + + + + + Copyright information about a document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The year of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the individual or organization that holds a copyright + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + Additional content for the cover of a publication + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + The date of publication or revision of a document + + + + +
+
+ + + + + + + + + + + + + + + The name or number of an edition of a document + + + + +
+
+ + + + + + + + + + + + + + + The name of the editor of a document + + + + +
+
+ + + + + + + + + + + + + + + + An identifier for a document + + + + +
+
+ + + + + + + + + + + + + + + + A citation of a bibliographic identifier + + + + +
+
+ + + + + + + + + + + + + + + + The source of a document + + + + +
+
+ + + hasformat + The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format + haspart + The described resource includes the referenced resource either physically or logically + hasversion + The described resource has a version, edition, or adaptation, namely, the referenced resource + isformatof + The described resource is the same intellectual content of the referenced resource, but presented in another format + ispartof + The described resource is a physical or logical part of the referenced resource + isreferencedby + The described resource is referenced, cited, or otherwise pointed to by the referenced resource + isreplacedby + The described resource is supplanted, displaced, or superceded by the referenced resource + isrequiredby + The described resource is required by the referenced resource, either physically or logically + isversionof + The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format + references + The described resource references, cites, or otherwise points to the referenced resource + replaces + The described resource supplants, displaces, or supersedes the referenced resource + requires + The described resource requires the referenced resource to support its function, delivery, or coherence of content + + + + + + Identifies the type of relationship + + + + + + + + Identifies the type of relationship + othertype + The described resource has a non-standard relationship with the referenced resource + + + + A keyword that identififes the type of the non-standard relationship + + + + + + + + + + + + + + + + + + + + + + + + + + The relationship of a document to another + + + + +
+
+ + + dcmipoint + The DCMI Point identifies a point in space using its geographic coordinates + iso3166 + ISO 3166 Codes for the representation of names of countries + dcmibox + The DCMI Box identifies a region of space using its geographic limits + tgn + The Getty Thesaurus of Geographic Names + + + + + + Specifies the type of spatial coverage + + + + + + + + Specifies the type of spatial coverage + otherspatial + Identifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + dcmiperiod + A specification of the limits of a time interval + w3c-dtf + W3C Encoding rules for dates and times—a profile based on ISO 8601 + + + + + + Specifies the type of temporal coverage + + + + + + + + Specifies the type of temporal coverage + othertemporal + Specifies a non-standard type of coverage + + + + A keyword that identifies the type of non-standard coverage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The spatial or temporal coverage of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A statement of legal obligations or requirements + + + + + + + +
+
+ + + copyeditor + A copy editor + graphicdesigner + A graphic designer + other + Some other contributor + productioneditor + A production editor + technicaleditor + A technical editor + translator + A translator + + + + + + Identifies the nature of the contributor + + + + + + + Identifies the nature of the non-standard contribution + + + + + + + Identifies the nature of the contributor + other + Identifies a non-standard contribution + + + + + + + + + + + + + + + + + + + + + + + + + + A person or entity, other than an author or editor, credited in a document + + + + +
+
+ + + + + + + + + + + + + + + The numbers of the pages in a book, for use in a bibliographic entry + + + + +
+
+ + + + + + + + + + + + + + + A summary of the contributions made to a document by a credited source + + + + +
+
+ + + + + + + + + + + + + + + The title of a person + + + + +
+
+ + + + + + + + + + + + + + + The first name of a person + + + + +
+
+ + + + + + + + + + + + + + + A family name; in western cultures the last name + + + + +
+
+ + + + + + + + + + + + + + + The portion of a person's name indicating a relationship to ancestors + + + + +
+
+ + + + + + + + + + + + + + + A component of a persons name that is not a first name, surname, or lineage + + + + +
+
+ + + + + + + + + + + + + + + The printing history of a document + + + + + + +
+
+ + + + + + + + + + + + + + + The date of publication of a document + + + + +
+
+ + + + + + + + + + + + + + + The publisher of a document + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of the publisher of a document + + + + +
+
+ + + + + + + + + + + + + + + Information about a particular release of a document + + + + +
+
+ + + + + + + + + + + + + + + + + + A history of the revisions to a document + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry describing a single revision in the history of the revisions to a document + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A document revision number + + + + +
+
+ + + + + + + + + + + + + + + A description of a revision to a document + + + + +
+
+ + + + + + + + + + + + + + + A extended description of a revision to a document + + + + + + +
+
+ + + + + + + + + + + + + + + Numbers of the volumes in a series of books + + + + +
+
+ + + + + + + + + + + + + + + The volume number of a document in a set (as of books in a set or articles in a journal) + + + + +
+
+ + + + + + + + + + + + + + + The number of an issue of a journal + + + + +
+
+ + + + + + + + + + + + + + + A software or application package + + + + +
+
+ + + + + + + + + + + + + + + An email address + + + + +
+
+ + + + + + + + + + + + + + + A comment on a line in a verbatim listing + + + + +
+
+ + + command + A command + function + A function + option + An option + + + + + Identifies the class of parameter + + + + + + + + + + + + + + + + + + + + + A value or a symbolic reference to a value + + + + +
+ + + + + + +
+ + + command + A command + function + A function + option + An option + parameter + A parameter + + + + + Identifies the nature of the replaceable text + + + + + + + + + + + + + + + + + + + + + Content that may or must be replaced by the user + + + + + + +
+
+ + + + Identifies the type of URI specified + + + + + + + + + + + + + + + + + + + A Uniform Resource Identifier + + + + +
+
+ + + + + + + + + + + + + + + An abbreviation, especially one followed by a period + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An often pronounceable word made from the initial (or selected) letters of a name or phrase + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An inline bibliographic reference to another published work + + + + + + +
+
+ + + + + + + + + + + + + + + A citation to a reference page + + + + + + + +
+
+ + + + + + + + + + + + + + + The title of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A reference volume number + + + + +
+
+ + + article + An article + bbs + A bulletin board system + book + A book + cdrom + A CD-ROM + chapter + A chapter (as of a book) + dvd + A DVD + emailmessage + An email message + gopher + A gopher page + journal + A journal + manuscript + A manuscript + newsposting + A posting to a newsgroup + part + A part (as of a book) + refentry + A reference entry + section + A section (as of a book or article) + series + A series + set + A set (as of books) + webpage + A web page + wiki + A wiki page + + + + + Identifies the nature of the publication being cited + + + + + + + + + + + + + + + + + + + + + The title of a cited work + + + + + + +
+
+ + + + + + + + + + + + + + + Emphasized text + + + + + + +
+
+ + + A limited span of emphasized text + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A word or phrase in a language other than the primary language of the document + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A span of text + + + + + + +
+
+ + + A limited span of text + + + + +
+
+ + + + + + + + + + + + + + + An inline quotation + + + + + + +
+
+ + + + + + + + + + + + + + + A subscript (as in H2 +O, the molecular formula for water) + + + + +
+
+ + + + + + + + + + + + + + + A superscript (as in x^2, the mathematical notation for x multiplied by itself) + + + + +
+
+ + + copyright + A copyright + registered + A registered copyright + service + A service + trade + A trademark + + + + + Identifies the class of trade mark + + + + + + + + + + + + + + + + + + + + + A trademark + + + + +
+
+ + + + + + + + + + + + + + + A word meant specifically as a word and not representing anything else + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a footnote (a footnote mark) + + + @linkend on footnoteref must point to a footnote. + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A cross reference to another part of the document + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A hypertext link + + + + + + +
+
+ + + + + + + + + Holds additional information that may be used by the applicatoin when resolving the link + + + + + Specifies the URI of the document in which the link target appears + + + + + + Specifies the location of the link target in the document + + + + + Identifies application-specific customization of the link behavior + + + + + + + + + + + + + + + + + + + + + + + + + + + + A link that addresses its target indirectly + + + + + + +
+
+ + + + + + + + + + + + + + A spot in the document + + + + +
+
+ + + + + + + + + + + + + + A text-only annotation, often used for accessibility + + + + + + + + + +
+ + + Identifies the editorial or publication status of the element on which it occurs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of books + + + The root element must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A book + + + The root element must have a version attribute. + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + The dedication of a book or other component + + + The root element must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Acknowledgements of a book or other component + + + The root element must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Text at the back of a book describing facts about its production + + + The root element must have a version attribute. + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An appendix in a Book or Article + + + The root element must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A chapter, as of a book + + + The root element must have a version attribute. + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a book + + + The root element must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Introductory matter preceding the first chapter of a book + + + The root element must have a version attribute. + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An introduction to the contents of a part + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A recursive section + + + The root element must have a version attribute. + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a document with no subdivisions + + + + + + + +
+ + + +
+ + + + + + faq + A collection of frequently asked questions. + journalarticle + An article in a journal or other periodical. + productsheet + A description of a product. + specification + A specification. + techreport + A technical report. + whitepaper + A white paper. + + + + + Identifies the nature of the article + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An article + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + Identifies one or more annotations that apply to this element + + +
+ + + + + + Identifies one ore more elements to which this annotation applies + + + + + + + + + + + + + + + + + + + An annotation + + + annotation must not occur in the descendants of annotation + + + + + + + + + +
+ + + + Specifies the XLink traversal-from + + + + + + + + Specifies the XLink label + + + + + + + + Specifies the XLink traversal-to + + + + +
+ + + + + + + + + + + + Identifies the XLink link type + extended + An XLink extended link + + + + + + + + + + + + + An XLink extended link + + + + + + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + locator + An XLink locator link + + + + + + + + + + + + + + + + + An XLink locator in an extendedlink + + + + +
+
+ + + + + + + + + + + + Identifies the XLink link type + arc + An XLink arc link + + + + + + + + + + + + + + + + + + + + + + + + + An XLink arc in an extendedlink + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A top-level section of document + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect1 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect2 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect3 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection within a Sect4 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + A collection of reference entries + + + The root element must have a version attribute. + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A reference page (originally a UNIX man-style reference page) + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Meta-information for a reference entry + + + + + + + + + + + + + + + + +
+ + + source + The name of the software product or component to which this topic applies + version + The version of the software product or component to which this topic applies + manual + The section title of the reference page (e.g., User Commands) + sectdesc + The section title of the reference page (believed synonymous with "manual" but in wide use) + software + The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use) + + + + + + Identifies the kind of miscellaneous information + + + + + + + Identifies the nature of non-standard miscellaneous information + + + + + + Identifies the kind of miscellaneious information + other + Indicates that the information is some 'other' kind. + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + Meta-information for a reference entry other than the title and volume number + + + + +
+
+ + + + + + + + + + + + + + + The name, purpose, and classification of a reference page + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A description of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The name of (one of) the subject(s) of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + A short (one sentence) synopsis of the topic of a reference page + + + + + + +
+
+ + + + + + + + + + + + + + + The scope or other indication of applicability of a reference entry + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntactic synopsis of the subject of the reference page + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + A recursive section in a refentry + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A major subsection of a reference entry + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect1 + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A subsection of a refsect2 + + + The root element must have a version attribute. + + + + + + + + + +
+ + + + + + + + + + Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form. + + + +
+ + + + + + + + + + + + + + + + + + A wrapper for a list of glossary entries + + + + + + + + + + + + +
+
+ + + + + + Specifies the string by which the element's content is to be sorted; if unspecified, the content is used + + + + + + + + + + + + + + + + + An entry in a Glossary or GlossList + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + Specifies a list of keywords for the definition + + + + + + + + + + + + + + + + + A definition in a GlossEntry + + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one glossentry + to another + + + @otherterm on glosssee must point to a glossentry. + + + + + + + + +
+
+ + + + + + Identifies the other term + + + + + + + + + + + + + + + + + + A cross-reference from one GlossEntry to another + + + @otherterm on glossseealso must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + The first occurrence of a term + + + @linkend on firstterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A glossary term + + + @linkend on glossterm must point to a glossentry. + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A glossary + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in a Glossary + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + An inline definition of a term + + + A termdef must contain exactly one firstterm + + + + + + + + +
+ + + Identifies the relationship between the bibliographic elemnts + + +
+ + + + + + + + + + + + + + + An entry in a Bibliography + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in a Bibliography + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A raw container for related bibliographic information + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cooked container for related bibliographic information + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Untyped bibliographic information + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A bibliography + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A section of a Bibliography + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for a list of bibliography entries + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + The units (for example, pages) used to identify the beginning and ending of a reference. + + + + + + Identifies the beginning of a reference; the location within the work that is being referenced. + + + + + + Identifies the end of a reference. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cross-reference to a bibliographic entry + + + + +
+ + + normal + Normal + preferred + Preferred + + + + + Specifies the significance of the term + + + + + + Specifies the IDs of the elements to which this term applies + + + + + + Indicates the page on which this index term occurs in some version of the printed document + + + + + all + All indexes + global + The global index (as for a combined index of a set of box) + local + The local index (the index for this document only) + + + + + Specifies the scope of the index term + + + + + + Specifies the string by which the term is to be sorted; if unspecified, the term content is used + + + + + Specifies the target index for this term + + +
+ + + + + + + + + + + + + + + A set of index terms in the meta-information of a document + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Identifies the class of index term + singular + A singular index term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term + + + + +
+
+ + + + + + Identifies the class of index term + startofrange + The start of a range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for an indexed term that covers a range + + + + +
+
+ + + + + + Identifies the class of index term + endofrange + The end of a range + + + + + Points to the start of the range + + + + + + + + + + + + + + + + + Identifies the end of a range associated with an indexed term + + + + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary word or phrase under which an index term should be sorted + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A secondary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A tertiary word or phrase in an index term + + + + + + +
+
+ + + + + + + + + + + + + + + Part of an index term directing the reader instead to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + Part of an index term directing the reader also to another entry in the index + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a book or part of a book + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An index to a set of books + + + The root element must have a version attribute. + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A division in an index + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An entry in an index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + A primary term in an index entry, not in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A secondary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A tertiary term in an index entry, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See +entry in an index, rather than in the text + + + + + + +
+
+ + + + + + + + + + + + + + + + + A See also + entry in an index, rather than in the text + + + + + + +
+ + + Indicates the page on which this element occurs in some version of the printed document + + +
+ + + + + + + + + + + + + + + + + + A table of contents + + + The root element must have a version attribute. + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + A division in a table of contents + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A component title in a table of contents + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + A task to be completed + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A summary of a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The prerequisites for a task + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + Information related to a task + + + + + + + +
+ + + calspair + Coordinates expressed as a pair of CALS graphic coordinates. + linecolumn + Coordinates expressed as a line and column. + linecolumnpair + Coordinates expressed as a pair of lines and columns. + linerange + Coordinates expressed as a line range. + + + + + + Identifies the units used in the coords attribute The default units vary according to the type of callout specified: calspair + for graphics and linecolumn + for line-oriented elements. + + + + + + + + Indicates that non-standard units are used for this area +. In this case otherunits + must be specified. + other + Coordinates expressed in some non-standard units. + + + + Identifies the units used in the coords + attribute when the units + attribute is other +. This attribute is forbidden otherwise. + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + A list of callout +s + + + + + + + + + + +
+
+ + + + + + Identifies the areas described by this callout. + + + + + + + + + + + + + + + A called out + description of a marked Area + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A program listing with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + A collection of regions in a graphic or code example + + + + + + + + + +
+
+ + + + + + Point to the callout +s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.) + + + + + + Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute. + + + + + Provides the coordinates of the area. The coordinates must be interpreted using the units + specified. + + + + + + + + + + + + + + + + + + + + + + + + A region defined for a Callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + A region defined for a Callout in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of related areas in a graphic or code example + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A screen with associated areas used in callouts + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for an image object with callouts + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + The location of a callout embedded in text + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A cross reference to a co + + + + +
+
+ + + + + + + + + + + + + + + + + + A set of EBNF productions + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A production in a set of EBNF productions + + + + + + + + +
+
+ + + + + + + + + + + + + + + The left-hand side of an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + The right-hand side of an EBNF production + + + + + + + + + + + +
+
+ + + + + + Specifies a URI that points to a production +where the nonterminal + is defined + + + + + + + + + + + + + + + + A non-terminal in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A constraint in an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + A cross-reference to an EBNF production + + + + +
+
+ + + + + + + + + + + + + + + + + + The definition of a constraint in an EBNF production + + + + + + + +
+ + + Specifies the alignment character when align + is set to char +. + + + + + Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char + when align + is set to char +. + + 0 + 100 + + + + + + Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table. + + all + Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders. + bottom + Frame only the bottom of the table. + none + Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well. + sides + Frame the left and right sides of the table. + top + Frame the top of the table. + topbot + Frame the top and bottom of the table. + + + + + + Specifies the presence or absence of the column separator + + 0 + No column separator rule. + 1 + Provide a column separator rule on the right + + + + + + Specifies the presence or absence of the row separator + + 0 + No row separator rule. + 1 + Provide a row separator rule below + + + + + + Specifies the orientation of the table + + land + 90 degrees counter-clockwise from the rest of the text flow. + port + The same orientation as the rest of the text flow. + + + + + + Specifies the table style + + + + + Indicates whether or not the entries in the first column should be considered row headers + + firstcol + Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers). + norowheader + Indicates that entries in the first column have no special significance with respect to column headers. + + + + + + Specifies the horizontal alignment of text in an entry. + + center + Centered. + char + Aligned on a particular character. + justify + Left and right justified. + left + Left justified. + right + Right justified. + + + + + + Specifies the vertical alignment of text in an entry. + + bottom + Aligned on the bottom of the entry. + middle + Aligned in the middle. + top + Aligned at the top of the entry. + + + + + + Specifies a column specification by name. + + + + + Specifies a starting column by name. + + + + + Specifies a span by name. + + + + + + Specifies a starting column by name. + + + Specifies an ending column by name. + + + + + + + + + + + + + + Provides a name for a column specification. + + + + + Provides a name for a span specification. + + +
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A wrapper for the main content of a table, or part of a table + + + + + + + + + + + + + + + + +
+
+ + + + + + The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one. + + + + + + Specifies the width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifications for a column in a table + + + + +
+
+ + + + + + Specifies a starting column by name. + + + + + Specifies an ending column by name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Formatting information for a spanned column in a table + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table footer consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + + + + +
+
+ + + + + + Specifies the number of additional rows which this entry occupies. Defaults to zero. + + + + + + Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated. + + 0 + Do not rotate the cell. + 1 + Rotate the cell 90 degrees counter-clockwise. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A cell in a table + + + + + + + + + + + +
+
+ + + + + + Additional style information for downstream processing; typically the name of a style. + + + + + The number of columns in the entry table. Must be an integer greater than zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subtable appearing in place of an Entry in a table + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A table header consisting of one or more rows + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A wrapper for the rows of a table or informal table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + A row in a table + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates if the short or long title should be used in a List of Tables + + 0 + Indicates that the full title should be used. + 1 + Indicates that the short short title (titleabbrev) should be used. + + + + + + Indicates if the table should appear in a List of Tables + + 0 + Indicates that the table should not occur in the List of Tables. + 1 + Indicates that the table should appear in the List of Tables. + + + + + + + + + + + + + + A formal table in a document + + + example must not occur in the descendants of table + + + + + figure must not occur in the descendants of table + + + + + equation must not occur in the descendants of table + + + + + informaltable must not occur in the descendants of table + + + + + caution must not occur in the descendants of table + + + + + important must not occur in the descendants of table + + + + + note must not occur in the descendants of table + + + + + tip must not occur in the descendants of table + + + + + warning must not occur in the descendants of table + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A table without a title + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters. + + + + + This attribute specifies style information for the current element. + + + + + This attribute offers advisory information about the element for which it is set. + + + + + + + + This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown. + + + + + + + + Occurs when the pointing device button is clicked over an element. + + + + + Occurs when the pointing device button is double clicked over an element. + + + + + Occurs when the pointing device button is pressed over an element. + + + + + Occurs when the pointing device button is released over an element. + + + + + Occurs when the pointing device is moved onto an element. + + + + + Occurs when the pointing device is moved while it is over an element. + + + + + Occurs when the pointing device is moved away from an element. + + + + + Occurs when a key is pressed and released over an element. + + + + + Occurs when a key is pressed down over an element. + + + + + Occurs when a key is released over an element. + + + + + + + + + + + + + + + + + Specifies the alignment of data and the justification of text in a cell. + + left + Left-flush data/Left-justify text. This is the default value for table data. + center + Center data/Center-justify text. This is the default value for table headers. + right + Right-flush data/Right-justify text. + justify + Double-justify text. + char + Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified. + + + + + + This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute. + + + + + When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute. + + + + [0-9]+% + + + + + + + + + + Specifies the vertical position of data within a cell. + + top + Cell data is flush with the top of the cell. + middle + Cell data is centered vertically within the cell. This is the default value. + bottom + Cell data is flush with the bottom of the cell. + baseline + All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells. + + + + + + + + + Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille. + + + + + Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent. + + + + [0-9]+% + + + + + + + Specifies the width (in pixels only) of the frame around a table. + + + + + + Specifies which sides of the frame surrounding a table will be visible. + + void + No sides. This is the default value. + above + The top side only. + below + The bottom side only. + hsides + The top and bottom sides only. + lhs + The left-hand side only. + rhs + The right-hand side only. + vsides + The right and left sides only. + box + All four sides. + border + All four sides. + + + + + + Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent. + + none + No rules. This is the default value. + groups + Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only. + rows + Rules will appear between rows only. + cols + Rules will appear between columns only. + all + Rules will appear between all rows and columns. + + + + + + Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells. + + + + [0-9]+% + + + + + + + Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space. + + + + [0-9]+% + + + + + + + + + + + Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content. + + + + + This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details. + + + + + Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets. + + + + + Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables. + + row + The current cell provides header information for the rest of the row that contains it + col + The current cell provides header information for the rest of the column that contains it. + rowgroup + The header cell provides header information for the rest of the row group that contains it. + colgroup + The header cell provides header information for the rest of the column group that contains it. + + + + + + Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all rows from the current row to the last row of the table section (thead +, tbody +, or tfoot +) in which the cell is defined. + + + + + + Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1 +). The value zero (0 +) means that the cell spans all columns from the current column to the last column of the column group (colgroup +) in which the cell is defined. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A formal (captioned) HTML table in a document + + + example must not occur in the descendants of table + + + + + figure must not occur in the descendants of table + + + + + equation must not occur in the descendants of table + + + + + informaltable must not occur in the descendants of table + + + + + caution must not occur in the descendants of table + + + + + important must not occur in the descendants of table + + + + + note must not occur in the descendants of table + + + + + tip must not occur in the descendants of table + + + + + warning must not occur in the descendants of table + + + + + + +
+
+ + + + + + + + + An HTML table without a title + + + + +
+
+ + + + + + An HTML table caption + + + example must not occur in the descendants of caption + + + + + figure must not occur in the descendants of caption + + + + + table must not occur in the descendants of caption + + + + + equation must not occur in the descendants of caption + + + + + sidebar must not occur in the descendants of caption + + + + + task must not occur in the descendants of caption + + + + + caution must not occur in the descendants of caption + + + + + important must not occur in the descendants of caption + + + + + note must not occur in the descendants of caption + + + + + tip must not occur in the descendants of caption + + + + + warning must not occur in the descendants of caption + + + + + + + + +
+
+ + + + + + This attribute, whose value must be an integer > 0, specifies the number of columns spanned + by the col + element; the col + element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col + element shares its attributes with the next N-1 columns. + + + + + + Specifies a default width for each column spanned by the current col + element. It has the same meaning as the width + attribute for the colgroup + element and overrides it. + + + + + + + + + Specifications for a column in an HTML table + + + + +
+
+ + + + + + This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup + defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup + element defines a column group containing N columns. User agents must ignore this attribute if the colgroup + element contains one or more col + elements. + + + + + + This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0* + (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0* + will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col + element. + + + + + + + + + A group of columns in an HTML table + + + + + + +
+
+ + + + + + + + + + A table header consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A table footer consisting of one or more rows in an HTML table + + + + + + +
+
+ + + + + + + + + + A wrapper for the rows of an HTML table or informal HTML table + + + + + + +
+
+ + + + + + + + + + A row in an HTML table + + + + + + + + + +
+
+ + + + + + + + + + + A table header entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + A table entry in an HTML table + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A detailed set of messages, usually error messages + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A wrapper for an entry in a message set + + + + + + + + + + + + +
+
+ + + + + + The audience to which the message relevant + + + + + The origin of the message + + + + + The level of importance or severity of a message + + + + + + + + + + + + + + + + + + + + + + + A wrapper for a simpler entry in a message set + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A message in a message set + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + The primary component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A subcomponent of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + + + + A related component of a message in a message set + + + + + +
+
+ + + + + + + + + + + + + + + The actual text of a message component in a message set + + + + + + +
+
+ + + + + + + + + + + + + + + Information about a message in a message set + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The level of importance or severity of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The origin of a message in a message set + + + + +
+
+ + + + + + + + + + + + + + + The audience to which a message in a message set is relevant + + + + +
+
+ + + + + + + + + + + + + + + + + + Explanatory material relating to a message in a message set + + + + + + + +
+
+ + + + + + none + No labels + number + Numeric labels + qanda + "Q:" and "A:" labels + + + + + Specifies the default labelling + + + + + + + + + + + + + + + + + + + + + A question-and-answer set + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A titled division in a QandASet + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A question/answer set within a QandASet + + + + + + + + +
+
+ + + + + + + + + + + + + + + A question in a QandASet + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An answer to a question posed in a QandASet + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A label on a Question or Answer + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A displayed mathematical equation + + + example must not occur in the descendants of equation + + + + + figure must not occur in the descendants of equation + + + + + table must not occur in the descendants of equation + + + + + equation must not occur in the descendants of equation + + + + + caution must not occur in the descendants of equation + + + + + important must not occur in the descendants of equation + + + + + note must not occur in the descendants of equation + + + + + tip must not occur in the descendants of equation + + + + + warning must not occur in the descendants of equation + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A displayed mathematical equation without a title + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical equation or expression occurring inline + + + + + + + +
+
+ + + + + + + + + + + + + + + A mathematical phrase, an expression that can be represented with ordinary text and a small amount of markup + + + + + + + + + + +
+
+ + + + + + + + + + + + Specifies that the format of the data is MathML + mathml + Specifies MathML. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A MathML expression in a media object + + + + + + + +
+
+ + + Any element from the MathML namespace + + + + + + + + + + +
+
+ + + + + + + + + + + + Specifies that the format of the data is SVG + svg + Specifies SVG. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An SVG drawing in a media object + + + + + + + +
+
+ + + Any element from the SVG namespace + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A string of formatting markup in text that is to be represented literally + + + + +
+
+ + + + + + attribute + An attribute + attvalue + An attribute value + element + An element + emptytag + An empty element tag + endtag + An end tag + genentity + A general entity + localname + The local name part of a qualified name + namespace + A namespace + numcharref + A numeric character reference + paramentity + A parameter entity + pi + A processing instruction + prefix + The prefix part of a qualified name + comment + An SGML comment + starttag + A start tag + xmlpi + An XML processing instruction + + + + + Identifies the nature of the tag content + + + + + + Identifies the namespace of the tag content + + + + + + + + + + + + + + + + + + + + + A component of XML (or SGML) markup + + + + +
+
+ + + Identifies the class of symbol + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A name that is replaced by a value before processing + + + + +
+
+ + + + + + + + + + + + + + + A unit of information + + + + +
+
+ + + + + + + + + + + + + + + Inline text that is some literal value + + + + +
+
+ + + Identifies the (computer) language of the code fragment + + + + + + + + + + + + + + + + + + + + An inline code fragment + + + + + + + + + +
+
+ + + Identifies the class of constant + limit + The value is a limit of some kind + + + + + + + + + + + + + + + + + + + + A programming or system constant + + + + +
+
+ + + + + + copyright + A name with a copyright + registered + A name with a registered copyright + service + A name of a service + trade + A name which is trademarked + + + + + Specifies the class of product name + + + + + + + + + + + + + + + + + + The formal name of a product + + + + +
+
+ + + + + + + + + + + + + + + A number assigned to a product + + + + +
+
+ + + altkey + An alternate or secondary key + constraint + A constraint + datatype + A data type + field + A field + foreignkey + A foreign key + group + A group + index + An index + key1 + The first or primary key + key2 + An alternate or secondary key + name + A name + primarykey + The primary key + procedure + A (stored) procedure + record + A record + rule + A rule + secondarykey + The secondary key + table + A table + user + A user + view + A view + + + + + Identifies the class of database artifact + + + + + + + + + + + + + + + + + + + + + The name of a database, or part of a database + + + + +
+
+ + + hardware + A hardware application + software + A software application + + + + + Identifies the class of application + + + + + + + + + + + + + + + + + + + + + The name of a software program + + + + +
+
+ + + + + + + + + + + + + + + A physical part of a computer system + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + The text on a button in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Graphic and/or text appearing as a icon in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The text of a label in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a menu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a terminal menu item in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a submenu in a GUI + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A selection or series of selections from a menu + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The conventional name of a mouse button + + + + +
+ + + + + + + + + + +
+ + + alt + The "Alt" key + backspace + The "Backspace" key + command + The "Command" key + control + The "Control" key + delete + The "Delete" key + down + The down arrow + end + The "End" key + enter + The "Enter" or "Return" key + escape + The "Escape" key + home + The "Home" key + insert + The "Insert" key + left + The left arrow + meta + The "Meta" key + option + The "Option" key + pagedown + The page down key + pageup + The page up key + right + The right arrow + shift + The "Shift" key + space + The spacebar + tab + The "Tab" key + up + The up arrow + + + + + + Identifies the function key + + + + + + + + Identifies the function key + other + Indicates a non-standard function key + + + + Specifies a keyword that identifies the non-standard key + + + + + + + + + + + + + + + + + + + + + + + + The text printed on a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + The internal, frequently numeric, identifier for a key on a keyboard + + + + +
+ + + + + + + + + + +
+ + + click + A (single) mouse click. + double-click + A double mouse click. + press + A mouse or key press. + seq + Sequential clicks or presses. + simul + Simultaneous clicks or presses. + + + + + + Identifies the nature of the action taken. If keycombo + contains more than one element, simul + is the default, otherwise there is no default. + + + + + + + + Identifies the nature of the action taken + other + Indicates a non-standard action + + + + Identifies the non-standard action in some unspecified way. + + + + + + + + + + + + + + + + + + + + + + + + A combination of input actions + + + + + + +
+
+ + + + + + + + + + + + + + + The symbolic name of a key on a keyboard + + + + +
+
+ + + + + + + + + + + + + + + A graphical user interface (GUI) keyboard shortcut + + + + +
+
+ + + + + + + + + + + + + + + + + + + A key combination for an action that is also accessible through a menu + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A character or string indicating the start of an input field in a computer display + + + + + + +
+
+ + + + + + + + + + + + + + + A software environment variable + + + + +
+
+ + + devicefile + A device + directory + A directory + extension + A filename extension + headerfile + A header file (as for a programming language) + libraryfile + A library file + partition + A partition (as of a hard disk) + symlink + A symbolic link + + + + + Identifies the class of filename + + + + + + Specifies the path of the filename + + + + + + + + + + + + + + + + + + + + + + + The name of a file + + + + +
+
+ + + + + + + + + + + + + + + The name of an executable program or other software command + + + + +
+
+ + + + + + + + + + + + + + + Data, generally text, displayed or presented by a computer + + + + + + +
+
+ + + + + + + + + + + + + + + Data entered by the user + + + + + + +
+
+ + + + + + Specifies the character that should separate the command and its top-level arguments + + + + + Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A syntax summary for a software command + + + + + + + + + + + + + + + +
+ + + norepeat + Can not be repeated. + repeat + Can be repeated. + + + + + Indicates whether or not repetition is possible. + + + + + + opt + Formatted to indicate that it is optional. + plain + Formatted without indication. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + Indicates optionality. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + An argument in a CmdSynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + A group of elements in a CmdSynopsis + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + An explicit line break in a command synopsis + + + + +
+
+ + + + + + + + + + + + + + + A portion of a CmdSynopsis broken out from the main body of the synopsis + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A reference to a fragment of a command synopsis + + + @linkend on synopfragmentref must point to a synopfragment. + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + A general-purpose element for representing the syntax of commands or functions + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + The syntax summary for a function definition + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the FuncDefs of a FuncSynopsis + + + + +
+
+ + + + + + + + + + + + + + + The prototype of a function + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + A function (subroutine) name and its return type + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a function or subroutine, as in a programming language + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating that the function in question takes no arguments + + + + +
+
+ + + + + + + + + + + + + + + An empty element in a function synopsis indicating a variable number of arguments + + + + +
+
+ + + + + + opt + Formatted to indicate that it is optional. + req + Formatted to indicate that it is required. + + + + + Indicates optionality. + + + + + + + + + + + + + + + + + + Information about a function parameter in a programming language + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + Parameters for a function referenced through a function pointer in a synopsis + + + + +
+
+ + + + + + class + This is the synopsis of a class + interface + This is the synopsis of an interface + + + + + Specifies the nature of the synopsis + + + + + + + + + + + + + + + + + + + + + The syntax summary for a class definition + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + Information supplementing the contents of a ClassSynopsis + + + + +
+
+ + + + + + + + + + + + + + + A class in an object-oriented programming language + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An interface in an object-oriented programming language + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + An exception in an object-oriented programming language + + + + + + + + + + +
+ + + Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example). + preserve + Extra whitespace and line breaks must be preserved. + + + +
+ + + + + + + + + + + + + + + + + + Modifiers in a synopsis + + + + +
+
+ + + + + + + + + + + + + + + The name of an interface + + + + +
+
+ + + + + + + + + + + + + + + The name of an exception + + + + +
+
+ + + + + + + + + + + + + + + + + + The name of a field in a class definition + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The initializer for a FieldSynopsis + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntax summary for a constructor + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntax summary for a destructor + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + A syntax summary for a method + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a method + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters to a method + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + The name of a variable + + + + +
+
+ + + + + + + + + + + + + + + The value returned by a function + + + + +
+
+ + + + + + + + + + + + + + + The classification of a value + + + + +
+
+ + + + + + + + + + + + + + + The name of a class, in the object-oriented programming sense + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + A literal listing of all or part of a program + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + A note of caution + + + caution must not occur in the descendants of caution + + + + + important must not occur in the descendants of caution + + + + + note must not occur in the descendants of caution + + + + + tip must not occur in the descendants of caution + + + + + warning must not occur in the descendants of caution + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + + caution must not occur in the descendants of important + + + + + important must not occur in the descendants of important + + + + + note must not occur in the descendants of important + + + + + tip must not occur in the descendants of important + + + + + warning must not occur in the descendants of important + + + + + + +
+
+ + + + + + + + + + + + + + + A message set off from the text + + + caution must not occur in the descendants of note + + + + + important must not occur in the descendants of note + + + + + note must not occur in the descendants of note + + + + + tip must not occur in the descendants of note + + + + + warning must not occur in the descendants of note + + + + + + +
+
+ + + + + + + + + + + + + + + A suggestion to the user, set off from the text + + + caution must not occur in the descendants of tip + + + + + important must not occur in the descendants of tip + + + + + note must not occur in the descendants of tip + + + + + tip must not occur in the descendants of tip + + + + + warning must not occur in the descendants of tip + + + + + + +
+
+ + + + + + + + + + + + + + + An admonition set off from the text + + + caution must not occur in the descendants of warning + + + + + important must not occur in the descendants of warning + + + + + note must not occur in the descendants of warning + + + + + tip must not occur in the descendants of warning + + + + + warning must not occur in the descendants of warning + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + An error code + + + + +
+
+ + + + + + + + + + + + + + + An error name + + + + +
+
+ + + + + + + + + + + + + + + An error message. + + + + +
+
+ + + + + + + + + + + + + + + The classification of an error message + + + + +
+ + + + + + +
+ + + daemon + A daemon or other system process (syslogd) + domainname + A domain name (example.com) + etheraddress + An ethernet address (00:05:4E:49:FD:8E) + event + An event of some sort (SIGHUP) + eventhandler + An event handler of some sort (hangup) + filesystem + A filesystem (ext3) + fqdomainname + A fully qualified domain name (my.example.com) + groupname + A group name (wheel) + ipaddress + An IP address (127.0.0.1) + library + A library (libncurses) + macro + A macro + netmask + A netmask (255.255.255.192) + newsgroup + A newsgroup (comp.text.xml) + osname + An operating system name (Hurd) + process + A process (gnome-cups-icon) + protocol + A protocol (ftp) + resource + A resource + server + A server (mail.example.com) + service + A service (ppp) + systemname + A system name (hephaistos) + username + A user name (ndw) + + + + + Identifies the nature of the system item + + + + + + + + + + + + + + + + + + + + + A system-related item or term + + + + + + +
+
+ + + + + + + + + + + + + + + An option for a software command + + + + +
+
+ + + + + + + + + + + + + + + Optional information + + + + +
+
+ + + + + + + + + + + + + + + A unit of data associated with some part of a computer system + + + + +
+
+ + + + + [^#]+ + + + + + + + xml + text + + + + + + + + + + + + + + + + + + + An XInclude + + + + + + +
+
+ + + + An XInclude fallback + + + + + + + + + + + + + +
+
diff --git a/sch/docbook.sch b/sch/docbook.sch new file mode 100644 index 0000000..f6d3d50 --- /dev/null +++ b/sch/docbook.sch @@ -0,0 +1,247 @@ + + + + + + @linkend on firstterm must point to a glossentry. + + + + + @linkend on footnoteref must point to a footnote. + + + + + @linkend on glossterm must point to a glossentry. + + + + + @linkend on synopfragmentref must point to a synopfragment. + + + + + @otherterm on glosssee must point to a glossentry. + + + + + @otherterm on glossseealso must point to a glossentry. + + + + + A termdef must contain exactly one firstterm + + + + + The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist + + + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + The root element must have a version attribute. + + + + + annotation must not occur in the descendants of annotation + + + caution must not occur in the descendants of caution + important must not occur in the descendants of caution + note must not occur in the descendants of caution + tip must not occur in the descendants of caution + warning must not occur in the descendants of caution + + + caution must not occur in the descendants of important + important must not occur in the descendants of important + note must not occur in the descendants of important + tip must not occur in the descendants of important + warning must not occur in the descendants of important + + + caution must not occur in the descendants of note + important must not occur in the descendants of note + note must not occur in the descendants of note + tip must not occur in the descendants of note + warning must not occur in the descendants of note + + + caution must not occur in the descendants of tip + important must not occur in the descendants of tip + note must not occur in the descendants of tip + tip must not occur in the descendants of tip + warning must not occur in the descendants of tip + + + caution must not occur in the descendants of warning + important must not occur in the descendants of warning + note must not occur in the descendants of warning + tip must not occur in the descendants of warning + warning must not occur in the descendants of warning + + + caution must not occur in the descendants of caption + equation must not occur in the descendants of caption + example must not occur in the descendants of caption + figure must not occur in the descendants of caption + important must not occur in the descendants of caption + note must not occur in the descendants of caption + sidebar must not occur in the descendants of caption + table must not occur in the descendants of caption + task must not occur in the descendants of caption + tip must not occur in the descendants of caption + warning must not occur in the descendants of caption + + + caution must not occur in the descendants of equation + equation must not occur in the descendants of equation + example must not occur in the descendants of equation + figure must not occur in the descendants of equation + important must not occur in the descendants of equation + note must not occur in the descendants of equation + table must not occur in the descendants of equation + tip must not occur in the descendants of equation + warning must not occur in the descendants of equation + + + caution must not occur in the descendants of example + equation must not occur in the descendants of example + example must not occur in the descendants of example + figure must not occur in the descendants of example + important must not occur in the descendants of example + note must not occur in the descendants of example + table must not occur in the descendants of example + tip must not occur in the descendants of example + warning must not occur in the descendants of example + + + caution must not occur in the descendants of figure + equation must not occur in the descendants of figure + example must not occur in the descendants of figure + figure must not occur in the descendants of figure + important must not occur in the descendants of figure + note must not occur in the descendants of figure + table must not occur in the descendants of figure + tip must not occur in the descendants of figure + warning must not occur in the descendants of figure + + + caution must not occur in the descendants of table + equation must not occur in the descendants of table + example must not occur in the descendants of table + figure must not occur in the descendants of table + important must not occur in the descendants of table + informaltable must not occur in the descendants of table + note must not occur in the descendants of table + tip must not occur in the descendants of table + warning must not occur in the descendants of table + + + caution must not occur in the descendants of footnote + epigraph must not occur in the descendants of footnote + equation must not occur in the descendants of footnote + example must not occur in the descendants of footnote + figure must not occur in the descendants of footnote + footnote must not occur in the descendants of footnote + important must not occur in the descendants of footnote + indexterm must not occur in the descendants of footnote + note must not occur in the descendants of footnote + sidebar must not occur in the descendants of footnote + table must not occur in the descendants of footnote + task must not occur in the descendants of footnote + tip must not occur in the descendants of footnote + warning must not occur in the descendants of footnote + + + sidebar must not occur in the descendants of sidebar + + + \ No newline at end of file diff --git a/tools/db4-entities.pl b/tools/db4-entities.pl new file mode 100644 index 0000000..8fb4a39 --- /dev/null +++ b/tools/db4-entities.pl @@ -0,0 +1,65 @@ +#!/usr/bin/perl -- # -*- Perl -*- + +# This script attempts to replace external parsed entities with +# XInclude elements. + +use strict; +use English; + +my $usage = "$0 input.xml\n"; + +my $file = shift @ARGV || die $usage; +die $usage unless -f $file; + +my %epe = (); + +open (F, $file); +read (F, $_, -s $file); +close (F); + +if (/^<\?xml\s.*?\?>\s*/) { + print $MATCH; + $_ = $POSTMATCH; +} + +my $body = ""; + +if (/^]+\[/s) { + print $MATCH; + $_ = $POSTMATCH; + if (/^(.*?)\]/s) { + print $MATCH; + $body = $POSTMATCH; + $_ = $1; + + while (/^\s*(<.*?>)/s) { + my $decl = $1; + $_ = $POSTMATCH; + + if ($decl =~ /"; + } else { + print "&$2;"; + } + + $body = $POSTMATCH; +} + +print $body; diff --git a/tools/db4-upgrade.xsl b/tools/db4-upgrade.xsl new file mode 100644 index 0000000..00096be --- /dev/null +++ b/tools/db4-upgrade.xsl @@ -0,0 +1,1398 @@ + + + + + + + + + + + + + + + + + UNKNOWN + + + + + + + + + + + + Converted by db4-upgrade version + + + + + + + + + + + + + + + + + + Check + + title. + + + + + + + + + + + + + + + Check + + : no title. + + + + + + + + + + + Check + + titleabbrev. + + + + + + + + + + + + + + + + + + + Check + + subtitle. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check + + title. + + + + + + + + + + + + + + + + + + + + + + Check + + titleabbrev. + + + + + + + + + + + + + + + + + + + Check + + subtitle. + + + + + + + + + + + + + + + + + + + + + + + + + + Discarding title from refentryinfo! + + + + + + + + Discarding titleabbrev from refentryinfo! + + + + + + + + Discarding subtitle from refentryinfo! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dropping class attribute from productname + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert equation without title to informal equation. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check conversion of srccredit + (othercredit="srccredit"). + + + + + ??? + + + + + + + + + + + + + + comment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converting invpartnumber to biblioid otherclass="invpartnumber". + + + + + + + + + + + + + + Converting contractsponsor to othercredit="contractsponsor". + + + + + + + + + + + + + + + + + + + + + Converting contractnum to othercredit="contractnum". + + + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check conversion of collabname + (orgname role="collabname"). + + + + + + + + + + + + Discarding modespec ( + + ). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check conversion of contrib + (othercontrib="contrib"). + + + + ??? + + + + + + + + + + + + + + + + + + + + Converting ulink to link. + + + + + + + + + + + + + + Converting ulink to uri. + + + + + + + + + + + + + + + + + + Discarding linkmode on olink. + + + + + + + + + Converting olink targetdocent to targetdoc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -01- + + + + + -02- + + + + + -03- + + + + + -04- + + + + + -05- + + + + + -06- + + + + + -07- + + + + + -08- + + + + + -09- + + + + + -10- + + + + + -11- + + + + + -12- + + + + + + + + + + + + -01- + + + + + -02- + + + + + -03- + + + + + -04- + + + + + -05- + + + + + -06- + + + + + -07- + + + + + -08- + + + + + -09- + + + + + -10- + + + + + -11- + + + + + -12- + + + + + + + + + + + + + + + + + + Converted + + into + + for + + + + + + + + + + + + + + Unparseable date: + + in + + (Using default: + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check abstract; moved into info correctly? + + + + + + + + + + + significance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + beginpage pagenum= + + + Replacing beginpage with comment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Discarding moreinfo on + + + + + + + + + + + + + + + + + + + + + Discarding float on + + + + + + + Adding floatstyle='normal' on + + + + + normal + + + + + + + Discarding float on + + + + + + + + Discarding float on + + + + + + + Adding floatstyle=' + + ' on + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converting refmiscinfo@role=type to + @class=other,otherclass=type + + + other + type + + + + + + + + + + + + + + + + + 5.0 + + + + + + + + + 5.0 + + + + + + + + + + + + + + + + + + + ( + + ) + + + +
diff --git a/xsd/docbook.xsd b/xsd/docbook.xsd new file mode 100644 index 0000000..42b9b0e --- /dev/null +++ b/xsd/docbook.xsd @@ -0,0 +1,17458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsd/xlink.xsd b/xsd/xlink.xsd new file mode 100644 index 0000000..ff9a7c1 --- /dev/null +++ b/xsd/xlink.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsd/xml.xsd b/xsd/xml.xsd new file mode 100644 index 0000000..c6e9c46 --- /dev/null +++ b/xsd/xml.xsd @@ -0,0 +1,13 @@ + + + + + + + + + + + + +