1 <!-- ============================================================= -->
2 <!-- Gamebook Document Type Definition v0.13 -->
3 <!-- ============================================================= -->
6 This DTD was designed around XML 1.0.
8 This gamebook DTD is aimed primarily at the books under development by
9 Project Aon (https://www.projectaon.org/). Future versions may be of
14 14 December 2019 (version 0.14)
15 * added more fractional character elements
16 * added "lte" and "gte" character elements
18 13 November 2012 (version 0.13.3)
19 * added the "puzzle" and "deadend" elements
21 24 May 2011 (version 0.13.2)
22 * added the "relationship" attribute to the "creator" and "contributor"
25 23 May 2011 (version 0.13.1)
26 * added the "sort-name" attribute to the "creator" and "contributor"
29 5 November 2010 (version 0.13.0)
30 * changed the "is" attribute on the "when" element to "value"
32 25 October 2010 (version 0.12.7)
33 * Made the "signpost" element mixed content
35 13 September 2010 (version 0.12.6)
36 * Added the "poetry" element
38 30 July 2010 (version 0.12.5)
39 * Added the "originalwidth", "posx", and "posy" attributes to the
42 28 July 2010 (version 0.12.4)
43 * Added the "choose", "when", and "otherwise" elements
45 1 April 2009 (version 0.12.3)
46 * Added the "start" attribute to ordered lists.
47 * Added the "value" attribute to list items.
49 19 December 2006 (version 0.12.2)
50 * Added the "line" element to the inline elements list.
52 19 December 2006 (version 0.12.1)
53 * Upgraded the table model to included "caption", "colgroup", "thead",
54 "tfoot", and "tbdoy" elements and the cell scoping attributes
55 "rowspan", "colspan", "axis", and "scope".
56 * Deprecated the "br" element in favor of the "line" element.
58 25 March 2006 (version 0.12.0)
59 * Added "illref", "illustrations" and "illgroup". Still backwards
62 26 December 2005 (version 0.11.4)
63 * Added link.attributes and the optional "series" attribute to
64 "bookref", and fleshed out the "bookref" and "footref"
67 5 December 2005 (version 0.11.3)
68 * Corrected ATTLISTs of character elements
69 * Added "ch.apos", "ch.frac116", and "ch.plus" elements
71 9 April 2005 (version 0.11.2)
72 * Added the following inline elements: "bookref", "footref".
73 * Added the character elements to replace the use of character
74 entities (except in attributes). These allow a processor (e.g.
75 a XSL transformation) to decide how characters should be
76 represented, not this DTD.
78 18 April 2003 (version 0.11.1)
79 * Added the following inline elements: "onomatopoeia", "spell",
82 27 January 2003 (version 0.11.0)
83 * Moved the optional "footnotes" element between the "meta" and
86 10 January 2003 (version 0.10.4)
87 * Removed the "inline.content" entity from the declaration of the
88 contents of the "blockquote" element. This will break some existing
91 7 January 2003 (version 0.10.3)
92 * Made the "src", "width", and "height" attributes of the "instance"
95 4 January 2003 (version 0.10.2)
96 * Moved the specialized character entity definitions into module
99 5 October 2002 (version 0.10.1)
100 * Added the "lellips" and "minus" entities and changed the definition
101 of the "emdash" entity.
103 5 September 2002 (version 0.10.0)
104 * Added the "quote" element.
106 31 August 2002 (version 0.9.1)
107 * Added the "xml:lang" attribute to the "core.attributes" entity.
108 Although this could be used for most elements, it is primarily
109 aimed at the "foreign" element.
111 6 July 2002 (version 0.9)
112 * Replaced the "caption" element and the "illustrator" attribute with
113 the use of the "meta" element.
114 * Renamed the "illustration-instance" element to simply "instance".
115 * Removed the "character-attribute" element.
116 * Added the "typ" element for typographical markup.
117 * Removed the "shortname" attribute.
119 1 June 2002 (version 0.8.3)
120 * Removed the "marker" attribute from the "footnote" element.
122 29 April 2002 (vesion 0.8.2)
123 * Changed the content of the "enemy" element from "#PCDATA" to
126 4 April 2002 (version 0.8.1)
127 * Added the "thinspace" entity
129 3 April 2002 (version 0.8.0)
130 * Added the "thought" element.
131 * Added the "foreign" element.
133 15 March 2002 (version 0.7.0)
134 * Changed the name of the "illustration-set" element to "illustration"
135 and changed the name of the "illustration" element to
136 "illustration-instance".
137 * Made many minor changes to bring the DTD up to current practice.
139 11 May 2001 (version 0.6.0)
140 * Removed the "publication-date" element.
142 5 May 2001 (version 0.5.0)
143 * Added facilities for transformation to LaTeX - mainly appropriate
145 * Added the "marker" attribute to the "footnote" element.
147 1 May 2001 (version 0.4.0)
149 * Added the "link" element to the set of allowable "meta" elements.
150 Although not a Dublin Core meta-data element, it's functionality
151 adds a lot to the document.
153 30 April 2001 (version 0.3.0)
155 * Changed the basic orgranization of the sections by allowing them to
156 have their own meta section instead of a "section-title" element.
157 * Changed the name of the "section-data" element to simply "data".
159 17 April 2001 (version 0.2.0)
161 * Changed some of the block and inline elements in order to make them
164 14 April 2001 (version 0.1.0)
168 <!-- ============================================================= -->
170 <!-- ============================================================= -->
171 <!-- Table of Contents -->
172 <!-- ============================================================= -->
178 B. Character Entities
179 II. Hierarchical Elements
182 V. Character Elements
185 A. Valid Document Example
189 <!-- ============================================================= -->
191 <!-- ============================================================= -->
193 <!-- ::::::::::::::::::::: General Entities :::::::::::::::::::::: -->
195 <!ENTITY % character.content "ch.apos | ch.nbsp | ch.iexcl | ch.cent | ch.pound | ch.curren | ch.yen | ch.brvbar | ch.sect | ch.uml | ch.copy | ch.ordf | ch.laquo | ch.not | ch.shy | ch.reg | ch.macr | ch.deg | ch.plusmn | ch.sup2 | ch.sup3 | ch.acute | ch.micro | ch.para | ch.middot | ch.cedil | ch.sup1 | ch.ordm | ch.raquo | ch.frac14 | ch.frac12 | ch.frac34 | ch.frac13 | ch.frac23 | ch.frac15 | ch.frac25 | ch.frac35 | ch.frac45 | ch.frac16 | ch.frac56 | ch.frac17 | ch.frac18 | ch.frac38 | ch.frac58 | ch.frac78 | ch.frac19 | ch.frac110 | ch.iquest | ch.Agrave | ch.Aacute | ch.Acirc | ch.Atilde | ch.Auml | ch.Aring | ch.AElig | ch.Ccedil | ch.Egrave | ch.Eacute | ch.Ecirc | ch.Euml | ch.Igrave | ch.Iacute | ch.Icirc | ch.Iuml | ch.ETH | ch.Ntilde | ch.Ograve | ch.Oacute | ch.Ocirc | ch.Otilde | ch.Ouml | ch.times | ch.Oslash | ch.Ugrave | ch.Uacute | ch.Ucirc | ch.Uuml | ch.Yacute | ch.THORN | ch.szlig | ch.agrave | ch.aacute | ch.acirc | ch.atilde | ch.auml | ch.aring | ch.aelig | ch.ccedil | ch.egrave | ch.eacute | ch.ecirc | ch.euml | ch.igrave | ch.iacute | ch.icirc | ch.iuml | ch.eth | ch.ntilde | ch.ograve | ch.oacute | ch.ocirc | ch.otilde | ch.ouml | ch.divide | ch.oslash | ch.ugrave | ch.uacute | ch.ucirc | ch.uuml | ch.yacute | ch.thorn | ch.yuml | ch.ampersand | ch.lsquot | ch.rsquot | ch.ldquot | ch.rdquot | ch.minus | ch.endash | ch.emdash | ch.ellips | ch.lellips | ch.blankline | ch.percent | ch.thinspace | ch.frac116 | ch.plus | ch.lte | ch.gte">
197 <!ENTITY % inline.content "#PCDATA | a | bookref | footref | em | strong | thought | foreign | quote | cite | code | line | br | typ | onomatopoeia | spell | item | %character.content;">
199 <!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | puzzle | deadend | hr | illref | poetry">
201 <!ENTITY % mixed.content "choose | signpost">
203 <!ENTITY % core.attributes "
205 xml:lang CDATA #IMPLIED
208 <!ENTITY % link.attributes "
213 <!ENTITY % cell.align.attributes "
214 align ( left | center | right | justify | char ) #IMPLIED
216 valign ( top | middle | bottom | baseline ) #IMPLIED
219 <!ENTITY % cell.scope.attributes "
220 rowspan CDATA #IMPLIED
221 colspan CDATA #IMPLIED
223 scope ( row | col | rowgroup | colgroup ) #IMPLIED
226 <!-- :::::::::::::::::::: Character Entities ::::::::::::::::::::: -->
228 <!ENTITY lt "&#60;"><!-- left angle bracket -->
229 <!ENTITY gt ">"> <!-- right angle bracket -->
230 <!ENTITY amp "&#38;"><!-- ampersand -->
231 <!ENTITY apos "'"> <!-- apostrophe = single quotation mark -->
232 <!ENTITY quot """> <!-- double quotation mark -->
236 It is the responsibility of the document to define relevant character
237 entities in its internal subset. See also Character Elements below.
241 <!-- ============================================================= -->
242 <!-- Hierarchical Elements -->
243 <!-- ============================================================= -->
246 <!ELEMENT gamebook ( meta, section+ )>
248 version CDATA #REQUIRED
249 xml:lang CDATA #IMPLIED
253 The "version" attribute represents the revision number of the gamebook
254 DTD. This allows gamebook processors to make decisions about the
255 suitability of the data.
257 The "xml:lang" attribute specifies the primary language of the
258 document. The data should conform to the IETF RFC1766.
260 https://www.ietf.org/rfc/rfc1766.txt
264 <gamebook version="0.12" xml:lang="en-UK">
265 <meta . . .> . . . </meta>
266 <section . . .> . . . </section>
270 <gamebook version="0.12" > . . . </gamebook>
274 <!-- :::::::::::::::::::::::: meta Element ::::::::::::::::::::::: -->
277 The children of the meta element are designed to directly translate to
278 the Dublin Core Element Set v1.1. For a description of each Dublin
279 Core element, visit the following URL:
281 (https://dublincore.org/documents/1999/07/02/dces/)
283 Although many Dublin Core elements will probably never have any real
284 relevance to gamebooks, all are included for completeness's sake.
286 [editor: add dc: namespace to isolate dublin core elements
287 https://dublincore.org/documents/2001/10/26/dcmi-namespace/ ]
289 Note: The "link" element doesn't correspond directly to any Dublin
290 Core element. It has been added here for required functionality.
293 <!ELEMENT meta ( title | creator | subject | description | publisher | contributor | date | type | format | identifier | source | language | relation | coverage | rights | link)*>
296 The "meta" element represents underlying information about the
297 document. It should contain any number of the Dublin Core 1.1
303 <title . . .> . . . </title>
304 <creator . . .> . . . </creator>
310 <!ELEMENT title ( %inline.content; | %mixed.content; )*>
315 <!ELEMENT creator ( %inline.content; | %block.content; | %mixed.content; )*>
318 relationship CDATA #IMPLIED
319 sort-name CDATA #IMPLIED
323 The "relationship" optional attribute defines the relationship of the creator
324 denoted by this element to the document. While the list of possible values is
325 not constrained by the DTD, the normative list is defined by the MARC Code List
326 for Relators <https://www.loc.gov/marc/relators/>.
328 The "sort-name" optional attribute contains the a name to be used for sorting.
332 <creator relationship="aut" sort-name="Dever, Joe">Joe Dever</creator>
336 <!ELEMENT subject ( %inline.content; | %block.content; | %mixed.content; )*>
341 <!ELEMENT description ( %inline.content; | %block.content; | %mixed.content; )*>
342 <!ATTLIST description
346 <!ELEMENT publisher ( %inline.content; | %block.content; | %mixed.content; )*>
351 <!ELEMENT contributor ( %inline.content; | %block.content; | %mixed.content; )*>
352 <!ATTLIST contributor
354 relationship CDATA #IMPLIED
355 sort-name CDATA #IMPLIED
359 The "relationship" optional attribute defines the relationship of the creator
360 denoted by this element to the document. While the list of possible values is
361 not constrained by the DTD, the normative list is defined by the MARC Code List
362 for Relators <https://www.loc.gov/marc/relators/>.
364 The "sort-name" optional attribute contains the a name to be used for sorting.
368 <contributor sort-name="Smith, Reader">Reader Smith</contributor>
372 <!ELEMENT date ( year, month, day )>
378 The "date" element has been extended beyond the specification made in
379 the Dublin Core. It should contain "year", "month" and "day" elements.
384 <year . . .> . . . </year>
385 <month . . .> . . . </month>
386 <day . . .> . . . </day>
391 <!ELEMENT year ( #PCDATA )>
394 The year should be specified in full digit numeric format.
402 <!ELEMENT month ( #PCDATA )>
405 The month should be specified in numeric format with January as "1",
406 February as "2", etc.
414 <!ELEMENT day ( #PCDATA )>
417 The "day" element specifies the day of the month in numeric format.
425 <!ELEMENT type ( %inline.content; | %mixed.content; )*>
430 <!ELEMENT format ( %inline.content; | %mixed.content; )*>
435 <!ELEMENT identifier ( %inline.content; | %mixed.content; )*>
440 <!ELEMENT source ( %inline.content; | %mixed.content; )*>
445 <!ELEMENT language ( %inline.content; | %mixed.content; )*>
450 <!ELEMENT relation ( %inline.content; | %mixed.content; )*>
455 <!ELEMENT coverage ( %inline.content; | %block.content; | %mixed.content; )*>
460 <!ELEMENT rights ( %inline.content; | %block.content; | %mixed.content; )*>
465 <!ELEMENT link EMPTY>
469 idrefs IDREFS #IMPLIED>
472 The "link" element has been added to the Dublin Core elements to
473 represent relationships to other parts of the document. The "idrefs"
474 attribute has been added to allow relationships that are held with
475 more than one part of the document.
479 <link class="next" idref="dedicate" />
481 <link class="friends" idrefs="dedicate cmbtrulz" />
485 <!-- ::::::::::::::::::::: section Element ::::::::::::::::::::::: -->
487 <!ELEMENT section ( meta, footnotes?, illustrations?, data )>
494 The "section" element represents one hierarchical level of data.
495 Section elements can be nested (inside the "data" element) in
496 order to create more complex data representations.
498 A "section" element can used as a linking element. The most useful way
499 to utilize this is to make it a named anchor and thus the target of a
500 "choice" or "puzzle" element.
505 <meta><title . . .> . . . </title></meta>
506 <data . . .> . . . </data>
507 <footnotes . . .> . . . </footnotes>
511 <meta><title . . .> . . . </title></meta>
514 <section id="dedication">
515 <meta><title . . .> . . . </title></meta>
516 <data . . .> . . . </data>
524 <!ELEMENT data ( %block.content; | %mixed.content; | section )*>
530 The "data" element contains the main data contained within
531 a section. Note that a nested section structure can be created by
532 including a "section" element within the content of the "data"
539 <combat . . .> . . . </combat>
544 <section . . .> . . . </section>
549 <!ELEMENT illustrations ( illustration | illgroup )*>
550 <!ATTLIST illustrations
555 The "illustrations" element represents a collection of illustrations.
556 The illustrations, or illustration groups, should be listed in the
557 order they appear in the book.
562 <illustration . . . />
563 <illgroup . . .>. . .</illgroup>
569 <!ELEMENT illgroup ( illustration )*>
577 The "illgroup" element represents a group of illustrations contained
578 within one section. It is used when individual links to the each
579 illustration from the illustrations index are not wanted.
583 <illgroup idref=". . .">
584 <illustration . . . />
585 <illustration . . . />
589 <illgroup idref=". . ." class="hidden">
590 <illustration . . . />
591 <illustration . . . />
597 <!ELEMENT footnotes ( footnote )*>
603 The "footnotes" element represents the collection of extra-textual
604 information contained within "footnote" elements.
609 <footnote . . .> . . . </footnote>
610 <footnote . . .> . . . </footnote>
616 <!ELEMENT footnote ( %block.content; | %mixed.content; )*>
623 The "footnote" element contains extra-textual information. It can be
624 used as a linking element and can thus be used to refer back to a
625 named anchor within the document.
630 <p . . .>This paragraph requires an appropriate footnote
631 <a id="reference" idref="footnote-reference" . . ./>.
636 <footnote id="footnote-reference" idref="reference">
637 <p . . .>This is the appropriate footnote.</p>
644 <!-- ============================================================= -->
645 <!-- Block Elements -->
646 <!-- ============================================================= -->
648 <!-- :::::::::::::::::::::::::: Lists :::::::::::::::::::::::::::: -->
650 <!ELEMENT ul ( li )*>
656 The "ul" represents an unordered list.
661 <li . . .> . . . </li>
662 <li . . .> . . . </li>
668 <!ELEMENT ol ( li )*>
675 The "ol" element represents an ordered list.
680 <li . . .> . . . First Item . . . </li>
681 <li . . .> . . . Second Item . . . </li>
685 The "start" attribute can be used to start a list from a number
690 <ol start="4"> . . . </ol>
694 <!ELEMENT li ( %inline.content; | %block.content; | %mixed.content; )*>
701 The "li" element is a generic list item used within both ordered and
702 unordered lists (i.e. "ol" and "ul" elements).
709 <li>another list item</li>
714 <li>first list item</li>
715 <li>second list item</li>
719 The "value" attribute can be used to restart numbering in ordered lists. It has no meaning when used in unordered lists.
722 <li>this item is numbered 1</li>
723 <li>this item is numbered 2</li>
724 <li value="10">this item is numbered 10</li>
725 <li>this item is numbered 11</li>
730 <!ELEMENT dl ( dt, dd? )*>
736 The "dl" element represents a list of terms and their definitions.
741 <dt . . .> . . . First Term . . . </dt>
742 <dd . . .> . . . First Term's Definition . . . </dd>
744 <dt . . .> . . . Second Term . . . </dt>
745 <dd . . .> . . . Second Term's Definition . . . </dd>
746 <dt . . .> . . . Third Term with No Definition . . . </dt>
751 <!ELEMENT dt ( %inline.content; | %mixed.content; )*>
757 The "dt" element represents a definition term within a definition
758 list. It should be immediately followed by its definitions contained
759 within "dd" elements.
765 <dt>Definition Term</dt>
766 <dd . . .> . . . Definition . . . </dd>
772 <!ELEMENT dd ( %inline.content; | %block.content; | %mixed.content; )*>
778 The "dd" element contains a definition.
782 <dt . . .> . . . Term to be defined . . . </dt>
783 <dd>Definition of the term.</dd>
787 <!-- :::::::::::::::::::::::::: Tables ::::::::::::::::::::::::::: -->
789 <!ELEMENT table ( caption?, colgroup*, thead?, tfoot?, ( tr+ | tbody+ ))>
791 summary CDATA #IMPLIED
796 The "table" element represents tabular data. It's data is organized
802 <tr . . .> . . . </tr>
803 <tr . . .> . . . </tr>
809 <!ELEMENT caption ( %inline.content; | %mixed.content; )*>
815 The "caption" element contains a brief description of the data
816 contained in the table and the structure of the table.
821 <caption>Random Number Table</caption>
827 <!ELEMENT colgroup EMPTY>
833 The "colgroup" element explicitly groups several columns of tabular data
834 together. The "span" attribute specifies the number of columns to be
835 grouped. This is primarily useful for non-visual user agents.
842 <colgroup span="13"/>
848 <!ELEMENT thead ( tr+ )>
854 The "thead" element contains rows of data designated as the table
855 header. It creates a rowgroup for the purposes of the "scope"
856 attribute in the "th" and "td" elements.
863 <tr . . .> . . . </tr>
871 <!ELEMENT tfoot ( tr+ )>
877 The "tfoot" element contains rows of data designated as the table
878 footer. It creates a rowgroup for the purposes of the "scope"
879 attribute in the "th" and "td" elements.
886 <tr . . .> . . . </tr>
894 <!ELEMENT tbody ( tr+ )>
900 The "tbody" element contains rows of data designated as the part
901 of the main table data. More than one "tbody" element is allowed per
902 "table" element. It creates a rowgroup for the purposes of the "scope"
903 attribute in the "th" and "td" elements.
910 <tr . . .> . . . </tr>
918 <!ELEMENT tr ( th | td )*>
924 The "tr" element contains a collection of "th" and "td" elements that
925 represent one row of a "table".
932 <th . . .> . . . </th>
933 <td . . .> . . . </td>
941 <!ELEMENT th ( %inline.content; | %mixed.content; )*>
944 %cell.align.attributes;
945 %cell.scope.attributes;
949 The "th" contains a table header used to label a particular row or
950 column of tabular data.
952 The "scope" attribute specifies to what extent the data of this header
953 applies. The "axis" attribute is a comma-separated list of categories
954 to which the element belongs.
961 <td . . .> . . . </td>
962 <td . . .> . . . </td>
968 <!ELEMENT td ( %inline.content; | %mixed.content; )*>
971 %cell.align.attributes;
972 %cell.scope.attributes;
976 The "td" element contains one cell of tabular data.
978 The "scope" attribute may be used in conjunction with a "td" element to
979 specify that though its data isn't considered header data, it functions
980 as a label for the data. For example, a character's name is a label for a row
981 of the character's statistics, but it is not a header.
993 <!-- :::::::::::::::::::::: Miscellaneous :::::::::::::::::::::::: -->
995 <!ELEMENT p ( %inline.content; | %mixed.content; )*>
1001 The "p" element contains a paragraph.
1005 <p>This is a (short) paragraph.</p>
1009 <!ELEMENT blockquote ( %block.content; | %mixed.content; )*>
1010 <!ATTLIST blockquote
1015 The "blockquote" element contains a lengthy quotation which isn't
1016 contained within a paragraph.
1021 <p>There was once a Kai monk from Sommerlund . . .</p>
1026 <!ELEMENT poetry ( line+ )*>
1032 The "poetry" element contains a poem that is organized into a
1033 sequence of lines contained in "line" elements.
1038 <line>When the full moon shines o<ch.apos/>er the temple deep,</line>
1039 <line>A sacrifice will stir from sleep</line>
1040 <line>The legions of a long forgotten lord.</line>
1041 <line>When a fair royal maid on the altar dies,</line>
1042 <line>The dead of Maakengorge shall rise</line>
1043 <line>To claim their long-awaited reward.</line>
1048 <!ELEMENT combat ( enemy, enemy-attribute+ )>
1054 The "combat" element contains one combat represented by the enemy's
1055 name and attributes.
1060 <enemy . . .> . . . </enemy>
1061 <enemy-attribute . . .> . . . </enemy-attribute>
1062 <enemy-attribute . . .> . . . </enemy-attribute>
1068 <!ELEMENT enemy ( %inline.content; | %mixed.content; )*>
1074 The "enemy" element contains an enemy's name.
1080 <enemy>12-foot Giak</enemy>
1086 <!ELEMENT enemy-attribute ( #PCDATA )*>
1087 <!ATTLIST enemy-attribute
1092 The "enemy-attribute" element contains one particular attribute which
1099 <enemy-attribute>30</enemy-attribute>
1105 <!ELEMENT choice ( %inline.content; | %mixed.content; | link-text )*>
1112 The "choice" element contains the text describing a choice presented
1113 within a section. It's a linking element and therefore can link to
1114 the place to which the choice leads.
1116 The choice element can contain "link-text" elements which suggest text
1117 that should be used by the user agent to represent the hyperlink.
1121 <section id="section12" . . .> . . . </section>
1123 <choice idref="section12">If you would like to fight the 12-foot Giak,
1124 <link-text . . .> . . . turn to 12. . . . </link-text>
1129 <!ELEMENT link-text ( %inline.content; | %mixed.content; )*>
1135 The "link-text" element contains text which is suggested for use by
1136 hypertext user interfaces to represent one end of a hyperlink.
1142 <link-text>the unfortunately ubiquitous "Click Here!"</link-text>
1148 <!ELEMENT puzzle ( %inline.content; | %mixed.content; )*>
1152 idrefs IDREFS #IMPLIED
1156 The "puzzle" element contains the text describing the action of
1157 proceeding to the section that is the answer for a puzzle or riddle
1158 presented elsewhere within the section. It's a linking element and
1159 therefore can link to the place to which the correct answer to the
1160 puzzle leads. In the case that the puzzle has multiple solutions, use a
1161 space separated list of IDs in the "idrefs" attribute. This link
1162 information should not generally be presented to the reader.
1166 <section id="section12" . . .> . . . </section>
1168 <puzzle idref="section12">If you know the answer to her riddle, turn to
1169 the entry of that number.</puzzle>
1172 <section id="section23" . . .> . . . </section>
1174 <section id="section350" . . .> . . . </section>
1176 <puzzle idrefs="section23 section350">If you know only one of the two
1177 correct numbers that you need to open the lock, turn to the entry of
1178 that number.</puzzle>
1182 <!ELEMENT deadend ( %inline.content; | %mixed.content; )*>
1188 The "deadend" element contains the text describing the fact that an
1189 adventure has come to an end (e.g. the character has died).
1193 <deadend>Tragically, your life ends here.</deadend>
1197 <!ELEMENT illustration ( meta?, instance+ )>
1198 <!ATTLIST illustration
1205 The "illustration" element contains a set of alternate
1206 representations of a particular illustration.
1211 <meta> . . . </meta>
1212 <instance . . .> . . . </instance>
1213 <instance . . .> . . . </instance>
1219 <!ELEMENT instance ( %inline.content; | %block.content; | %mixed.content; )*>
1223 width CDATA #IMPLIED
1224 height CDATA #IMPLIED
1225 mime-type CDATA #IMPLIED
1226 originalwidth CDATA #IMPLIED
1232 The "instance" element describes one instance of an illustration.
1234 The "src" attribute is a URL for the data file for the illustration.
1236 The "width" and "height" attributes contain the dimensions of the
1239 The "mime-type" attribute can contain an appropriate label for the
1240 format of the illustration file (e.g. "image/png" or "image/jpeg").
1242 The "originalwidth" attribute contains the width of the illustration
1243 as it appears in the printed books. It is given including a unit
1246 The "posx" and "posx" attributes are hints for the positioning of the
1247 illustration when the PDF is generated.
1249 The "instance" element can contain block or inline content that
1250 is intended to replace graphical illustrations.
1254 <illustration . . .>
1256 <instance src="17.gif" width="386" height="532" type="image/gif" />
1257 <instance src="" width="" height="" type="text" >
1260 <instance class="pdf" src="sword.pdf" originalwidth="54mm" />
1266 <!ELEMENT illref EMPTY>
1274 The "illref" element is used to mark the location of an illustration.
1275 The actual illustration is declared elsewhere.
1277 Since the placement of a particular illustration may depend on the
1278 output format, one "illref" is required for each format.
1282 <illref idref="ill2" class="html"/>
1283 <illref idref="ill2" class="pdf"/>
1287 <!ELEMENT signpost ( %inline.content; | %block.content; | %mixed.content; )*>
1293 The "signpost" element contains the text of a sign or message that
1294 should be presented offset from surrounding text.
1298 <signpost>RENDALIM'S LABORATORY</signpost>
1308 The "hr" element designates a horizontal rule. Since this is a
1309 presentational tag, it should be used sparingly in cases where new
1310 logical divisions of the text begin which aren't given a unique
1319 <!ELEMENT choose ( when+, otherwise? )>
1322 test CDATA #REQUIRED
1324 <!ELEMENT when ( %inline.content; | %block.content; | %mixed.content; )*>
1327 value CDATA #IMPLIED
1329 <!ELEMENT otherwise ( %inline.content; | %block.content; | %mixed.content; )*>
1335 The "choose", "when", and "otherwise" elements work together to provide a
1336 simple way to include content based on conditions. The value to be tested
1337 is specified in the "choose" element with the "test" attribute. Only the first
1338 "when" element whose "value" attribute matches the value of the test is included. If none pass, the "otherwise" element is included.
1342 <choose test="linkable">
1344 <when value="true">included if linkable is true</when>
1345 <when value="false">included if linkable is false</when>
1346 <when value="3">included if linkable is 3</when>
1347 <otherwise>included if linkable is none of the above</otherwise>
1352 <!-- ============================================================= -->
1353 <!-- Inline Elements -->
1354 <!-- ============================================================= -->
1356 <!ELEMENT a ( %inline.content; | %mixed.content; )*>
1364 The "a" element is used to contain inline content that should be a
1365 hypertext anchor. The "a" element should not contain another linking
1366 element (e.g. "a", "bookref", "footref").
1368 The "href" attribute is added to allow a reference outside of the
1375 <a idref="section12" id="foo">Section 12</a>
1381 <!ELEMENT bookref ( %inline.content; | %mixed.content; )*>
1385 series CDATA #IMPLIED
1386 book CDATA #REQUIRED
1387 section CDATA #IMPLIED
1391 The "bookref" element is used to contain inline content that should be a
1392 hypertext anchor to another book.
1394 The "series" attribute is a tag that denotes the series of the book that
1395 the link points to. The attribute may be left out if the book is part of
1396 the same series as the one containing the link.
1398 The "book" attribute is a tag that denotes the book that the link points
1399 to. This is not necessarily a URL.
1401 The "section" attribute is a tag indicating which section to link to.
1402 This is not necessarily a URL. The attribute may be left out if no
1403 particular section is referred to.
1409 <bookref series="lw" book="11tpot" section="sect33">
1410 The Prisoners of Time: Section 33
1417 <bookref book="04wotw">Book 4</bookref>
1423 <!ELEMENT footref ( %inline.content; | %mixed.content; )*>
1430 The "footref" element is used to indicate the position of a reference
1431 to a "footnote" element. It should normally not contain any text.
1437 You lose 3EP.<footref id="footref1" idref="footnote1"/>
1443 <!ELEMENT em ( %inline.content; | %mixed.content; )*>
1449 The "em" element contains text that should be emphasized. Although not
1450 part of the DTD and therefore not guaranteed or required to be so, the
1451 text should be typeset with an italic font.
1455 <em>You are being attacked!</em>
1461 <!ELEMENT strong ( %inline.content; | %mixed.content; )*>
1467 The "strong" element contains text that should be emphasized. Although
1468 not part of the DTD and therefore not guaranteed or required to be so,
1469 the text should be typeset with a bold font weight.
1473 <strong>If</strong> you have the Talisman of Supreme Obscurity,
1479 <!ELEMENT thought ( %inline.content; | %mixed.content; )*>
1485 The "thought" element contains text that is the character's thoughts or is
1486 an overheard thought. Although not part of the DTD and therefore not
1487 guaranteed or required to be so, the text should be typeset with an italic
1492 Lone Wolf heard the words <thought>Die Northlander!</strong> echo in
1499 <!ELEMENT foreign ( %inline.content; | %mixed.content; )*>
1505 The "foreign" element contains a phrase in a non-native language.
1506 Although not part of the DTD and therefore not guaranteed or required
1507 to be so, the text should be typeset with an italic font face.
1511 The Giak horde attacked <foreign>en masse</foreign>.
1517 <!ELEMENT quote ( %inline.content; | %mixed.content; )*>
1523 The "quote" element contains an inline quotation.
1527 <p . . .>The Giak yelped <quote . . .>Oww!</quote></p>
1531 <!ELEMENT cite ( %inline.content; | %mixed.content; )*>
1537 The "cite" element contains the title of a sited resource.
1543 <cite>Flight from the Dark</cite>
1549 <!ELEMENT code ( %inline.content; | %mixed.content; )*>
1555 The "code" element contains data that should be interpreted as literal
1556 input to a computer (e.g. email addresses and URIs).
1560 <code>https://www.projectaon.org/</code>
1564 <!ELEMENT line ( %inline.content; | %mixed.content; )*>
1570 The "line" element contains one logical line of data in, for example,
1571 a poem. Its use should be confined to documents such as poems that
1572 require a particular line structure.
1576 <line>When the full moon rises o'er the temple deep,</line>
1577 <line>A sacrifice will stir from sleep</line>
1578 <line>The legions of a long forgotten lord.</line>
1588 The "br" indicates a required line break. Its use is deprecated in favor
1589 of the "line" element.
1595 There once was a Kai monk from Sommerlund<br />
1596 Who always wore a pink cummerbund<br />
1602 <!ELEMENT typ ( #PCDATA )>
1608 The "typ" element is used to denote purely typographical markup. For
1609 example, bold font face, italics, and smaller font are purely of
1610 typographical concern. Take care to not use this in place of logical
1611 markup such as the "em" element when it is more appropriate.
1615 The <typ class="bold">Project Aon</a> volunteers.
1619 <!ELEMENT onomatopoeia ( #PCDATA )>
1620 <!ATTLIST onomatopoeia
1625 The "onomatopoeia" element is used to denote words that imitate a
1626 sound (e.g., "whoosh", "bang").
1630 The <onomatopoeia>clang</onomatopoeia> of the bell is deafening.
1634 <!ELEMENT spell ( #PCDATA )>
1640 The "spell" element contains the name of a magic spell.
1644 Having had no success with his female peers, the acolyte learned the
1645 forbidden <spell>Attract Opposite Gender</spell> spell.
1649 <!ELEMENT item ( #PCDATA )>
1655 The "item" element contains the name of an item that the reader can
1656 pick up or interact with.
1660 Her <item>Sword</a> lay just out of reach.
1664 <!-- ============================================================= -->
1665 <!-- Character Elements -->
1666 <!-- ============================================================= -->
1669 The character elments provide a hook to specify a character without
1670 specifying the exact representation in target formats. The exact
1671 representation used is the responsibility of the processor (e.g XSLT
1674 Portions Copyright International Organization for Standardization 1986
1675 Permission to copy in any form is granted for use with conforming SGML
1676 systems and applications as defined in ISO 8879, provided this notice
1677 is included in all copies.
1681 <!-- no-break space = non-breaking space, U+00A0 ISOnum -->
1682 <!ELEMENT ch.apos EMPTY><!ATTLIST ch.apos %core.attributes;>
1684 <!-- no-break space = non-breaking space, U+00A0 ISOnum -->
1685 <!ELEMENT ch.nbsp EMPTY><!ATTLIST ch.nbsp %core.attributes;>
1687 <!-- inverted exclamation mark, U+00A1 ISOnum -->
1688 <!ELEMENT ch.iexcl EMPTY><!ATTLIST ch.iexcl %core.attributes;>
1690 <!-- cent sign, U+00A2 ISOnum -->
1691 <!ELEMENT ch.cent EMPTY><!ATTLIST ch.cent %core.attributes;>
1693 <!-- pound sign, U+00A3 ISOnum -->
1694 <!ELEMENT ch.pound EMPTY><!ATTLIST ch.pound %core.attributes;>
1696 <!-- currency sign, U+00A4 ISOnum -->
1697 <!ELEMENT ch.curren EMPTY><!ATTLIST ch.curren %core.attributes;>
1699 <!-- yen sign = yuan sign, U+00A5 ISOnum -->
1700 <!ELEMENT ch.yen EMPTY><!ATTLIST ch.yen %core.attributes;>
1702 <!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
1703 <!ELEMENT ch.brvbar EMPTY><!ATTLIST ch.brvbar %core.attributes;>
1705 <!-- section sign, U+00A7 ISOnum -->
1706 <!ELEMENT ch.sect EMPTY><!ATTLIST ch.sect %core.attributes;>
1708 <!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
1709 <!ELEMENT ch.uml EMPTY><!ATTLIST ch.uml %core.attributes;>
1711 <!-- copyright sign, U+00A9 ISOnum -->
1712 <!ELEMENT ch.copy EMPTY><!ATTLIST ch.copy %core.attributes;>
1714 <!-- feminine ordinal indicator, U+00AA ISOnum -->
1715 <!ELEMENT ch.ordf EMPTY><!ATTLIST ch.ordf %core.attributes;>
1717 <!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
1718 <!ELEMENT ch.laquo EMPTY><!ATTLIST ch.laquo %core.attributes;>
1720 <!-- not sign, U+00AC ISOnum -->
1721 <!ELEMENT ch.not EMPTY><!ATTLIST ch.not %core.attributes;>
1723 <!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
1724 <!ELEMENT ch.shy EMPTY><!ATTLIST ch.shy %core.attributes;>
1726 <!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
1727 <!ELEMENT ch.reg EMPTY><!ATTLIST ch.reg %core.attributes;>
1729 <!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
1730 <!ELEMENT ch.macr EMPTY><!ATTLIST ch.macr %core.attributes;>
1732 <!-- degree sign, U+00B0 ISOnum -->
1733 <!ELEMENT ch.deg EMPTY><!ATTLIST ch.deg %core.attributes;>
1735 <!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
1736 <!ELEMENT ch.plusmn EMPTY><!ATTLIST ch.plusmn %core.attributes;>
1738 <!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
1739 <!ELEMENT ch.sup2 EMPTY><!ATTLIST ch.sup2 %core.attributes;>
1741 <!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
1742 <!ELEMENT ch.sup3 EMPTY><!ATTLIST ch.sup3 %core.attributes;>
1744 <!-- acute accent = spacing acute, U+00B4 ISOdia -->
1745 <!ELEMENT ch.acute EMPTY><!ATTLIST ch.acute %core.attributes;>
1747 <!-- micro sign, U+00B5 ISOnum -->
1748 <!ELEMENT ch.micro EMPTY><!ATTLIST ch.micro %core.attributes;>
1750 <!-- pilcrow sign = paragraph sign, U+00B6 ISOnum -->
1751 <!ELEMENT ch.para EMPTY><!ATTLIST ch.para %core.attributes;>
1753 <!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
1754 <!ELEMENT ch.middot EMPTY><!ATTLIST ch.middot %core.attributes;>
1756 <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
1757 <!ELEMENT ch.cedil EMPTY><!ATTLIST ch.cedil %core.attributes;>
1759 <!-- superscript one = superscript digit one, U+00B9 ISOnum -->
1760 <!ELEMENT ch.sup1 EMPTY><!ATTLIST ch.sup1 %core.attributes;>
1762 <!-- masculine ordinal indicator, U+00BA ISOnum -->
1763 <!ELEMENT ch.ordm EMPTY><!ATTLIST ch.ordm %core.attributes;>
1765 <!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
1766 <!ELEMENT ch.raquo EMPTY><!ATTLIST ch.raquo %core.attributes;>
1768 <!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
1769 <!ELEMENT ch.frac14 EMPTY><!ATTLIST ch.frac14 %core.attributes;>
1771 <!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
1772 <!ELEMENT ch.frac12 EMPTY><!ATTLIST ch.frac12 %core.attributes;>
1774 <!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
1775 <!ELEMENT ch.frac34 EMPTY><!ATTLIST ch.frac34 %core.attributes;>
1777 <!-- vulgar fraction 1/3, U+2153 ISOnum -->
1778 <!ELEMENT ch.frac13 EMPTY><!ATTLIST ch.frac13 %core.attributes;>
1780 <!-- vulgar fraction 2/3, U+2154 ISOnum -->
1781 <!ELEMENT ch.frac23 EMPTY><!ATTLIST ch.frac23 %core.attributes;>
1783 <!-- vulgar fraction 1/5, U+2155 ISOnum -->
1784 <!ELEMENT ch.frac15 EMPTY><!ATTLIST ch.frac15 %core.attributes;>
1786 <!-- vulgar fraction 2/5, U+2156 ISOnum -->
1787 <!ELEMENT ch.frac25 EMPTY><!ATTLIST ch.frac25 %core.attributes;>
1789 <!-- vulgar fraction 3/5, U+2157 ISOnum -->
1790 <!ELEMENT ch.frac35 EMPTY><!ATTLIST ch.frac35 %core.attributes;>
1792 <!-- vulgar fraction 4/5, U+2158 ISOnum -->
1793 <!ELEMENT ch.frac45 EMPTY><!ATTLIST ch.frac45 %core.attributes;>
1795 <!-- vulgar fraction 1/6, U+2159 ISOnum -->
1796 <!ELEMENT ch.frac16 EMPTY><!ATTLIST ch.frac16 %core.attributes;>
1798 <!-- vulgar fraction 5/6, U+215A ISOnum -->
1799 <!ELEMENT ch.frac56 EMPTY><!ATTLIST ch.frac56 %core.attributes;>
1801 <!-- vulgar fraction 1/7, U+2150 ISOnum -->
1802 <!ELEMENT ch.frac17 EMPTY><!ATTLIST ch.frac17 %core.attributes;>
1804 <!-- vulgar fraction 1/8, U+215B ISOnum -->
1805 <!ELEMENT ch.frac18 EMPTY><!ATTLIST ch.frac18 %core.attributes;>
1807 <!-- vulgar fraction 3/8, U+215C ISOnum -->
1808 <!ELEMENT ch.frac38 EMPTY><!ATTLIST ch.frac38 %core.attributes;>
1810 <!-- vulgar fraction 5/8, U+215D ISOnum -->
1811 <!ELEMENT ch.frac58 EMPTY><!ATTLIST ch.frac58 %core.attributes;>
1813 <!-- vulgar fraction 7/8, U+215E ISOnum -->
1814 <!ELEMENT ch.frac78 EMPTY><!ATTLIST ch.frac78 %core.attributes;>
1816 <!-- vulgar fraction 1/9, U+2151 ISOnum -->
1817 <!ELEMENT ch.frac19 EMPTY><!ATTLIST ch.frac19 %core.attributes;>
1819 <!-- vulgar fraction 1/10, U+2152 ISO num -->
1820 <!ELEMENT ch.frac110 EMPTY><!ATTLIST ch.frac110 %core.attributes;>
1822 <!-- inverted question mark = turned question mark, U+00BF ISOnum -->
1823 <!ELEMENT ch.iquest EMPTY><!ATTLIST ch.iquest %core.attributes;>
1825 <!-- latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1 -->
1826 <!ELEMENT ch.Agrave EMPTY><!ATTLIST ch.Agrave %core.attributes;>
1828 <!-- latin capital letter A with acute, U+00C1 ISOlat1 -->
1829 <!ELEMENT ch.Aacute EMPTY><!ATTLIST ch.Aacute %core.attributes;>
1831 <!-- latin capital letter A with circumflex, U+00C2 ISOlat1 -->
1832 <!ELEMENT ch.Acirc EMPTY><!ATTLIST ch.Acirc %core.attributes;>
1834 <!-- latin capital letter A with tilde, U+00C3 ISOlat1 -->
1835 <!ELEMENT ch.Atilde EMPTY><!ATTLIST ch.Atilde %core.attributes;>
1837 <!-- latin capital letter A with diaeresis, U+00C4 ISOlat1 -->
1838 <!ELEMENT ch.Auml EMPTY><!ATTLIST ch.Auml %core.attributes;>
1840 <!-- latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1 -->
1841 <!ELEMENT ch.Aring EMPTY><!ATTLIST ch.Aring %core.attributes;>
1843 <!-- latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1 -->
1844 <!ELEMENT ch.AElig EMPTY><!ATTLIST ch.AElig %core.attributes;>
1846 <!-- latin capital letter C with cedilla, U+00C7 ISOlat1 -->
1847 <!ELEMENT ch.Ccedil EMPTY><!ATTLIST ch.Ccedil %core.attributes;>
1849 <!-- latin capital letter E with grave, U+00C8 ISOlat1 -->
1850 <!ELEMENT ch.Egrave EMPTY><!ATTLIST ch.Egrave %core.attributes;>
1852 <!-- latin capital letter E with acute, U+00C9 ISOlat1 -->
1853 <!ELEMENT ch.Eacute EMPTY><!ATTLIST ch.Eacute %core.attributes;>
1855 <!-- latin capital letter E with circumflex, U+00CA ISOlat1 -->
1856 <!ELEMENT ch.Ecirc EMPTY><!ATTLIST ch.Ecirc %core.attributes;>
1858 <!-- latin capital letter E with diaeresis, U+00CB ISOlat1 -->
1859 <!ELEMENT ch.Euml EMPTY><!ATTLIST ch.Euml %core.attributes;>
1861 <!-- latin capital letter I with grave, U+00CC ISOlat1 -->
1862 <!ELEMENT ch.Igrave EMPTY><!ATTLIST ch.Igrave %core.attributes;>
1864 <!-- latin capital letter I with acute, U+00CD ISOlat1 -->
1865 <!ELEMENT ch.Iacute EMPTY><!ATTLIST ch.Iacute %core.attributes;>
1867 <!-- latin capital letter I with circumflex, U+00CE ISOlat1 -->
1868 <!ELEMENT ch.Icirc EMPTY><!ATTLIST ch.Icirc %core.attributes;>
1870 <!-- latin capital letter I with diaeresis, U+00CF ISOlat1 -->
1871 <!ELEMENT ch.Iuml EMPTY><!ATTLIST ch.Iuml %core.attributes;>
1873 <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
1874 <!ELEMENT ch.ETH EMPTY><!ATTLIST ch.ETH %core.attributes;>
1876 <!-- latin capital letter N with tilde, U+00D1 ISOlat1 -->
1877 <!ELEMENT ch.Ntilde EMPTY><!ATTLIST ch.Ntilde %core.attributes;>
1879 <!-- latin capital letter O with grave, U+00D2 ISOlat1 -->
1880 <!ELEMENT ch.Ograve EMPTY><!ATTLIST ch.Ograve %core.attributes;>
1882 <!-- latin capital letter O with acute, U+00D3 ISOlat1 -->
1883 <!ELEMENT ch.Oacute EMPTY><!ATTLIST ch.Oacute %core.attributes;>
1885 <!-- latin capital letter O with circumflex, U+00D4 ISOlat1 -->
1886 <!ELEMENT ch.Ocirc EMPTY><!ATTLIST ch.Ocirc %core.attributes;>
1888 <!-- latin capital letter O with tilde, U+00D5 ISOlat1 -->
1889 <!ELEMENT ch.Otilde EMPTY><!ATTLIST ch.Otilde %core.attributes;>
1891 <!-- latin capital letter O with diaeresis, U+00D6 ISOlat1 -->
1892 <!ELEMENT ch.Ouml EMPTY><!ATTLIST ch.Ouml %core.attributes;>
1894 <!-- multiplication sign, U+00D7 ISOnum -->
1895 <!ELEMENT ch.times EMPTY><!ATTLIST ch.times %core.attributes;>
1897 <!-- latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1 -->
1898 <!ELEMENT ch.Oslash EMPTY><!ATTLIST ch.Oslash %core.attributes;>
1900 <!-- latin capital letter U with grave, U+00D9 ISOlat1 -->
1901 <!ELEMENT ch.Ugrave EMPTY><!ATTLIST ch.Ugrave %core.attributes;>
1903 <!-- latin capital letter U with acute, U+00DA ISOlat1 -->
1904 <!ELEMENT ch.Uacute EMPTY><!ATTLIST ch.Uacute %core.attributes;>
1906 <!-- latin capital letter U with circumflex, U+00DB ISOlat1 -->
1907 <!ELEMENT ch.Ucirc EMPTY><!ATTLIST ch.Ucirc %core.attributes;>
1909 <!-- latin capital letter U with diaeresis, U+00DC ISOlat1 -->
1910 <!ELEMENT ch.Uuml EMPTY><!ATTLIST ch.Uuml %core.attributes;>
1912 <!-- latin capital letter Y with acute, U+00DD ISOlat1 -->
1913 <!ELEMENT ch.Yacute EMPTY><!ATTLIST ch.Yacute %core.attributes;>
1915 <!-- latin capital letter THORN, U+00DE ISOlat1 -->
1916 <!ELEMENT ch.THORN EMPTY><!ATTLIST ch.THORN %core.attributes;>
1918 <!-- latin small letter sharp s = ess-zed, U+00DF ISOlat1 -->
1919 <!ELEMENT ch.szlig EMPTY><!ATTLIST ch.szlig %core.attributes;>
1921 <!-- latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1 -->
1922 <!ELEMENT ch.agrave EMPTY><!ATTLIST ch.agrave %core.attributes;>
1924 <!-- latin small letter a with acute, U+00E1 ISOlat1 -->
1925 <!ELEMENT ch.aacute EMPTY><!ATTLIST ch.aacute %core.attributes;>
1927 <!-- latin small letter a with circumflex, U+00E2 ISOlat1 -->
1928 <!ELEMENT ch.acirc EMPTY><!ATTLIST ch.acirc %core.attributes;>
1930 <!-- latin small letter a with tilde, U+00E3 ISOlat1 -->
1931 <!ELEMENT ch.atilde EMPTY><!ATTLIST ch.atilde %core.attributes;>
1933 <!-- latin small letter a with diaeresis, U+00E4 ISOlat1 -->
1934 <!ELEMENT ch.auml EMPTY><!ATTLIST ch.auml %core.attributes;>
1936 <!-- latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1 -->
1937 <!ELEMENT ch.aring EMPTY><!ATTLIST ch.aring %core.attributes;>
1939 <!-- latin small letter ae = latin small ligature ae, U+00E6 ISOlat1 -->
1940 <!ELEMENT ch.aelig EMPTY><!ATTLIST ch.aelig %core.attributes;>
1942 <!-- latin small letter c with cedilla, U+00E7 ISOlat1 -->
1943 <!ELEMENT ch.ccedil EMPTY><!ATTLIST ch.ccedil %core.attributes;>
1945 <!-- latin small letter e with grave, U+00E8 ISOlat1 -->
1946 <!ELEMENT ch.egrave EMPTY><!ATTLIST ch.egrave %core.attributes;>
1948 <!-- latin small letter e with acute, U+00E9 ISOlat1 -->
1949 <!ELEMENT ch.eacute EMPTY><!ATTLIST ch.eacute %core.attributes;>
1951 <!-- latin small letter e with circumflex, U+00EA ISOlat1 -->
1952 <!ELEMENT ch.ecirc EMPTY><!ATTLIST ch.ecirc %core.attributes;>
1954 <!-- latin small letter e with diaeresis, U+00EB ISOlat1 -->
1955 <!ELEMENT ch.euml EMPTY><!ATTLIST ch.euml %core.attributes;>
1957 <!-- latin small letter i with grave, U+00EC ISOlat1 -->
1958 <!ELEMENT ch.igrave EMPTY><!ATTLIST ch.igrave %core.attributes;>
1960 <!-- latin small letter i with acute, U+00ED ISOlat1 -->
1961 <!ELEMENT ch.iacute EMPTY><!ATTLIST ch.iacute %core.attributes;>
1963 <!-- latin small letter i with circumflex, U+00EE ISOlat1 -->
1964 <!ELEMENT ch.icirc EMPTY><!ATTLIST ch.icirc %core.attributes;>
1966 <!-- latin small letter i with diaeresis, U+00EF ISOlat1 -->
1967 <!ELEMENT ch.iuml EMPTY><!ATTLIST ch.iuml %core.attributes;>
1969 <!-- latin small letter eth, U+00F0 ISOlat1 -->
1970 <!ELEMENT ch.eth EMPTY><!ATTLIST ch.eth %core.attributes;>
1972 <!-- latin small letter n with tilde, U+00F1 ISOlat1 -->
1973 <!ELEMENT ch.ntilde EMPTY><!ATTLIST ch.ntilde %core.attributes;>
1975 <!-- latin small letter o with grave, U+00F2 ISOlat1 -->
1976 <!ELEMENT ch.ograve EMPTY><!ATTLIST ch.ograve %core.attributes;>
1978 <!-- latin small letter o with acute, U+00F3 ISOlat1 -->
1979 <!ELEMENT ch.oacute EMPTY><!ATTLIST ch.oacute %core.attributes;>
1981 <!-- latin small letter o with circumflex, U+00F4 ISOlat1 -->
1982 <!ELEMENT ch.ocirc EMPTY><!ATTLIST ch.ocirc %core.attributes;>
1984 <!-- latin small letter o with tilde, U+00F5 ISOlat1 -->
1985 <!ELEMENT ch.otilde EMPTY><!ATTLIST ch.otilde %core.attributes;>
1987 <!-- latin small letter o with diaeresis, U+00F6 ISOlat1 -->
1988 <!ELEMENT ch.ouml EMPTY><!ATTLIST ch.ouml %core.attributes;>
1990 <!-- division sign, U+00F7 ISOnum -->
1991 <!ELEMENT ch.divide EMPTY><!ATTLIST ch.divide %core.attributes;>
1993 <!-- latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1 -->
1994 <!ELEMENT ch.oslash EMPTY><!ATTLIST ch.oslash %core.attributes;>
1996 <!-- latin small letter u with grave, U+00F9 ISOlat1 -->
1997 <!ELEMENT ch.ugrave EMPTY><!ATTLIST ch.ugrave %core.attributes;>
1999 <!-- latin small letter u with acute, U+00FA ISOlat1 -->
2000 <!ELEMENT ch.uacute EMPTY><!ATTLIST ch.uacute %core.attributes;>
2002 <!-- latin small letter u with circumflex, U+00FB ISOlat1 -->
2003 <!ELEMENT ch.ucirc EMPTY><!ATTLIST ch.ucirc %core.attributes;>
2005 <!-- latin small letter u with diaeresis, U+00FC ISOlat1 -->
2006 <!ELEMENT ch.uuml EMPTY><!ATTLIST ch.uuml %core.attributes;>
2008 <!-- latin small letter y with acute, U+00FD ISOlat1 -->
2009 <!ELEMENT ch.yacute EMPTY><!ATTLIST ch.yacute %core.attributes;>
2011 <!-- latin small letter thorn, U+00FE ISOlat1 -->
2012 <!ELEMENT ch.thorn EMPTY><!ATTLIST ch.thorn %core.attributes;>
2014 <!-- latin small letter y with diaeresis, U+00FF ISOlat1 -->
2015 <!ELEMENT ch.yuml EMPTY><!ATTLIST ch.yuml %core.attributes;>
2018 <!-- ::::::::::::::::::::: Special Characters :::::::::::::::::::: -->
2021 <!ELEMENT ch.ampersand EMPTY><!ATTLIST ch.ampersand %core.attributes;>
2023 <!-- opening left quotation mark -->
2024 <!ELEMENT ch.lsquot EMPTY><!ATTLIST ch.lsquot %core.attributes;>
2026 <!-- closing right quotation mark -->
2027 <!ELEMENT ch.rsquot EMPTY><!ATTLIST ch.rsquot %core.attributes;>
2029 <!-- opening left double quotation mark -->
2030 <!ELEMENT ch.ldquot EMPTY><!ATTLIST ch.ldquot %core.attributes;>
2032 <!-- closing right double quotation mark -->
2033 <!ELEMENT ch.rdquot EMPTY><!ATTLIST ch.rdquot %core.attributes;>
2035 <!-- mathematical minus -->
2036 <!ELEMENT ch.minus EMPTY><!ATTLIST ch.minus %core.attributes;>
2039 <!ELEMENT ch.endash EMPTY><!ATTLIST ch.endash %core.attributes;>
2042 <!ELEMENT ch.emdash EMPTY><!ATTLIST ch.emdash %core.attributes;>
2045 <!ELEMENT ch.ellips EMPTY><!ATTLIST ch.ellips %core.attributes;>
2047 <!-- left ellipsis, used at the beginning of edited material -->
2048 <!ELEMENT ch.lellips EMPTY><!ATTLIST ch.lellips %core.attributes;>
2050 <!-- blank line to be filled in -->
2051 <!ELEMENT ch.blankline EMPTY><!ATTLIST ch.blankline %core.attributes;>
2053 <!-- percent sign -->
2054 <!ELEMENT ch.percent EMPTY><!ATTLIST ch.percent %core.attributes;>
2056 <!-- small horizontal space for use between adjacent quotation marks - added mainly for LaTeX's sake -->
2057 <!ELEMENT ch.thinspace EMPTY><!ATTLIST ch.thinspace %core.attributes;>
2059 <!-- vulgar fraction one sixteenth = fraction on sixteenth -->
2060 <!ELEMENT ch.frac116 EMPTY><!ATTLIST ch.frac116 %core.attributes;>
2062 <!-- mathematical plus -->
2063 <!ELEMENT ch.plus EMPTY><!ATTLIST ch.plus %core.attributes;>
2065 <!-- less-than or equal to -->
2066 <!ELEMENT ch.lte EMPTY><!ATTLIST ch.lte %core.attributes;>
2068 <!-- greater-than or equal to -->
2069 <!ELEMENT ch.gte EMPTY><!ATTLIST ch.gte %core.attributes;>
2071 <!-- ============================================================= -->
2073 <!-- ============================================================= -->
2075 <!-- :::::::::::::: Valid Gamebook Document Example :::::::::::::: -->
2077 This document is not intended to document current practice in Project
2078 Aon. It is merely here to demonstrate the concepts of the Gamebook
2079 DTD. For current practice, please refer to published XML files.
2084 <?xml version="1.0" encoding="iso-8859-1"?>
2085 <!DOCTYPE gamebook SYSTEM "gamebook.dtd">
2087 <gamebook version="0.12" xml:lang="en-UK">
2090 <title>Flight from the Dark</title>
2091 <creator>Joe Dever and Gary Chalk</creator>
2092 <publisher>Project Aon</publisher>
2093 <date><year>2001</year><month>10</month><day>24</day></date>
2094 <rights>Copyright <ch.copy/> 1984 Joe Dever and Gary Chalk.</rights>
2097 <section id="section1">
2098 <meta><title>1</title></meta>
2100 <p>You must make haste for you sense it is not safe to linger by the smoking remains of the ruined monastery. The black-winged beasts could return at any moment. You must set out for the Sommerlund capital of Holmgard and tell the King the terrible news of the massacre: that the whole <ch.eacute/>lite of Kai warriors, save yourself, have been slaughtered. Without the Kai Lords to lead her armies, Sommerlund will be at the mercy of their ancient enemy, the Darklords.</p>
2101 <p>Fighting back tears, you bid farewell to your dead kinsmen. Silently, you promise that their deaths will be avenged. You turn away from the ruins and carefully descend the steep track.</p>
2102 <p>At the foot of the hill, the path splits into two directions, both leading into a large wood.</p>
2104 <choice idref="section85">If you wish to take the right path into the wood, <link-text>turn to 85</link-text>.</choice>
2105 <choice idref="section275">If you wish to follow the left track, <link-text>turn to 275</link-text>.</choice>
2106 <choice idref="section141">If you wish to use your Kai Discipline of Sixth Sense, <link-text>turn to 141</link-text>.</choice>
2109 <footnote><p>Later books use <quote>Sommlending</quote> as the possessive adjective for Sommerlund, contrary to the use of the word <quote>Sommerlund</quote> in the third sentence. This is probably not a typo, but a reflection of Joe Dever<ch.apos/>s later expansion of the vocabulary of Magnamund.</p></footnote>
2113 <section id="section17">
2114 <meta><title>17</title></meta>
2116 <p>You raise your weapon to strike at the beast as its razor-fanged mouth snaps shut just inches from your head. Buffeted by the beating of its wings you find it difficult to stand.</p>
2119 <instance src="1.gif" width="386" height="532" mime-type="image/gif" />
2122 <p>Deduct 1 point from your <typ class="attribute">COMBAT SKILL</typ> and fight the Kraan.</p>
2125 <enemy>Kraan:</enemy>
2126 <enemy-attribute>16</enemy-attribute>
2127 <enemy-attribute>24</enemy-attribute>
2130 <p>If you kill the creature, you quickly descend the far side of the hill to avoid the Giaks.</p>
2131 <p>Pick a number from the Random Number Table.</p>
2133 <choice idref="section53">If you pick 0, <link-text>turn to 53</link-text>.</choice>
2134 <choice idref="section274">If you pick 1<ch.endash/>2, <link-text>turn to 274</link-text>.</choice>
2135 <choice idref="section316">If you pick 3<ch.endash/>9, <link-text>turn to 316</link-text>.</choice>
2139 <section id="section53">
2140 <meta><title>53</title></meta>
2144 <section id="section85">
2145 <meta><title>85</title></meta>
2149 <section id="section141">
2150 <meta><title>141</title></meta>
2154 <section id="section274">
2155 <meta><title>274</title></meta>
2159 <section id="section275">
2160 <meta><title>275</title></meta>
2164 <section id="section316">
2165 <meta><title>316</title></meta>