1 <!-- ============================================================= -->
2 <!-- Gamebook Document Type Definition v0.11 -->
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 (http://www.projectaon.org/). Future versions may be of
16 9 April 2005 (version 0.11.2)
17 * Added the following inline elements: "bookref", "footref".
18 * Added the character elements to replace the use of character
19 entities (except in attributes). These allow a processor (e.g.
20 a XSL transformation) to decide how characters should be
21 represented, not this DTD.
23 18 April 2003 (version 0.11.1)
24 * Added the following inline elements: "onomatopoeia", "spell",
27 27 January 2003 (version 0.11.0)
28 * Moved the optional "footnotes" element between the "meta" and
31 10 January 2003 (version 0.10.4)
32 * Removed the "inline.content" entity from the declaration of the
33 contents of the "blockquote" element. This will break some existing
36 7 January 2003 (version 0.10.3)
37 * Made the "src", "width", and "height" attributes of the "instance"
40 4 January 2003 (version 0.10.2)
41 * Moved the specialized character entity definitions into module
44 5 October 2002 (version 0.10.1)
45 * Added the "lellips" and "minus" entities and changed the definition
46 of the "emdash" entity.
48 5 September 2002 (version 0.10.0)
49 * Added the "quote" element.
51 31 August 2002 (version 0.9.1)
52 * Added the "xml:lang" attribute to the "core.attributes" entity.
53 Although this could be used for most elements, it is primarily
54 aimed at the "foreign" element.
56 6 July 2002 (version 0.9)
57 * Replaced the "caption" element and the "illustrator" attribute with
58 the use of the "meta" element.
59 * Renamed the "illustration-instance" element to simply "instance".
60 * Removed the "character-attribute" element.
61 * Added the "typ" element for typographical markup.
62 * Removed the "shortname" attribute.
64 1 June 2002 (version 0.8.3)
65 * Removed the "marker" attribute from the "footnote" element.
67 29 April 2002 (vesion 0.8.2)
68 * Changed the content of the "enemy" element from "#PCDATA" to
71 4 April 2002 (version 0.8.1)
72 * Added the "thinspace" entity
74 3 April 2002 (version 0.8.0)
75 * Added the "thought" element.
76 * Added the "foreign" element.
78 15 March 2002 (version 0.7.0)
79 * Changed the name of the "illustration-set" element to "illustration"
80 and changed the name of the "illustration" element to
81 "illustration-instance".
82 * Made many minor changes to bring the DTD up to current practice.
84 11 May 2001 (version 0.6.0)
85 * Removed the "publication-date" element.
87 5 May 2001 (version 0.5.0)
88 * Added facilities for transformation to LaTeX - mainly appropriate
90 * Added the "marker" attribute to the "footnote" element.
92 1 May 2001 (version 0.4.0)
94 * Added the "link" element to the set of allowable "meta" elements.
95 Although not a Dublin Core meta-data element, it's functionality
96 adds a lot to the document.
98 30 April 2001 (version 0.3.0)
100 * Changed the basic orgranization of the sections by allowing them to
101 have their own meta section instead of a "section-title" element.
102 * Changed the name of the "section-data" element to simply "data".
104 17 April 2001 (version 0.2.0)
106 * Changed some of the block and inline elements in order to make them
109 14 April 2001 (version 0.1.0)
113 <!-- ============================================================= -->
115 <!-- ============================================================= -->
116 <!-- Table of Contents -->
117 <!-- ============================================================= -->
123 B. Character Entities
124 II. Hierarchical Elements
127 V. Character Elements
130 A. Valid Document Example
134 <!-- ============================================================= -->
136 <!-- ============================================================= -->
138 <!-- ::::::::::::::::::::: General Entities :::::::::::::::::::::: -->
140 <!ENTITY % character.content "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.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">
142 <!ENTITY % inline.content "#PCDATA | a | bookref | footref | em | strong | thought | foreign | quote | cite | code | br | typ | onomatopoeia | spell | item | %character.content;">
144 <!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | signpost | hr">
146 <!ENTITY % core.attributes "
148 xml:lang CDATA #IMPLIED
151 <!ENTITY % link.attributes "
156 <!ENTITY % cell.align.attributes "
157 align ( left | center | right | justify | char ) #IMPLIED
159 valign ( top | middle | bottom | baseline ) #IMPLIED
162 <!-- :::::::::::::::::::: Character Entities ::::::::::::::::::::: -->
164 <!ENTITY lt "&#60;"><!-- left angle bracket -->
165 <!ENTITY gt ">"> <!-- right angle bracket -->
166 <!ENTITY amp "&#38;"><!-- ampersand -->
167 <!ENTITY apos "'"> <!-- apostrophe = single quotation mark -->
168 <!ENTITY quot """> <!-- double quotation mark -->
172 It is the responsibility of the document to define relevant character
173 entities in its internal subset. See also Character Elements below.
177 <!-- ============================================================= -->
178 <!-- Hierarchical Elements -->
179 <!-- ============================================================= -->
182 <!ELEMENT gamebook ( meta, section+ )>
184 version CDATA #REQUIRED
185 xml:lang CDATA #IMPLIED
189 The "version" attribute represents the revision number of the gamebook
190 DTD. This allows gamebook processors to make decisions about the
191 suitability of the data.
193 The "xml:lang" attribute specifies the primary language of the
194 document. The data should conform to the IETF RFC1766.
196 http://www.ietf.org/rfc/rfc1766.txt
200 <gamebook version="0.11" xml:lang="en-UK">
201 <meta . . .> . . . </meta>
202 <section . . .> . . . </section>
206 <gamebook version="0.11" > . . . </gamebook>
210 <!-- :::::::::::::::::::::::: meta Element ::::::::::::::::::::::: -->
213 The children of the meta element are designed to directly translate to
214 the Dublin Core Element Set v1.1. For a description of each Dublin
215 Core element, visit the following URL:
217 (http://dublincore.org/documents/1999/07/02/dces/)
219 Although many Dublin Core elements will probably never have any real
220 relevance to gamebooks, all are included for completeness's sake.
222 [editor: add dc: namespace to isolate dublin core elements
223 http://dublincore.org/documents/2001/10/26/dcmi-namespace/ ]
225 Note: The "link" element doesn't correspond directly to any Dublin
226 Core element. It has been added here for required functionality.
229 <!ELEMENT meta ( title | creator | subject | description | publisher | contributor | date | type | format | identifier | source | language | relation | coverage | rights | link)*>
232 The "meta" element represents underlying information about the
233 document. It should contain any number of the Dublin Core 1.1
239 <title . . .> . . . </title>
240 <creator . . .> . . . </creator>
246 <!ELEMENT title ( %inline.content; )*>
251 <!ELEMENT creator ( %inline.content; | %block.content; )*>
256 <!ELEMENT subject ( %inline.content; | %block.content; )*>
261 <!ELEMENT description ( %inline.content; | %block.content; )*>
262 <!ATTLIST description
266 <!ELEMENT publisher ( %inline.content; | %block.content; )*>
271 <!ELEMENT contributor ( %inline.content; | %block.content; )*>
272 <!ATTLIST contributor
276 <!ELEMENT date ( year, month, day )>
282 The "date" element has been extended beyond the specification made in
283 the Dublin Core. It should contain "year", "month" and "day" elements.
288 <year . . .> . . . </year>
289 <month . . .> . . . </month>
290 <day . . .> . . . </day>
295 <!ELEMENT year ( #PCDATA )>
298 The year should be specified in full digit numeric format.
306 <!ELEMENT month ( #PCDATA )>
309 The month should be specified in numeric format with January as "1",
310 February as "2", etc.
318 <!ELEMENT day ( #PCDATA )>
321 The "day" element specifies the day of the month in numeric format.
329 <!ELEMENT type ( %inline.content; )*>
334 <!ELEMENT format ( %inline.content; )*>
339 <!ELEMENT identifier ( %inline.content; )*>
344 <!ELEMENT source ( %inline.content; )*>
349 <!ELEMENT language ( %inline.content; )*>
354 <!ELEMENT relation ( %inline.content; )*>
359 <!ELEMENT coverage ( %inline.content; | %block.content; )*>
364 <!ELEMENT rights ( %inline.content; | %block.content; )*>
369 <!ELEMENT link EMPTY>
373 idrefs IDREFS #IMPLIED>
376 The "link" element has been added to the Dublin Core elements to
377 represent relationships to other parts of the document. The "idrefs"
378 attribute has been added to allow relationships that are held with
379 more than one part of the document.
383 <link class="next" idref="dedicate" />
385 <link class="friends" idrefs="dedicate cmbtrulz" />
389 <!-- ::::::::::::::::::::: section Element ::::::::::::::::::::::: -->
391 <!ELEMENT section ( meta, footnotes?, data )>
398 The "section" element represents one hierarchical level of data.
399 Section elements can be nested (inside the "data" element) in
400 order to create more complex data representations.
402 A "section" element can used as a linking element. The most useful way
403 to utilize this is to make it a named anchor and thus the target of a
409 <meta><title . . .> . . . </title></meta>
410 <data . . .> . . . </data>
411 <footnotes . . .> . . . </footnotes>
415 <meta><title . . .> . . . </title></meta>
418 <section id="dedication">
419 <meta><title . . .> . . . </title></meta>
420 <data . . .> . . . </data>
428 <!ELEMENT data ( %block.content; | section )*>
434 The "data" element contains the main data contained within
435 a section. Note that a nested section structure can be created by
436 including a "section" element within the content of the "data"
443 <combat . . .> . . . </combat>
448 <section . . .> . . . </section>
453 <!ELEMENT footnotes ( footnote )*>
459 The "footnotes" element represents the collection of extra-textual
460 information contained within "footnote" elements.
465 <footnote . . .> . . . </footnote>
466 <footnote . . .> . . . </footnote>
472 <!ELEMENT footnote ( %block.content; )*>
479 The "footnote" element contains extra-textual information. It can be
480 used as a linking element and can thus be used to refer back to a
481 named anchor within the document.
486 <p . . .>This paragraph requires an appropriate
487 <a id="reference" idref="footnote-reference" . . .>footnote</a>.
492 <footnote id="footnote-reference" idref="reference">
493 <p . . .>This is the appropriate footnote.</p>
500 <!-- ============================================================= -->
501 <!-- Block Elements -->
502 <!-- ============================================================= -->
504 <!-- :::::::::::::::::::::::::: Lists :::::::::::::::::::::::::::: -->
506 <!ELEMENT ul ( li )*>
512 The "ul" represents an unordered list.
517 <li . . .> . . . </li>
518 <li . . .> . . . </li>
524 <!ELEMENT ol ( li )*>
530 The "ol" element represents an ordered list.
535 <li . . .> . . . First Item . . . </li>
536 <li . . .> . . . Second Item . . . </li>
542 <!ELEMENT li ( %inline.content; | %block.content; )*>
548 The "li" element is a generic list item used within both ordered and
549 unordered lists (i.e. "ol" and "ul" elements).
556 <li>another list item</li>
561 <li>first list item</li>
562 <li>second list item</li>
568 <!ELEMENT dl ( dt, dd? )*>
574 The "dl" element represents a list of terms and their definitions.
579 <dt . . .> . . . First Term . . . </dt>
580 <dd . . .> . . . First Term's Definition . . . </dd>
582 <dt . . .> . . . Second Term . . . </dt>
583 <dd . . .> . . . Second Term's Definition . . . </dd>
584 <dt . . .> . . . Third Term with No Definition . . . </dt>
589 <!ELEMENT dt ( %inline.content; )*>
595 The "dt" element represents a definition term within a definition
596 list. It should be immediately followed by its definitions contained
597 within "dd" elements.
603 <dt>Definition Term</dt>
604 <dd . . .> . . . Definition . . . </dd>
610 <!ELEMENT dd ( %inline.content; | %block.content; )*>
616 The "dd" element contains a definition.
620 <dt . . .> . . . Term to be defined . . . </dt>
621 <dd>Definition of the term.</dd>
625 <!-- :::::::::::::::::::::::::: Tables ::::::::::::::::::::::::::: -->
627 <!ELEMENT table ( tr )*>
633 The "table" element represents tabular data. It's data is organized
639 <tr . . .> . . . </tr>
640 <tr . . .> . . . </tr>
646 <!ELEMENT tr ( th | td )*>
652 The "tr" element contains a collection of "th" and "td" elements that
653 represent one row of a "table".
660 <th . . .> . . . </th>
661 <td . . .> . . . </td>
669 <!ELEMENT th ( %inline.content; )*>
672 %cell.align.attributes;
676 The "th" contains a table header used to label a particular row or
677 column of tabular data.
684 <td . . .> . . . </td>
685 <td . . .> . . . </td>
691 <!ELEMENT td ( %inline.content; )*>
694 %cell.align.attributes;
698 The "td" element contains one cell of tabular data.
710 <!-- :::::::::::::::::::::: Miscellaneous :::::::::::::::::::::::: -->
712 <!ELEMENT p ( %inline.content; )*>
718 The "p" element contains a paragraph.
722 <p>This is a (short) paragraph.</p>
726 <!ELEMENT blockquote ( %block.content; )*>
732 The "blockquote" element contains a lengthy quotation which isn't
733 contained within a paragraph.
738 <p>There was once a Kai monk from Sommerlund . . .</p>
743 <!ELEMENT combat ( enemy, enemy-attribute+ )>
749 The "combat" element contains one combat represented by the enemy's
755 <enemy . . .> . . . </enemy>
756 <enemy-attribute . . .> . . . </enemy-attribute>
757 <enemy-attribute . . .> . . . </enemy-attribute>
763 <!ELEMENT enemy ( %inline.content; )*>
769 The "enemy" element contains an enemy's name.
775 <enemy>12-foot Giak</enemy>
781 <!ELEMENT enemy-attribute ( #PCDATA )*>
782 <!ATTLIST enemy-attribute
787 The "enemy-attribute" element contains one particular attribute which
794 <enemy-attribute>30</enemy-attribute>
800 <!ELEMENT choice ( %inline.content; | link-text )*>
807 The "choice" element contains the text describing a choice presented
808 within a section. It's a linking element and therefore can link to
809 the place to which the choice leads.
811 The choice element can contain "link-text" elements which suggest text
812 that should be used by the user agent to represent the hyperlink.
816 <section id="section12" . . .> . . . </section>
818 <choice idref="section12">If you would like to fight the 12-foot Giak,
819 <link-text . . .> . . . turn to 12. . . . </link-text>
824 <!ELEMENT link-text ( %inline.content; )*>
830 The "link-text" element contains text which is suggested for use by
831 hypertext user interfaces to represent one end of a hyperlink.
837 <link-text>the unfortunately ubiquitous "Click Here!"</link-text>
843 <!ELEMENT illustration ( meta?, instance+ )>
844 <!ATTLIST illustration
851 The "illustration" element contains a set of alternate
852 representations of a particular illustration.
858 <instance . . .> . . . </instance>
859 <instance . . .> . . . </instance>
865 <!ELEMENT instance ( %inline.content; | %block.content; )*>
870 height CDATA #IMPLIED
871 mime-type CDATA #IMPLIED
875 The "instance" element describes one instance of an illustration.
877 The "src" attribute is a URL for the data file for the illustration.
879 The "width" and "height" attributes contain the dimensions of the
882 The "mime-type" attribute can contain an appropriate label for the
883 format of the illustration file (e.g. "image/png" or "image/jpeg").
885 The "instance" element can contain block or inline content that
886 is intended to replace graphical illustrations.
892 <instance src="17.gif" width="386" height="532" type="image/gif" />
893 <instance src="" width="" height="" type="text" >
901 <!ELEMENT signpost ( %inline.content; | %block.content; )*>
907 The "signpost" element contains the text of a sign or message that
908 should be presented offset from surrounding text.
912 <signpost>RENDALIM'S LABORATORY</signpost>
922 The "hr" element designates a horizontal rule. Since this is a
923 presentational tag, it should be used sparingly in cases where new
924 logical divisions of the text begin which aren't given a unique
933 <!-- ============================================================= -->
934 <!-- Inline Elements -->
935 <!-- ============================================================= -->
937 <!ELEMENT a ( %inline.content; )*>
945 The "a" element is used to contain inline content that should be a
946 hypertext anchor. The "a" element should not contain another linking
947 element (e.g. "a", "bookref", "footref").
949 The "href" attribute is added to allow a reference outside of the
956 <a idref="section12" id="foo">Section 12</a>
962 <!ELEMENT bookref ( %inline.content; )*>
966 section CDATA #IMPLIED
970 The "bookref" element is used to contain inline content that should be a
971 hypertext anchor to another book.
973 The "book" attribute is a tag that denotes the book that the link points
974 to. This is not necessarily a URL.
976 The "section" attribute is a tag indicating which section to link to.
977 This is not necessarily a URL.
983 <bookref book="11tpot" id="sect33">
984 The Prisoners of Time: Section 33
991 <!ELEMENT footref ( %inline.content; )*>
998 The "footref" element is used to indicate the position of a reference
999 to a "footnote" element.
1005 You lose 3EP.<footref id="footref1" idref="footnote1"/>
1011 <!ELEMENT em ( %inline.content; )*>
1017 The "em" element contains text that should be emphasized. Although not
1018 part of the DTD and therefore not guaranteed or required to be so, the
1019 text should be typeset with an italic font.
1023 <em>You are being attacked!</em>
1029 <!ELEMENT strong ( %inline.content; )*>
1035 The "strong" element contains text that should be emphasized. Although
1036 not part of the DTD and therefore not guaranteed or required to be so,
1037 the text should be typeset with a bold font weight.
1041 <strong>If</strong> you have the Talisman of Supreme Obscurity,
1047 <!ELEMENT thought ( %inline.content; )*>
1053 The "thought" element contains text that is the character's thoughts or is
1054 an overheard thought. Although not part of the DTD and therefore not
1055 guaranteed or required to be so, the text should be typeset with an italic
1060 Lone Wolf heard the words <thought>Die Northlander!</strong> echo in
1067 <!ELEMENT foreign ( %inline.content; )*>
1073 The "foreign" element contains a phrase in a non-native language.
1074 Although not part of the DTD and therefore not guaranteed or required
1075 to be so, the text should be typeset with an italic font face.
1079 The Giak horde attacked <foreign>en masse</foreign>.
1085 <!ELEMENT quote ( %inline.content; )*>
1091 The "quote" element contains an inline quotation.
1095 <p . . .>The Giak yelped <quote . . .>Oww!</quote></p>
1099 <!ELEMENT cite ( %inline.content; )*>
1105 The "cite" element contains the title of a sited resource.
1111 <cite>Flight from the Dark</cite>
1117 <!ELEMENT code ( %inline.content; )*>
1123 The "code" element contains data that should be interpreted as literal
1124 input to a computer (e.g. email addresses and URIs).
1128 <code>http://www.projectaon.org/</code>
1138 The "br" indicates a required line break. Its use should be confined
1139 to documents such as poems that require a particular line structure.
1145 There once was a Kai monk from Sommerlund<br />
1146 Who always wore a cummerbund<br />
1152 <!ELEMENT typ ( #PCDATA )>
1158 The "typ" element is used to denote purely typographical markup. For
1159 example, bold font face, italics, and smaller font are purely of
1160 typographical concern. Take care to not use this in place of logical
1161 markup such as the "em" element when it is more appropriate.
1165 The <typ class="bold">Project Aon</a> volunteers.
1169 <!ELEMENT onomatopoeia ( #PCDATA )>
1170 <!ATTLIST onomatopoeia
1175 The "onomatopoeia" element is used to denote words that imitate a
1176 sound (e.g., "whoosh", "bang").
1180 The <onomatopoeia>clang</onomatopoeia> of the bell is deafening.
1184 <!ELEMENT spell ( #PCDATA )>
1190 The "spell" element contains the name of a magic spell.
1194 Having had no success with his female peers, the acolyte learned the
1195 forbidden <spell>Attract Opposite Gender</spell> spell.
1199 <!ELEMENT item ( #PCDATA )>
1205 The "item" element contains the name of an item that the reader can
1206 pick up or interact with.
1210 Her <item>Sword</a> lay just out of reach.
1214 <!-- ============================================================= -->
1215 <!-- Character Elements -->
1216 <!-- ============================================================= -->
1219 The character elments provide a hook to specify a character without
1220 specifying the exact representation in target formats. The exact
1221 representation used is the responsibility of the processor (e.g XSLT
1224 Portions Copyright International Organization for Standardization 1986
1225 Permission to copy in any form is granted for use with conforming SGML
1226 systems and applications as defined in ISO 8879, provided this notice
1227 is included in all copies.
1231 <!-- no-break space = non-breaking space, U+00A0 ISOnum -->
1232 <!ELEMENT ch.nbsp EMPTY><!ATTLIST nbsp %core.attributes;>
1234 <!-- inverted exclamation mark, U+00A1 ISOnum -->
1235 <!ELEMENT ch.iexcl EMPTY><!ATTLIST iexcl %core.attributes;>
1237 <!-- cent sign, U+00A2 ISOnum -->
1238 <!ELEMENT ch.cent EMPTY><!ATTLIST cent %core.attributes;>
1240 <!-- pound sign, U+00A3 ISOnum -->
1241 <!ELEMENT ch.pound EMPTY><!ATTLIST pound %core.attributes;>
1243 <!-- currency sign, U+00A4 ISOnum -->
1244 <!ELEMENT ch.curren EMPTY><!ATTLIST curren %core.attributes;>
1246 <!-- yen sign = yuan sign, U+00A5 ISOnum -->
1247 <!ELEMENT ch.yen EMPTY><!ATTLIST yen %core.attributes;>
1249 <!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
1250 <!ELEMENT ch.brvbar EMPTY><!ATTLIST brvbar %core.attributes;>
1252 <!-- section sign, U+00A7 ISOnum -->
1253 <!ELEMENT ch.sect EMPTY><!ATTLIST sect %core.attributes;>
1255 <!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
1256 <!ELEMENT ch.uml EMPTY><!ATTLIST uml %core.attributes;>
1258 <!-- copyright sign, U+00A9 ISOnum -->
1259 <!ELEMENT ch.copy EMPTY><!ATTLIST copy %core.attributes;>
1261 <!-- feminine ordinal indicator, U+00AA ISOnum -->
1262 <!ELEMENT ch.ordf EMPTY><!ATTLIST ordf %core.attributes;>
1264 <!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
1265 <!ELEMENT ch.laquo EMPTY><!ATTLIST laquo %core.attributes;>
1267 <!-- not sign, U+00AC ISOnum -->
1268 <!ELEMENT ch.not EMPTY><!ATTLIST not %core.attributes;>
1270 <!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
1271 <!ELEMENT ch.shy EMPTY><!ATTLIST shy %core.attributes;>
1273 <!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
1274 <!ELEMENT ch.reg EMPTY><!ATTLIST reg %core.attributes;>
1276 <!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
1277 <!ELEMENT ch.macr EMPTY><!ATTLIST macr %core.attributes;>
1279 <!-- degree sign, U+00B0 ISOnum -->
1280 <!ELEMENT ch.deg EMPTY><!ATTLIST deg %core.attributes;>
1282 <!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
1283 <!ELEMENT ch.plusmn EMPTY><!ATTLIST plusmn %core.attributes;>
1285 <!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
1286 <!ELEMENT ch.sup2 EMPTY><!ATTLIST sup2 %core.attributes;>
1288 <!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
1289 <!ELEMENT ch.sup3 EMPTY><!ATTLIST sup3 %core.attributes;>
1291 <!-- acute accent = spacing acute, U+00B4 ISOdia -->
1292 <!ELEMENT ch.acute EMPTY><!ATTLIST acute %core.attributes;>
1294 <!-- micro sign, U+00B5 ISOnum -->
1295 <!ELEMENT ch.micro EMPTY><!ATTLIST micro %core.attributes;>
1297 <!-- pilcrow sign = paragraph sign, U+00B6 ISOnum -->
1298 <!ELEMENT ch.para EMPTY><!ATTLIST para %core.attributes;>
1300 <!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
1301 <!ELEMENT ch.middot EMPTY><!ATTLIST middot %core.attributes;>
1303 <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
1304 <!ELEMENT ch.cedil EMPTY><!ATTLIST cedil %core.attributes;>
1306 <!-- superscript one = superscript digit one, U+00B9 ISOnum -->
1307 <!ELEMENT ch.sup1 EMPTY><!ATTLIST sup1 %core.attributes;>
1309 <!-- masculine ordinal indicator, U+00BA ISOnum -->
1310 <!ELEMENT ch.ordm EMPTY><!ATTLIST ordm %core.attributes;>
1312 <!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
1313 <!ELEMENT ch.raquo EMPTY><!ATTLIST raquo %core.attributes;>
1315 <!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
1316 <!ELEMENT ch.frac14 EMPTY><!ATTLIST frac14 %core.attributes;>
1318 <!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
1319 <!ELEMENT ch.frac12 EMPTY><!ATTLIST frac12 %core.attributes;>
1321 <!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
1322 <!ELEMENT ch.frac34 EMPTY><!ATTLIST frac34 %core.attributes;>
1324 <!-- inverted question mark = turned question mark, U+00BF ISOnum -->
1325 <!ELEMENT ch.iquest EMPTY><!ATTLIST iquest %core.attributes;>
1327 <!-- latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1 -->
1328 <!ELEMENT ch.Agrave EMPTY><!ATTLIST Agrave %core.attributes;>
1330 <!-- latin capital letter A with acute, U+00C1 ISOlat1 -->
1331 <!ELEMENT ch.Aacute EMPTY><!ATTLIST Aacute %core.attributes;>
1333 <!-- latin capital letter A with circumflex, U+00C2 ISOlat1 -->
1334 <!ELEMENT ch.Acirc EMPTY><!ATTLIST Acirc %core.attributes;>
1336 <!-- latin capital letter A with tilde, U+00C3 ISOlat1 -->
1337 <!ELEMENT ch.Atilde EMPTY><!ATTLIST Atilde %core.attributes;>
1339 <!-- latin capital letter A with diaeresis, U+00C4 ISOlat1 -->
1340 <!ELEMENT ch.Auml EMPTY><!ATTLIST Auml %core.attributes;>
1342 <!-- latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1 -->
1343 <!ELEMENT ch.Aring EMPTY><!ATTLIST Aring %core.attributes;>
1345 <!-- latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1 -->
1346 <!ELEMENT ch.AElig EMPTY><!ATTLIST AElig %core.attributes;>
1348 <!-- latin capital letter C with cedilla, U+00C7 ISOlat1 -->
1349 <!ELEMENT ch.Ccedil EMPTY><!ATTLIST Ccedil %core.attributes;>
1351 <!-- latin capital letter E with grave, U+00C8 ISOlat1 -->
1352 <!ELEMENT ch.Egrave EMPTY><!ATTLIST Egrave %core.attributes;>
1354 <!-- latin capital letter E with acute, U+00C9 ISOlat1 -->
1355 <!ELEMENT ch.Eacute EMPTY><!ATTLIST Eacute %core.attributes;>
1357 <!-- latin capital letter E with circumflex, U+00CA ISOlat1 -->
1358 <!ELEMENT ch.Ecirc EMPTY><!ATTLIST Ecirc %core.attributes;>
1360 <!-- latin capital letter E with diaeresis, U+00CB ISOlat1 -->
1361 <!ELEMENT ch.Euml EMPTY><!ATTLIST Euml %core.attributes;>
1363 <!-- latin capital letter I with grave, U+00CC ISOlat1 -->
1364 <!ELEMENT ch.Igrave EMPTY><!ATTLIST Igrave %core.attributes;>
1366 <!-- latin capital letter I with acute, U+00CD ISOlat1 -->
1367 <!ELEMENT ch.Iacute EMPTY><!ATTLIST Iacute %core.attributes;>
1369 <!-- latin capital letter I with circumflex, U+00CE ISOlat1 -->
1370 <!ELEMENT ch.Icirc EMPTY><!ATTLIST Icirc %core.attributes;>
1372 <!-- latin capital letter I with diaeresis, U+00CF ISOlat1 -->
1373 <!ELEMENT ch.Iuml EMPTY><!ATTLIST Iuml %core.attributes;>
1375 <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
1376 <!ELEMENT ch.ETH EMPTY><!ATTLIST ETH %core.attributes;>
1378 <!-- latin capital letter N with tilde, U+00D1 ISOlat1 -->
1379 <!ELEMENT ch.Ntilde EMPTY><!ATTLIST Ntilde %core.attributes;>
1381 <!-- latin capital letter O with grave, U+00D2 ISOlat1 -->
1382 <!ELEMENT ch.Ograve EMPTY><!ATTLIST Ograve %core.attributes;>
1384 <!-- latin capital letter O with acute, U+00D3 ISOlat1 -->
1385 <!ELEMENT ch.Oacute EMPTY><!ATTLIST Oacute %core.attributes;>
1387 <!-- latin capital letter O with circumflex, U+00D4 ISOlat1 -->
1388 <!ELEMENT ch.Ocirc EMPTY><!ATTLIST Ocirc %core.attributes;>
1390 <!-- latin capital letter O with tilde, U+00D5 ISOlat1 -->
1391 <!ELEMENT ch.Otilde EMPTY><!ATTLIST Otilde %core.attributes;>
1393 <!-- latin capital letter O with diaeresis, U+00D6 ISOlat1 -->
1394 <!ELEMENT ch.Ouml EMPTY><!ATTLIST Ouml %core.attributes;>
1396 <!-- multiplication sign, U+00D7 ISOnum -->
1397 <!ELEMENT ch.times EMPTY><!ATTLIST times %core.attributes;>
1399 <!-- latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1 -->
1400 <!ELEMENT ch.Oslash EMPTY><!ATTLIST Oslash %core.attributes;>
1402 <!-- latin capital letter U with grave, U+00D9 ISOlat1 -->
1403 <!ELEMENT ch.Ugrave EMPTY><!ATTLIST Ugrave %core.attributes;>
1405 <!-- latin capital letter U with acute, U+00DA ISOlat1 -->
1406 <!ELEMENT ch.Uacute EMPTY><!ATTLIST Uacute %core.attributes;>
1408 <!-- latin capital letter U with circumflex, U+00DB ISOlat1 -->
1409 <!ELEMENT ch.Ucirc EMPTY><!ATTLIST Ucirc %core.attributes;>
1411 <!-- latin capital letter U with diaeresis, U+00DC ISOlat1 -->
1412 <!ELEMENT ch.Uuml EMPTY><!ATTLIST Uuml %core.attributes;>
1414 <!-- latin capital letter Y with acute, U+00DD ISOlat1 -->
1415 <!ELEMENT ch.Yacute EMPTY><!ATTLIST Yacute %core.attributes;>
1417 <!-- latin capital letter THORN, U+00DE ISOlat1 -->
1418 <!ELEMENT ch.THORN EMPTY><!ATTLIST THORN %core.attributes;>
1420 <!-- latin small letter sharp s = ess-zed, U+00DF ISOlat1 -->
1421 <!ELEMENT ch.szlig EMPTY><!ATTLIST szlig %core.attributes;>
1423 <!-- latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1 -->
1424 <!ELEMENT ch.agrave EMPTY><!ATTLIST agrave %core.attributes;>
1426 <!-- latin small letter a with acute, U+00E1 ISOlat1 -->
1427 <!ELEMENT ch.aacute EMPTY><!ATTLIST aacute %core.attributes;>
1429 <!-- latin small letter a with circumflex, U+00E2 ISOlat1 -->
1430 <!ELEMENT ch.acirc EMPTY><!ATTLIST acirc %core.attributes;>
1432 <!-- latin small letter a with tilde, U+00E3 ISOlat1 -->
1433 <!ELEMENT ch.atilde EMPTY><!ATTLIST atilde %core.attributes;>
1435 <!-- latin small letter a with diaeresis, U+00E4 ISOlat1 -->
1436 <!ELEMENT ch.auml EMPTY><!ATTLIST auml %core.attributes;>
1438 <!-- latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1 -->
1439 <!ELEMENT ch.aring EMPTY><!ATTLIST aring %core.attributes;>
1441 <!-- latin small letter ae = latin small ligature ae, U+00E6 ISOlat1 -->
1442 <!ELEMENT ch.aelig EMPTY><!ATTLIST aelig %core.attributes;>
1444 <!-- latin small letter c with cedilla, U+00E7 ISOlat1 -->
1445 <!ELEMENT ch.ccedil EMPTY><!ATTLIST ccedil %core.attributes;>
1447 <!-- latin small letter e with grave, U+00E8 ISOlat1 -->
1448 <!ELEMENT ch.egrave EMPTY><!ATTLIST egrave %core.attributes;>
1450 <!-- latin small letter e with acute, U+00E9 ISOlat1 -->
1451 <!ELEMENT ch.eacute EMPTY><!ATTLIST eacute %core.attributes;>
1453 <!-- latin small letter e with circumflex, U+00EA ISOlat1 -->
1454 <!ELEMENT ch.ecirc EMPTY><!ATTLIST ecirc %core.attributes;>
1456 <!-- latin small letter e with diaeresis, U+00EB ISOlat1 -->
1457 <!ELEMENT ch.euml EMPTY><!ATTLIST euml %core.attributes;>
1459 <!-- latin small letter i with grave, U+00EC ISOlat1 -->
1460 <!ELEMENT ch.igrave EMPTY><!ATTLIST igrave %core.attributes;>
1462 <!-- latin small letter i with acute, U+00ED ISOlat1 -->
1463 <!ELEMENT ch.iacute EMPTY><!ATTLIST iacute %core.attributes;>
1465 <!-- latin small letter i with circumflex, U+00EE ISOlat1 -->
1466 <!ELEMENT ch.icirc EMPTY><!ATTLIST icirc %core.attributes;>
1468 <!-- latin small letter i with diaeresis, U+00EF ISOlat1 -->
1469 <!ELEMENT ch.iuml EMPTY><!ATTLIST iuml %core.attributes;>
1471 <!-- latin small letter eth, U+00F0 ISOlat1 -->
1472 <!ELEMENT ch.eth EMPTY><!ATTLIST eth %core.attributes;>
1474 <!-- latin small letter n with tilde, U+00F1 ISOlat1 -->
1475 <!ELEMENT ch.ntilde EMPTY><!ATTLIST ntilde %core.attributes;>
1477 <!-- latin small letter o with grave, U+00F2 ISOlat1 -->
1478 <!ELEMENT ch.ograve EMPTY><!ATTLIST ograve %core.attributes;>
1480 <!-- latin small letter o with acute, U+00F3 ISOlat1 -->
1481 <!ELEMENT ch.oacute EMPTY><!ATTLIST oacute %core.attributes;>
1483 <!-- latin small letter o with circumflex, U+00F4 ISOlat1 -->
1484 <!ELEMENT ch.ocirc EMPTY><!ATTLIST ocirc %core.attributes;>
1486 <!-- latin small letter o with tilde, U+00F5 ISOlat1 -->
1487 <!ELEMENT ch.otilde EMPTY><!ATTLIST otilde %core.attributes;>
1489 <!-- latin small letter o with diaeresis, U+00F6 ISOlat1 -->
1490 <!ELEMENT ch.ouml EMPTY><!ATTLIST ouml %core.attributes;>
1492 <!-- division sign, U+00F7 ISOnum -->
1493 <!ELEMENT ch.divide EMPTY><!ATTLIST divide %core.attributes;>
1495 <!-- latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1 -->
1496 <!ELEMENT ch.oslash EMPTY><!ATTLIST oslash %core.attributes;>
1498 <!-- latin small letter u with grave, U+00F9 ISOlat1 -->
1499 <!ELEMENT ch.ugrave EMPTY><!ATTLIST ugrave %core.attributes;>
1501 <!-- latin small letter u with acute, U+00FA ISOlat1 -->
1502 <!ELEMENT ch.uacute EMPTY><!ATTLIST uacute %core.attributes;>
1504 <!-- latin small letter u with circumflex, U+00FB ISOlat1 -->
1505 <!ELEMENT ch.ucirc EMPTY><!ATTLIST ucirc %core.attributes;>
1507 <!-- latin small letter u with diaeresis, U+00FC ISOlat1 -->
1508 <!ELEMENT ch.uuml EMPTY><!ATTLIST uuml %core.attributes;>
1510 <!-- latin small letter y with acute, U+00FD ISOlat1 -->
1511 <!ELEMENT ch.yacute EMPTY><!ATTLIST yacute %core.attributes;>
1513 <!-- latin small letter thorn, U+00FE ISOlat1 -->
1514 <!ELEMENT ch.thorn EMPTY><!ATTLIST thorn %core.attributes;>
1516 <!-- latin small letter y with diaeresis, U+00FF ISOlat1 -->
1517 <!ELEMENT ch.yuml EMPTY><!ATTLIST yuml %core.attributes;>
1520 <!-- ::::::::::::::::::::: Special Characters :::::::::::::::::::: -->
1523 <!ELEMENT ch.ampersand EMPTY><!ATTLIST ampersand %core.attributes;>
1525 <!-- opening left quotation mark -->
1526 <!ELEMENT ch.lsquot EMPTY><!ATTLIST lsquot %core.attributes;>
1528 <!-- closing right quotation mark -->
1529 <!ELEMENT ch.rsquot EMPTY><!ATTLIST rsquot %core.attributes;>
1531 <!-- opening left double quotation mark -->
1532 <!ELEMENT ch.ldquot EMPTY><!ATTLIST ldquot %core.attributes;>
1534 <!-- closing right double quotation mark -->
1535 <!ELEMENT ch.rdquot EMPTY><!ATTLIST rdquot %core.attributes;>
1537 <!-- mathematical minus -->
1538 <!ELEMENT ch.minus EMPTY><!ATTLIST minus %core.attributes;>
1541 <!ELEMENT ch.endash EMPTY><!ATTLIST endash %core.attributes;>
1544 <!ELEMENT ch.emdash EMPTY><!ATTLIST emdash %core.attributes;>
1547 <!ELEMENT ch.ellips EMPTY><!ATTLIST ellips %core.attributes;>
1549 <!-- left ellipsis, used at the beginning of edited material -->
1550 <!ELEMENT ch.lellips EMPTY><!ATTLIST lellips %core.attributes;>
1552 <!-- blank line to be filled in -->
1553 <!ELEMENT ch.blankline EMPTY><!ATTLIST blankline %core.attributes;>
1555 <!-- percent sign -->
1556 <!ELEMENT ch.percent EMPTY><!ATTLIST percent %core.attributes;>
1558 <!-- small horizontal space for use between adjacent quotation marks - added mainly for LaTeX's sake -->
1559 <!ELEMENT ch.thinspace EMPTY><!ATTLIST thinspace %core.attributes;>
1561 <!-- ============================================================= -->
1563 <!-- ============================================================= -->
1565 <!-- :::::::::::::: Valid Gamebook Document Example :::::::::::::: -->
1567 This document is not intended to document current practice in Project
1568 Aon. It is merely here to demonstrate the concepts of the Gamebook
1569 DTD. For current practice, please refer to published XML files.
1574 <?xml version="1.0" encoding="iso-8859-1"?>
1575 <!DOCTYPE gamebook SYSTEM "gamebook.dtd">
1577 <gamebook version="0.11" xml:lang="en-UK">
1580 <title>Flight from the Dark</title>
1581 <creator>Joe Dever and Gary Chalk</creator>
1582 <publisher>Project Aon</publisher>
1583 <date><year>2001</year><month>10</month><day>24</day></date>
1584 <rights>Copyright <ch.copy/> 1984 Joe Dever and Gary Chalk.</rights>
1587 <section id="section1">
1588 <meta><title>1</title></meta>
1590 <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>
1591 <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>
1592 <p>At the foot of the hill, the path splits into two directions, both leading into a large wood.</p>
1594 <choice idref="section85">If you wish to take the right path into the wood, <link-text>turn to 85</link-text>.</choice>
1595 <choice idref="section275">If you wish to follow the left track, <link-text>turn to 275</link-text>.</choice>
1596 <choice idref="section141">If you wish to use your Kai Discipline of Sixth Sense, <link-text>turn to 141</link-text>.</choice>
1599 <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>
1603 <section id="section17">
1604 <meta><title>17</title></meta>
1606 <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>
1609 <instance src="1.gif" width="386" height="532" mime-type="image/gif" />
1612 <p>Deduct 1 point from your <typ class="attribute">COMBAT SKILL</typ> and fight the Kraan.</p>
1615 <enemy>Kraan:</enemy>
1616 <enemy-attribute>16</enemy-attribute>
1617 <enemy-attribute>24</enemy-attribute>
1620 <p>If you kill the creature, you quickly descend the far side of the hill to avoid the Giaks.</p>
1621 <p>Pick a number from the Random Number Table.</p>
1623 <choice idref="section53">If you pick 0, <link-text>turn to 53</link-text>.</choice>
1624 <choice idref="section274">If you pick 1<ch.endash/>2, <link-text>turn to 274</link-text>.</choice>
1625 <choice idref="section316">If you pick 3<ch.endash/>9, <link-text>turn to 316</link-text>.</choice>
1629 <section id="section53">
1630 <meta><title>53</title></meta>
1634 <section id="section85">
1635 <meta><title>85</title></meta>
1639 <section id="section141">
1640 <meta><title>141</title></meta>
1644 <section id="section274">
1645 <meta><title>274</title></meta>
1649 <section id="section275">
1650 <meta><title>275</title></meta>
1654 <section id="section316">
1655 <meta><title>316</title></meta>