Add new character elements to DTD
[project-aon.git] / en / xml / gamebook.dtd
index f360d1a..54af437 100644 (file)
@@ -6,11 +6,18 @@
 This DTD was designed around XML 1.0.
 
 This gamebook DTD is aimed primarily at the books under development by 
-Project Aon (http://www.projectaon.org/). Future versions may be of 
+Project Aon (https://www.projectaon.org/). Future versions may be of 
 more general utility.
 
 Change Log:
 
+14 December 2019 (version 0.14)
+ * added more fractional character elements
+ * added "lte" and "gte" character elements
+
+13 November 2012 (version 0.13.3)
+ * added the "puzzle" and "deadend" elements
+
 24 May 2011 (version 0.13.2)
  * added the "relationship" attribute to the "creator" and "contributor"
    elements
@@ -185,11 +192,11 @@ III. Block Elements
 
 <!-- ::::::::::::::::::::: General Entities :::::::::::::::::::::: -->
 
-<!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 % 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">
 
 <!ENTITY % inline.content "#PCDATA | a | bookref | footref | em | strong | thought | foreign | quote | cite | code | line | br | typ | onomatopoeia | spell | item | %character.content;">
 
-<!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | hr | illref | poetry">
+<!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | puzzle | deadend | hr | illref | poetry">
 
 <!ENTITY % mixed.content "choose | signpost">
 
@@ -250,7 +257,7 @@ suitability of the data.
 The "xml:lang" attribute specifies the primary language of the 
 document. The data should conform to the IETF RFC1766.
 
- http://www.ietf.org/rfc/rfc1766.txt
+ https://www.ietf.org/rfc/rfc1766.txt
 
 Examples:
 
@@ -271,13 +278,13 @@ The children of the meta element are designed to directly translate to
 the Dublin Core Element Set v1.1. For a description of each Dublin
 Core element, visit the following URL:
 
- (http://dublincore.org/documents/1999/07/02/dces/)
+ (https://dublincore.org/documents/1999/07/02/dces/)
 
 Although many Dublin Core elements will probably never have any real 
 relevance to gamebooks, all are included for completeness's sake.
 
 [editor: add dc: namespace to isolate dublin core elements
-  http://dublincore.org/documents/2001/10/26/dcmi-namespace/ ]
+  https://dublincore.org/documents/2001/10/26/dcmi-namespace/ ]
 
 Note: The "link" element doesn't correspond directly to any Dublin
 Core element. It has been added here for required functionality.
@@ -316,7 +323,7 @@ Example:
 The "relationship" optional attribute defines the relationship of the creator
 denoted by this element to the document. While the list of possible values is
 not constrained by the DTD, the normative list is defined by the MARC Code List
-for Relators <http://www.loc.gov/marc/relators/>.
+for Relators <https://www.loc.gov/marc/relators/>.
 
 The "sort-name" optional attribute contains the a name to be used for sorting.
 
@@ -352,7 +359,7 @@ Example:
 The "relationship" optional attribute defines the relationship of the creator
 denoted by this element to the document. While the list of possible values is
 not constrained by the DTD, the normative list is defined by the MARC Code List
-for Relators <http://www.loc.gov/marc/relators/>.
+for Relators <https://www.loc.gov/marc/relators/>.
 
 The "sort-name" optional attribute contains the a name to be used for sorting.
 
@@ -490,7 +497,7 @@ order to create more complex data representations.
 
 A "section" element can used as a linking element. The most useful way 
 to utilize this is to make it a named anchor and thus the target of a 
-"choice" element.
+"choice" or "puzzle" element.
 
 Examples:
 
@@ -1138,6 +1145,55 @@ Example:
 
 -->
 
+<!ELEMENT puzzle ( %inline.content; | %mixed.content; )*>
+<!ATTLIST puzzle
+          %core.attributes;
+          %link.attributes;
+          idrefs IDREFS #IMPLIED
+>
+<!--
+
+The "puzzle" element contains the text describing the action of
+proceeding to the section that is the answer for a puzzle or riddle
+presented elsewhere within the section. It's a linking element and
+therefore can link to the place to which the correct answer to the
+puzzle leads. In the case that the puzzle has multiple solutions, use a
+space separated list of IDs in the "idrefs" attribute. This link
+information should not generally be presented to the reader.
+
+Examples:
+
+ <section id="section12" . . .> . . . </section>
+ . . .
+ <puzzle idref="section12">If you know the answer to her riddle, turn to
+ the entry of that number.</puzzle>
+
+
+ <section id="section23" . . .> . . . </section>
+ . . .
+ <section id="section350" . . .> . . . </section>
+ . . .
+ <puzzle idrefs="section23 section350">If you know only one of the two
+ correct numbers that you need to open the lock, turn to the entry of
+ that number.</puzzle>
+
+-->
+
+<!ELEMENT deadend ( %inline.content; | %mixed.content; )*>
+<!ATTLIST deadend
+          %core.attributes;
+>
+<!--
+
+The "deadend" element contains the text describing the fact that an
+adventure has come to an end (e.g. the character has died).
+
+Example:
+
+ <deadend>Tragically, your life ends here.</deadend>
+
+-->
+
 <!ELEMENT illustration ( meta?, instance+ )>
 <!ATTLIST illustration
           %core.attributes;
@@ -1501,7 +1557,7 @@ input to a computer (e.g. email addresses and URIs).
 
 Example:
 
- <code>http://www.projectaon.org/</code>
+ <code>https://www.projectaon.org/</code>
 
 -->
 
@@ -1718,6 +1774,51 @@ is included in all copies.
 <!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
 <!ELEMENT ch.frac34 EMPTY><!ATTLIST ch.frac34 %core.attributes;>
 
+<!-- vulgar fraction 1/3, U+2153 ISOnum -->
+<!ELEMENT ch.frac13 EMPTY><!ATTLIST ch.frac13 %core.attributes;>
+
+<!-- vulgar fraction 2/3, U+2154 ISOnum -->
+<!ELEMENT ch.frac23 EMPTY><!ATTLIST ch.frac23 %core.attributes;>
+
+<!-- vulgar fraction 1/5, U+2155 ISOnum -->
+<!ELEMENT ch.frac15 EMPTY><!ATTLIST ch.frac15 %core.attributes;>
+
+<!-- vulgar fraction 2/5, U+2156 ISOnum -->
+<!ELEMENT ch.frac25 EMPTY><!ATTLIST ch.frac25 %core.attributes;>
+
+<!-- vulgar fraction 3/5, U+2157 ISOnum -->
+<!ELEMENT ch.frac35 EMPTY><!ATTLIST ch.frac35 %core.attributes;>
+
+<!-- vulgar fraction 4/5, U+2158 ISOnum -->
+<!ELEMENT ch.frac45 EMPTY><!ATTLIST ch.frac45 %core.attributes;>
+
+<!-- vulgar fraction 1/6, U+2159 ISOnum -->
+<!ELEMENT ch.frac16 EMPTY><!ATTLIST ch.frac16 %core.attributes;>
+
+<!-- vulgar fraction 5/6, U+215A ISOnum -->
+<!ELEMENT ch.frac56 EMPTY><!ATTLIST ch.frac56 %core.attributes;>
+
+<!-- vulgar fraction 1/7, U+2150 ISOnum -->
+<!ELEMENT ch.frac17 EMPTY><!ATTLIST ch.frac17 %core.attributes;>
+
+<!-- vulgar fraction 1/8, U+215B ISOnum -->
+<!ELEMENT ch.frac18 EMPTY><!ATTLIST ch.frac18 %core.attributes;>
+
+<!-- vulgar fraction 3/8, U+215C ISOnum -->
+<!ELEMENT ch.frac38 EMPTY><!ATTLIST ch.frac38 %core.attributes;>
+
+<!-- vulgar fraction 5/8, U+215D ISOnum -->
+<!ELEMENT ch.frac58 EMPTY><!ATTLIST ch.frac58 %core.attributes;>
+
+<!-- vulgar fraction 7/8, U+215E ISOnum -->
+<!ELEMENT ch.frac78 EMPTY><!ATTLIST ch.frac78 %core.attributes;>
+
+<!-- vulgar fraction 1/9, U+2151 ISOnum -->
+<!ELEMENT ch.frac19 EMPTY><!ATTLIST ch.frac19 %core.attributes;>
+
+<!-- vulgar fraction 1/10, U+2152 ISO num -->
+<!ELEMENT ch.frac110 EMPTY><!ATTLIST ch.frac110 %core.attributes;>
+
 <!-- inverted question mark = turned question mark, U+00BF ISOnum -->
 <!ELEMENT ch.iquest EMPTY><!ATTLIST ch.iquest %core.attributes;>
 
@@ -1961,6 +2062,12 @@ is included in all copies.
 <!-- mathematical plus -->
 <!ELEMENT ch.plus EMPTY><!ATTLIST ch.plus %core.attributes;>
 
+<!-- less-than or equal to -->
+<!ELEMENT ch.lte EMPTY><!ATTLIST ch.lte %core.attributes;>
+
+<!-- greater-than or equal to -->
+<!ELEMENT ch.gte EMPTY><!ATTLIST ch.gte %core.attributes;>
+
 <!-- ============================================================= -->
 <!--                          Appendices                           -->
 <!-- ============================================================= -->