* Added "illref", "illustrations" and "illgroup". Still backwards
[project-aon.git] / xml / gamebook.dtd
index 782abc6..b01f342 100644 (file)
@@ -1,5 +1,5 @@
 <!-- ============================================================= -->
-<!--             Gamebook Document Type Definition v0.10           -->
+<!--             Gamebook Document Type Definition v0.12           -->
 <!-- ============================================================= -->
 <!--
 
@@ -13,6 +13,26 @@ $Id$
 
 Change Log:
 
+25 March 2006 (version 0.12.0)
+ * Added "illref", "illustrations" and "illgroup". Still backwards
+   compatible.
+
+26 December 2005 (version 0.11.4)
+ * Added link.attributes and the optional "series" attribute to
+   "bookref", and fleshed out the "bookref" and "footref"
+   descriptions.
+
+5 December 2005 (version 0.11.3)
+ * Corrected ATTLISTs of character elements
+ * Added "ch.apos", "ch.frac116", and "ch.plus" elements
+
+9 April 2005 (version 0.11.2)
+ * Added the following inline elements: "bookref", "footref".
+ * Added the character elements to replace the use of character
+   entities (except in attributes). These allow a processor (e.g.
+   a XSL transformation) to decide how characters should be
+   represented, not this DTD.
+
 18 April 2003 (version 0.11.1)
  * Added the following inline elements: "onomatopoeia", "spell",
    "item".
@@ -33,7 +53,7 @@ Change Log:
 4 January 2003 (version 0.10.2)
  * Moved the specialized character entity definitions into module
    files.
-
+x
 5 October 2002 (version 0.10.1)
  * Added the "lellips" and "minus" entities and changed the definition
    of the "emdash" entity.
@@ -117,8 +137,9 @@ Change Log:
  II. Hierarchical Elements
 III. Block Elements
  IV. Inline Elements
+  V. Character Elements
 
 V. Appendices
VI. Appendices
      A. Valid Document Example
 
 -->
@@ -129,9 +150,11 @@ III. Block Elements
 
 <!-- ::::::::::::::::::::: General Entities :::::::::::::::::::::: -->
 
-<!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | signpost | hr">
+<!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.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">
+
+<!ENTITY % inline.content "#PCDATA | a | bookref | footref | em | strong | thought | foreign | quote | cite | code | br | typ | onomatopoeia | spell | item | %character.content;">
 
-<!ENTITY % inline.content "#PCDATA | a | em | strong | thought | foreign | quote | cite | code | br | typ | onomatopoeia | spell | item">
+<!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | signpost | hr | illref">
 
 <!ENTITY % core.attributes "
          class CDATA #IMPLIED
@@ -157,11 +180,10 @@ III. Block Elements
 <!ENTITY apos   "&#39;">    <!-- apostrophe = single quotation mark -->
 <!ENTITY quot   "&#34;">    <!-- double quotation mark -->
 
-
 <!--
 
 It is the responsibility of the document to define relevant character 
-entities in its internal subset.
+entities in its internal subset. See also Character Elements below.
 
 -->
 
@@ -188,13 +210,13 @@ document. The data should conform to the IETF RFC1766.
 
 Examples:
 
- <gamebook version="0.11" xml:lang="en-UK">
+ <gamebook version="0.12" xml:lang="en-UK">
   <meta . . .> . . . </meta>
   <section . . .> . . . </section>
   . . .
  </gamebook>
 
- <gamebook version="0.11" > . . . </gamebook>
+ <gamebook version="0.12" > . . . </gamebook>
 
 -->
 
@@ -379,7 +401,7 @@ Examples:
 
 <!-- ::::::::::::::::::::: section Element ::::::::::::::::::::::: -->
 
-<!ELEMENT section ( meta, footnotes?, data )>
+<!ELEMENT section ( meta, footnotes?, illustrations?, data )>
 <!ATTLIST section
           %core.attributes;
           %link.attributes;
@@ -441,6 +463,54 @@ Examples:
 
 -->
 
