<!-- DTBook DTD v2005-3 2007-12-19 file: dtbook-2005-3.dtd The following identifiers apply to this DTD: "-//NISO//DTD dtbook 2005-3//EN" "http://www.daisy.org/z3986/2005/dtbook-2005-3.dtd"> --> <!--jpritchett@rfbd.org: 2007-12-19 Changes that update to version 2005-3, per committee decisions Issue numbers noted in change log below refer to Z39.86 issue tracker at http://www.daisy.org/z3986/issues/ --> <!--jpritchett@rfbd.org: 2006-09-08 Changes that update to version 2005-2, per committee decisions Issue numbers noted in change log below refer to Z39.86 issue tracker at http://www.daisy.org/z3986/issues/ --> <!--HB: 2004-03-25 - 2004-04-28 Changes that update dtbook 1.1.0 Document Type Declaration: When the change date is followed by "nn:" or "nna" that represents the number/letter code on the change list supplied from Michael Moodie on that date. Additional changes not so noted have been made in discussion with Michael Moodie. These changes have been made by Harvey Bingham. --> <!--HB: 2004-04-15 Editorial revisions made at the group meeting 2004-04-15 --> <!-- Original authors: Harvey Bingham George Kerscher Michael Moodie David Pawson Assisted by DAISY Consortium and NISO DTB Committee work teams. 1. Purpose The Digital Talking Book Document Type Definition (DTD) provides the means to mark up the text of a document to permit support for the combination of professional narration and navigation into that narration. It also facilitates the output of a document's content in a variety of accessible formats. The markup tags in the book convey its content in structure, and contain some metadata about the book content and its structure. The Document Type Definition names and defines the allowable element types, their allowable content, and their attributes. Correct markup of the text of the book permits the textual material to be synchronized using SMIL [SMIL2.0] files with the professionally narrated version of that book. The synchronization can permit concurrent display of the text being narrated. The textual content can be searched in context to locate material desired for narration. More detailed documentation of this dtbook dtd [DTBOOKV20053DTD] is available as an html document. See [DTBOOKV20053DOC]. 1.1. Prior Related Work The DAISY (Digital Accessible Information SYstem) Consortium contributed substantially to the development of this DTD. This application of XML is the next generation after several DAISY versions of 2.X specifications, see [DAISY202]. The DAISY Statement of Principles for the Creation and Production of Accessible Books and Materials [DAISY-2-GUIDELINES] represents the minimum standard to be met by Libraries of the Blind and producers of alternative format materials. Its Navigation Control Center (NCC) provided for synchronizing document structure with narration. The NCC evolved into an XML application called the "Navigation Control File for XML applications" (NCX). Its content is derived from the markup of documents tagged using the dtbook DTD. Richer structuring capability is one of the objectives of that DTD. The Synchronized Multimedia Integration Language [SMIL2.0] is used to provide synchronized narrations and text. The NCX provides navigation using the identified elements of documents tagged to this DTD. The dtbook DTD includes many, but not all, of the element types found in both the [HTML401STRICT] and [XHTML11STRICT] strict DTDs. HTML authoring tools permit those additional element tags, and may ignore the additional tags that are dtbook-specific. The lowercase names from XHTML are used, rather than the uppercase names from HTML. 1.2. Evolution from HTML and XHTML Dtbook-2005-3 has 83 element types. It shares 46 element types with the HTML4.0 Strict DTD [HTML401STRICT] (as adjusted to use the lower-case names consonant with the XHTML Strict DTD [XHTML11STRICT]). It omits 31 element types from them, and has 32 unique element types. Endtag markup is sometimes optional in HTML. It is required for use with xhtml and dtbook. Any XML application [XML12] requires endtags, or their abbreviated form for empty elements, such as "<link />". The benefit of including endtags is that the tagged document has dependable structure that can be validated against the dtbook dtd. Some tools available for browsing HTML may be used with dtbook material, at the expense of their discarding or ignoring some specific tagging and attributes that are not part of HTML 4.0. A CSS-based stylesheet [CSS1] or [CSS2] that identifies the presentation expectations for the HTML and non-HTML tags, or a filter to map those tags onto suitable HTML tags can provide appropriate visual presentation. 2. Document Prolog A Digital Talking Book document is an XML application. Therefore, it must begin with the XML declaration, followed by the DOCTYPE declaration. 2.1. XML Declaration The XML declaration identifies the version of XML, and the optional character set encoding for the document: <?xml version="1.0" encoding="UTF-8" ?> 2.2. Character Set Encodings (removed as redundant; unicode suffices) 2.3. DOCTYPE Declaration The document type declaration, the DOCTYPE, follows. It has several forms. The simpler form assumes that the proper version of the dtbook DTD is in the same directory as the dtbook file itself. <!DOCTYPE dtbook SYSTEM "dtbook-2005-3.dtd"> A more general form provides the PUBLIC URI from which the SYSTEM filename can be substituted, should that system copy be missing: <!DOCTYPE dtbook PUBLIC "http://www.daisy.org/z3986/2005/dtbook-2005-3.dtd" "dtbook-2005-3.dtd"> That assumes the URI can be reached, which may not be true for portable dtbook players. The still more general form recommended for xml applications [XML12] is: <!DOCTYPE dtbook PUBLIC "-//NISO//DTD dtbook 2005-3//EN" "http://www.daisy.org/z3986/2005/dtbook-2005-3.dtd"> where the Formal Public Identifier (FPI) on the second line is converted to the URI where it may be publicly found: http://www.daisy.org/z3986/2005/dtbook-2005-3.dtd The [OASIS-TR9401] Entity Management Catalog provides an indirect means to provide that mapping from FPI to the dtd. That catalog is more generally useful to provide the mapping from any external entity names (such as modules) to URIs where they may be found. Note that the reference above is to a particular version of the DTD, distinguished by the string "2005-3". 2.4. Digital Talking Book File MIME Type A Digital Talking Book document is tagged to the dtbook XML application. Its MIME media-type is "text/xml". The tagged book filename should have suffix ".xml". See [RFC2045]. 3. Modular Extension to the DTD The dtbook DTD has four parameter entities defined that provide means to allow an individual book to modularly extend the content models: <!ENTITY % externalblock ""> <!ENTITY % externalinline ""> <!ENTITY % externalFlow ""> <!ENTITY % externalNamespaces ""> These parameter entities appear in corresponding block and inline content models. With this "" content they have no effect on books tagged to the dtbook DTD. In a book that needs a modular extension, values are given by redefinition in the internal subset of that book. This extends the dtbook DTD without having to change it. A book can augment the dtbook DTD by including other declarations or parameter entity references in the internal subset of declarations. The internal subset may occur in square brackets following the ExternalID and before the concluding ">" of the initial DOCTYPE declaration that identifies the dtbook DTD. Those additional markup declarations in the internal subset take preference over any in the dtbook DTD itself. The effective DTD is thereby augmented by the parameter entity values and any other declarations of the book's internal subset. When a given parameter entity declaration appears more than once in the external modules and the dtbook DTD, the first occurrence of that declaration is the one that takes effect, with modules in the internal subset being processed in order, before the DTD itself. For example: <!DOCTYPE dtbook SYSTEM "dtbook.dtd" [ <!ENTITY % dramaModule SYSTEM "drama.dtd"> %dramaModule; <!ENTITY % externalblock "| d:drama"> <!ENTITY % externalinline "| d:character"> <!ENTITY % externalFlow "| d:stagedir"> <!ENTITY % externalNamespaces "xmlns:d CDATA #FIXED 'http://www.sample.org/drama'"> ]> The "%dramaModule;" invocation causes all declarations made within dramaModule to become the initial part of the dtbook DTD. Within the book, the empty entity declarations for % externalblock, % externalinline, % externalFlow, and %externalNamespaces are replaced by these new definitions. Thus the block element d:drama can appear wherever block elements may occur in dtbook, d:character can appear wherever inline elements may occur, and d:stagedir can appear in either block or inline contexts. Note that each extension element must appear in no more than one of these three entities. The namespace attribute xmlns:d can occur on any element with the fixed value of "http://www.sample.org/drama". More than one module may be needed and included in a book, for example both poem and drama can appear in the internal subset of the book. For example, the internal subset of the book could contain: <!DOCTYPE dtbook SYSTEM "dtbook.dtd" [ <!ENTITY % poemModule SYSTEM "poem.dtd"> %poemModule; <!ENTITY % dramaModule SYSTEM "drama.dtd"> %dramaModule; <!ENTITY % externalblock "| poem | stanza | verse | drama"> <!ENTITY % externalinline "| stagedir"> ]> Such external modules need to include the definitions of any parameter entities that are used in the modules since their definitions are needed before they can be expanded in their references. They cannot depend on parameter entities in the SystemLiteral or PubidLiteral. Note that arbitrary external modules from other sources may not have all the needed attributes. XML allows augmentation of ATTLISTs in the internal subset. Additional attribute names can be added to an associated element type. Any redefinitions of a particular named attribute resulting from presence in the internal subset have precedence. Note that tools and players processing any extended markup that affects navigation structure will need to know of those modular extensions. The form above for augmenting the dtbook dtd through the document's internal subset does not require the XML namespace mechanism, with its namespace-specific prefix on element and attribute names to disambiguate any potential name collisions. However, use of XML namespaces [XML-NAMES] is recommended. 4. References These references are informative. The bracketed names here are targets for indirect reference from the corresponding bracketed names in other parts of this document or in descriptions within this section. [CSS1] Cascading Style Sheets, Level 1. Rec-CSS1-1999011 Revised 11 Jan 1999 http://www.w3.org/TR/REC-CSS1 [CSS2] Cascading Style Sheets, Level 2 CSS2 Specification REC-CSS2-19980512 http://www.w3.org/TR/REC-CSS2 [DAISY202] The DAISY 2.02 Specification for the DAISY Digital Talking Book (DTB) format, which enables navigation within a sequential and hierarchical structure consisting of (marked-up) text synchronized with audio. http://www.daisy.org/dtbook/spec/2/final/d202/daisy_202.html [DAISY-2-GUIDELINES] The DAISY 2.02 Specification for the Creation and Production of Accessible Books and Materials, Version 0.99 1999-09-23 represents minimum standard to be met by Libraries for the Blind and producers of alternative format materials: http://www.daisy.org/dtbook/guidelines/draft/principles.htm [DTBOOKV20053DTD] The dtbook DTD version 2005-3 (this DTD) is available at: http://www.daisy.org/z3986/2005/dtbook-2005-3.dtd Note that some browsers do not permit downloading a file with suffix dtd. [DTBOOKV20053DOC] Digital Talking Book Expanded Document Type Definition Documentation for Version 2005-3 of this DTD is available as an HTML 4.0 document: http://www.daisy.org/z3986/2005/dtbook/dtbookdoc.html Should revisions occur, a new directory with node named for the year of change will contain the revisions. Any prior specific version of the dtbook dtd and its documentation will persist. [DTBOOK3] The last public beta version was dtbook3-07.dtd (2001-01-31). http://www.loc.gov/nls/z3986/background/dtbk3_old_dtds/dtbk3-07.dtd and its expanded documentation: http://www.loc.gov/nls/z3986/background/dtbk3_old_dtds/dtbk3-07doc.htm Those and prior versions are available at: http://www.loc.gov/nls/z3986/background/dtbk3_old_dtds/index.html The history of changes prior to this version, including those in internal drafts through dtbk110.dtd and before is in: http://www.loc.gov/nls/z3986/background/dtbook-dtd-changes.txt In that directory also are the old dtdbk3 dtds, some of which have been used for test markup, and their documentation. See its index.html for the list. (Caution: some browsers may not permit downloading DTDs.) http://www.loc.gov/nls/z3986/background/index.html [HTML401STRICT] "HTML 4.0 Strict DTD," 1999-12-24, Dave Raggett, Arnaud Le hors, and Ian Jacobs. Dtbook110 was originally based on the HTML 4.0 Strict DTD with design adaptation for dtbook110. A principal adaptation is to use lower-case names for element types and attribute names. For expanded discussion, see [HTML401]. http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd [HTML401] "HTML 4.01 Specification" W3C Recommendation 24 December 1999 Documentation of the element types that come from the HTML 4.0 Strict DTD [HTML401STRICT] is available at: http://www.w3.org/TR/1999/REC-html401-19991224/ Dtbook110 (and now Dtbook122) is partially harmonized with the [XHTML11STRICT] DTD. The XHTML camelCase parameter entity names are retained, and comments and references following those parameter entities explain them. The lower-case element and attribute names are used. The simplified table content model of just table rows is included. [ISO10646] "Information Technology - Universal Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane", ISO/IEC 10646-1:1993. The current specification also takes into consideration the first five amendments to ISO/IEC 10646-1:1993. [ISO8859] "Information Processing - 8-bit single-byte coded graphic character sets - Part 1: Latin alphabet No. 1," ISO 8859-1:1987. Other suffixes "-2 through -9" correspond to other character sets in the family. [JIS] "JIS Character Sets" describes the history of JIS, and the several character sets for KANJI, KANA and other characters. http://www.io.com/~kazushi/encoding/jis.html [ANSINISOZ39-86-2002] Specifications for the Digital Talking Book. http://www.niso.org [ANSINISOZ39-86-2005] Specifications for the Digital Talking Book. http://www.niso.org [NLS-Z3986] Development of ANSI/NISO Z39.86 Contains links to the DTDs developed for ANSI/NISO Z39.86, Specifications for the Digital Talking Book http://www.loc.gov/nls/z3986/index.html [OASIS-TR9401] Entity Management, OASIS Technical Resolution 9401:1997 (Amendment 2 to TR 9401). Paul Grosso, 1997 September 10. http://www.oasis-open.org/specs/tr9401.html [RFC1556] "Handling of Bi-directional Texts in MIME," H. Nussbacher, December 1993. http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1556.html [RFC1942] "HTML Tables", D. Raggett, May 1996 http://www.ietf.org/rfc/rfc1942.txt Contains detailed descriptions of table elements and their inheritance of attribute values. Adjustment for XML application is required: end-tags are necessary, not optional, attribute values must be quoted. [RFC2045] "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed and N. Borenstein, November 1996. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590. The %ContentType; and %ContentTypes; media types and the %Charset; and %Charsets; character encoding values are from [RFC2045]. http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2045.html [RFC2046] "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types," N. Freed, November 1996. Source for %ContentType; and %ContentTypes; permitted values: http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2046.html [RFC2396] "Uniform Resource Identifiers (URI): Generic Syntax," T. Berners-Lee, R. Fielding, L. Masinter, August 1998. Note that this RFC revises and replaces the generic definitions in RFC 1738 and RFC 1808. http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2396.html [RFC4646] "Tags for Identifying Languages," A. Phillips, Ed., September 2006 http://www.faqs.org/rfcs/rfc4646.html [SMIL2.0] The Synchronized Multimedia Integration Language SMIL 2.0 W3C Recommendation 07 August 2001 is available at: http://www.w3.org/TR/2001/REC-smil20-20010807/smil20.html [XHTML11] "XHTML (tm) 1.0: The Extensible HyperText Markup Language," W3C Recommendation 26 January 2000, A reformulation of HTML4 in XML 1.0 includes case-sensitive names, lower-case for elements and their attributes (but not parameter entity names) and in some cases equivalent content models that do not require SGML inclusions and exclusion exceptions (as occurred in the HTML4.0 strict DTD [HTML401STRICT]) is available at: http://www.w3.org/TR/xhtml/ [XML-NAMES] "Namespaces in XML 1.1" World Wide Web Consortium W3C Recommendation 4-Febrary-2004 http://www.w3.org/TR/REC-xml-names11-20040204 [XHTML11STRICT] Expanded documentation of the element types that come from the XHTML11 strict.dtd and its other DTDs is available within the zip file: http://www.w3.org/TR/xhtml1/DTD/xhtml1/xhtml1.zip Note: some browsers cannot download a dtd directly. [XML12] This dtbook-2005-3.dtd is an application of the Extensible Markup Language XML 1.0 (Second Edition) W3C Recommendation 6 October 2000. It is available at: http://www.w3.org/TR/REC-xml --> <!--======================= Change Log Summary ============================--> <!--HB: 2004-04-28 changed all version references from 1.1.2 to 1.2.0 --> <!--HB: 2004-03-25 - 2004-04-28 Changes that update dtbook 1.1.0 Document Type Declaration: When the change date is followed by "nn:" or "nna" that represents the number/letter code on the change list supplied from Michael Moodie on that date. Additional changes not so noted have been made in discussion with Michael Moodie. These changes have been made by Harvey Bingham. --> <!--HB: 2004-04-15 Editorial revisions made at the group meeting 2004-04-15 --> <!--HB: 2004-03-25 32: Drop section 2.2 on Character Set Encoding, retained number so external references won't break to subsequent sections. --> <!--HB: 2004-04-02 dtbook: updated public identifier fro: "http://www.loc.bov/nls/z3986/v100" to: "http://www.loc.gov/nls/z3986/2004". --> <!--HB: 2004-04-02 dtbook: updated public identifier from: "http://www.loc.bov/nls/z3986/v100/dtbook110.dtd" to: "http://www.loc.gov/nls/z3986/2004/dtbook.dtd". --> <!--HB: 2004-03-25 Changed reference from RFC1766 to its revison, RFC 3066. --> <!--HB: 2004-03-25 Changed reference from RFC1766 to its revison, RFC 3066. --> <!--HB: 2004-04-05 % list removed: as content reduced to contain only <list>.--> <!--HB: 2004-03-25 36f: caption: removed from % inlineinblock. --> <!--HB: 2004-03-25 30: hr: eliminated, so dropped from % block. --> <!--HB: 2004-03-29 % block additions: poem | linegroup | byline | dateline | epigraph. --> <!--HB: 2004-03-25 30: hr: eliminated, dropped from % blocknoimggroup. --> <!--HB: 2004-03-29 % blocknoimggroup additions: poem | linegroup | byline | dateline | epigraph. --> <!--HB: 2004-03-29 % docblockorinline additions: poem | linegroup | byline | dateline | epigraph. --> <!--HB: 2004-04-08 covertitle: added to % docblockorinline --> <!--HB: 2004-04-27 blockhead: added to % docblockorinline; --> <!--HB: 2004-03-25 33: % coreattrs: dropped mention of character mnemonic entities, as use unicode. --> <!--HB: 2004-03-25 36a: % i18n: removed lang attribute, as redundant with xml:lang. --> <!--HB: 2004-04-05 dtbook: added attribute xmlns with FIXED value 'http://www.loc.gov/nls/z3986/2004/dtbook' Also updated version value from 1.1.0' to '1.1.1'. --> <!--HB: 2004-04-05 version: updated from '1.1.0' to '1.1.1'. added value for xmlns: %URI #FIXED 'http://www.loc.gov/nls/z3986/2004/dtbook/'. --> <!--HB: 2004-03-25 36: % headmisc: removed style. --> <!--HB: 2004-04-02 title: element removed from head, now only used for cite and poem. --> <!--HB: 2004-03-29 Dublin Core: minimum requirement name="dc:title" content="book title"; encourage use of additional name/content pairs from Dublin Core name="dc:..." and from Digital Talking Book name="dtb:..." Encourage inclusion of additional Dublin Core and Dtbook metadata attributes to make more useful the dtbook as stand-alone content. --> <!--HB: 2004-03-25 36: head: drop th removed element style. --> <!--HB: 2004-03-25 29: frontmatter: eliminate %block; level or level1 container is required. --> <!--HB: 2004-04-08 frontmatter: added covertitle. --> <!--HB: 2004-03-25 29: bodymatter: eliminate %block; level or level1 container is required. --> <!--HB: 2004-03-25 29: rearmatter: eliminate %block; level or level1 container is required. --> <!--HB: 2004-03-25 28: level: add constraint - at most one <levelhd> (later changed to <hd>) per <level>. --> <!--HB: 2004-03-26 34: level: make contentmodel (...)+, rather than (...)*. --> <!--HB: 2004-03-25 28: level1: added constraint - at most one <h1> per <level1>. --> <!--HB: 2004-03-26 34: level1: make contentmodel (...)+, rather than (...)*. --> <!--HB: 2004-03-25 28: level2: added constraint - at most one <h2> per <level2>. --> <!--HB: 2004-03-26 34: level2: make contentmodel (...)+, rather than (...)*. --> <!--HB: 2004-03-25 28: level3: added constraint - at most one <h3> per <level3>. --> <!--HB: 2004-03-25 28: level4: added constraint - at most one <h4> per <level4>. --> <!--HB: 2004-03-25 28: level5: added constraint - at most one <h5> per <level5>. --> <!--HB: 2004-03-25 28: level6: added constraint - at most one <h6> per <level6>. --> <!--HB: 2004-04-23 % special: eliminated linenum from % special, linenum only appears within line. --> <!--HB: 2004-04-23 % specialnoa: eliminated linenum from % specialnoa, linenum only appears within line. --> <!--HB: 2004-03-25 36h: to % inlinenoa add %dtbookinline;. --> <!--HB: 2004-03-30 poem: added linenum use. --> <!--HB: 2004-04-08 div: added covertitle. --> <!--HB: 2004-04-04 35b title: added <title> for use in <poem> or <cite>. --> <!--HB: 2004-03-25 35d: notice element dropped: its purpose is sufficiently achieved with sidebar with attribute render="required." This provides sufficient capability for admonitions like warning, hazard, danger, or caution. --> <!--HB: 2004-03-25 35g: prodnote: use render="required" to achieve the explicit admonition such as caution, warning, danger, or hazard, from the text. Optionally put the specific admonition in the class attribute value, repeating it from the text. --> <!--HB: 2004-03-25 35g: sidebar: use render="required" to achieve the explicit admonition such as caution, warning, danger, or hazard, from the text. Optionally put the specific admonition in the class attribute value, repeating it from the text. --> <!--HB: 2004-03-30 epigraph: element added. --> <!--HB: 2004-30-30 byline: element added. --> <!--HB: 2004-30-30 dateline: element added. --> <!--HB: 2004-03-30 linegroup: The class attribute value can identify the kind of linegroup, such as "stanza", "chorus", or "canto". --> <!--HB: 2004-03-30 poem: removed notice and hr from content model. --> <!--HB: 2004-03-30 poem: added title and author to content model. --> <!--HB: 2004-03-25 35a: cite: allow title and author. --> <!--HB: 2004-03-25 30: hr: element dropped horizontal rule as purely visual. --> <!--HB: 2004-04-08 covertitle: element added --> <!--HB: 2004-04-02 bridgehead: element added. --> <!--HB: 2004-03-25 36i: blockquote allow pagenum. --> <!--HB: 2004-03-25 36d: list: added start attribute to indicate initial ordinal of a numbered list. --> <!--HB: 2004-03-31 list: changed enum from 'U' to 'A' for uppercase, and "X" to 'I' for uppercase Roman. --> <!--HB: 2004-03-31 list: changed enum value choices from "U" to "A" for uppercase, and "X" to "I" for uppercase Roman for compatibility with xhtml. --> <!--HB: 2004-04-02 list: expanded discussion on enum attribute. --> <!--HB: 2004-04-27 list: added type "pl" to indicate that the list is preformatted so no bullets or enumerations should be added. --> <!--HB: 2004-04-22 list: removed bullet attribute, It is up to a style-sheet to make any needed visual distinction for nested unordered lists, or if the list type is "pl" preformatted the bullet form may be there. --> <!--HB: 2004-03-25 36f: caption: removed use for <img>. --> <!--MM: 2004-07-08 Various editorial changes. --> <!--MM: 2004-07-08 34: level3: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-08 34: level4: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-08 34: level5: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-08 34: level6: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-23 In %docblockorinline: changed blockhead to bridgehead; eliminated poem, linegroup, byline, dateline, and epigraph since already present via %block --> <!--MM: 2004-07-23 In %inlinenoa: removed %externalinline; since already present via %dtbookinline;.--> <!--MM: 2004-07-23 34: level6: replaced "%block | %inlineinblock" with "%docblockorinline;" per other leveln models. --> <!--MM: 2004-07-30 Changed content models of level and level1 - level6 to eliminate ambiguity. Changed version to 1.1.5a--> <!--MM: 2004-07-30 Dropped 'level' attribute from element div. Revised description of page types for 'page' attribute on element pagenum. Dropped recommendation to use page number as id. Copied recent change comments to text. Removed comments explaining amp, lt, gt, etc. Changed version to 1.1.5b--> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1 - level6. Added missing exclamation point in previous change message.--> <!--MM: 2004-08-17 Added %dtbookblocknoimggroup; to % blocknoimggroup, from which it had been accidentally dropped. Deleted section on character entities. --> <!--MM: 2004-09-15: caption: changed content model to %flow;. --> <!--MM: 2004-09-15 Deleted element levelhd, replacing it with hd in content model of level. --> <!--MM: 2004-09-15 bridgehead: changed content model to (%inline;)*, to match hd, and h1-h6. --> <!--MM: 2004-09-16 Changed version to 1.2.0 --> <!--MM: 2005-03-10 level, level1 - level6: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!--MM: 2005-03-10 Changed version to 1.2.1 --> <!--MM: 2005-03-11 changed value for xmlns to: %URI; #FIXED 'http://www.loc.gov/nls/z3986/2005/dtbook/'. --> <!--MM: 2005-04-22 epigraph - changed ATTLIST to %attrs; --> <!--MM: 2005-04-22 byline - changed ATTLIST to %attrs; --> <!--MM: 2005-04-22 dateline - changed ATTLIST to %attrs; --> <!--MM: 2005-04-22 linegroup - changed ATTLIST to %attrs; --> <!--MM: 2005-04-22 poem - changed ATTLIST to %attrs; --> <!--MM: 2005-04-22 dtbook - changed version to 1.2.1a --> <!--MM: 2005-04-26 version: updated from 1.2.1a to 1.2.2--> <!--MG: 2005-05-03 fixed malformed comments (double hyphen) --> <!--NB: 2005-06-22 wrapped all lines at 80 columns --> <!-- 2005-06-26 M. Gylling. Changed pid, sid, ns uri, and filename for Z3986-2005 --> <!--jpritchett@rfbd.org: 2006-07-06. Changed pid, sid, version, and filename for 2005-2 throughout --> <!--jpritchett@rfbd.org: 2006-07-06. (Issue 45) Changed div model to %docblockorinline to include bridgehead --> <!--jpritchett@rfbd.org: 2006-07-06. (Issue 51) Changed content model for frontmatter. doctitle now required, order of doctitle, covertitle, docauthor fixed. --> <!--jpritchett@rfbd.org: 2006-07-06. (Issue 129) Removed @style from %coreattrs and %attrsrqd --> <!--jpritchett@rfbd.org: 2006-07-06. Removed definition of %StyleSheet, since it is no longer needed --> <!--jpritchett@rfbd.org: 2006-07-06. (Issues 50/68) Added xml:space to %coreattrs and %attrsrqd --> <!--jpritchett@rfbd.org: 2006-07-06. (Issue 52) Added %coreattrs (id, class, title, xml:space) to title attribute list --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 102) Changed @idref type for noteref/annoref to %URI to clarify usage --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 102) Modified comments in noteref/annoref ATTLISTs to clarify @idref usage --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 119) Changed @lang to @xml:lang in bdo --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 48) Corrected reference to RFC2046 in comments regarding @type for a, annoref, noteref --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 65) Corrected usage comment for meta --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 120) Corrected terminology in section 2 of general documentation comment --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 92) Added comment deprecating @showin --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 113) Created new entity %externalFlow; for extension elements that are both block and inline --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 113) Added %externalFlow to %flow;, %flownopagenum;, %inlines;, %inlinew;, %dtbookblock;, %block; --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 117) Created new entity %externalNamespaces; for extension namespace attributes --> <!--jpritchett@rfbd.org: 2006-07-07. (Issue 117) Added %externalNamespaces; to %coreattrs;, %attrsrqd;, and dtbook --> <!--jpritchett@rfbd.org: 2006-08-11. (Issue 113) Added %externalFlow; to %dtbookinline; --> <!--jpritchett@rfbd.org: 2006-09-08. (Issues 50/68) Rewrote attribute lists of code and samp to prevent duplication of @xml:lang --> <!--jpritchett@rfbd.org: 2007-12-07. Changed pid, sid, version, and filename for 2005-3 throughout, including documentary comments --> <!--jpritchett@rfbd.org: 2007-12-10. (Issue 194) Removed superfluous %dtbookblock entity --> <!--jpritchett@rfbd.org: 2007-12-10. (Issue 191) Updated RFC reference from 3066 to 4646 --> <!--jpritchett@rfbd.org: 2007-12-17. (Issue 148) Updated comments regarding caption/@imgrefs to reflect type of IDREFS, not %URI; --> <!--jpritchett@rfbd.org: 2007-12-17. (Issue 156) Changed attlist for title to %attrs; --> <!--jpritchett@rfbd.org: 2007-12-17. (Issue 157) Added @smilref and @showin to bdo --> <!--jpritchett@rfbd.org: 2007-12-17. (Issue 195) Expanded title content model to include inlines --> <!--jpritchett@rfbd.org: 2007-12-17. (Issue 200) Added pagenum to imggroup content model --> <!--jpritchett@rfbd.org: 2007-12-19. (Issue 199) Added pagenum to table and tbody content models --> <!--================= Comment Classification Conventions ==================--> <!-- Some comments start with a pattern followed by a colon: Use: element type and its use. Attuse: attribute use for associated element type. HB: date object comment on change by Michael Moodie. Other comments without such a pattern are dividing lines, details about the DTD structure, or about dtbook objects. --> <!--=================== Imported Parameter Entity Names ===================--> <!-- Many parameter entities come from the [XHTML11STRICT] strict DTD. --> <!--jpritchett@rfbd.org: 2006-07-06. Removed definition of %StyleSheet, since it is no longer needed --> <!ENTITY % Character "CDATA" > <!-- a single character from [ISO10646]. --> <!ENTITY % Charset "CDATA" > <!-- a character encoding, as per [RFC2045]. --> <!ENTITY % ContentType "CDATA" > <!-- media type, as per [RFC2046]. --> <!--HB: 2004-03-25 Changed reference from RFC1766 to its revison, RFC 3066. --> <!--jpritchett@rfbd.org: 2007-12-10. Changed again from 3066 to its revision 4646 --> <!ENTITY % LanguageCode "NMTOKEN" > <!-- a language code, per [RFC4646]. --> <!ENTITY % Number "CDATA" > <!-- one or more digits. --> <!ENTITY % LinkTypes "CDATA" > <!-- space-separated list of link types. --> <!ENTITY % MediaDesc "CDATA" > <!-- single or comma-separated list of media descriptors; possible values include BRAILLE, PRINT, PROJECTION, SPEECH, ALL, or the default SCREEN. --> <!ENTITY % Text "CDATA" > <!-- used for titles etc. --> <!ENTITY % URI "CDATA" > <!-- a Uniform Resource Identifier, see [RFC2396]. --> <!--================== dtbook External Module Inclusion ===================--> <!ENTITY % externalblock "" > <!-- placeholder for block element expansion from external modules; if changed, string in external subset begins " | blockelementname". --> <!ENTITY % externalinline "" > <!-- placeholder for inline element expansion from external modules; if changed, string in external subset begins " | inlineelementname". --> <!--jpritchett@rfbd.org: 2006-07-07. Created new entity %externalFlow; for extension elements that are both block and inline --> <!ENTITY % externalFlow "" > <!-- placeholder for elements that can be either block or inline from external modules; if changed, string in external subset begins " | flowelementname". --> <!--jpritchett@rfbd.org: 2006-07-07. Created new entity %externalNamespaces; for extension namespace attributes --> <!ENTITY % externalNamespaces "" > <!-- placeholder for namespace attributes for external modules. These attributes will be available on all elements. If changed, string in external subset is in format "xmlns:sample CDATA #FIXED 'http://www.sample.org/example'" --> <!--======================== dtbook Content Models ========================--> <!--HB: 2004-04-05 % list removed: as content reduced to contain only <list>.--> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalFlow; to %dtbookblock;--> <!--jpritchett@rfbd.org: 2007-12-10. Removed %dtbookblock; (no longer referenced) --> <!ENTITY % dtbookblocknoimggroup "author | prodnote | sidebar | note | annotation %externalblock;" > <!-- block elements unique to dtbook without imggroup. --> <!--HB: 2004-03-25 36f: caption: removed from % inlineinblock. --> <!ENTITY % inlineinblock "a | cite | samp | kbd | pagenum" > <!-- inlines that may alternatively be in block elements. --> <!--HB: 2004-03-25 30: hr: eliminated, so dropped from % block. --> <!--HB: 2004-03-29 % block additions: poem | linegroup | byline | dateline | epigraph. --> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalFlow; to %block;--> <!ENTITY % block "p | list | dl | div | blockquote | img | imggroup | poem | linegroup | byline | dateline | epigraph | table | address | line | %dtbookblocknoimggroup; %externalFlow;" > <!-- block elements from [HTML401STRICT] dtd augmented by dtbook-unique elements (note: list container difers from html ol and ul.) --> <!--HB: 2004-03-25 30: hr: eliminated, dropped from % blocknoimggroup. --> <!--HB: 2004-03-29 % blocknoimggroup additions: poem | linegroup | byline | dateline | epigraph. --> <!--MM: 2004-08-17 Added %dtbookblocknoimggroup; to % blocknoimggroup, from which it had been accidentally dropped.--> <!ENTITY % blocknoimggroup "p | list | dl | div | blockquote | poem | linegroup | byline | dateline | epigraph | table | address | line | %dtbookblocknoimggroup;" > <!-- block elements from [HTML401STRICT] dtd augmented by dtbook-unique elements. --> <!--HB: 2004-03-29 % docblockorinline additions: poem | linegroup | byline | dateline | epigraph. --> <!--HB: 2004-04-08 covertitle: added to % docblockorinline --> <!--HB: 2004-04-27 blockhead: added to % docblockorinline; --> <!--MM: 2004-07-23 changed blockhead to bridgehead; eliminated poem, linegroup, byline, dateline, and epigraph since already present via %block --> <!ENTITY % docblockorinline "doctitle | docauthor | covertitle | bridgehead | %block; | %inlineinblock;"> <!-- common non-head elements for use with level or levelN --> <!--========================= Generic Attributes ==========================--> <!--HB: 2004-03-25 33: % coreattrs: dropped mention of character mnemonic entities, as use unicode. --> <!--jpritchett@rfbd.org: 2006-07-06. Removed @style --> <!--jpritchett@rfbd.org: 2006-07-06 Added @xml:space --> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalNamespaces; --> <!ENTITY % coreattrs "id ID #IMPLIED class CDATA #IMPLIED title %Text; #IMPLIED xml:space (default|preserve) #IMPLIED %externalNamespaces;" > <!-- coreattrs are attributes permissible for most elements id document-wide unique id class space separated list of classes used for rendering title advisory title/amplification xml:space whitespace handling (see http://www.w3.org/TR/xml11/#sec-white-space) --> <!--HB: 2004-03-25 36a: % i18n: removed lang attribute, as redundant with xml:lang. --> <!ENTITY % i18n "xml:lang %LanguageCode; #IMPLIED dir (ltr|rtl) #IMPLIED" > <!-- i18n internationalization attributes xml:lang language code (as per XML 1.0 spec) dir direction for weak/neutral text ltr=left to right rtl=right to left xhtml recommendation: use xml:lang such as "en-US", on the major containing block, to provide source language for the #IMPLIED values of its descendent elements. See [RFC1556] for handling bi-directional text in MIME. --> <!--jpritchett@rfbd.org: 2006-07-07 Added comment deprecating @showin --> <!ENTITY % showin "showin (xxx|xxp|xlx|xlp|bxx|bxp|blx|blp) #IMPLIED" > <!-- NOTE: With version 2005-2 of the DTD, the use of the showin attribute is deprecated. Following more modern conventions that have evolved since showin was originally added, the Z39.86 Maintenance Committee's intention is to use namespaces to distinguish output-format-specific information via extension modules --> <!--showin attribute applies for text elements to permit identification of the kinds of display appropriate for the element, so presentation choice by the reader among alternative readings can be provided, when appropriate. Values of showin are coded with three letters in order: "b"=Braille, "l"=Largeprint, and "p"=Print; or "x"=inappropriate: Value Braille Largeprint Print Interpretation "xxx" hide "xxp" p print only "xlx" l largeprint only "xlp" l p largeprint and print "bxx" b braille only "bxp" b p braille and print "blx" b l braille and largeprint "blp" b l p braille, largeprint, and print There is no default value; this attribute value is implied from the most immediate ancestor that specifies a value. The usual default for showin is 'blp'. If only one showin value is needed it should be included with <book>. Different content for the same element (usually <prodnote>) meeting different needs is possible, with showin serving as a switch to differentiate among them. Both largeprint and print are appropriate for screen rendering as well as printing. Different corresponding styles may be appropriate. It is possible to include equivalent content from any major structure below <book> to provide the different content suitable for different media. These would be independent, sharing no direct content, possibly having common references to images, with different accompanying text descriptions. --> <!ENTITY % attrs "%coreattrs; %i18n; smilref CDATA #IMPLIED %showin;" > <!-- %attrs; is part of most attribute lists. It includes %coreattrs; from which come the four #IMPLIED attributes: id, class, title, and xml:space %i18n; from which come the implied attributes: xml:lang, and dir smilref is a pointer to a [SMIL2.0] file, normally to the time container (SMIL <par> or <seq>) containing the media object that references this element. However, in a text-only DTB consisting of a sequence of text media objects, smilref points to the media object that references this element. smilref allows resumption of SMIL presentation at the proper location after navigation via dtbook file. All smilref values are expected to be added to an augmented version of the <dtbook> during production. %showin; (See entity declaration.) --> <!--jpritchett@rfbd.org: 2006-07-06. Removed @style --> <!--jpritchett@rfbd.org: 2006-07-06. Added xml:space. This allows control of whitespace handling on any element. --> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalNamespaces; --> <!ENTITY % attrsrqd "id ID #REQUIRED class CDATA #IMPLIED title %Text; #IMPLIED xml:space (default|preserve) #IMPLIED smilref CDATA #IMPLIED %i18n; %showin; %externalNamespaces; " > <!-- %attrsrqd; includes required id and implied class, title, and xml:space (see %coreattrs above) %i18n; from which come the implied attributes: xml:lang, and dir smilref is a pointer to a [SMIL2.0] file, normally to the time container (SMIL <par> or <seq>) containing the media object that references this element. However, in a text-only DTB consisting of a sequence of text media objects, smilref points to the media object that references this element. smilref allows resumption of SMIL presentation at the proper location after navigation via dtbook file. All smilref values are expected to be added to an augmented version of the <dtbook> during production. %externalnamespace; (See entity declaration) %showin; (See entity declaration.) --> <!--========================= Document Structure ==========================--> <!ENTITY % dtbookcontent "head, book" > <!-- dtbookContent designates that each dtbook has a <head> of metainformation preceding the <book> content. --> <!--Use: dtbook is the root element in the Digital Talking Book DTD. <dtbook> contains metadata in <head> and the contents itself in <book>. --> <!ELEMENT dtbook (%dtbookcontent;) > <!--HB: 2004-04-05 dtbook: added attribute xmlns with FIXED value 'http://www.loc.gov/nls/z3986/2004/dtbook' Also updated version value from 1.1.0' to '1.1.1'. --> <!--Attuse: dtbook "version" is required, and contains the specific version of the dtd, so that the dtd version for any dtbook can be recognized. "xmlns" is the URL where this dtd and its related materials can be found. "%i18n;" internationalization attributes characterize the <book>. Those values may be adjusted for language changes within it. --> <!--HB: 2004-04-05 version: updated from '1.1.0' to '1.1.1'. added value for xmlns: %URI; #FIXED 'http://www.loc.gov/nls/z3986/2004/dtbook/'. --> <!--MM: 2005-03-11 changed value for xmlns to: %URI; #FIXED 'http://www.loc.gov/nls/z3986/2005/dtbook/'. --> <!--MM: 2005-04-26 version: updated to 1.2.2--> <!--MG: 2005-06-26 version: updated to 2005-1--> <!--jpritchett@rfbd.org: 2006-07-07 updated @version to 2005-2 --> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalNamespaces; --> <!--jpritchett@rfbd.org: 2007-12-07 updated @version to 2005-3 --> <!ATTLIST dtbook version CDATA #FIXED '2005-3' xmlns %URI; #FIXED 'http://www.daisy.org/z3986/2005/dtbook/' %i18n; %externalNamespaces; > <!--======================== Document Head Metadata =======================--> <!--HB: 2004-03-25 36: % headmisc: removed style. --> <!ENTITY % headmisc "meta | link " > <!-- optional head elements --> <!--Use: head contains metainformation about the book but no actual content of the book itself, which is placed in <book>. This information is consonant with the <head> information in xhtml, see [XHTML11STRICT]. --> <!--HB: 2003-03-25 head: element drop title --> <!ELEMENT head (%headmisc;)* > <!--Attuse: head "profile" gives one or more whitespace-separated profile URI targets that may provide additional information about the current document. --> <!ATTLIST head %i18n; profile %URI; #IMPLIED > <!--HB: 2004-04-02 title: element removed from head, now only used for cite and poem. --> <!--Use: link is an empty element appearing in the <head> section of a document that establishes a connection between the current document and another document. The <link> element conveys relationship information (for example, "next" and "previous") that may be rendered by user agents in a variety of ways. --> <!ELEMENT link EMPTY > <!--Attuse: link Each attribute use indicated by a parameter entity is defined in the comment following its definition. --> <!ATTLIST link %attrs; charset %Charset; #IMPLIED href %URI; #IMPLIED hreflang %LanguageCode; #IMPLIED type %ContentType; #IMPLIED rel %LinkTypes; #IMPLIED rev %LinkTypes; #IMPLIED media %MediaDesc; #IMPLIED > <!--HB: 2004-03-29 Dublin Core: minimum requirement name="dc:title" content="book title"; encourage use of additional name/content pairs from Dublin Core name="dc:..." and from Digital Talking Book name="dtb:..." Encourage inclusion of additional Dublin Core and Dtbook metadata attributes to make more useful the dtbook as stand-alone content. --> <!--jpritchett@rfbd.org: 2006-07-07 Corrected usage comment --> <!--Use: meta indicates metadata about the book. It is an empty element that may appear repeatedly only in <head>. Meta is the container for the Dublin Core attributes, and the additional DTBook attributes. As a minumum the dc:Title and dtb:uid meta are required. Inclusion of the full range of applicable Dublin Core elements is recommended, to make a DTBook document more useful as stand-alone content. The Dublin Core specification is available at: http://purl.org/dc/ --> <!ELEMENT meta EMPTY > <!--Attuse: meta "http-equiv" connects the content attribute value to an http header field. "name" value identifies the specific kind of content value. "content" indicates the value for that "name", possibly constrained by the semantics for the individual names. "scheme" indicates a predetermined format for interpreting the content value, such as the Dublin Core. --> <!ATTLIST meta %i18n; http-equiv NMTOKEN #IMPLIED name NMTOKEN #IMPLIED content CDATA #REQUIRED scheme CDATA #IMPLIED > <!--HB: 2004-03-25 36: head: removed element style. --> <!--============================ Book Content =============================--> <!--Use: book surrounds the actual content of the document, which is divided into <frontmatter>, <bodymatter>, and <rearmatter>. <head>, which contains metadata, precedes <book>. --> <!ELEMENT book (frontmatter?, bodymatter?, rearmatter?) > <!ATTLIST book %attrs; > <!--======================== Book Major Structures ========================--> <!--Use: frontmatter usually contains <doctitle> and <docauthor>, as well as preliminary material that is often enclosed in appropriate <level> or <level1>. Content may include copyright notice, foreword, acknowledgments, table of contents, etc. <frontmatter> serves as a guide to the content and nature of a <book>. --> <!--HB: 2004-03-25 29: frontmatter: eliminate %block; level or level1 container is required. --> <!--HB: 2004-04-08 frontmatter: added covertitle. --> <!--jpritchett@rfbd.org: 2006-07-06 doctitle now required, order of doctitle, covertitle, docauthor fixed. --> <!ELEMENT frontmatter (doctitle, covertitle?, docauthor*, (level | level1)*) > <!ATTLIST frontmatter %attrs; > <!--Use: bodymatter consists of the text proper of a book, as contrasted with preliminary material <frontmatter> or supplementary information in <rearmatter>. --> <!--HB: 2004-03-25 29: bodymatter: eliminate %block; level or level1 container is required. --> <!ELEMENT bodymatter (level | level1)+ > <!ATTLIST bodymatter %attrs; > <!--Use: rearmatter contains supplementary material such as appendices, glossaries, bibliographies, and indices. It follows the <bodymatter> of the book. --> <!--HB: 2004-03-25 29: rearmatter: eliminate %block; level or level1 container is required. --> <!ELEMENT rearmatter (level | level1)+ > <!ATTLIST rearmatter %attrs; > <!--================== dtbook Recursive Structure level ===================--> <!--HB: 2004-03-25 28: level: add constraint - at most one <levelhd> (later changed to <hd>) per <level>. --> <!--Use: level is an alternative tag for marking the major structures in a book. It may be used recursively, i.e., repeated indefinitely with each successive occurrence nesting within the previous. It may also be included in a subsequent higher level. At most one <hd> heading child may be used. Subordinate levels have greater depth. Contrast with the explicit <level1>...<level6> elements, which may not be intermixed with <level>. --> <!--HB: 2004-03-26 34: level: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-30 level: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level: Simplified content model. --> <!--MM: 2005-03-10 level: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!ELEMENT level ((hd, (%docblockorinline; | level)+) | ((%docblockorinline; | level)+, (hd, (%docblockorinline; | level)+)?)) > <!--Attuse: level "class" identifies the actual name (e.g., part, chapter, section, subsection) of the structure it marks. "depth" indicates the nesting depth, starting at 1. --> <!ATTLIST level %attrs; depth CDATA #IMPLIED > <!--============ dtbook Hierarchic Structure level1 ... level6 ============--> <!--Use: level1 is the highest-level container of major divisions of a book. Used in <frontmatter>, <bodymatter>, and <rearmatter> to mark the largest divisions of the book (usually parts or chapters), inside which level2 subdivisions (often sections) may nest. The class attribute identifies the actual name (e.g., part, chapter) of the structure it marks. Contrast with <level>. At most one heading <h1> may be used. --> <!--HB: 2004-03-25 28: level1: added constraint - at most one <h1> per <level1>. --> <!--HB: 2004-03-26 34: level1: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-30 level1: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level1: Simplified content model. --> <!--MM: 2005-03-10 level1: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!ELEMENT level1 ((h1, (%docblockorinline; | level2)+) | ((%docblockorinline; | level2)+, (h1, (%docblockorinline; | level2)+)?)) > <!ATTLIST level1 %attrs; > <!--Use: level2 contains subdivisions that nest within <level1> divisions. The class attribute identifies the actual name (e.g., subpart, chapter, subsection) of the structure it marks. At most one heading <h2> may be used. --> <!--HB: 2004-03-25 28: level2: added constraint - at most one <h2> per <level2>. --> <!--HB: 2004-03-26 34: level2: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-30 level2: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level2: Simplified content model. --> <!--MM: 2005-03-10 level2: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!ELEMENT level2 ((h2, (%docblockorinline; | level3)+) | ((%docblockorinline; | level3)+, (h2, (%docblockorinline; | level3)+)?)) > <!ATTLIST level2 %attrs; > <!--HB: 2004-03-25 28: level3: added constraint - at most one <h3> per <level3>. --> <!--MM: 2004-07-08 34: level3: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-30 level3: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level3: Simplified content model. --> <!--MM: 2005-03-10 level3: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!--Use: level3 contains sub-subdivisions that nest within <level2> subdivisions (e.g., sub-subsections within subsections). The class attribute identifies the actual name (e.g., section, subpart, subsubsection) of the subordinate structure it marks. At most one heading <h3> may be used. --> <!ELEMENT level3 ((h3, (%docblockorinline; | level4)+) | ((%docblockorinline; | level4)+, (h3, (%docblockorinline; | level4)+)?)) > <!ATTLIST level3 %attrs; > <!--HB: 2004-03-25 28: level4: added constraint - at most one <h4> per <level4>. --> <!--MM: 2004-07-08 34: level4: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-30 level4: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level4: Simplified content model. --> <!--MM: 2005-03-10 level4: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!--Use: level4 contains further subdivisions that nest within <level3> subdivisions. The class attribute identifies the actual name of the subordinate structure it marks. At most one heading <h4> may be used. --> <!ELEMENT level4 ((h4, (%docblockorinline; | level5)+) | ((%docblockorinline; | level5)+, (h4, (%docblockorinline; | level5)+)?)) > <!ATTLIST level4 %attrs; > <!--HB: 2004-03-25 28: level5: added constraint - at most one <h5> per <level5>. --> <!--MM: 2004-07-08 34: level5: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-30 level5: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level5: Simplified content model. --> <!--MM: 2005-03-10 level5: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!--Use: level5 contains further subdivisions that nest within <level4> subdivisions. The class attribute identifies the actual name of the subordinate structure it marks. At most one heading <h5> may be used. --> <!ELEMENT level5 ((h5, (%docblockorinline; | level6)+) | ((%docblockorinline; | level6)+, (h5, (%docblockorinline; | level6)+)?)) > <!ATTLIST level5 %attrs; > <!--HB: 2004-03-25 28: level6: added constraint - at most one <h6> per <level6>. --> <!--MM: 2004-07-08 34: level6: make contentmodel (...)+, rather than (...)*. --> <!--MM: 2004-07-23 34: level6: replaced "%block | %inlineinblock" with "%docblockorinline;" per other leveln models. --> <!--MM: 2004-07-30 level6: Changed content model to eliminate ambiguity. --> <!--MM, DP: 2004-08-17 Corrected typos in content models of level and level1-level6.--> <!--MM: 2004-09-15 level6: Simplified content model. --> <!--MM: 2005-03-10 level6: Reverted to 2004-08-17 content model as simplified content model was not valid. --> <!--Use: level6 contains further subdivisions that nest within <level5> subdivisions. The class attribute identifies the actual name of the subordinate structure it marks. At most one heading <h6> may be used. --> <!ELEMENT level6 ((h6, (%docblockorinline;)+) | ((%docblockorinline;)+, (h6, (%docblockorinline;)+)?)) > <!ATTLIST level6 %attrs; > <!--============================= Text Markup =============================--> <!ENTITY % phrase "em | strong | dfn | code | samp | kbd | cite | abbr | acronym" > <!-- inline text elements --> <!--HB: 2004-04-23 % special: eliminated linenum from % special, linenum only appears within line. --> <!ENTITY % special "a | img | imggroup | br | q | sub | sup | span | bdo " > <!-- special inline text elements --> <!--HB: 2004-04-23 % specialnoa: eliminated linenum from % specialnoa, linenum only appears within line. --> <!ENTITY % specialnoa "img | imggroup | br | q | sub | sup | span | bdo " > <!-- specialnoa inline text elements for anchor <a> --> <!--=========================== Inline Entities ===========================--> <!--jpritchett@rfbd.org: 2006-08-11. Add %externalFlow to %dtbookinline; --> <!ENTITY % dtbookinline "sent | w | pagenum | prodnote | annoref | noteref %externalinline; %externalFlow;" > <!-- dtbook added inline text elements --> <!ENTITY % inline "#PCDATA | %phrase; | %special; | %dtbookinline;" > <!-- inline text elements --> <!--HB: 2004-03-25 36h: to % inlinenoa add %dtbookinline;. --> <!--MM: 2004-07-23 Remove %externalinline; since already present via %dtbookinline;.--> <!ENTITY % inlinenoa "#PCDATA | %phrase; | %specialnoa; | %dtbookinline;" > <!-- inlinenoa excludes nested <a> --> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalFlow %inlines;, %inlinew; --> <!ENTITY % inlines "#PCDATA | %phrase; | %special; | pagenum | w | prodnote | annoref | noteref %externalinline; %externalFlow;" > <!-- inlines excludes direct nesting of sentences <sent> --> <!ENTITY % inlinew "#PCDATA | %phrase; | %special; %externalinline; %externalFlow;" > <!-- inlinew for word <w> excludes any of the %dtbookinline; --> <!ENTITY % inlinenopagenum "#PCDATA | %phrase; | %special; | sent | w | annoref | noteref %externalinline;" > <!-- inlinenopagenum excludes direct <pagenum> in <table> <th> and <td>. --> <!ENTITY % inlinenoprodnote "#PCDATA | %phrase; | %special; | sent | w | pagenum | annoref | noteref %externalinline;" > <!-- inlinenoprodnote excludes direct <prodnote>, as they shouldn't nest --> <!--=================== Flow (Block or Inline) Entities ===================--> <!--jpritchett@rfbd.org: 2006-07-07. Added %externalFlow to %flow;, %flownopagenum; --> <!ENTITY % flow "%inlinenoprodnote; | %blocknoimggroup; %externalFlow;" > <!-- flow elements add inlinenoprodnote to block --> <!ENTITY % flownopagenum "%inlinenopagenum; | %blocknoimggroup; %externalFlow; " > <!-- flownopagenum ideally excludes pagenum though can get in indirectly through elements of %blocknoimggroup; --> <!--========= Br, Line, Linenum, Address, and Div Content Models ==========--> <!--Use: br marks a forced line break. --> <!ELEMENT br EMPTY > <!--Attuse: br The %coreattrs; only appear, as there is no content to which the more general %attrs; apply. --> <!ATTLIST br %coreattrs; > <!--Use: line marks a single logical line of text. Often used in conjunction with <linenum> in documents with numbered lines. --> <!ELEMENT line (%inline; | linenum)* > <!ATTLIST line %attrs; > <!--HB: 2004-03-30 poem: added linenum use. --> <!--Use: linenum contains a line number, for example in legal text, or <poem>. --> <!ELEMENT linenum (#PCDATA) > <!ATTLIST linenum %attrs; > <!--Use: address contains a location at which a person or agency may be contacted. By use of <line> to contain content of the individual lines, the class attribute can be used to identify the content of that <line>. For example, class values might include: name, address, region (state. province, etc.), country, location code (such as zipcode, provincial code), phone, fax, email, etc. --> <!ELEMENT address (%inline; | line)* > <!ATTLIST address %attrs; > <!--Use: div is a generic container for subdivisions of a book. The <level1> ... <level6> hierarchy, or the <level> tag used recursively, should mark the major hierarchical structures of a book, while <div> is used in less formal circumstances or when for production purposes it is desired that a structure should be treated differently. Compare with <span>, which is used in inline settings. --> <!--HB: 2004-04-08 div: added covertitle. --> <!--MM: 2004-07-30 Dropped 'level' attribute from element div. --> <!--jpritchett@rfbd.org: 2006-07-06 Changed model to %docblockorinline to include bridgehead --> <!ELEMENT div (%docblockorinline;)+ > <!--Attuse: div "class" value can identify the actual name (e.g., part, chapter, letter) of the structure it marks. --> <!ATTLIST div %attrs; > <!--=== dtbook Block Elements: Title, Author, Prodnote, Sidebar ===--> <!--HB: 2004-04-04 35b title: added <title> for use in <poem> or <cite>. --> <!--Use: title contains the title of a <poem> or <cite> (citation) --> <!--jpritchett@rfbd.org: 2006-07-06 Added %coreattrs (id, class, title, xml:space) to attribute list --> <!--jpritchett@rfbd.org 2007-12-17: Changed %coreattrs to %attrs --> <!--jpritchett@rfbd.org 2007-12-17: Expanded content model to include inlines --> <!ELEMENT title (%inline;)* > <!ATTLIST title %attrs; > <!--Use: author identifies the writer of a work other than this one. Contrast with <docauthor>, which identifies the author of this work. <author> typically occurs within <poem>, <blockquote> or <cite>. --> <!ELEMENT author (%inline;)* > <!ATTLIST author %attrs; > <!--HB: 2004-03-25 35d: notice element dropped: its purpose is sufficiently achieved with sidebar with attribute render="required." This provides sufficient capability for admonitions like warning, hazard, danger, or caution. --> <!--Use: prodnote contains language added to the alternative-format version by the producer; commonly used to: 1) provide descriptions of one or more visual elements such as charts, graphs, etc. 2) supply operating instructions 3) describe differences between the print book and the audio version. --> <!ELEMENT prodnote (%flow;)* > <!--Attuse: prodnote "imgref" identifies the space-separated id value(s) on pertinent images <img>. "render" indicates that the content is 'required' or 'optional' for the user. If optional, some user preference may allow skipping over the content. But <prodnote render='required'> is essential content for the user. An audible cue could announce the presence of the <prodnote>. --> <!--HB: 2004-03-25 35g: prodnote: use render="required" to achieve the explicit admonition such as caution, warning, danger, or hazard, from the text. Optionally put the specific admonition in the class attribute value, repeating it from the text. --> <!ATTLIST prodnote %attrs; imgref IDREFS #IMPLIED render (required | optional) #REQUIRED > <!--Use: sidebar contains information supplementary to the main text and/or narrative flow and is often boxed and printed apart from the main text block on a page. It may have a heading <hd>. --> <!ELEMENT sidebar (%flow; | hd)* > <!--HB: 2004-03-25 35g: sidebar: use render="required" to achieve the explicit admonition such as caution, warning, danger, or hazard, from the text. Optionally put the specific admonition in the class attribute value, repeating it from the text. --> <!ATTLIST sidebar %attrs; render (required | optional) #REQUIRED > <!--Use: note marks a footnote, endnote, etc. Any local reference to <note id="yyy"> is by <noteref idref="#yyy">. --> <!ELEMENT note (%block; | %inlineinblock;)+ > <!ATTLIST note %attrsrqd; > <!--Use: annotation is a comment on or explanation of a portion of a printed book. It differs from <note> in that an <annotation> is usually set in the margin or on a facing page, often with no explicit reference to it inserted in the text. Any local reference to <annotation id="xxx"> is by <annoref idref="#xxx">. --> <!ELEMENT annotation (%block; | %inlineinblock;)+ > <!ATTLIST annotation %attrsrqd; > <!--====================== Byline, Epigraph, Dateline =====================--> <!-- Addenda module for dtbook M. Moodie and J. Pritchett 9 July 2003 This module defines the <epigraph>, <dateline>, and <byline> elements. --> <!--HB: 2004-03-30 epigraph: element added. --> <!-- Use: epigraph marks a quotation placed at the beginnihg of a work or a division of a work. --> <!--MM: 2005-04-22 epigraph - changed ATTLIST to %attrs; --> <!ELEMENT epigraph (%flow;)* > <!ATTLIST epigraph %attrs; > <!--HB: 2004-30-30 byline: element added. --> <!-- Use: byline contains information about the creator of or contributor to a work. --> <!--MM: 2005-04-22 byline - changed ATTLIST to %attrs; --> <!ELEMENT byline (%inline;)* > <!ATTLIST byline %attrs; > <!--HB: 2004-30-30 dateline: element added. --> <!-- Use: dateline contains information about the time and/or place at which a work was authored. --> <!--MM: 2005-04-22 dateline - changed ATTLIST to %attrs; --> <!ELEMENT dateline (%inline;)* > <!ATTLIST dateline %attrs; > <!--============================= Poem, Linegroup =========================--> <!-- dtbook poetry module M. Moodie and J. Pritchett 9 July 2003 This module defines the <linegroup> and <poem> elements. --> <!-- Use: linegroup provides means to group a set of lines of a <poem>. --> <!ELEMENT linegroup (hd | dateline | epigraph | byline | linegroup | line | pagenum | prodnote | noteref | annoref | note | annotation | p | blockquote | img | imggroup)* > <!--HB: 2004-03-30 linegroup: The class attribute value can identify the kind of linegroup, such as "stanza", "chorus", or "canto". --> <!--MM: 2005-04-22 linegroup - changed ATTLIST to %attrs; --> <!ATTLIST linegroup %attrs; > <!--HB: 2004-03-30 poem: removed notice and hr from content model. --> <!--HB: 2004-03-30 poem: added title and author to content model. --> <!-- Use: poem is a complete <poem> or fragment thereof. --> <!--MM: 2005-04-22 poem - changed ATTLIST to %attrs; --> <!ELEMENT poem (title | author | hd | dateline | epigraph | byline | linegroup | line | pagenum | img | imggroup | sidebar)* > <!ATTLIST poem %attrs; > <!--========================= The Anchor Element ==========================--> <!--Use: a contains an anchor, which is used to reference another location, within the same or another <dtbook>. --> <!ELEMENT a (%inlinenoa;)* > <!--jpritchett@rfbd.org: 2006-07-07 Corrected reference to RFC2046 in comment regarding @type --> <!--jpritchett@rfbd.org: 2007-12-10 Updated reference from RFC3066 to RFC4646 --> <!--Attuse: a "href" value may have three forms: 1) '#idref', in the <dtbook>, to the element type having the referenced id value; 2) 'uri', a uniform resource identifier to a resource, typically a document, see [RFC2396], possibly restricted to work with only the <dtbook> document content, as referenced content is expected to be available on the same media, and off-media references may not be available; 3) 'uri#xxx', in the resource uri, the element with id='xxx'. Uses of the remaining attributes other than %attrs; are: "type" is advisory content MIME type of the target, see [RFC2046]; "hreflang" is the language code of the href target, see [RFC4646]; "rel" is a list of forward link type(s), the relationship(s) expressed by the href value to the target, space-separated if multiple; "rev" is a list of reverse link types, the relationship(s) to this location from the href target, space-separated if multiple; "accesskey"=accessibility key character shortcut; "tabindex"=tabbing order. "external" An external link points to media content that is not part of the DTB. The external media content must be rendered by an external application, whether or not that content is renderable by the DTB player. --> <!ATTLIST a %attrs; type %ContentType; #IMPLIED href %URI; #IMPLIED hreflang %LanguageCode; #IMPLIED rel %LinkTypes; #IMPLIED rev %LinkTypes; #IMPLIED accesskey %Character; #IMPLIED tabindex %Number; #IMPLIED external (true | false) 'false' > <!--=========================== Inline Elements ===========================--> <!--Use: em indicates emphasis. Usually <em> is rendered in italics. Compare with <strong>. --> <!ELEMENT em (%inline;)* > <!ATTLIST em %attrs; > <!--Use: strong marks stronger emphasis than <em>. Visually <strong> is usually rendered bold. --> <!ELEMENT strong (%inline;)* > <!ATTLIST strong %attrs; > <!--Use: dfn marks the first occurrence of a word or term that is defined or explained there or elsewhere in <book>. Often <dfn> is rendered in italics, sometimes in parentheses. --> <!ELEMENT dfn (%inline;)* > <!ATTLIST dfn %attrs; > <!--Use: kbd designates information that the reader is to input directly into a computer using the keyboard. --> <!ELEMENT kbd (%inline;)* > <!ATTLIST kbd %attrs; > <!--Use: code designates a fragment of computer code. --> <!ELEMENT code (%inline;)* > <!-- jpritchett@rfbd.org: 2006-09-08 Expanded %attrs; to prevent duplication of @xml:space --> <!--Attuse: code See http://www.w3.org/TR/xml11/#sec-white-space for information on xml:space. --> <!ATTLIST code id ID #IMPLIED class CDATA #IMPLIED title %Text; #IMPLIED xml:space (default|preserve) 'preserve' %externalNamespaces; %i18n; smilref CDATA #IMPLIED %showin; > <!--Use: samp contains a sample of work created by the author for use as an example or template. For example, a sample business letter, resume, computer program output, or form. --> <!ELEMENT samp (%inline;)* > <!-- jpritchett@rfbd.org: 2006-09-08 Expanded %attrs; to prevent duplication of @xml:space --> <!--Attuse: samp See http://www.w3.org/TR/xml11/#sec-white-space for information on xml:space. --> <!ATTLIST samp id ID #IMPLIED class CDATA #IMPLIED title %Text; #IMPLIED xml:space (default|preserve) 'preserve' %externalNamespaces; %i18n; smilref CDATA #IMPLIED %showin; > <!--Use: cite marks a reference (or citation) to another document. --> <!--HB: 2004-03-25 35a: cite: allow title and author. --> <!ELEMENT cite (%inline; | title | author)* > <!ATTLIST cite %attrs; > <!--Use: abbr designates an abbreviation, a shortened form of a word. For examples: Mr., approx., lbs., rec'd. Contrast with <acronym>. --> <!ELEMENT abbr (%inline;)* > <!--Attuse: abbr "title" value may expand that abbreviation. --> <!ATTLIST abbr %attrs; > <!--Use: acronym marks a word formed from key letters (usually initials) of a group of words. For examples: UNESCO, NATO, XML, US. Contrast with <abbr>. --> <!ELEMENT acronym (%inline;)* > <!--Attuse: acronym "title" value may expand that acronym. "pronounce" value 'yes' indicates that the acronym is pronounceable as a word (for example, NATO); 'no' that the acronym is best presented as a sequence of letters (for examples, "XML" or "US"). --> <!ATTLIST acronym %attrs; pronounce (yes | no) #IMPLIED > <!--Use: sub indicates a subscript character (printed below a character's normal baseline). Can be used recursively and/or intermixed with <sup>. --> <!ELEMENT sub (%inline;)* > <!ATTLIST sub %attrs; > <!--Use: sup marks a superscript character (printed above a character's normal baseline). Can be used recursively and/or intermixed with <sub>. --> <!ELEMENT sup (%inline;)* > <!ATTLIST sup %attrs; > <!--Use: span is a generic container for use in inline settings when no specific tag exists for a given situation. The class attribute may describe the nature of the text it marks (e.g., a typographical error). May be used to mark a class of items to which styles are to be applied. Compare with <div>, which is used in a block settings. --> <!ELEMENT span (%inline;)* > <!ATTLIST span %attrs; > <!--Use: bdo is used in special cases where the automatic actions of the bi-directional algorithm would result in incorrect display. --> <!ELEMENT bdo (%inline;)* > <!--jpritchett@rfbd.org: 2006-07-07 Changed @lang to @xml:lang --> <!--jpritchett@rfbd.org 2007-12-17: Added @smilref and @showin --> <!--Attuse: bdo "lang" indicates the language of the content. "dir" indicates the writing direction: 'ltr' is left-to-right, 'rtl' is right-to-left. --> <!ATTLIST bdo %coreattrs; xml:lang %LanguageCode; #IMPLIED dir (ltr | rtl) #REQUIRED smilref CDATA #IMPLIED %showin; > <!--=================== dtbook Inline Sentence and Word ===================--> <!--Use: sent marks a sentence. --> <!ELEMENT sent (%inlines;)* > <!ATTLIST sent %attrs; > <!--Use: w marks a word. --> <!ELEMENT w (%inlinew;)* > <!ATTLIST w %attrs; > <!--======== Inline Page Number, Footnote and Annotation Reference ========--> <!--MM: 2004-07-30 Revised description of page types for 'page' attribute on element pagenum. Dropped recommendation to use page number as id. --> <!--Use: pagenum contains one page number as it appears from the print document, usually inserted at the point within the file immediately preceding the first item of content on a new page. --> <!ELEMENT pagenum (#PCDATA) > <!--Attuse: pagenum "page" allows three kinds of page numbering schemes to be identified: "front" (for roman-numeral pages at the start of a book), "normal" (for pages identified by arabic numerals), or "special" (for all other kinds of pages) For multi-page continuous content, such as large <img> or <table>, put the sequence of <pagenum> on the page where that content starts. --> <!ATTLIST pagenum %attrsrqd; page (front | normal | special) 'normal' > <!--Use: noteref marks one or more characters that reference a footnote or endnote <note>. Contrast with <annoref>. <noteref> and <note> are independently skippable. --> <!ELEMENT noteref (#PCDATA) > <!--jpritchett@rfbd.org: 2006-07-07 Changed @idref type to %URI to clarify usage --> <!--jpritchett@rfbd.org: 2006-07-07 Modified comments to clarify @idref usage --> <!--jpritchett@rfbd.org: 2006-07-07 Corrected reference to RFC2046 in comment regarding @type --> <!--Attuse: noteref "idref" is a URI pointing to the target note, either within same document or in another document. For example: <noteref idref='#yyy'> refers to <note id='yyy'> within same document. <noteref idref='foobar.xml#xxx'> refers to <note id='xxx'> in document foobar.xml "type" provides advisory content MIME type of the target, see [RFC2046]. --> <!ATTLIST noteref %attrs; idref %URI; #REQUIRED type %ContentType; #IMPLIED > <!--Use: annoref marks a text segment that references an <annotation>. Each <annoref> is usually a word, phrase, or whole line that is part of the surrounding text (identified in the original print book by bolding, italics, etc.). It should not normally be allowed to be turned off in a DTB application. --> <!ELEMENT annoref (#PCDATA) > <!--jpritchett@rfbd.org: 2006-07-07 Changed @idref type to %URI to clarify usage --> <!--jpritchett@rfbd.org: 2006-07-07 Modified comments to clarify @idref usage --> <!--jpritchett@rfbd.org: 2006-07-07 Corrected reference to RFC2046 in comment regarding @type --> <!--Attuse: annoref "idref" is a URI pointing to the target annotation, either within same document or in another document. For example: <annoref idref='#yyy'> refers to <annotation id='yyy'> within same document. <annoref idref='foobar.xml#xxx'> refers to <annotation id='xxx'> in document foobar.xml "type" provides advisory content MIME type of the targeted id, see [RFC2046]. --> <!ATTLIST annoref %attrs; idref %URI; #REQUIRED type %ContentType; #IMPLIED > <!--============================ Inline Quotes ============================--> <!--Use: q contains a short, inline quotation. Compare with <blockquote>, which marks a longer quotation set off from the surrounding text. --> <!ELEMENT q (%inline;)* > <!--Attuse: q "cite" may provide a URI reference. --> <!ATTLIST q %attrs; cite %URI; #IMPLIED > <!--=============================== Images ================================--> <!-- Image <img> comes from HTML. An <img> may be grouped using <imggroup>, with <caption>, and special usage instructions or description with <prodnote>. The <imggroup> element may contain one or more <img> and any associated <caption> and <prodnote>. Multiple <img> may share a single caption, or multiple <caption> may apply if several captions refer to a single <img>. Multiple <prodnote> may apply if different versions are needed for different media. --> <!ENTITY % Length "CDATA" > <!-- measured in pixels, percent (nn%) --> <!ENTITY % MultiLength "CDATA" > <!-- measured in integer pixels "n", percent "nn%" of display width, "0*" indicating minimum appropriate width based on column content, or "nn*" the relative proportional width (".5*" is half the available width after any explicit widths have been consumed). The lengths are separated by commas or whitespace. --> <!ENTITY % Pixels "CDATA" > <!-- 0 for no <table> border, positive integer for <table> border width in pixels. --> <!--jpritchett@rfbd.org 2007-12-17: Corrected description of caption/@imgref --> <!--Use: img marks a visual image. An <img> will always contain an alt and generally contain a longdesc, a pointer to a related <prodnote>. The <img> may be referenced by a <caption> or <prodnote>, using, for example, the form <caption imgref="yyy">the Caption</caption> for the <img id="yyy">. --> <!ELEMENT img EMPTY > <!--Attuse: img "src" specifies by URI the location of the image file. "alt" is used to supply a short description of the <img>. "longdesc" generally contains a pointer to a related <prodnote> that contains a detailed description of the <img>. The attributes "height" and "width" provide visual sizing information, measured in pixels. --> <!ATTLIST img %attrs; src %URI; #REQUIRED alt %Text; #REQUIRED longdesc %URI; #IMPLIED height %Length; #IMPLIED width %Length; #IMPLIED > <!-- jpritchett@rfbd.org 2007-12-17: Added pagenum to content model --> <!--Use: imggroup provides a container for one or more <img> and associated <caption>(s) and <prodnote>(s). A <prodnote> may contain a description of the image. The content model allows: 1) multiple <img> if they share a caption, with the ids of each <img> in the <caption imgref="id1 id2 ...">, 2) multiple <caption> if several captions refer to a single <img id="xxx"> where each caption has the same <caption imgref="xxx">, 3) multiple <prodnote> if different versions are needed for different media (e.g., large print, braille, or print). If several <prodnote> refer to a single <img id="xxx">, each prodnote has the same <prodnote imgref="xxx">. 4) one or more <pagenum> if the image group spans several pages. --> <!ELEMENT imggroup (prodnote | img | caption | pagenum)+ > <!ATTLIST imggroup %attrs; > <!--HB: 2004-03-25 30: hr: element dropped horizontal rule as purely visual. --> <!--============================= Paragraphs ==============================--> <!--Use: p contains a paragraph, which may contain subsidiary <list> or <dl>. --> <!ELEMENT p (%inline; | list | dl)* > <!ATTLIST p %attrs; > <!--=========== Doctitle, Docauthor, Covertitle, and Headings ============--> <!--Use: doctitle marks the full title of the book, including any subtitles, <frontmatter>. By convention <doctitle> should appear Contrast with covertitle. --> <!ELEMENT doctitle (%inline;)* > <!ATTLIST doctitle %attrs; > <!--Use: docauthor marks each author or editor of this work. Compare with <author>, used to mark the author of another work, within <blockquote> or <cite>. --> <!ELEMENT docauthor (%inline;)* > <!ATTLIST docauthor %attrs; > <!--Use: covertitle is the short title of a book, often found on the spine. It may be the same as the doctitle. --> <!--HB: 2004-04-08 covertitle: element added --> <!ELEMENT covertitle (%inline;)* > <!ATTLIST covertitle %attrs; > <!--MM: 2004-09-15 Deleted element levelhd, replacing it with hd in content model of level. --> <!--Use: h1 contains the text of the heading for a <level1> structure. --> <!ELEMENT h1 (%inline;)* > <!ATTLIST h1 %attrs; > <!--Use: h2 contains the text of the heading for a <level2> structure. --> <!ELEMENT h2 (%inline;)* > <!ATTLIST h2 %attrs; > <!--Use: h3 contains the text of the heading for a <level3> structure. --> <!ELEMENT h3 (%inline;)* > <!ATTLIST h3 %attrs; > <!--Use: h4 contains the text of the heading for a <level4> structure. --> <!ELEMENT h4 (%inline;)* > <!ATTLIST h4 %attrs; > <!--Use: h5 contains the text of the heading for a <level5> structure. --> <!ELEMENT h5 (%inline;)* > <!ATTLIST h5 %attrs; > <!--Use: h6 contains the text of the heading for a <level6> structure. --> <!ELEMENT h6 (%inline;)* > <!ATTLIST h6 %attrs; > <!--HB: 2004-04-02 bridgehead: element added. --> <!--MM: 2004-09-15 bridgehead: changed content model to (%inline;)*, to match hd, and h1-h6. --> <!--Use: bridgehead is a free-floating heading that is not associated with the hierarchical structure of a document. It may occur only subsidiary to one of the hierarchic elements. <hd> and <h1> ... <h6> are restricted to one occurrence per level or <level1> ... <level6>, respectively. <bridgehead> has no such restriction, but should be used only when it is clear that none of the structural headings is appropriate. See also <hd>. --> <!ELEMENT bridgehead (%inline;)* > <!ATTLIST bridgehead %attrs; > <!--Use: hd marks the text of a heading in <level>, <poem>, <list>, <linegroup>, or <sidebar>. --> <!ELEMENT hd (%inline;)* > <!ATTLIST hd %attrs; > <!--========================== Preformatted Text ==========================--> <!-- HTML or XHTML preformatted text is omitted, as inappropriate for narrated material. --> <!--========================== Block-like Quotes ==========================--> <!--Use: blockquote indicates a block of quoted content that is set off from the surrounding text by paragraph breaks. Compare with <q>, which marks short, inline quotations. --> <!--HB: 2004-03-25 36i: blockquote allow pagenum. --> <!ELEMENT blockquote (pagenum | %block;)* > <!--Attuse: blockquote "cite" permits inclusion of the URI from which the <blockquote> came. --> <!ATTLIST blockquote %attrs; cite %URI; #IMPLIED > <!--================== Definition List, and Other Lists ===================--> <!--Use: dl contains a definition list, usually consisting of pairs of terms <dt> and definitions <dd>. Any definition can contain another definition list. --> <!ELEMENT dl (dt | dd | pagenum)+ > <!ATTLIST dl %attrs; > <!--Use: dt marks a term in a definition list <dl> for which a definition <dd> follows. --> <!ELEMENT dt (%inline;)* > <!ATTLIST dt %attrs; > <!--Use: dd marks a definition of the preceding term <dt> within a definition list <dl>. A definition without a preceding <dt> has no semantic interpretation, but is visually presented aligned with other <dd>. --> <!ELEMENT dd (%flow;)* > <!ATTLIST dd %attrs; > <!--Use: list contains some form of list, ordered, unordered, or preformatted. The list may have intermixed heading <hd> (generally only one, possibly with <prodnote>) and an intermixture of list items <li> and <pagenum>. If bullets and outline enumerations are part of the preformatted print content, they are expected to prefix those list items in content, rather than be implicitly generated. Note: XHTML has explicitly distinguished list element types: ol for ordered, and ul for unordered, but not pl for preformatted. --> <!ELEMENT list (hd | prodnote | li | pagenum)+ > <!--HB: 2004-03-25 36d: list: added start attribute to indicate initial ordinal of a numbered list. --> <!--HB: 2004-03-31 list: changed enum from 'U' to 'A' for uppercase, and "X" to 'I' for uppercase Roman. --> <!--HB: 2004-03-31 list: changed enum value choices from "U" to "A" for uppercase, and "X" to "I" for uppercase Roman for compatibility with xhtml. --> <!--HB: 2004-04-02 list: expanded discussion on enum attribute. --> <!--HB: 2004-04-27 list: added type "pl" to indicate that the list is preformatted so no bullets or enumerations should be added. --> <!--Attuse: list "type" indicates whether the list items <li> are ordered 'ol' or unordered 'ul' or preformatted 'pl'. "depth" indicates nesting depth of lists within list items <li> of ancestor lists, starting at 1. "enum" indicates the kind of enumeration: '1'=integer, 'a'=lowercase, 'A'=uppercase, 'i'=lowercase Roman, or 'I'=uppercase Roman. "start" value indicates the ordered list integer ordinal, impllcitly 1, to denote the first ordered list item. Its value is determined for the indicated enum type. A start value is useful when there is an injection of a different element type, such as <pageno>. --> <!--HB: 2004-04-22 list: removed bullet attribute, It is up to a style-sheet to make any needed visual distinction for nested unordered lists, or if the list type is "pl" preformatted the bullet form may be there. --> <!ATTLIST list %attrs; type (ol | ul | pl) #REQUIRED depth CDATA #IMPLIED enum (1 | a | A | i | I) #IMPLIED start CDATA #IMPLIED > <!--Use: li marks each list item in a <list>. <li> content may be either inline or block and may include other nested lists. Alternatively it may contain a sequence of list item components, <lic>, that identify regularly occurring content, such as the heading and page number of each entry in a table of contents. --> <!ELEMENT li (%flow; | lic)* > <!ATTLIST li %attrs; > <!--Use: lic ("list item component") allows ordered substructure within a list item <li>. Used when a list item is made up of two or more components, as in a table of contents entry. The same number of <lic> should occur in each <li>. If not, correspondence of <lic> in different <li> is in order of occurrence for the current writing direction of the <li>. --> <!ELEMENT lic (%inline;)* > <!--Attuse: lic class attribute may be used to identify the particular component of a list item <li>. For example, in a table of contents class values might include "section", and "pagenumber". --> <!ATTLIST lic %attrs; > <!--=============================== Tables ================================--> <!-- The XHTML <table> model is used, including the presentational attributes that have little meaning in Digital Talking Books, but may be useful for concurrent display in different media. That model is derived from IETF HTML table standard, see [RFC1942]. Note: The XHTML <table> model has been enhanced from HTML to allow a simple <table> of one or more rows <tr>. --> <!ENTITY % Scope "(row | col | rowgroup | colgroup)" > <!-- Scope specifies a set of data cells for which the <th> provides header information. --> <!ENTITY % TFrame "(void | above | below | hsides | lhs | rhs | vsides | box | border)" > <!-- TFrame identifies the sides that are visually framed. --> <!ENTITY % TRules "(none | groups | rows | cols | all)" > <!-- %TRules identifies where visual rulings appear. If no Trules is present then assume: 'none' if border is absent or border='0' otherwise 'all'. --> <!ENTITY % cellhalign "align (left|center|right|justify|char) #IMPLIED char %Character; #IMPLIED charoff %Length; #IMPLIED" > <!-- % cellhalign cellhalign sets horizontal alignment of content in a table cell. char indicates a character expected in each table cell of a column that text should align on. The default is the decimal point for the current language. charoff sets the alignment offset of the first character to align on, as specified with char. Inheritance order for horizontal alignment is <th>|<td>, <tr>, <thead>|<tfoot>|<tbody>, <col>, <colgroup>, default. The default value is from the user agent, and may be affected by user preference. The recommended default alignment for <th> is center, and for <td> is left. --> <!ENTITY % cellvalign "valign (top|middle|bottom|baseline) #IMPLIED" > <!-- % cellvalign valign sets vertical alignment of content in a table cell. Inheritance order for vertical alignment is <th>|<td>, <col>, <colgroup>, <tr>, <thead>|<tfoot>|<tbody>, default. The default value is from the user agent, and may be affected by user preference. The recommended default is middle. --> <!--jpritchett@rfbd.org 2007-12-19: Edited comment to reflect new content models --> <!--Use: table contains cells of tabular data arranged in rows and columns. A <table> may have a <caption>. It may have descriptions of the columns in <col>s or groupings of several <col> in <colgroup>. A simple <table> may be made up of just rows <tr>. Note the logical order of optional <thead>, optional <tfoot>, then one or more of either <tbody> or just rows <tr>. This order accommodates simple or large, complex tables. The <thead> and <tfoot> information usually helps identify content of the <tbody> rows, For a multiple-page print <table> the <thead> and <tfoot> are repeated on each page, but not redundantly tagged. --> <!--jpritchett@rfbd.org 2007-12-19: Added pagenum to content model --> <!ELEMENT table (caption?, (col* | colgroup*), thead?, tfoot?, (tbody+| (tr|pagenum)+)) > <!--Attuse: table "summary" value provides a textual summary. The attributes: "width", "border", "frame", "rules", "cellspacing", and "cellpadding" provide visual presentation guidance. See their explanation in the comment following those parameter entity declarations. --> <!ATTLIST table %attrs; summary %Text; #IMPLIED width %Length; #IMPLIED border %Pixels; #IMPLIED frame %TFrame; #IMPLIED rules %TRules; #IMPLIED cellspacing %Length; #IMPLIED cellpadding %Length; #IMPLIED > <!--HB: 2004-03-25 36f: caption: removed use for <img>. --> <!--MM: 2004-09-15: caption: changed content model to %flow;. --> <!--Use: caption describes a <table>, or <imggroup>. If used with <table> it must follow immediately after the <table> start tag. If used with <imggroup> it is not so constrained. --> <!ELEMENT caption (%flow;)* > <!--jpritchett@rfbd.org: 2007-12-17 Corrected description of @imgref --> <!--Attuse: caption "imgref" value (or space-separated id values) identifies the id values of the <img>(s) to which the caption applies. Only references to images within the same document are allowed. Note: imgref is an extension for dtbook. --> <!ATTLIST caption %attrs; imgref IDREFS #IMPLIED > <!--Use: thead marks header information in a <table>, consisting of one or more rows <tr> of <th> cells. Use <thead> to duplicate headers when breaking table across page boundaries, or for static headers when <tbody> sections are rendered in scrolling panel. --> <!ELEMENT thead (tr)+ > <!ATTLIST thead %attrs; %cellhalign; %cellvalign; > <!--Use: tfoot marks footer information in a <table>, consisting of one or more rows <tr>, usually of <th> cells. Use <tfoot> to duplicate footers when breaking table across page boundaries, or for static footers when <tbody> sections are rendered in scrolling panel. --> <!ELEMENT tfoot (tr)+ > <!ATTLIST tfoot %attrs; %cellhalign; %cellvalign; > <!--Use: tbody marks a group of rows in the main body of a <table>. If the <table> is divided into several sections, each consisting of a number of rows, each section would be separately tagged with <tbody>. The same <thead> and <tfoot> apply to every <tbody> section. Use multiple <tbody> sections when rules are needed between groups of table rows. --> <!--jpritchett@rfbd.org 2007-12-19: Added pagenum to content model --> <!ELEMENT tbody ((tr|pagenum)+) > <!ATTLIST tbody %attrs; %cellhalign; %cellvalign; > <!--Use: colgroup groups adjacent columns <col> that are semantically related. --> <!ELEMENT colgroup (col)* > <!--Attuse: colgroup "span" causes the attributes of one col element to apply to more than one column, extending in the writing direction for the language. Span is ignored if any <col> are present. "width" specifies the width of the columns, e.g. width='64' width in screen pixels width='0.5*' relative width of 0.5 "width" may contain a space- or comma-separated list of widths for each <col>, or percentages if values end in '%', or relative 'nn*' to indicate a fractional portion of the remaining widths after more explicit forms have been specified for other columns in the colgroup (presumably the sum encompasses all the columns). '0*' indicates minimal acceptable width based on column content. The <col> in a <colgroup> may inherit attribute values from it, or the closest enclosing ancestor element: <thead>|<tfoot>|<tbody>. If none, then the values are up to the user agent, possibly by user preference. --> <!ATTLIST colgroup %attrs; span NMTOKEN '1' width %MultiLength; #IMPLIED %cellhalign; %cellvalign; > <!--Use: col elements define the alignment properties for cells in one or more columns. --> <!ELEMENT col EMPTY > <!--Attuse: col "span" indicates how many columns the <col> extends, in the writing direction of the <table>. The attribute values apply to <th> and <td> that start in the column, even if they extend into the next column(s), by span value more than 1, and that next <col> may have different attribute values. "width" may contain a space- or comma-separated list of widths for each <col> of the span, or percentages if values end in '%', or relative 'nn*' to indicate a fractional portion of the remaining widths after more explicit forms have been specified for other columns in the span (presumably the sum encompasses all the columns of this span, and of other <colgroup>s). '0*' indicates minimal acceptable width based on individual <col> content. <col> may inherit attribute values from the most immediate enclosing ancestor element: <colgroup>, <thead>|<tbody>|<tfoot>. If none, it is up to the user agent, possibly by user preference. --> <!ATTLIST col %attrs; span NMTOKEN '1' width %MultiLength; #IMPLIED %cellhalign; %cellvalign; > <!--Use: tr marks one row of a <table> containing <th> or <td> cells. --> <!ELEMENT tr (th | td)+ > <!--Attuse: tr %cellvalign; values provide default vertical alignment values for <th> and <td> in the row, overriding any from <thead>|<tbody>|<tfoot>, <col>, <colgroup> If none, it is up to the user agent, possibly by user preference. %cellhalign; values provide default horizontal alignment from <thead>|<tbody>|<tfoot> If none, it is up to the user agent, possibly by user preference. --> <!ATTLIST tr %attrs; %cellhalign; %cellvalign; > <!--Use: th indicates a table cell containing header information. --> <!ELEMENT th (%flownopagenum;)* > <!--Attuse: th The uses of attributes other than %attrs; %cellvalign; and %cellhalign; are shown below. See [HTML401STRICT] for details and examples. "abbr" provides an abbreviated name for a <th> cell that can be used when referring to that <th> cell. Its default value is the cell content. "axis" is used to place cells into conceptual categories in order to provide improved access to information. "headers" provides the id value(s), used with <td> cells, to reference one or more cells with <th id="xxx"> that contain headings that collectively describe or qualify the content of the cell, for example <td headers="id1 id2">. "scope" identifies one of (row | rowgroup | column | colgroup) to which the header information applies. "rowspan" indicates the total number of rows that the cell extends, by default 1. All spanned cells share these attributes. "colspan" indicates the total number of columns the cell extends, by default 1, in the writing direction of the table. All spanned cells share these attributes. --> <!ATTLIST th %attrs; abbr %Text; #IMPLIED axis CDATA #IMPLIED headers IDREFS #IMPLIED scope %Scope; #IMPLIED rowspan NMTOKEN '1' colspan NMTOKEN '1' %cellhalign; %cellvalign; > <!--Use: td indicates a table cell containing data. --> <!ELEMENT td (%flownopagenum;)* > <!--Attuse: td The uses of attributes other than %attrs; %cellhalign; and %cellvalign; are shown below. See [HTML401STRICT] for details and examples. "abbr" provides an abbreviated name for a <th> cell that can be used when referring to that <th> cell. Its default value is the cell content. "axis" is used to place cells into conceptual categories in order to provide improved access to information. "headers" provides the id value(s), used with <td> cells, to reference one or more cells with <th id="xxx"> that contain headings that collectively describe or qualify the content of the cell, for example <td headers="id1 id2">. "scope" identifies one of (row | rowgroup | column | colgroup) to which the header information applies. "rowspan" indicates the total number of rows that the cell extends, by default 1. All spanned cells share these attributes. "colspan" indicates the total number of columns the cell extends, by default 1, in the writing direction of the table. All spanned cells share these attributes. --> <!ATTLIST td %attrs; abbr %Text; #IMPLIED axis CDATA #IMPLIED headers IDREFS #IMPLIED scope %Scope; #IMPLIED rowspan NMTOKEN '1' colspan NMTOKEN '1' %cellhalign; %cellvalign; > <!-- End dtbook-2005-3.dtd -->