xref: /aosp_15_r20/external/apache-xml/test/tests/contrib/xsltc/mk/spec.dtd (revision 1212f9a0ffdc28482b8821715d2222bf16dc14e2)
1<!-- ............................................................... -->
2<!-- XML specification DTD ......................................... -->
3<!-- ............................................................... -->
4
5<!--
6TYPICAL INVOCATION:
7#  <!DOCTYPE spec PUBLIC
8#       "-//W3C//DTD Specification::19980323//EN"
9#       "http://www.w3.org/XML/Group/DTD/xmlspec.dtd">
10
11PURPOSE:
12  This DTD was developed for use with the XML family of W3C
13  specifications.  It is an XML-compliant DTD based in part on
14  the TEI Lite and Sweb DTDs.
15
16DEPENDENCIES:
17  None.
18
19CHANGE HISTORY:
20  The list of changes is at the end of the DTD.
21
22  For all details, see the design report at:
23
24    <http://www.w3.org/XML/Group/DTD/xmlspec-report.htm>
25
26  The "typical invocation" FPI always gets updated to reflect the
27  date of the most recent changes.
28
29  Search this file for "#" in the first column to see change history
30  comments.
31
32MAINTAINER:
33  Eve Maler
34  ArborText Inc.
35  [email protected]
36  voice: +1 781 270 5750
37  fax:   +1 781 273 3760
38-->
39
40<!-- ............................................................... -->
41<!-- Entities for characters and symbols ........................... -->
42
43<!--
44#1998-03-10: maler: Added &ldquo; and &rdquo;.
45#                   Used 8879:1986-compatible decimal character
46#                   references.
47#                   Merged charent.mod file back into main file.
48-->
49
50<!ENTITY lt     "&#38;#60;">
51<!ENTITY gt     "&#62;">
52<!ENTITY amp    "&#38;#38;">
53<!ENTITY apos   "&#39;">
54<!ENTITY quot   "&#34;">
55<!ENTITY mdash  "--">
56<!ENTITY nbsp   "&#160;">
57<!ENTITY ldquo  "#x201C;">
58<!ENTITY rdquo  "#x201D;">
59
60<!-- ............................................................... -->
61<!-- Entities for classes of standalone elements ................... -->
62
63<!--
64#1997-10-16: maler: Added table to % illus.class;.
65#1997-11-28: maler: Added htable to % illus.class;.
66#1997-12-29: maler: IGNOREd table.
67#1998-03-10: maler: Removed SGML Open-specific % illus.class;.
68#                   Added "local" entities for customization.
69-->
70
71<!ENTITY % local.p.class        "">
72<!ENTITY % p.class              "p
73                                %local.p.class;">
74
75<!ENTITY % local.statusp.class  "">
76<!ENTITY % statusp.class        "statusp
77                                %local.statusp.class;">
78
79<!ENTITY % local.list.class     "">
80<!ENTITY % list.class           "ulist|olist|slist|glist
81                                %local.list.class;">
82
83<!ENTITY % local.speclist.class "">
84<!ENTITY % speclist.class       "orglist|blist
85                                %local.speclist.class;">
86
87<!ENTITY % local.note.class     "">
88<!ENTITY % note.class           "note|wfcnote|vcnote
89                                %local.note.class;">
90
91<!ENTITY % local.illus.class    "">
92<!ENTITY % illus.class          "eg|graphic|scrap|htable
93                                %local.illus.class;">
94
95<!-- ............................................................... -->
96<!-- Entities for classes of phrase-level elements ................. -->
97
98<!--
99#1997-12-29: maler: Added xspecref to % ref.class;.
100#1998-03-10: maler: Added % ednote.class;.
101#                   Added "local" entities for customization.
102-->
103
104<!ENTITY % local.annot.class    "">
105<!ENTITY % annot.class          "footnote
106                                %local.annot.class;">
107
108<!ENTITY % local.termdef.class    "">
109<!ENTITY % termdef.class        "termdef|term
110                                %local.termdef.class;">
111
112<!ENTITY % local.emph.class    "">
113<!ENTITY % emph.class           "emph|quote
114                                %local.emph.class;">
115
116<!ENTITY % local.ref.class    "">
117<!ENTITY % ref.class            "bibref|specref|termref|titleref
118                                |xspecref|xtermref
119                                %local.ref.class;">
120
121<!ENTITY % local.loc.class    "">
122<!ENTITY % loc.class            "loc
123                                %local.loc.class;">
124
125<!ENTITY % local.tech.class    "">
126<!ENTITY % tech.class           "kw|nt|xnt|code
127                                %local.tech.class;">
128
129<!ENTITY % local.ednote.class    "">
130<!ENTITY % ednote.class         "ednote
131                                %local.ednote.class;">
132
133<!-- ............................................................... -->
134<!-- Entities for mixtures of standalone elements .................. -->
135
136<!--
137#1997-09-30: maler: Created % p.mix; to eliminate p from self.
138#1997-09-30: maler: Added % speclist.class; to % obj.mix; and % p.mix;.
139#1997-09-30: maler: Added % note.class; to % obj.mix; and % p.mix;.
140#1997-10-16: maler: Created % entry.mix;.  Note that some elements
141#                   left out here are still allowed in termdef,
142#                   which entry can contain through % p.pcd.mix;.
143#1997-11-28: maler: Added % p.class; to % statusobj.mix;.
144#1998-03-10: maler: Added % ednote.class; to all mixtures, except
145#                   % p.mix; and % statusobj.mix;, because paragraphs
146#                   and status paragraphs will contain ednote
147#                   through % p.pcd.mix;.
148#1998-03-123: maler: Added % termdef.mix; (broken out from
149#                    % termdef.pcd.mix;).
150-->
151
152<!ENTITY % div.mix
153        "%p.class;|%list.class;|%speclist.class;|%note.class;
154        |%illus.class;|%ednote.class;">
155<!ENTITY % obj.mix
156        "%p.class;|%list.class;|%speclist.class;|%note.class;
157        |%illus.class;|%ednote.class;">
158<!ENTITY % p.mix
159        "%list.class;|%speclist.class;|%note.class;|%illus.class;">
160<!ENTITY % entry.mix
161        "%list.class;|note|eg|graphic|%ednote.class;">
162<!ENTITY % statusobj.mix
163        "%p.class;|%statusp.class;|%list.class;">
164<!ENTITY % hdr.mix
165        "%p.class;|%list.class;|%ednote.class;">
166<!ENTITY % termdef.mix
167        "%note.class;|%illus.class;">
168
169<!-- ............................................................... -->
170<!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->
171
172<!--    Note that % termdef.pcd.mix contains % note.class;
173        and % illus.class;, considered standalone elements. -->
174
175<!--
176#1997-09-30: maler: Added scrap and % note.class; to % termdef.pcd.mix;.
177#1997-11-28: maler: Added % loc.class; to % p.pcd.mix;.
178#1998-03-10: maler: Added % ednote.class; to all mixtures.
179#1998-03-23: maler: Moved some % termdef.pcd.mix; stuff out to
180#                   % termdef.mix;.
181-->
182
183<!ENTITY % p.pcd.mix
184        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
185        |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
186<!ENTITY % statusp.pcd.mix
187        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
188        |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
189<!ENTITY % head.pcd.mix
190        "#PCDATA|%annot.class;|%emph.class;|%tech.class;|%ednote.class;">
191<!ENTITY % label.pcd.mix
192        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;|%tech.class;
193        |%ednote.class;">
194<!ENTITY % eg.pcd.mix
195        "#PCDATA|%annot.class;|%emph.class;|%ednote.class;">
196<!ENTITY % termdef.pcd.mix
197        "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
198        |%ednote.class;">
199<!ENTITY % bibl.pcd.mix
200        "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
201<!ENTITY % tech.pcd.mix
202        "#PCDATA|%ednote.class;">
203<!ENTITY % loc.pcd.mix
204        "#PCDATA|%loc.class;|%ednote.class;">
205
206<!-- ............................................................... -->
207<!-- Entities for customizable content models ...................... -->
208
209<!--
210#1998-03-10: maler: Added customization entities.
211-->
212
213<!ENTITY % spec.mdl
214        "header, front?, body, back?">
215
216<!ENTITY % header.mdl
217        "title, subtitle?, version, w3c-designation, w3c-doctype,
218        pubdate, notice*, publoc, prevlocs?, latestloc?, authlist,
219        status, abstract, pubstmt?, sourcedesc?, langusage,
220        revisiondesc">
221
222<!ENTITY % pubdate.mdl
223        "day?, month, year">
224
225<!-- ............................................................... -->
226<!-- Entities for common attributes ................................ -->
227
228<!--    key attribute:
229        Optionally provides a sorting or indexing key, for cases when
230        the element content is inappropriate for this purpose. -->
231<!ENTITY % key.att
232        'key                    CDATA           #IMPLIED'>
233
234<!--    def attribute:
235        Points to the element where the relevant definition can be
236        found, using the IDREF mechanism.  % def.att; is for optional
237        def attributes, and % def-req.att; is for required def
238        attributes. -->
239<!ENTITY % def.att
240        'def                    IDREF           #IMPLIED'>
241<!ENTITY % def-req.att
242        'def                    IDREF           #REQUIRED'>
243
244<!--    ref attribute:
245        Points to the element where more information can be found,
246        using the IDREF mechanism.  % ref.att; is for optional
247        ref attributes, and % ref-req.att; is for required ref
248        attributes. -->
249<!ENTITY % ref.att
250        'ref                    IDREF           #IMPLIED'>
251<!ENTITY % ref-req.att
252        'ref                    IDREF           #REQUIRED'>
253
254<!--
255#1998-03-23: maler: Added show and actuate attributes to href.
256#                   Added semi-common xml:space attribute.
257-->
258
259<!--    HREF and source attributes:
260        Points to the element where more information or source data
261        can be found, using the URL (XLL simple link) mechanism.
262        For some purposes, is associated with additional XLL
263        attributes. % href.att; is for optional HREF attributes,
264        and % href-req.att; is for required HREF attributes.
265        % source-req.att; is for the source attribute, which
266        is always required. -->
267<!ENTITY % href.att
268        'xml:link               CDATA           #FIXED "simple"
269        href                    CDATA           #IMPLIED
270        show                    CDATA           #FIXED "embed"
271        actuate                 CDATA           #FIXED "auto"'>
272
273<!ENTITY % href-req.att
274        'xml:link               CDATA           #FIXED "simple"
275        href                    CDATA           #REQUIRED
276        show                    CDATA           #FIXED "embed"
277        actuate                 CDATA           #FIXED "auto"'>
278
279<!ENTITY % source-req.att
280        'xml:link               CDATA           #FIXED "simple"
281        xml:attributes          NMTOKENS        #FIXED "href source"
282        source                  CDATA           #REQUIRED
283        show                    CDATA           #FIXED "embed"
284        actuate                 CDATA           #FIXED "auto"'>
285
286<!--    xml:space attribute:
287        Indicates that the element contains white space
288        that the formatter or other application should retain,
289        as appropriate to its function. -->
290<!ENTITY % xmlspace.att
291        'xml:space              (default
292                                |preserve)      #FIXED "preserve"'>
293
294<!--    Common attributes:
295        Every element has an ID attribute (sometimes required,
296        but usually optional) for links, and a Role attribute
297        for extending the useful life of the DTD by allowing
298        authors to make subclasses for any element. % common.att;
299        is for common attributes where the ID is optional, and
300        % common-idreq.att; is for common attributes where the
301        ID is required. -->
302<!ENTITY % common.att
303        'id                     ID              #IMPLIED
304        role                    NMTOKEN         #IMPLIED'>
305<!ENTITY % common-idreq.att
306        'id                     ID              #REQUIRED
307        role                    NMTOKEN         #IMPLIED'>
308
309<!-- ............................................................... -->
310<!-- Common elements ............................................... -->
311
312<!--    head: Title on divisions, productions, and the like -->
313<!ELEMENT head (%head.pcd.mix;)*>
314<!ATTLIST head %common.att;>
315
316<!-- ............................................................... -->
317<!-- Major specification structure ................................. -->
318
319<!--
320#1998-03-10: maler: Made spec content model easily customizable.
321-->
322
323<!ELEMENT spec (%spec.mdl;)>
324<!ATTLIST spec %common.att;>
325
326<!ELEMENT front (div1+)>
327<!ATTLIST front %common.att;>
328
329<!ELEMENT body (div1+)>
330<!ATTLIST body %common.att;>
331
332<!--
333#1997-09-30: maler: Added inform-div1 to back content.
334-->
335
336<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
337<!ATTLIST back %common.att;>
338
339<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
340<!ATTLIST div1 %common.att;>
341
342<!--
343#1997-09-30: maler: Added inform-div1 declarations.
344-->
345
346<!--    inform-div1: Non-normative division in back matter -->
347<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
348<!ATTLIST inform-div1 %common.att;>
349
350<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
351<!ATTLIST div2 %common.att;>
352
353<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
354<!ATTLIST div3 %common.att;>
355
356<!ELEMENT div4 (head, (%div.mix;)*)>
357<!ATTLIST div4 %common.att;>
358
359<!-- Specification header .......... -->
360
361<!--
362#1998-03-10: maler: Made header content model easily customizable.
363-->
364
365<!ELEMENT header (%header.mdl;)>
366<!ATTLIST header %common.att;>
367
368<!--    Example of title: "Extensible Cheese Language (XCL)" -->
369<!ELEMENT title (#PCDATA)>
370<!ATTLIST title %common.att;>
371
372<!--    Example of subtitle: "A Cheesy Specification" -->
373<!ELEMENT subtitle (#PCDATA)>
374<!ATTLIST subtitle %common.att;>
375
376<!--    Example of version: "Version 666.0" -->
377<!ELEMENT version (#PCDATA)>
378<!ATTLIST version %common.att;>
379
380<!--    Example of w3c-designation: "WD-xcl-19991231" -->
381<!ELEMENT w3c-designation (#PCDATA)>
382<!ATTLIST w3c-designation %common.att;>
383
384<!--    Example of w3c-doctype: "World Wide Web Consortium Working
385        Draft" -->
386<!ELEMENT w3c-doctype (#PCDATA)>
387<!ATTLIST w3c-doctype %common.att;>
388
389<!--
390#1998-03-10: maler: Made pubdate content model easily customizable.
391-->
392
393<!ELEMENT pubdate (%pubdate.mdl;)>
394<!ATTLIST pubdate %common.att;>
395
396<!ELEMENT day (#PCDATA)>
397<!ATTLIST day %common.att;>
398
399<!ELEMENT month (#PCDATA)>
400<!ATTLIST month %common.att;>
401
402<!ELEMENT year (#PCDATA)>
403<!ATTLIST year %common.att;>
404
405<!--    Example of notice: "This draft is for public comment..." -->
406<!ELEMENT notice (%hdr.mix;)+>
407<!ATTLIST notice %common.att;>
408
409<!ELEMENT publoc (loc+)>
410<!ATTLIST publoc %common.att;>
411
412<!ELEMENT prevlocs (loc+)>
413<!ATTLIST prevlocs %common.att;>
414
415<!ELEMENT latestloc (loc+)>
416<!ATTLIST latestloc %common.att;>
417
418<!--      loc (defined in "Phrase-level elements" below) -->
419
420<!ELEMENT authlist (author+)>
421<!ATTLIST authlist %common.att;>
422
423<!--
424#1997-09-30: maler: Made affiliation optional.
425#1998-03-10: maler: Made email optional.
426-->
427
428<!ELEMENT author (name, affiliation?, email?)>
429<!ATTLIST author %common.att;>
430
431<!ELEMENT name (#PCDATA)>
432<!ATTLIST name
433        %common.att;
434        %key.att;>
435
436<!ELEMENT affiliation (#PCDATA)>
437<!ATTLIST affiliation %common.att;>
438
439<!ELEMENT email (#PCDATA)>
440<!--    HREF attribute:
441        email functions as a hypertext reference through this
442        required attribute.  Typically the reference would use
443        the mailto: scheme. -->
444<!ATTLIST email
445        %common.att;
446        %href-req.att;>
447
448<!--    The status element now contains both statusp and p, and
449        the latter now allows loc.  Use p; statusp will be removed
450        eventually. -->
451<!ELEMENT status (%statusobj.mix;)+>
452<!ATTLIST status %common.att;>
453
454<!ELEMENT abstract (%hdr.mix;)*>
455<!ATTLIST abstract %common.att;>
456
457<!ELEMENT pubstmt (%hdr.mix;)+>
458<!ATTLIST pubstmt %common.att;>
459
460<!ELEMENT sourcedesc (%hdr.mix;)+>
461<!ATTLIST sourcedesc %common.att;>
462
463<!ELEMENT langusage (language+)>
464<!ATTLIST langusage %common.att;>
465
466<!ELEMENT language (#PCDATA)>
467<!ATTLIST language %common.att;>
468
469<!ELEMENT revisiondesc (%hdr.mix;)+>
470<!ATTLIST revisiondesc %common.att;>
471
472<!-- ............................................................... -->
473<!-- Standalone elements ........................................... -->
474
475<!-- Paragraphs .................... -->
476
477<!--
478#1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
479#1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix; references.
480#1997-12-29: maler: Changed order of %statusobj.mix; and %statusp.pcd.mix;
481#                   references.
482-->
483
484<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
485<!ATTLIST p %common.att;>
486
487<!--    statusp: Special paragraph that allows loc inside it (note that
488        p now also allows loc) -->
489<!ELEMENT statusp (%statusp.pcd.mix;|%statusobj.mix;)*>
490<!ATTLIST statusp %common.att;>
491
492<!-- Lists ......................... -->
493
494<!ELEMENT ulist (item+)>
495<!--    spacing attribute:
496        Use "normal" to get normal vertical spacing for items;
497        use "compact" to get less spacing.  The default is dependent
498        on the stylesheet. -->
499<!ATTLIST ulist
500        %common.att;
501        spacing         (normal|compact)        #IMPLIED>
502
503<!ELEMENT olist (item+)>
504<!--    spacing attribute:
505        Use "normal" to get normal vertical spacing for items;
506        use "compact" to get less spacing.  The default is dependent
507        on the stylesheet. -->
508<!ATTLIST olist
509        %common.att;
510        spacing         (normal|compact)        #IMPLIED>
511
512<!ELEMENT item (%obj.mix;)+>
513<!ATTLIST item %common.att;>
514
515<!ELEMENT slist (sitem+)>
516<!ATTLIST slist %common.att;>
517
518<!ELEMENT sitem (%p.pcd.mix;)*>
519<!ATTLIST sitem %common.att;>
520
521<!ELEMENT glist (gitem+)>
522<!ATTLIST glist %common.att;>
523
524<!ELEMENT gitem (label, def)>
525<!ATTLIST gitem %common.att;>
526
527<!ELEMENT label (%label.pcd.mix;)*>
528<!ATTLIST label %common.att;>
529
530<!ELEMENT def (%obj.mix;)*>
531<!ATTLIST def %common.att;>
532
533<!-- Special lists ................. -->
534
535<!ELEMENT blist (bibl+)>
536<!ATTLIST blist %common.att;>
537
538<!ELEMENT bibl (%bibl.pcd.mix;)*>
539<!--    HREF attribute:
540        bibl optionally functions as a hypertext reference to the
541        referred-to resource through this attribute. -->
542<!ATTLIST bibl
543        %common.att;
544        %href.att;
545        %key.att;>
546
547<!ELEMENT orglist (member+)>
548<!ATTLIST orglist %common.att;>
549
550<!--
551#1997-09-30: maler: Added optional affiliation.
552-->
553
554<!ELEMENT member (name, affiliation?, role?)>
555<!ATTLIST member %common.att;>
556
557<!--      name (defined in "Specification header" above) -->
558<!--      affiliation (defined in "Specification header" above) -->
559
560<!ELEMENT role (#PCDATA)>
561<!ATTLIST role %common.att;>
562
563<!-- Notes ......................... -->
564
565<!ELEMENT note (%obj.mix;)+>
566<!ATTLIST note %common.att;>
567
568<!ELEMENT wfcnote (head, (%obj.mix;)+)>
569<!--    ID attribute:
570        wfcnote must have an ID so that it can be pointed to
571        from a wfc element in a production. -->
572<!ATTLIST wfcnote
573        %common-idreq.att;>
574
575<!ELEMENT vcnote (head, (%obj.mix;)+)>
576<!--    ID attribute:
577        vcnote must have an ID so that it can be pointed to
578        from a vc element in a production. -->
579<!ATTLIST vcnote
580        %common-idreq.att;>
581
582<!-- Illustrations ................. -->
583
584<!--
585#1998-03-23: maler: Added xml:space attribute.
586-->
587
588<!ELEMENT eg (%eg.pcd.mix;)*>
589<!ATTLIST eg
590        %common.att;
591        %xmlspace.att;>
592
593<!ELEMENT graphic EMPTY>
594<!--    source attribute:
595        The graphic data must reside at the location pointed to.
596        This is a hypertext reference, but for practical purposes,
597        for now it should just be a pathname. -->
598<!ATTLIST graphic
599        %common.att;
600        %source-req.att;
601        alt             CDATA           #IMPLIED>
602
603<!--
604#1997-11-28: maler: Added prodgroup to scrap and defined it.
605-->
606
607<!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
608<!--    lang attribute:
609        The scrap can link to a description of the language used,
610        found in a language element in the header. -->
611<!ATTLIST scrap
612        %common.att;
613        lang            IDREF           #IMPLIED>
614
615<!ELEMENT prodgroup (prod+)>
616<!--    pcw<n> attributes:
617        Presentational attributes to control the width
618        of the "pseudo-table" columns used to output
619        groups of productions. -->
620<!ATTLIST prodgroup
621        %common.att;
622        pcw1            CDATA           #IMPLIED
623        pcw2            CDATA           #IMPLIED
624        pcw3            CDATA           #IMPLIED
625        pcw4            CDATA           #IMPLIED
626        pcw5            CDATA           #IMPLIED
627>
628
629<!ELEMENT prod (lhs, (rhs, (com|wfc|vc)*)+)>
630<!--    ID attribute:
631        The production must have an ID so that cross-references
632        (specref) and mentions of nonterminals (nt) can link to
633        it. -->
634<!ATTLIST prod
635        %common-idreq.att;>
636
637<!ELEMENT lhs (#PCDATA)>
638<!ATTLIST lhs %common.att;>
639
640<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
641<!ATTLIST rhs %common.att;>
642
643<!--      nt and xnt (defined in "Phrase-level elements" below) -->
644
645<!--
646#1997-11-28: maler: Added loc and bibref to com content.
647-->
648
649<!ELEMENT com (#PCDATA|loc|bibref)*>
650<!ATTLIST com %common.att;>
651
652<!--    wfc: Should generate the head of the wfcnote pointed to -->
653<!ELEMENT wfc EMPTY>
654<!--    def attribute:
655        Each well formedness tagline in a production must link to the
656        wfcnote that defines it. -->
657<!ATTLIST wfc
658        %def-req.att;
659        %common.att;>
660
661<!--    vc: Should generate the head of the vcnote pointed to -->
662<!ELEMENT vc EMPTY>
663<!--    def attribute:
664        Each validity tagline in a production must link to the vcnote
665        that defines it. -->
666<!ATTLIST vc
667        %def-req.att;
668        %common.att;>
669
670<!--
671#1998-03-23: maler: Added xml:space attribute.
672-->
673
674<!--    bnf: Un-marked-up production -->
675<!ELEMENT bnf (%eg.pcd.mix;)*>
676<!ATTLIST bnf
677        %common.att;
678        %xmlspace.att;>
679
680<!--
681#1997-10-16: maler: Added table mechanism.
682#1997-11-28: maler: Added non-null system ID to entity declaration.
683#                   Added HTML table module.
684#1997-12-29: maler: IGNOREd SGML Open table model.
685#1998-03-10: maler: Removed SGML Open table model.
686#                   Merged html-tbl.mod file into main file.
687#                   Added %common.att; to all HTML table elements.
688-->
689
690<!--    TR and TD attributes:
691        Alignment attributes.  No default. -->
692<!ENTITY % trtd.att
693        "align          (left
694                        |center
695                        |right)         #IMPLIED
696        valign          (top
697                        |middle
698                        |bottom)        #IMPLIED">
699
700<!ELEMENT htable (htbody+)>
701<!ATTLIST htable
702          border        CDATA           "0"
703          cellpadding   CDATA           "0"
704          align         (left
705                        |center
706                        |right)         "left">
707
708<!ELEMENT htbody (tr+)>
709<!ATTLIST htbody %common.att;>
710
711<!ELEMENT tr     (td+)>
712<!ATTLIST tr
713        %common.att;
714        %trtd.att;>
715
716<!ELEMENT td     (%p.pcd.mix;)*>
717<!ATTLIST td
718        %common.att;
719        %trtd.att;
720        bgcolor         CDATA           #IMPLIED
721        rowspan         CDATA           "1"
722        colspan         CDATA           "1">
723
724<!-- ............................................................... -->
725<!-- Phrase-level elements ......................................... -->
726
727<!--    bibref: Should generate, in square brackets, "key" on bibl -->
728<!ELEMENT bibref EMPTY>
729<!--    ref attribute:
730        A bibliography reference must link to the bibl element that
731        describes the resource. -->
732<!ATTLIST bibref
733        %common.att;
734        %ref-req.att;>
735
736<!ELEMENT code (%tech.pcd.mix;)*>
737<!ATTLIST code %common.att;>
738
739<!--
740#1998-03-10: maler: Declared ednote and related elements.
741-->
742
743<!ELEMENT ednote (name?, date?, edtext)>
744<!ATTLIST ednote %common.att;>
745
746<!ELEMENT date (#PCDATA)>
747<!ATTLIST date %common.att;>
748
749<!ELEMENT edtext (#PCDATA)>
750<!ATTLIST edtext %common.att;>
751
752<!ELEMENT emph (#PCDATA)>
753<!ATTLIST emph %common.att;>
754
755<!--    footnote: Both footnote content and call to footnote -->
756<!ELEMENT footnote (%obj.mix;)+>
757<!ATTLIST footnote %common.att;>
758
759<!ELEMENT kw (%tech.pcd.mix;)*>
760<!ATTLIST kw %common.att;>
761
762<!ELEMENT loc (#PCDATA)>
763<!--    HREF attribute:
764        The purpose of a loc element is to function as a hypertext
765        link to a resource.  (Ideally, the content of loc will also
766        mention the URI of the resource, so that readers of the
767        printed version will be able to locate the resource.) -->
768<!ATTLIST loc
769        %common.att;
770        %href-req.att;>
771
772<!ELEMENT nt (#PCDATA)>
773<!--    def attribute:
774        The nonterminal must link to the production that defines
775        it. -->
776<!ATTLIST nt
777        %common.att;
778        %def-req.att;>
779
780<!--
781#1998-03-10: maler: Declared quote.
782-->
783
784<!--    quote: Scare quotes and other purely presentational quotes -->
785<!ELEMENT quote (%p.pcd.mix;)*>
786<!ATTLIST quote %common.att;>
787
788<!--    specref: Should generate italic "[n.n], Section Title" for
789        div, "n" for numbered item, or "[n]" for production -->
790<!ELEMENT specref EMPTY>
791<!--    ref attribute:
792        The purpose of a specref element is to link to a div, item
793        in an olist, or production in the current spec. -->
794<!ATTLIST specref
795        %common.att;
796        %ref-req.att;>
797
798<!ELEMENT term (#PCDATA)>
799<!ATTLIST term %common.att;>
800
801<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
802<!--    ID attribute:
803        A term definition must have an ID so that it can be linked
804        to from termref elements. -->
805<!--    term attribute:
806        The canonical form of the term or phrase being defined must
807        appear in this attribute, even if the term or phrase also
808        appears in the element content in identical form (e.g., in
809        the term element). -->
810<!ATTLIST termdef
811        %common-idreq.att;
812        term            CDATA           #REQUIRED>
813
814<!ELEMENT termref (#PCDATA)>
815<!--    ref attribute:
816        A term reference must link to the termdef element that
817        defines the term. -->
818<!ATTLIST termref
819        %common.att;
820        %def-req.att;>
821
822<!ELEMENT titleref (#PCDATA)>
823<!--    HREF attribute:
824        A title reference can optionally function as a hypertext
825        link to the resource with this title. -->
826<!ATTLIST titleref
827        %common.att;
828        %href.att;>
829
830<!ELEMENT xnt (#PCDATA)>
831<!--    HREF attribute:
832        The nonterminal must hyperlink to a resource that serves
833        to define it (e.g., a production in a related XML
834        specification). -->
835<!ATTLIST xnt
836        %common.att;
837        %href-req.att;>
838
839<!--
840#1997-12-29: maler: Declared xspecref.
841-->
842
843<!ELEMENT xspecref (#PCDATA)>
844<!--    HREF attribute:
845        The spec reference must hyperlink to the resource to
846        cross-refer to (e.g., a section in a related XML
847        specification). -->
848<!ATTLIST xspecref
849        %common.att;
850        %href-req.att;>
851
852<!ELEMENT xtermref (#PCDATA)>
853<!--    HREF attribute:
854        The term reference must hyperlink to the resource that
855        serves to define the term (e.g., a term definition in
856        a related XML specification). -->
857<!ATTLIST xtermref
858        %common.att;
859        %href-req.att;>
860
861<!-- ............................................................... -->
862<!-- Unused elements for ADEPT ..................................... -->
863
864<!--
865#1997-09-30: maler: Added unusued elements.
866#1997-10-14: maler: Fixed div to move nested div to the mixture.
867-->
868
869<!--    The following elements are purposely declared but never
870        referenced.  Declaring them allows them to be pasted from
871        an HTML document into a document using this DTD in ADEPT.
872        The ATD Context Transformation mechanism will try to convert
873        them to the appropriate element for this DTD.  While this
874        conversion will not work for all fragments, it does allow
875        many cases to work reasonably well. -->
876
877<!ELEMENT div
878        (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
879<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
880<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
881<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
882<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
883<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
884<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
885<!ELEMENT pre (%eg.pcd.mix;|em)*>
886<!ELEMENT ul (item|li)*>
887<!ELEMENT ol (item|li)*>
888<!ELEMENT li (#PCDATA|%obj.mix;)*>
889<!ELEMENT em (#PCDATA)>
890<!ELEMENT a (#PCDATA)>
891
892<!-- ............................................................... -->
893<!-- Change history ................................................ -->
894
895<!--
896#1997-08-18: maler
897#- Did a major revision.
898#1997-09-10: maler
899#- Updated FPI.
900#- Removed namekey element and put key attribute on name element.
901#- Made statusp element and supporting entities.
902#- Added slist element with sitem+ content.
903#- Required head on scrap and added new bnf subelement.
904#- Added an xnt element and allowed it and nt in regular text and rhs.
905#- Removed the ntref element.
906#- Added back the com element to the content of rhs.
907#- Added a key attribute to bibl.
908#- Removed the ident element.
909#- Added a term element to be used inside termdef.
910#- Added an xtermref element parallel to termref.
911#- Beefed up DTD comments.
912#1997-09-12: maler
913#- Allowed term element in general text.
914#- Changed bibref to EMPTY.
915#- Added ref.class to termdef.pcd.mix.
916#1997-09-14: maler
917#- Changed main attribute of xtermref from def to href.
918#- Added termdef.class to label contents.
919#1997-09-30: maler
920#- Added character entity module and added new entities.
921#- Removed p from appearing directly in self; created %p.mix;.
922#- Added inform-div (non-normative division) element.
923#- Fixed xtermref comment to mention HREF, not ref.
924#- Extended orglist model to allow optional affiliation.
925#- Modified author to make affiliation optional.
926#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
927#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
928#- Added unused HTML elements.
929#- Put empty system ID next to public ID in entity declarations.
930#1997-10-14: maler
931#- Fixed "unused" div content model to move nested div to mixture.
932#1997-10-16: maler
933#- Added SGML Open Exchange tables.
934#1997-11-28: maler
935#- Added support for prodgroup and its attributes.
936#- Added support for HTML tables.
937#- Added loc and bibref to content of com.
938#- Added loc to general p content models.
939#- Allowed p as alternative to statusp in status.
940#- Added non-null system IDs to external parameter entity declarations.
941#- (Modified the SGML Open table module to make it XML-compliant.)
942#- (Modified the character entity module.)
943#1997-12-29: maler
944#- Moved #PCDATA occurrences to come before GIs in content models.
945#- Removed use of the SGML Open table module.
946#- Added xspecref element.
947#- Ensured that all FPIs contain 4-digit year.
948#- (Modified the character entity module.)
949#1997-03-10: maler
950#- Merged the character entity and table modules into the main file.
951#- Added ldquo and rdquo entities.
952#- Added common attributes to prodgroup.
953#- Made the email element in header optional.
954#- Removed reference to the SGML Open table model.
955#- Added ednote element.
956#- Added quote element.
957#- Updated XLink usage to reflect 3 March 1998 WD.
958#- Added "local" entities to the class entities for customization.
959#- Parameterized several content models to allow for customization.
960#1997-03-23: maler
961#- Cleaned up some comments and removed some others.
962#- Added xml:space semi-common attribute to eg and bnf elements.
963#- Added show and embed attributes on all the uses of href.
964#- Added %common.att; to all HTML table elements.
965#- Added a real URI to the "typical invocation" comment.
966-->
967
968<!-- ............................................................... -->
969<!-- End of XML specification DTD .................................. -->
970<!-- ............................................................... -->
971