+<!ELEMENT illustrations ( illustration | illgroup )*>
+<!ATTLIST illustrations
+          %core.attributes;
+>
+<!--
+
+The "illustrations" element represents a collection of illustrations.
+The illustrations, or illustration groups, should be listed in the
+order they appear in the book.
+
+Example:
+
+ <illustrations>
+  <illustration . . . />
+  <illgroup . . .>. . .</illgroup>
+  . . .
+ </illustrations>
+
+-->
+
+<!ELEMENT illgroup ( illustration )*>
+<!ATTLIST illgroup
+          %core.attributes;
+          %link.attributes;
+>
+
+<!--
+
+The "illgroup" element represents a group of illustrations contained
+within one section. It is used when individual links to the each
+illustration from the illustrations index are not wanted.
+
+Example:
+
+ <illgroup idref=". . .">
+  <illustration . . . />
+  <illustration . . . />
+  . . . 
+ </illgroup>
+
+ <illgroup idref=". . ." class="hidden">
+  <illustration . . . />
+  <illustration . . . />
+  . . . 
+ </illgroup>
+
+-->
+
 <!ELEMENT footnotes ( footnote )*>
 <!ATTLIST footnotes
           %core.attributes;
@@ -474,8 +544,8 @@ named anchor within the document.
 Example:
 
  <data . . .>
-  <p . . .>This paragraph requires an appropriate 
-   <a id="reference" idref="footnote-reference" . . .>footnote</a>.
+  <p . . .>This paragraph requires an appropriate footnote
+   <a id="reference" idref="footnote-reference" . . ./>.
   </p>
   . . .
  </data>
@@ -889,6 +959,27 @@ Example:
 
 -->
 
+<!ELEMENT illref EMPTY>
+<!ATTLIST illref
+          %core.attributes;
+          %link.attributes;
+>
+
+<!--
+
+The "illref" element is used to mark the location of an illustration.
+The actual illustration is declared elsewhere.
+
+Since the placement of a particular illustration may depend on the
+output format, one "illref" is required for each format.
+
+Example:
+
+  <illref idref="ill2" class="html"/>
+  <illref idref="ill2" class="pdf"/>
+
+-->
+
 <!ELEMENT signpost ( %inline.content; | %block.content; )*>
 <!ATTLIST signpost
           %core.attributes;
@@ -934,7 +1025,8 @@ Example:
 <!--
 
 The "a" element is used to contain inline content that should be a 
-hypertext anchor.
+hypertext anchor. The "a" element should not contain another linking
+element (e.g. "a", "bookref", "footref").
 
 The "href" attribute is added to allow a reference outside of the 
 document itself.
@@ -949,6 +1041,68 @@ Example:
 
 -->
 
+<!ELEMENT bookref ( %inline.content; )*>
+<!ATTLIST bookref
+          %core.attributes;
+          %link.attributes;
+          series  CDATA #IMPLIED
+          book    CDATA #REQUIRED
+          section CDATA #IMPLIED
+>
+<!--
+
+The "bookref" element is used to contain inline content that should be a 
+hypertext anchor to another book.
+
+The "series" attribute is a tag that denotes the series of the book that
+the link points to. The attribute may be left out if the book is part of
+the same series as the one containing the link.
+
+The "book" attribute is a tag that denotes the book that the link points
+to. This is not necessarily a URL.
+
+The "section" attribute is a tag indicating which section to link to.
+This is not necessarily a URL. The attribute may be left out if no
+particular section is referred to.
+
+Example:
+
+ <p . . .>
+  . . .
+  <bookref series="lw" book="11tpot" section="sect33">
+   The Prisoners of Time: Section 33
+  </bookref>
+  . . .
+ </p>
+
+ <p . . .>
+  . . .
+  <bookref book="04wotw">Book 4</bookref>
+  . . .
+ </p>
+
+-->
+
+<!ELEMENT footref ( %inline.content; )*>
+<!ATTLIST footref
+          %core.attributes;
+          %link.attributes;
+>
+<!--
+
+The "footref" element is used to indicate the position of a reference
+to a "footnote" element. It should normally not contain any text.
+
+Example:
+
+ <p . . .>
+  . . .
+  You lose 3EP.<footref id="footref1" idref="footnote1"/>
+  . . .
+ </p>
+
+-->
+
 <!ELEMENT em ( %inline.content; )*>
 <!ATTLIST em
           %core.attributes;
@@ -1152,6 +1306,362 @@ Her <item>Sword</a> lay just out of reach.
 
 -->
 
