Initial freepository revision of XML support documents.
[project-aon.git] / xml / gamebook.dtd
1 <!-- ============================================================= -->
2 <!--             Gamebook Document Type Definition v0.10           -->
3 <!-- ============================================================= -->
4 <!--
5
6 This DTD was designed around XML 1.0.
7
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 
10 more general utility.
11
12 $Id$
13
14 Change Log:
15
16 18 April 2003 (version 0.11.1)
17  * Added the following inline elements: "onomatopoeia", "spell",
18    "item".
19
20 27 January 2003 (version 0.11.0)
21  * Moved the optional "footnotes" element between the "meta" and 
22    "data" elements.
23
24 10 January 2003 (version 0.10.4)
25  * Removed the "inline.content" entity from the declaration of the
26    contents of the "blockquote" element. This will break some existing
27    documents.
28
29 7 January 2003 (version 0.10.3)
30  * Made the "src", "width", and "height" attributes of the "instance"
31    element IMPLIED.
32
33 4 January 2003 (version 0.10.2)
34  * Moved the specialized character entity definitions into module
35    files.
36
37 5 October 2002 (version 0.10.1)
38  * Added the "lellips" and "minus" entities and changed the definition
39    of the "emdash" entity.
40
41 5 September 2002 (version 0.10.0)
42  * Added the "quote" element.
43
44 31 August 2002 (version 0.9.1)
45  * Added the "xml:lang" attribute to the "core.attributes" entity.
46    Although this could be used for most elements, it is primarily
47    aimed at the "foreign" element.
48
49 6 July 2002 (version 0.9)
50  * Replaced the "caption" element and the "illustrator" attribute with
51    the use of the "meta" element.
52  * Renamed the "illustration-instance" element to simply "instance".
53  * Removed the "character-attribute" element.
54  * Added the "typ" element for typographical markup.
55  * Removed the "shortname" attribute.
56
57 1 June 2002 (version 0.8.3)
58  * Removed the "marker" attribute from the "footnote" element.
59
60 29 April 2002 (vesion 0.8.2)
61  * Changed the content of the "enemy" element from "#PCDATA" to 
62    "%inline.content;".
63
64 4 April 2002 (version 0.8.1)
65  * Added the "thinspace" entity
66
67 3 April 2002 (version 0.8.0)
68  * Added the "thought" element.
69  * Added the "foreign" element.
70
71 15 March 2002 (version 0.7.0)
72  * Changed the name of the "illustration-set" element to "illustration"
73    and changed the name of the "illustration" element to
74    "illustration-instance".
75  * Made many minor changes to bring the DTD up to current practice.
76
77 11 May 2001 (version 0.6.0)
78  * Removed the "publication-date" element.
79
80 5 May 2001 (version 0.5.0)
81  * Added facilities for transformation to LaTeX - mainly appropriate 
82    character escapes.
83  * Added the "marker" attribute to the "footnote" element.
84
85 1 May 2001 (version 0.4.0)
86
87  * Added the "link" element to the set of allowable "meta" elements.
88    Although not a Dublin Core meta-data element, it's functionality
89    adds a lot to the document.
90
91 30 April 2001 (version 0.3.0)
92
93  * Changed the basic orgranization of the sections by allowing them to
94    have their own meta section instead of a "section-title" element.
95  * Changed the name of the "section-data" element to simply "data".
96
97 17 April 2001 (version 0.2.0)
98
99  * Changed some of the block and inline elements in order to make them 
100    more useful.
101
102 14 April 2001 (version 0.1.0)
103
104  * First revision
105                                                                    -->
106 <!-- ============================================================= -->
107
108 <!-- ============================================================= -->
109 <!--                      Table of Contents                        -->
110 <!-- ============================================================= -->
111
112 <!--
113
114   I. Entities
115      A. General Entities
116      B. Character Entities
117  II. Hierarchical Elements
118 III. Block Elements
119  IV. Inline Elements
120
121   V. Appendices
122      A. Valid Document Example
123
124 -->
125
126 <!-- ============================================================= -->
127 <!--                           Entities                            -->
128 <!-- ============================================================= -->
129
130 <!-- ::::::::::::::::::::: General Entities :::::::::::::::::::::: -->
131
132 <!ENTITY % block.content "p | ul | ol | dl | table | blockquote | illustration | combat | choice | signpost | hr">
133
134 <!ENTITY % inline.content "#PCDATA | a | em | strong | thought | foreign | quote | cite | code | br | typ | onomatopoeia | spell | item">
135
136 <!ENTITY % core.attributes "
137          class CDATA #IMPLIED
138          xml:lang CDATA #IMPLIED
139 ">
140
141 <!ENTITY % link.attributes "
142          idref IDREF #IMPLIED
143          id    ID    #IMPLIED
144 ">
145
146 <!ENTITY % cell.align.attributes "
147          align  ( left | center | right | justify | char ) #IMPLIED
148          char   CDATA                                      #IMPLIED
149          valign ( top | middle | bottom | baseline )       #IMPLIED
150 ">
151
152 <!-- :::::::::::::::::::: Character Entities ::::::::::::::::::::: -->
153
154 <!ENTITY lt     "&#38;#60;"><!-- left angle bracket -->
155 <!ENTITY gt     "&#62;">    <!-- right angle bracket -->
156 <!ENTITY amp    "&#38;#38;"><!-- ampersand -->
157 <!ENTITY apos   "&#39;">    <!-- apostrophe = single quotation mark -->
158 <!ENTITY quot   "&#34;">    <!-- double quotation mark -->
159
160
161 <!--
162
163 It is the responsibility of the document to define relevant character 
164 entities in its internal subset.
165
166 -->
167
168 <!-- ============================================================= -->
169 <!--                     Hierarchical Elements                     -->
170 <!-- ============================================================= -->
171
172
173 <!ELEMENT gamebook ( meta, section+ )>
174 <!ATTLIST gamebook
175           version  CDATA #REQUIRED
176           xml:lang CDATA #IMPLIED
177 >
178 <!--
179
180 The "version" attribute represents the revision number of the gamebook 
181 DTD. This allows gamebook processors to make decisions about the 
182 suitability of the data.
183
184 The "xml:lang" attribute specifies the primary language of the 
185 document. The data should conform to the IETF RFC1766.
186
187  http://www.ietf.org/rfc/rfc1766.txt
188
189 Examples:
190
191  <gamebook version="0.11" xml:lang="en-UK">
192   <meta . . .> . . . </meta>
193   <section . . .> . . . </section>
194   . . .
195  </gamebook>
196
197  <gamebook version="0.11" > . . . </gamebook>
198
199 -->
200
201 <!-- :::::::::::::::::::::::: meta Element ::::::::::::::::::::::: -->
202 <!--
203
204 The children of the meta element are designed to directly translate to
205 the Dublin Core Element Set v1.1. For a description of each Dublin
206 Core element, visit the following URL:
207
208  (http://dublincore.org/documents/1999/07/02/dces/)
209
210 Although many Dublin Core elements will probably never have any real 
211 relevance to gamebooks, all are included for completeness's sake.
212
213 [editor: add dc: namespace to isolate dublin core elements
214   http://dublincore.org/documents/2001/10/26/dcmi-namespace/ ]
215
216 Note: The "link" element doesn't correspond directly to any Dublin
217 Core element. It has been added here for required functionality.
218 -->
219
220 <!ELEMENT meta ( title | creator | subject | description | publisher | contributor | date | type | format | identifier | source | language | relation | coverage | rights | link)*>
221 <!--
222
223 The "meta" element represents underlying information about the 
224 document. It should contain any number of the Dublin Core 1.1 
225 elements.
226
227 Example:
228
229  <meta>
230   <title . . .> . . . </title>
231   <creator . . .> . . . </creator>
232   . . .
233  </meta>
234
235 -->
236
237 <!ELEMENT title ( %inline.content; )*>
238 <!ATTLIST title
239           %core.attributes;
240 >
241
242 <!ELEMENT creator ( %inline.content; | %block.content; )*>
243 <!ATTLIST creator
244           %core.attributes;
245 >
246
247 <!ELEMENT subject ( %inline.content; | %block.content; )*>
248 <!ATTLIST subject
249           %core.attributes;
250 >
251
252 <!ELEMENT description ( %inline.content; | %block.content; )*>
253 <!ATTLIST description
254           %core.attributes;
255 >
256
257 <!ELEMENT publisher ( %inline.content; | %block.content; )*>
258 <!ATTLIST publisher
259           %core.attributes;
260 >
261
262 <!ELEMENT contributor ( %inline.content; | %block.content; )*>
263 <!ATTLIST contributor
264           %core.attributes;
265 >
266
267 <!ELEMENT date ( year, month, day )>
268 <!ATTLIST date
269           %core.attributes;
270 >
271 <!--
272
273 The "date" element has been extended beyond the specification made in 
274 the Dublin Core. It should contain "year", "month" and "day" elements.
275
276 Example:
277
278  <date>
279   <year . . .> . . . </year>
280   <month . . .> . . . </month>
281   <day . . .> . . . </day>
282  </date>
283
284 -->
285
286 <!ELEMENT year ( #PCDATA )>
287 <!--
288
289 The year should be specified in full digit numeric format.
290
291 Example:
292
293  <year>2001</year>
294
295 -->
296
297 <!ELEMENT month ( #PCDATA )>
298 <!--
299
300 The month should be specified in numeric format with January as "1", 
301 February as "2", etc.
302
303 Example:
304
305  <month>4</month>
306
307 -->
308
309 <!ELEMENT day ( #PCDATA )>
310 <!--
311
312 The "day" element specifies the day of the month in numeric format.
313
314 Example:
315
316  <day>14</day>
317
318 -->
319
320 <!ELEMENT type ( %inline.content; )*>
321 <!ATTLIST type
322           %core.attributes;
323 >
324
325 <!ELEMENT format ( %inline.content; )*>
326 <!ATTLIST format
327           %core.attributes;
328 >
329
330 <!ELEMENT identifier ( %inline.content; )*>
331 <!ATTLIST identifier
332           %core.attributes;
333 >
334
335 <!ELEMENT source ( %inline.content; )*>
336 <!ATTLIST source
337           %core.attributes;
338 >
339
340 <!ELEMENT language ( %inline.content; )*>
341 <!ATTLIST language
342           %core.attributes;
343 >
344
345 <!ELEMENT relation ( %inline.content; )*>
346 <!ATTLIST relation
347           %core.attributes;
348 >
349
350 <!ELEMENT coverage ( %inline.content; | %block.content; )*>
351 <!ATTLIST coverage
352           %core.attributes;
353 >
354
355 <!ELEMENT rights ( %inline.content; | %block.content; )*>
356 <!ATTLIST rights
357           %core.attributes;
358 >
359
360 <!ELEMENT link EMPTY>
361 <!ATTLIST link
362           %core.attributes;
363           %link.attributes;
364           idrefs IDREFS #IMPLIED>
365 <!--
366
367 The "link" element has been added to the Dublin Core elements to 
368 represent relationships to other parts of the document. The "idrefs" 
369 attribute has been added to allow relationships that are held with 
370 more than one part of the document.
371
372 Examples:
373
374  <link class="next" idref="dedicate" />
375
376  <link class="friends" idrefs="dedicate cmbtrulz" />
377
378 -->
379
380 <!-- ::::::::::::::::::::: section Element ::::::::::::::::::::::: -->
381
382 <!ELEMENT section ( meta, footnotes?, data )>
383 <!ATTLIST section
384           %core.attributes;
385           %link.attributes;
386 >
387 <!--
388
389 The "section" element represents one hierarchical level of data. 
390 Section elements can be nested (inside the "data" element) in 
391 order to create more complex data representations.
392
393 A "section" element can used as a linking element. The most useful way 
394 to utilize this is to make it a named anchor and thus the target of a 
395 "choice" element.
396
397 Examples:
398
399  <section>
400   <meta><title . . .> . . . </title></meta>
401   <data . . .> . . . </data>
402   <footnotes . . .> . . . </footnotes>
403  </section>
404
405  <section id="title">
406   <meta><title . . .> . . . </title></meta>
407   <data . . .>
408    . . .
409    <section id="dedication">
410     <meta><title . . .> . . . </title></meta>
411     <data . . .> . . . </data>
412    </section>
413    . . .
414   </data>
415  </section>
416
417 -->
418
419 <!ELEMENT data ( %block.content; | section )*>
420 <!ATTLIST data
421           %core.attributes;
422 >
423 <!--
424
425 The "data" element contains the main data contained within 
426 a section. Note that a nested section structure can be created by 
427 including a "section" element within the content of the "data" 
428 element.
429
430 Examples:
431
432  <data>
433   <p . . .> . . . </p>
434   <combat . . .> . . . </combat>
435   . . .
436  </data>
437
438  <data>
439   <section . . .> . . . </section>
440  </data>
441
442 -->
443
444 <!ELEMENT footnotes ( footnote )*>
445 <!ATTLIST footnotes
446           %core.attributes;
447 >
448 <!--
449
450 The "footnotes" element represents the collection of extra-textual 
451 information contained within "footnote" elements.
452
453 Example:
454
455  <footnotes>
456   <footnote . . .> . . . </footnote>
457   <footnote . . .> . . . </footnote>
458   . . .
459  </footnotes> 
460
461 -->
462
463 <!ELEMENT footnote ( %block.content; )*>
464 <!ATTLIST footnote
465           %core.attributes;
466           %link.attributes;
467 >
468 <!--
469
470 The "footnote" element contains extra-textual information. It can be 
471 used as a linking element and can thus be used to refer back to a 
472 named anchor within the document.
473
474 Example:
475
476  <data . . .>
477   <p . . .>This paragraph requires an appropriate 
478    <a id="reference" idref="footnote-reference" . . .>footnote</a>.
479   </p>
480   . . .
481  </data>
482  <footnotes . . .>
483   <footnote id="footnote-reference" idref="reference">
484    <p . . .>This is the appropriate footnote.</p>
485   </footnote>
486   . . .
487  </footnotes>
488
489 -->
490
491 <!-- ============================================================= -->
492 <!--                        Block Elements                         -->
493 <!-- ============================================================= -->
494
495 <!-- :::::::::::::::::::::::::: Lists :::::::::::::::::::::::::::: -->
496
497 <!ELEMENT ul ( li )*>
498 <!ATTLIST ul
499           %core.attributes;
500 >
501 <!--
502
503 The "ul" represents an unordered list.
504
505 Example:
506
507  <ul>
508   <li . . .> . . . </li>
509   <li . . .> . . . </li>
510   . . .
511  </ul>
512
513 -->
514
515 <!ELEMENT ol ( li )*>
516 <!ATTLIST ol
517           %core.attributes;
518 >
519 <!--
520
521 The "ol" element represents an ordered list.
522
523 Example:
524
525  <ol>
526   <li . . .> . . . First Item . . . </li>
527   <li . . .> . . . Second Item . . . </li>
528   . . .
529  </ol>
530
531 -->
532
533 <!ELEMENT li ( %inline.content; | %block.content; )*>
534 <!ATTLIST li
535           %core.attributes;
536 >
537 <!--
538
539 The "li" element is a generic list item used within both ordered and 
540 unordered lists (i.e. "ol" and "ul" elements).
541
542 Examples:
543
544  <ul . . .>
545   . . .
546   <li>list item</li>
547   <li>another list item</li>
548   . . .
549  </ul>
550
551  <ol . . .>
552   <li>first list item</li>
553   <li>second list item</li>
554   . . .
555  </ol>
556
557 -->
558
559 <!ELEMENT dl ( dt, dd? )*>
560 <!ATTLIST dl
561           %core.attributes;
562 >
563 <!--
564
565 The "dl" element represents a list of terms and their definitions.
566
567 Example:
568
569  <dl>
570   <dt . . .> . . . First Term . . . </dt>
571    <dd . . .> . . . First Term's Definition . . . </dd>
572    . . .
573   <dt . . .> . . . Second Term . . . </dt>
574    <dd . . .> . . . Second Term's Definition . . . </dd>
575   <dt . . .> . . . Third Term with No Definition . . . </dt>
576  </dl>
577
578 -->
579
580 <!ELEMENT dt ( %inline.content; )*>
581 <!ATTLIST dt
582           %core.attributes;
583 >
584 <!--
585
586 The "dt" element represents a definition term within a definition 
587 list. It should be immediately followed by its definitions contained 
588 within "dd" elements.
589
590 Example:
591
592  <dl . . .>
593   . . .
594   <dt>Definition Term</dt>
595    <dd . . .> . . . Definition . . . </dd>
596   . . .
597  </dl>
598
599 -->
600
601 <!ELEMENT dd ( %inline.content; | %block.content; )*>
602 <!ATTLIST dd
603           %core.attributes;
604 >
605 <!--
606
607 The "dd" element contains a definition.
608
609 Example:
610
611  <dt . . .> . . . Term to be defined . . . </dt>
612   <dd>Definition of the term.</dd>
613
614 -->
615
616 <!-- :::::::::::::::::::::::::: Tables ::::::::::::::::::::::::::: -->
617
618 <!ELEMENT table ( tr )*>
619 <!ATTLIST table
620           %core.attributes;
621 >
622 <!--
623
624 The "table" element represents tabular data. It's data is organized 
625 within rows.
626
627 Example:
628
629  <table>
630   <tr . . .> . . . </tr>
631   <tr . . .> . . . </tr>
632   . . .
633  </table>
634
635 -->
636
637 <!ELEMENT tr ( th | td )*>
638 <!ATTLIST tr
639           %core.attributes;
640 >
641 <!--
642
643 The "tr" element contains a collection of "th" and "td" elements that 
644 represent one row of a "table".
645
646 Example:
647
648  <table . . .>
649   . . .
650   <tr>
651    <th . . .> . . . </th>
652    <td . . .> . . . </td>
653    . . .
654   </tr>
655   . . .
656  </table>
657
658 -->
659
660 <!ELEMENT th ( %inline.content; )*>
661 <!ATTLIST th
662           %core.attributes;
663           %cell.align.attributes;
664 >
665 <!--
666
667 The "th" contains a table header used to label a particular row or 
668 column of tabular data.
669
670 Example:
671
672  <tr . . .>
673   . . .
674   <th>Row Label</th>
675   <td . . .> . . . </td>
676   <td . . .> . . . </td>
677   . . .
678  </tr>
679
680 -->
681
682 <!ELEMENT td ( %inline.content; )*>
683 <!ATTLIST td
684           %core.attributes;
685           %cell.align.attributes;
686 >
687 <!--
688
689 The "td" element contains one cell of tabular data.
690
691 Example:
692
693  <tr . . .>
694   . . .
695   <td>Cell data</td>
696   . . .
697  </tr>
698
699 -->
700
701 <!-- :::::::::::::::::::::: Miscellaneous :::::::::::::::::::::::: -->
702
703 <!ELEMENT p ( %inline.content; )*>
704 <!ATTLIST p
705           %core.attributes;
706 >
707 <!--
708
709 The "p" element contains a paragraph.
710
711 Example:
712
713  <p>This is a (short) paragraph.</p>
714
715 -->
716
717 <!ELEMENT blockquote ( %block.content; )*>
718 <!ATTLIST blockquote
719           %core.attributes;
720 >
721 <!--
722
723 The "blockquote" element contains a lengthy quotation which isn't 
724 contained within a paragraph.
725
726 Example:
727
728  <blockquote>
729   <p>There was once a Kai monk from Sommerlund . . .</p>
730  </blockquote>
731
732 -->
733
734 <!ELEMENT combat ( enemy, enemy-attribute+ )>
735 <!ATTLIST combat
736           %core.attributes;
737 >
738 <!--
739
740 The "combat" element contains one combat represented by the enemy's 
741 name and attributes.
742
743 Example:
744
745  <combat>
746   <enemy . . .> . . . </enemy>
747   <enemy-attribute . . .> . . . </enemy-attribute>
748   <enemy-attribute . . .> . . . </enemy-attribute>
749   . . .
750  </combat>
751
752 -->
753
754 <!ELEMENT enemy ( %inline.content; )*>
755 <!ATTLIST enemy
756           %core.attributes;
757 >
758 <!--
759
760 The "enemy" element contains an enemy's name.
761
762 Example:
763
764  <combat . . .>
765   . . .
766   <enemy>12-foot Giak</enemy>
767   . . .
768  </combat>
769
770 -->
771
772 <!ELEMENT enemy-attribute ( #PCDATA )*>
773 <!ATTLIST enemy-attribute
774           %core.attributes;
775 >
776 <!--
777
778 The "enemy-attribute" element contains one particular attribute which 
779 describes an enemy.
780
781 Example:
782
783  <combat . . .>
784   . . .
785   <enemy-attribute>30</enemy-attribute>
786   . . .
787  </combat>
788
789 -->
790
791 <!ELEMENT choice ( %inline.content; | link-text )*>
792 <!ATTLIST choice
793           %core.attributes;
794           %link.attributes;
795 >
796 <!--
797
798 The "choice" element contains the text describing a choice presented 
799 within a section. It's a linking element and therefore can link to 
800 the place to which the choice leads.
801
802 The choice element can contain "link-text" elements which suggest text 
803 that should be used by the user agent to represent the hyperlink.
804
805 Example:
806
807  <section id="section12" . . .> . . . </section>
808  . . .
809  <choice idref="section12">If you would like to fight the 12-foot Giak, 
810   <link-text . . .> . . . turn to 12. . . . </link-text>
811  </choice>
812
813 -->
814
815 <!ELEMENT link-text ( %inline.content; )*>
816 <!ATTLIST link-text
817           %core.attributes;
818 >
819 <!--
820
821 The "link-text" element contains text which is suggested for use by 
822 hypertext user interfaces to represent one end of a hyperlink.
823
824 Example:
825
826  <choice . . .>
827   . . .
828   <link-text>the unfortunately ubiquitous "Click Here!"</link-text>
829   . . .
830  </choice>
831
832 -->
833
834 <!ELEMENT illustration ( meta?, instance+ )>
835 <!ATTLIST illustration
836           %core.attributes;
837           %link.attributes;
838 >
839
840 <!--
841
842 The "illustration" element contains a set of alternate 
843 representations of a particular illustration.
844
845 Example:
846
847  <illustration>
848   <meta> . . . </meta>
849   <instance . . .> . . . </instance>
850   <instance . . .> . . . </instance>
851   . . .
852  </illustration>
853
854 -->
855
856 <!ELEMENT instance ( %inline.content; | %block.content; )*>
857 <!ATTLIST instance
858           %core.attributes;
859           src         CDATA #IMPLIED
860           width       CDATA #IMPLIED
861           height      CDATA #IMPLIED
862           mime-type   CDATA #IMPLIED
863 >
864 <!--
865
866 The "instance" element describes one instance of an illustration.
867
868 The "src" attribute is a URL for the data file for the illustration.
869
870 The "width" and "height" attributes contain the dimensions of the 
871 illustration.
872
873 The "mime-type" attribute can contain an appropriate label for the 
874 format of the illustration file (e.g. "image/png" or "image/jpeg").
875
876 The "instance" element can contain block or inline content that
877 is intended to replace graphical illustrations.
878
879 Example:
880
881  <illustration . . .>
882   . . .
883   <instance src="17.gif" width="386" height="532" type="image/gif" />
884   <instance src="" width="" height="" type="text" >
885    [content here]
886   </instance>
887   . . .
888  </illustration>
889
890 -->
891
892 <!ELEMENT signpost ( %inline.content; | %block.content; )*>
893 <!ATTLIST signpost
894           %core.attributes;
895 >
896 <!--
897
898 The "signpost" element contains the text of a sign or message that
899 should be presented offset from surrounding text.
900
901 Example:
902
903  <signpost>RENDALIM'S LABORATORY</signpost>
904
905 -->
906
907 <!ELEMENT hr EMPTY>
908 <!ATTLIST hr
909           %core.attributes;
910 >
911 <!--
912
913 The "hr" element designates a horizontal rule. Since this is a 
914 presentational tag, it should be used sparingly in cases where new
915 logical divisions of the text begin which aren't given a unique 
916 title.
917
918 Example:
919
920  <hr />
921
922 --> 
923
924 <!-- ============================================================= -->
925 <!--                       Inline Elements                         -->
926 <!-- ============================================================= -->
927
928 <!ELEMENT a ( %inline.content; )*>
929 <!ATTLIST a
930           %core.attributes;
931           %link.attributes;
932           href CDATA #IMPLIED
933 >
934 <!--
935
936 The "a" element is used to contain inline content that should be a 
937 hypertext anchor.
938
939 The "href" attribute is added to allow a reference outside of the 
940 document itself.
941
942 Example:
943
944  <p . . .>
945   . . .
946   <a idref="section12" id="foo">Section 12</a>
947   . . .
948  </p>
949
950 -->
951
952 <!ELEMENT em ( %inline.content; )*>
953 <!ATTLIST em
954           %core.attributes;
955 >
956 <!--
957
958 The "em" element contains text that should be emphasized. Although not 
959 part of the DTD and therefore not guaranteed or required to be so, the 
960 text should be typeset with an italic font.
961
962  <p . . .>
963   . . .
964   <em>You are being attacked!</em>
965   . . .
966  </p>
967
968 -->
969
970 <!ELEMENT strong ( %inline.content; )*>
971 <!ATTLIST strong
972           %core.attributes;
973 >
974 <!--
975
976 The "strong" element contains text that should be emphasized. Although 
977 not part of the DTD and therefore not guaranteed or required to be so, 
978 the text should be typeset with a bold font weight.
979
980  <p . . .>
981   . . .
982   <strong>If</strong> you have the Talisman of Supreme Obscurity,
983   . . .
984  </p>
985
986 -->
987
988 <!ELEMENT thought ( %inline.content; )*>
989 <!ATTLIST thought
990           %core.attributes;
991 >
992 <!--
993
994 The "thought" element contains text that is the character's thoughts or is 
995 an overheard thought. Although not part of the DTD and therefore not 
996 guaranteed or required to be so, the text should be typeset with an italic
997 font face.
998
999  <p . . .>
1000   . . .
1001   Lone Wolf heard the words <thought>Die Northlander!</strong> echo in
1002   his mind,
1003   . . .
1004  </p>
1005
1006 -->
1007
1008 <!ELEMENT foreign ( %inline.content; )*>
1009 <!ATTLIST foreign
1010           %core.attributes;
1011 >
1012 <!--
1013
1014 The "foreign" element contains a phrase in a non-native language.
1015 Although not part of the DTD and therefore not guaranteed or required 
1016 to be so, the text should be typeset with an italic font face.
1017
1018  <p . . .>
1019   . . .
1020   The Giak horde attacked <foreign>en masse</foreign>.
1021   . . .
1022  </p>
1023
1024 -->
1025
1026 <!ELEMENT quote ( %inline.content; )*>
1027 <!ATTLIST quote
1028           %core.attributes;
1029 >
1030 <!--
1031
1032 The "quote" element contains an inline quotation.
1033
1034 Example:
1035
1036  <p . . .>The Giak yelped <quote . . .>Oww!</quote></p>
1037
1038 -->
1039
1040 <!ELEMENT cite ( %inline.content; )*>
1041 <!ATTLIST cite
1042           %core.attributes;
1043 >
1044 <!--
1045
1046 The "cite" element contains the title of a sited resource.
1047
1048 Example:
1049
1050  <p . . .>
1051   . . .
1052   <cite>Flight from the Dark</cite>
1053   . . .
1054  </p>
1055
1056 -->
1057
1058 <!ELEMENT code ( %inline.content; )*>
1059 <!ATTLIST code
1060           %core.attributes;
1061 >
1062 <!--
1063
1064 The "code" element contains data that should be interpreted as literal 
1065 input to a computer (e.g. email addresses and URIs).
1066
1067 Example:
1068
1069  <code>staff@projectaon.org</code>
1070
1071 -->
1072
1073 <!ELEMENT br EMPTY>
1074 <!ATTLIST br
1075           %core.attributes;
1076 >
1077 <!--
1078
1079 The "br" indicates a required line break. Its use should be confined 
1080 to documents such as poems that require a particular line structure.
1081
1082 Example:
1083
1084  <blockquote . . .>
1085   . . .
1086   There once was a Kai monk from Sommerlund<br />
1087   Who always wore a cummerbund<br />
1088   . . .
1089  </blockquote>
1090
1091 -->
1092
1093 <!ELEMENT typ ( #PCDATA )>
1094 <!ATTLIST typ
1095           %core.attributes;
1096 >
1097 <!--
1098
1099 The "typ" element is used to denote purely typographical markup. For
1100 example, bold font face, italics, and smaller font are purely of
1101 typographical concern. Take care to not use this in place of logical
1102 markup such as the "em" element when it is more appropriate.
1103
1104 Example:
1105
1106 The <typ class="bold">Project Aon</a> volunteers.
1107
1108 -->
1109
1110 <!ELEMENT onomatopoeia ( #PCDATA )>
1111 <!ATTLIST onomatopoeia
1112           %core.attributes;
1113 >
1114 <!--
1115
1116 The "onomatopoeia" element is used to denote words that imitate a
1117 sound (e.g., "whoosh", "bang").
1118
1119 Example:
1120
1121 The <onomatopoeia>clang</onomatopoeia> of the bell is deafening.
1122
1123 -->
1124
1125 <!ELEMENT spell ( #PCDATA )>
1126 <!ATTLIST spell
1127           %core.attributes;
1128 >
1129 <!--
1130
1131 The "spell" element contains the name of a magic spell.
1132
1133 Example:
1134
1135 Having had no success with his female peers, the acolyte learned the
1136 forbidden <spell>Attract Opposite Gender</spell> spell.
1137
1138 -->
1139
1140 <!ELEMENT item ( #PCDATA )>
1141 <!ATTLIST item
1142           %core.attributes;
1143 >
1144 <!--
1145
1146 The "item" element contains the name of an item that the reader can
1147 pick up or interact with.
1148
1149 Example:
1150
1151 Her <item>Sword</a> lay just out of reach.
1152
1153 -->
1154
1155 <!-- ============================================================= -->
1156 <!--                          Appendices                           -->
1157 <!-- ============================================================= -->
1158
1159 <!-- :::::::::::::: Valid Gamebook Document Example :::::::::::::: -->
1160 <!--
1161 This document is not intended to document current practice in Project
1162 Aon. It is merely here to demonstrate the concepts of the Gamebook 
1163 DTD. For current practice, please refer to published XML files.
1164 -->
1165
1166 <!--
1167
1168 <?xml version="1.0" encoding="iso-8859-1"?>
1169 <!DOCTYPE gamebook SYSTEM "gamebook.dtd">
1170
1171 <gamebook version="0.11" xml:lang="en-UK">
1172
1173 <meta>
1174  <title>Flight from the Dark</title>
1175  <creator>Joe Dever and Gary Chalk</creator>
1176  <publisher>Project Aon</publisher>
1177  <date><year>2001</year><month>10</month><day>24</day></date>
1178  <rights>Copyright &copy; 1984 Joe Dever and Gary Chalk.</rights>
1179 </meta>
1180
1181 <section id="section1">
1182  <meta><title>1</title></meta>
1183  <data>
1184   <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>
1185   <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>
1186   <p>At the foot of the hill, the path splits into two directions, both leading into a large wood.</p>
1187
1188   <choice idref="section85">If you wish to take the right path into the wood, <link-text>turn to 85</link-text>.</choice>
1189   <choice idref="section275">If you wish to follow the left track, <link-text>turn to 275</link-text>.</choice>
1190   <choice idref="section141">If you wish to use your Kai Discipline of Sixth Sense, <link-text>turn to 141</link-text>.</choice>
1191  </data>
1192  <footnotes>
1193   <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>
1194  </footnotes>
1195 </section>
1196
1197 <section id="section17">
1198  <meta><title>17</title></meta>
1199  <data>
1200   <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>
1201
1202   <illustration>
1203    <instance src="1.gif" width="386" height="532" mime-type="image/gif" />
1204   </illustration>
1205
1206   <p>Deduct 1 point from your <typ class="attribute">COMBAT SKILL</typ> and fight the Kraan.</p>
1207
1208   <combat>
1209    <enemy>Kraan:</enemy>
1210    <enemy-attribute>16</enemy-attribute>
1211    <enemy-attribute>24</enemy-attribute>
1212   </combat>
1213
1214   <p>If you kill the creature, you quickly descend the far side of the hill to avoid the Giaks.</p>
1215   <p>Pick a number from the Random Number Table.</p>
1216
1217   <choice idref="section53">If you pick 0, <link-text>turn to 53</link-text>.</choice>
1218   <choice idref="section274">If you pick 1&endash;2, <link-text>turn to 274</link-text>.</choice>
1219   <choice idref="section316">If you pick 3&endash;9, <link-text>turn to 316</link-text>.</choice>
1220  </data>
1221 </section>
1222
1223 <section id="section53">
1224  <meta><title>53</title></meta>
1225  <data />
1226 </section>
1227
1228 <section id="section85">
1229  <meta><title>85</title></meta>
1230  <data />
1231 </section>
1232
1233 <section id="section141">
1234  <meta><title>141</title></meta>
1235  <data />
1236 </section>
1237
1238 <section id="section274">
1239  <meta><title>274</title></meta>
1240  <data />
1241 </section>
1242
1243 <section id="section275">
1244  <meta><title>275</title></meta>
1245  <data />
1246 </section>
1247
1248 <section id="section316">
1249  <meta><title>316</title></meta>
1250  <data />
1251 </section>
1252
1253 </gamebook>
1254
1255 -->