+<!-- ============================================================= -->
+<!--                      Character Elements                       -->
+<!-- ============================================================= -->
+<!--
+
+The character elments provide a hook to specify a character without
+specifying the exact representation in target formats. The exact 
+representation used is the responsibility of the processor (e.g XSLT
+stylesheet.
+
+Portions Copyright International Organization for Standardization 1986 
+Permission to copy in any form is granted for use with conforming SGML 
+systems and applications as defined in ISO 8879, provided this notice 
+is included in all copies.
+
+-->
+
+<!-- no-break space = non-breaking space, U+00A0 ISOnum -->
+<!ELEMENT ch.apos EMPTY><!ATTLIST ch.apos %core.attributes;>
+
+<!-- no-break space = non-breaking space, U+00A0 ISOnum -->
+<!ELEMENT ch.nbsp EMPTY><!ATTLIST ch.nbsp %core.attributes;>
+
+<!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ELEMENT ch.iexcl EMPTY><!ATTLIST ch.iexcl %core.attributes;>
+
+<!-- cent sign, U+00A2 ISOnum -->
+<!ELEMENT ch.cent EMPTY><!ATTLIST ch.cent %core.attributes;>
+
+<!-- pound sign, U+00A3 ISOnum -->
+<!ELEMENT ch.pound EMPTY><!ATTLIST ch.pound %core.attributes;>
+
+<!-- currency sign, U+00A4 ISOnum -->
+<!ELEMENT ch.curren EMPTY><!ATTLIST ch.curren %core.attributes;>
+
+<!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ELEMENT ch.yen EMPTY><!ATTLIST ch.yen %core.attributes;>
+
+<!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
+<!ELEMENT ch.brvbar EMPTY><!ATTLIST ch.brvbar %core.attributes;>
+
+<!-- section sign, U+00A7 ISOnum -->
+<!ELEMENT ch.sect EMPTY><!ATTLIST ch.sect %core.attributes;>
+
+<!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
+<!ELEMENT ch.uml EMPTY><!ATTLIST ch.uml %core.attributes;>
+
+<!-- copyright sign, U+00A9 ISOnum -->
+<!ELEMENT ch.copy EMPTY><!ATTLIST ch.copy %core.attributes;>
+
+<!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ELEMENT ch.ordf EMPTY><!ATTLIST ch.ordf %core.attributes;>
+
+<!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
+<!ELEMENT ch.laquo EMPTY><!ATTLIST ch.laquo %core.attributes;>
+
+<!-- not sign, U+00AC ISOnum -->
+<!ELEMENT ch.not EMPTY><!ATTLIST ch.not %core.attributes;>
+
+<!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
+<!ELEMENT ch.shy EMPTY><!ATTLIST ch.shy %core.attributes;>
+
+<!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
+<!ELEMENT ch.reg EMPTY><!ATTLIST ch.reg %core.attributes;>
+
+<!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
+<!ELEMENT ch.macr EMPTY><!ATTLIST ch.macr %core.attributes;>
+
+<!-- degree sign, U+00B0 ISOnum -->
+<!ELEMENT ch.deg EMPTY><!ATTLIST ch.deg %core.attributes;>
+
+<!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
+<!ELEMENT ch.plusmn EMPTY><!ATTLIST ch.plusmn %core.attributes;>
+
+<!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
+<!ELEMENT ch.sup2 EMPTY><!ATTLIST ch.sup2 %core.attributes;>
+
+<!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
+<!ELEMENT ch.sup3 EMPTY><!ATTLIST ch.sup3 %core.attributes;>
+
+<!-- acute accent = spacing acute, U+00B4 ISOdia -->
+<!ELEMENT ch.acute EMPTY><!ATTLIST ch.acute %core.attributes;>
+
+<!-- micro sign, U+00B5 ISOnum -->
+<!ELEMENT ch.micro EMPTY><!ATTLIST ch.micro %core.attributes;>
+
+<!-- pilcrow sign  = paragraph sign, U+00B6 ISOnum -->
+<!ELEMENT ch.para EMPTY><!ATTLIST ch.para %core.attributes;>
+
+<!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
+<!ELEMENT ch.middot EMPTY><!ATTLIST ch.middot %core.attributes;>
+
+<!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ELEMENT ch.cedil EMPTY><!ATTLIST ch.cedil %core.attributes;>
+
+<!-- superscript one = superscript digit one, U+00B9 ISOnum -->
+<!ELEMENT ch.sup1 EMPTY><!ATTLIST ch.sup1 %core.attributes;>
+
+<!-- masculine ordinal indicator, U+00BA ISOnum -->
+<!ELEMENT ch.ordm EMPTY><!ATTLIST ch.ordm %core.attributes;>
+
+<!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
+<!ELEMENT ch.raquo EMPTY><!ATTLIST ch.raquo %core.attributes;>
+
+<!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
+<!ELEMENT ch.frac14 EMPTY><!ATTLIST ch.frac14 %core.attributes;>
+
+<!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
+<!ELEMENT ch.frac12 EMPTY><!ATTLIST ch.frac12 %core.attributes;>
+
+<!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
+<!ELEMENT ch.frac34 EMPTY><!ATTLIST ch.frac34 %core.attributes;>
+
+<!-- inverted question mark = turned question mark, U+00BF ISOnum -->
+<!ELEMENT ch.iquest EMPTY><!ATTLIST ch.iquest %core.attributes;>
+
+<!-- latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1 -->
+<!ELEMENT ch.Agrave EMPTY><!ATTLIST ch.Agrave %core.attributes;>
+
+<!-- latin capital letter A with acute, U+00C1 ISOlat1 -->
+<!ELEMENT ch.Aacute EMPTY><!ATTLIST ch.Aacute %core.attributes;>
+
+<!-- latin capital letter A with circumflex, U+00C2 ISOlat1 -->
+<!ELEMENT ch.Acirc EMPTY><!ATTLIST ch.Acirc %core.attributes;>
+
+<!-- latin capital letter A with tilde, U+00C3 ISOlat1 -->
+<!ELEMENT ch.Atilde EMPTY><!ATTLIST ch.Atilde %core.attributes;>
+
+<!-- latin capital letter A with diaeresis, U+00C4 ISOlat1 -->
+<!ELEMENT ch.Auml EMPTY><!ATTLIST ch.Auml %core.attributes;>
+
+<!-- latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1 -->
+<!ELEMENT ch.Aring EMPTY><!ATTLIST ch.Aring %core.attributes;>
+
+<!-- latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1 -->
+<!ELEMENT ch.AElig EMPTY><!ATTLIST ch.AElig %core.attributes;>
+
+<!-- latin capital letter C with cedilla, U+00C7 ISOlat1 -->
+<!ELEMENT ch.Ccedil EMPTY><!ATTLIST ch.Ccedil %core.attributes;>
+
+<!-- latin capital letter E with grave, U+00C8 ISOlat1 -->
+<!ELEMENT ch.Egrave EMPTY><!ATTLIST ch.Egrave %core.attributes;>
+
+<!-- latin capital letter E with acute, U+00C9 ISOlat1 -->
+<!ELEMENT ch.Eacute EMPTY><!ATTLIST ch.Eacute %core.attributes;>
+
+<!-- latin capital letter E with circumflex, U+00CA ISOlat1 -->
+<!ELEMENT ch.Ecirc EMPTY><!ATTLIST ch.Ecirc %core.attributes;>
+
+<!-- latin capital letter E with diaeresis, U+00CB ISOlat1 -->
+<!ELEMENT ch.Euml EMPTY><!ATTLIST ch.Euml %core.attributes;>
+
+<!-- latin capital letter I with grave, U+00CC ISOlat1 -->
+<!ELEMENT ch.Igrave EMPTY><!ATTLIST ch.Igrave %core.attributes;>
+
+<!-- latin capital letter I with acute, U+00CD ISOlat1 -->
+<!ELEMENT ch.Iacute EMPTY><!ATTLIST ch.Iacute %core.attributes;>
+
+<!-- latin capital letter I with circumflex, U+00CE ISOlat1 -->
+<!ELEMENT ch.Icirc EMPTY><!ATTLIST ch.Icirc %core.attributes;>
+
+<!-- latin capital letter I with diaeresis, U+00CF ISOlat1 -->
+<!ELEMENT ch.Iuml EMPTY><!ATTLIST ch.Iuml %core.attributes;>
+
+<!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ELEMENT ch.ETH EMPTY><!ATTLIST ch.ETH %core.attributes;>
+
+<!-- latin capital letter N with tilde, U+00D1 ISOlat1 -->
+<!ELEMENT ch.Ntilde EMPTY><!ATTLIST ch.Ntilde %core.attributes;>
+
+<!-- latin capital letter O with grave, U+00D2 ISOlat1 -->
+<!ELEMENT ch.Ograve EMPTY><!ATTLIST ch.Ograve %core.attributes;>
+
+<!-- latin capital letter O with acute, U+00D3 ISOlat1 -->
+<!ELEMENT ch.Oacute EMPTY><!ATTLIST ch.Oacute %core.attributes;>
+
+<!-- latin capital letter O with circumflex, U+00D4 ISOlat1 -->
+<!ELEMENT ch.Ocirc EMPTY><!ATTLIST ch.Ocirc %core.attributes;>
+
+<!-- latin capital letter O with tilde, U+00D5 ISOlat1 -->
+<!ELEMENT ch.Otilde EMPTY><!ATTLIST ch.Otilde %core.attributes;>
+
+<!-- latin capital letter O with diaeresis, U+00D6 ISOlat1 -->
+<!ELEMENT ch.Ouml EMPTY><!ATTLIST ch.Ouml %core.attributes;>
+
+<!-- multiplication sign, U+00D7 ISOnum -->
+<!ELEMENT ch.times EMPTY><!ATTLIST ch.times %core.attributes;>
+
+<!-- latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1 -->
+<!ELEMENT ch.Oslash EMPTY><!ATTLIST ch.Oslash %core.attributes;>
+
+<!-- latin capital letter U with grave, U+00D9 ISOlat1 -->
+<!ELEMENT ch.Ugrave EMPTY><!ATTLIST ch.Ugrave %core.attributes;>
+
+<!-- latin capital letter U with acute, U+00DA ISOlat1 -->
+<!ELEMENT ch.Uacute EMPTY><!ATTLIST ch.Uacute %core.attributes;>
+
+<!-- latin capital letter U with circumflex, U+00DB ISOlat1 -->
+<!ELEMENT ch.Ucirc EMPTY><!ATTLIST ch.Ucirc %core.attributes;>
+
+<!-- latin capital letter U with diaeresis, U+00DC ISOlat1 -->
+<!ELEMENT ch.Uuml EMPTY><!ATTLIST ch.Uuml %core.attributes;>
+
+<!-- latin capital letter Y with acute, U+00DD ISOlat1 -->
+<!ELEMENT ch.Yacute EMPTY><!ATTLIST ch.Yacute %core.attributes;>
+
+<!-- latin capital letter THORN, U+00DE ISOlat1 -->
+<!ELEMENT ch.THORN EMPTY><!ATTLIST ch.THORN %core.attributes;>
+
+<!-- latin small letter sharp s = ess-zed, U+00DF ISOlat1 -->
+<!ELEMENT ch.szlig EMPTY><!ATTLIST ch.szlig %core.attributes;>
+
+<!-- latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1 -->
+<!ELEMENT ch.agrave EMPTY><!ATTLIST ch.agrave %core.attributes;>
+
+<!-- latin small letter a with acute, U+00E1 ISOlat1 -->
+<!ELEMENT ch.aacute EMPTY><!ATTLIST ch.aacute %core.attributes;>
+
+<!-- latin small letter a with circumflex, U+00E2 ISOlat1 -->
+<!ELEMENT ch.acirc EMPTY><!ATTLIST ch.acirc %core.attributes;>
+
+<!-- latin small letter a with tilde, U+00E3 ISOlat1 -->
+<!ELEMENT ch.atilde EMPTY><!ATTLIST ch.atilde %core.attributes;>
+
+<!-- latin small letter a with diaeresis, U+00E4 ISOlat1 -->
+<!ELEMENT ch.auml EMPTY><!ATTLIST ch.auml %core.attributes;>
+
+<!-- latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1 -->
+<!ELEMENT ch.aring EMPTY><!ATTLIST ch.aring %core.attributes;>
+
+<!-- latin small letter ae = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ELEMENT ch.aelig EMPTY><!ATTLIST ch.aelig %core.attributes;>
+
+<!-- latin small letter c with cedilla, U+00E7 ISOlat1 -->
+<!ELEMENT ch.ccedil EMPTY><!ATTLIST ch.ccedil %core.attributes;>
+
+<!-- latin small letter e with grave, U+00E8 ISOlat1 -->
+<!ELEMENT ch.egrave EMPTY><!ATTLIST ch.egrave %core.attributes;>
+
+<!-- latin small letter e with acute, U+00E9 ISOlat1 -->
+<!ELEMENT ch.eacute EMPTY><!ATTLIST ch.eacute %core.attributes;>
+
+<!-- latin small letter e with circumflex, U+00EA ISOlat1 -->
+<!ELEMENT ch.ecirc EMPTY><!ATTLIST ch.ecirc %core.attributes;>
+
+<!-- latin small letter e with diaeresis, U+00EB ISOlat1 -->
+<!ELEMENT ch.euml EMPTY><!ATTLIST ch.euml %core.attributes;>
+
+<!-- latin small letter i with grave, U+00EC ISOlat1 -->
+<!ELEMENT ch.igrave EMPTY><!ATTLIST ch.igrave %core.attributes;>
+
+<!-- latin small letter i with acute, U+00ED ISOlat1 -->
+<!ELEMENT ch.iacute EMPTY><!ATTLIST ch.iacute %core.attributes;>
+
+<!-- latin small letter i with circumflex, U+00EE ISOlat1 -->
+<!ELEMENT ch.icirc EMPTY><!ATTLIST ch.icirc %core.attributes;>
+
+<!-- latin small letter i with diaeresis, U+00EF ISOlat1 -->
+<!ELEMENT ch.iuml EMPTY><!ATTLIST ch.iuml %core.attributes;>
+
+<!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ELEMENT ch.eth EMPTY><!ATTLIST ch.eth %core.attributes;>
+
+<!-- latin small letter n with tilde, U+00F1 ISOlat1 -->
+<!ELEMENT ch.ntilde EMPTY><!ATTLIST ch.ntilde %core.attributes;>
+
+<!-- latin small letter o with grave, U+00F2 ISOlat1 -->
+<!ELEMENT ch.ograve EMPTY><!ATTLIST ch.ograve %core.attributes;>
+
+<!-- latin small letter o with acute, U+00F3 ISOlat1 -->
+<!ELEMENT ch.oacute EMPTY><!ATTLIST ch.oacute %core.attributes;>
+
+<!-- latin small letter o with circumflex, U+00F4 ISOlat1 -->
+<!ELEMENT ch.ocirc EMPTY><!ATTLIST ch.ocirc %core.attributes;>
+
+<!-- latin small letter o with tilde, U+00F5 ISOlat1 -->
+<!ELEMENT ch.otilde EMPTY><!ATTLIST ch.otilde %core.attributes;>
+
+<!-- latin small letter o with diaeresis, U+00F6 ISOlat1 -->
+<!ELEMENT ch.ouml EMPTY><!ATTLIST ch.ouml %core.attributes;>
+
+<!-- division sign, U+00F7 ISOnum -->
+<!ELEMENT ch.divide EMPTY><!ATTLIST ch.divide %core.attributes;>
+
+<!-- latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1 -->
+<!ELEMENT ch.oslash EMPTY><!ATTLIST ch.oslash %core.attributes;>
+
+<!-- latin small letter u with grave, U+00F9 ISOlat1 -->
+<!ELEMENT ch.ugrave EMPTY><!ATTLIST ch.ugrave %core.attributes;>
+
+<!-- latin small letter u with acute, U+00FA ISOlat1 -->
+<!ELEMENT ch.uacute EMPTY><!ATTLIST ch.uacute %core.attributes;>
+
+<!-- latin small letter u with circumflex, U+00FB ISOlat1 -->
+<!ELEMENT ch.ucirc EMPTY><!ATTLIST ch.ucirc %core.attributes;>
+
+<!-- latin small letter u with diaeresis, U+00FC ISOlat1 -->
+<!ELEMENT ch.uuml EMPTY><!ATTLIST ch.uuml %core.attributes;>
+
+<!-- latin small letter y with acute, U+00FD ISOlat1 -->
+<!ELEMENT ch.yacute EMPTY><!ATTLIST ch.yacute %core.attributes;>
+
+<!-- latin small letter thorn, U+00FE ISOlat1 -->
+<!ELEMENT ch.thorn EMPTY><!ATTLIST ch.thorn %core.attributes;>
+
+<!-- latin small letter y with diaeresis, U+00FF ISOlat1 -->
+<!ELEMENT ch.yuml EMPTY><!ATTLIST ch.yuml %core.attributes;>
+
+
+<!-- ::::::::::::::::::::: Special Characters :::::::::::::::::::: -->
+
+<!-- ampersand -->
+<!ELEMENT ch.ampersand EMPTY><!ATTLIST ch.ampersand %core.attributes;>
+
+<!-- opening left quotation mark -->
+<!ELEMENT ch.lsquot EMPTY><!ATTLIST ch.lsquot %core.attributes;>
+
+<!-- closing right quotation mark -->
+<!ELEMENT ch.rsquot EMPTY><!ATTLIST ch.rsquot %core.attributes;>
+
+<!-- opening left double quotation mark -->
+<!ELEMENT ch.ldquot EMPTY><!ATTLIST ch.ldquot %core.attributes;>
+
+<!-- closing right double quotation mark -->
+<!ELEMENT ch.rdquot EMPTY><!ATTLIST ch.rdquot %core.attributes;>
+
+<!-- mathematical minus -->
+<!ELEMENT ch.minus EMPTY><!ATTLIST ch.minus %core.attributes;>
+
+<!-- endash -->
+<!ELEMENT ch.endash EMPTY><!ATTLIST ch.endash %core.attributes;>
+
+<!-- emdash -->
+<!ELEMENT ch.emdash EMPTY><!ATTLIST ch.emdash %core.attributes;>
+
+<!-- ellipsis -->
+<!ELEMENT ch.ellips EMPTY><!ATTLIST ch.ellips %core.attributes;>
+
+<!-- left ellipsis, used at the beginning of edited material -->
+<!ELEMENT ch.lellips EMPTY><!ATTLIST ch.lellips %core.attributes;>
+
+<!-- blank line to be filled in -->
+<!ELEMENT ch.blankline EMPTY><!ATTLIST ch.blankline %core.attributes;>
+
+<!-- percent sign -->
+<!ELEMENT ch.percent EMPTY><!ATTLIST ch.percent %core.attributes;>
+
+<!-- small horizontal space for use between adjacent quotation marks - added mainly for LaTeX's sake -->
+<!ELEMENT ch.thinspace EMPTY><!ATTLIST ch.thinspace %core.attributes;>
+
+<!-- vulgar fraction one sixteenth = fraction on sixteenth -->
+<!ELEMENT ch.frac116 EMPTY><!ATTLIST ch.frac116 %core.attributes;>
+
+<!-- mathematical plus -->
+<!ELEMENT ch.plus EMPTY><!ATTLIST ch.plus %core.attributes;>
+
 <!-- ============================================================= -->
 <!--                          Appendices                           -->
 <!-- ============================================================= -->
@@ -1168,20 +1678,20 @@ DTD. For current practice, please refer to published XML files.
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE gamebook SYSTEM "gamebook.dtd">
 
-<gamebook version="0.11" xml:lang="en-UK">
+<gamebook version="0.12" xml:lang="en-UK">
 
 <meta>
  <title>Flight from the Dark</title>
  <creator>Joe Dever and Gary Chalk</creator>
  <publisher>Project Aon</publisher>
  <date><year>2001</year><month>10</month><day>24</day></date>
- <rights>Copyright &copy; 1984 Joe Dever and Gary Chalk.</rights>
+ <rights>Copyright <ch.copy/> 1984 Joe Dever and Gary Chalk.</rights>
 </meta>
 
 <section id="section1">
  <meta><title>1</title></meta>
  <data>
-  <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 &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>
+  <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>
   <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>
   <p>At the foot of the hill, the path splits into two directions, both leading into a large wood.</p>
 
@@ -1190,7 +1700,7 @@ DTD. For current practice, please refer to published XML files.
   <choice idref="section141">If you wish to use your Kai Discipline of Sixth Sense, <link-text>turn to 141</link-text>.</choice>
  </data>
  <footnotes>
-  <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&apos;s later expansion of the vocabulary of Magnamund.</p></footnote>
+  <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>
  </footnotes>
 </section>
 
@@ -1215,8 +1725,8 @@ DTD. For current practice, please refer to published XML files.
   <p>Pick a number from the Random Number Table.</p>
 
   <choice idref="section53">If you pick 0, <link-text>turn to 53</link-text>.</choice>
-  <choice idref="section274">If you pick 1&endash;2, <link-text>turn to 274</link-text>.</choice>
-  <choice idref="section316">If you pick 3&endash;9, <link-text>turn to 316</link-text>.</choice>
+  <choice idref="section274">If you pick 1<ch.endash/>2, <link-text>turn to 274</link-text>.</choice>
+  <choice idref="section316">If you pick 3<ch.endash/>9, <link-text>turn to 316</link-text>.</choice>
  </data>
 </section>