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  elm@arbortext.com
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, latestloc?, prevlocs?, authlist,
219        abstract, status, 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
540<!--    HREF attribute:
541        bibl optionally functions as a hypertext reference to the
542        referred-to resource through this attribute. -->
543
544<!ATTLIST bibl
545        %common.att;
546        %href.att;
547        %key.att;>
548
549<!ELEMENT orglist (member+)>
550<!ATTLIST orglist %common.att;>
551
552<!--
553#1997-09-30: maler: Added optional affiliation.
554-->
555
556<!ELEMENT member (name, affiliation?, role?)>
557<!ATTLIST member %common.att;>
558
559<!--      name (defined in "Specification header" above) -->
560<!--      affiliation (defined in "Specification header" above) -->
561
562<!ELEMENT role (#PCDATA)>
563<!ATTLIST role %common.att;>
564
565<!-- Notes ......................... -->
566
567<!ELEMENT note (%obj.mix;)+>
568<!ATTLIST note %common.att;>
569
570<!ELEMENT wfcnote (head, (%obj.mix;)+)>
571<!--    ID attribute:
572        wfcnote must have an ID so that it can be pointed to
573        from a wfc element in a production. -->
574<!ATTLIST wfcnote
575        %common-idreq.att;>
576
577<!ELEMENT vcnote (head, (%obj.mix;)+)>
578<!--    ID attribute:
579        vcnote must have an ID so that it can be pointed to
580        from a vc element in a production. -->
581<!ATTLIST vcnote
582        %common-idreq.att;>
583
584<!-- Illustrations ................. -->
585
586<!--
587#1998-03-23: maler: Added xml:space attribute.
588-->
589
590<!ELEMENT eg (%eg.pcd.mix;)*>
591<!ATTLIST eg
592        %common.att;
593        %xmlspace.att;>
594
595<!ELEMENT graphic EMPTY>
596<!--    source attribute:
597        The graphic data must reside at the location pointed to.
598        This is a hypertext reference, but for practical purposes,
599        for now it should just be a pathname. -->
600<!ATTLIST graphic
601        %common.att;
602        %source-req.att;
603        alt             CDATA           #IMPLIED>
604
605<!--
606#1997-11-28: maler: Added prodgroup to scrap and defined it.
607-->
608
609<!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
610<!--    lang attribute:
611        The scrap can link to a description of the language used,
612        found in a language element in the header. -->
613<!ATTLIST scrap
614        %common.att;
615        lang            IDREF           #IMPLIED>
616
617<!ELEMENT prodgroup (prod+)>
618<!--    pcw<n> attributes:
619        Presentational attributes to control the width
620        of the "pseudo-table" columns used to output
621        groups of productions. -->
622<!ATTLIST prodgroup
623        %common.att;
624        pcw1            CDATA           #IMPLIED
625        pcw2            CDATA           #IMPLIED
626        pcw3            CDATA           #IMPLIED
627        pcw4            CDATA           #IMPLIED
628        pcw5            CDATA           #IMPLIED
629>
630
631<!ELEMENT prod (lhs, (rhs, (com|wfc|vc)*)+)>
632<!--    ID attribute:
633        The production must have an ID so that cross-references
634        (specref) and mentions of nonterminals (nt) can link to
635        it. -->
636<!ATTLIST prod
637        %common-idreq.att;>
638
639<!ELEMENT lhs (#PCDATA)>
640<!ATTLIST lhs %common.att;>
641
642<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
643<!ATTLIST rhs %common.att;>
644
645<!--      nt and xnt (defined in "Phrase-level elements" below) -->
646
647<!--
648#1997-11-28: maler: Added loc and bibref to com content.
649-->
650
651<!ELEMENT com (#PCDATA|loc|bibref)*>
652<!ATTLIST com %common.att;>
653
654<!--    wfc: Should generate the head of the wfcnote pointed to -->
655<!ELEMENT wfc EMPTY>
656<!--    def attribute:
657        Each well formedness tagline in a production must link to the
658        wfcnote that defines it. -->
659<!ATTLIST wfc
660        %def-req.att;
661        %common.att;>
662
663<!--    vc: Should generate the head of the vcnote pointed to -->
664<!ELEMENT vc EMPTY>
665<!--    def attribute:
666        Each validity tagline in a production must link to the vcnote
667        that defines it. -->
668<!ATTLIST vc
669        %def-req.att;
670        %common.att;>
671
672<!--
673#1998-03-23: maler: Added xml:space attribute.
674-->
675
676<!--    bnf: Un-marked-up production -->
677<!ELEMENT bnf (%eg.pcd.mix;)*>
678<!ATTLIST bnf
679        %common.att;
680        %xmlspace.att;>
681
682<!--
683#1997-10-16: maler: Added table mechanism.
684#1997-11-28: maler: Added non-null system ID to entity declaration.
685#                   Added HTML table module.
686#1997-12-29: maler: IGNOREd SGML Open table model.
687#1998-03-10: maler: Removed SGML Open table model.
688#                   Merged html-tbl.mod file into main file.
689#                   Added %common.att; to all HTML table elements.
690-->
691
692<!--    TR and TD attributes:
693        Alignment attributes.  No default. -->
694<!ENTITY % trtd.att
695        "align          (left
696                        |center
697                        |right)         #IMPLIED
698        valign          (top
699                        |middle
700                        |bottom)        #IMPLIED">
701
702<!ELEMENT htable (htbody+)>
703<!ATTLIST htable
704          border        CDATA           "0"
705          cellpadding   CDATA           "0"
706          align         (left
707                        |center
708                        |right)         "left">
709
710<!ELEMENT htbody (tr+)>
711<!ATTLIST htbody %common.att;>
712
713<!ELEMENT tr     (td+)>
714<!ATTLIST tr
715        %common.att;
716        %trtd.att;>
717
718<!ELEMENT td     (%p.pcd.mix;)*>
719<!ATTLIST td
720        %common.att;
721        %trtd.att;
722        bgcolor         CDATA           #IMPLIED
723        rowspan         CDATA           "1"
724        colspan         CDATA           "1">
725
726<!-- ............................................................... -->
727<!-- Phrase-level elements ......................................... -->
728
729<!--    bibref: Should generate, in square brackets, "key" on bibl -->
730<!ELEMENT bibref EMPTY>
731<!--    ref attribute:
732        A bibliography reference must link to the bibl element that
733        describes the resource. -->
734<!ATTLIST bibref
735        %common.att;
736        %ref-req.att;>
737
738<!ELEMENT code (%tech.pcd.mix;)*>
739<!ATTLIST code %common.att;>
740
741<!--
742#1998-03-10: maler: Declared ednote and related elements.
743-->
744
745<!ELEMENT ednote (name?, date?, edtext)>
746<!ATTLIST ednote %common.att;>
747
748<!ELEMENT date (#PCDATA)>
749<!ATTLIST date %common.att;>
750
751<!ELEMENT edtext (#PCDATA)>
752<!ATTLIST edtext %common.att;>
753
754<!ELEMENT emph (#PCDATA)>
755<!ATTLIST emph %common.att;>
756
757<!--    footnote: Both footnote content and call to footnote -->
758<!ELEMENT footnote (%obj.mix;)+>
759<!ATTLIST footnote %common.att;>
760
761<!ELEMENT kw (%tech.pcd.mix;)*>
762<!ATTLIST kw %common.att;>
763
764<!ELEMENT loc (#PCDATA)>
765<!--    HREF attribute:
766        The purpose of a loc element is to function as a hypertext
767        link to a resource.  (Ideally, the content of loc will also
768        mention the URI of the resource, so that readers of the
769        printed version will be able to locate the resource.) -->
770<!ATTLIST loc
771        %common.att;
772        %href-req.att;>
773
774<!ELEMENT nt (#PCDATA)>
775<!--    def attribute:
776        The nonterminal must link to the production that defines
777        it. -->
778<!ATTLIST nt
779        %common.att;
780        %def-req.att;>
781
782<!--
783#1998-03-10: maler: Declared quote.
784-->
785
786<!--    quote: Scare quotes and other purely presentational quotes -->
787<!ELEMENT quote (%p.pcd.mix;)*>
788<!ATTLIST quote %common.att;>
789
790<!--    specref: Should generate italic "[n.n], Section Title" for
791        div, "n" for numbered item, or "[n]" for production -->
792<!ELEMENT specref EMPTY>
793<!--    ref attribute:
794        The purpose of a specref element is to link to a div, item
795        in an olist, or production in the current spec. -->
796<!ATTLIST specref
797        %common.att;
798        %ref-req.att;>
799
800<!ELEMENT term (#PCDATA)>
801<!ATTLIST term %common.att;>
802
803<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
804<!--    ID attribute:
805        A term definition must have an ID so that it can be linked
806        to from termref elements. -->
807<!--    term attribute:
808        The canonical form of the term or phrase being defined must
809        appear in this attribute, even if the term or phrase also
810        appears in the element content in identical form (e.g., in
811        the term element). -->
812<!ATTLIST termdef
813        %common-idreq.att;
814        term            CDATA           #REQUIRED>
815
816<!ELEMENT termref (#PCDATA)>
817<!--    ref attribute:
818        A term reference must link to the termdef element that
819        defines the term. -->
820<!ATTLIST termref
821        %common.att;
822        %def-req.att;>
823
824<!ELEMENT titleref (#PCDATA)>
825<!--    HREF attribute:
826        A title reference can optionally function as a hypertext
827        link to the resource with this title. -->
828<!ATTLIST titleref
829        %common.att;
830        %href.att;>
831
832<!ELEMENT xnt (#PCDATA)>
833<!--    HREF attribute:
834        The nonterminal must hyperlink to a resource that serves
835        to define it (e.g., a production in a related XML
836        specification). -->
837<!ATTLIST xnt
838        %common.att;
839        %href-req.att;>
840
841<!--
842#1997-12-29: maler: Declared xspecref.
843-->
844
845<!ELEMENT xspecref (#PCDATA)>
846<!--    HREF attribute:
847        The spec reference must hyperlink to the resource to
848        cross-refer to (e.g., a section in a related XML
849        specification). -->
850<!ATTLIST xspecref
851        %common.att;
852        %href-req.att;>
853
854<!ELEMENT xtermref (#PCDATA)>
855<!--    HREF attribute:
856        The term reference must hyperlink to the resource that
857        serves to define the term (e.g., a term definition in
858        a related XML specification). -->
859<!ATTLIST xtermref
860        %common.att;
861        %href-req.att;>
862
863<!-- ............................................................... -->
864<!-- Unused elements for ADEPT ..................................... -->
865
866<!--
867#1997-09-30: maler: Added unusued elements.
868#1997-10-14: maler: Fixed div to move nested div to the mixture.
869-->
870
871<!--    The following elements are purposely declared but never
872        referenced.  Declaring them allows them to be pasted from
873        an HTML document into a document using this DTD in ADEPT.
874        The ATD Context Transformation mechanism will try to convert
875        them to the appropriate element for this DTD.  While this
876        conversion will not work for all fragments, it does allow
877        many cases to work reasonably well. -->
878
879<!ELEMENT div
880        (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
881<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
882<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
883<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
884<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
885<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
886<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
887<!ELEMENT pre (%eg.pcd.mix;|em)*>
888<!ELEMENT ul (item|li)*>
889<!ELEMENT ol (item|li)*>
890<!ELEMENT li (#PCDATA|%obj.mix;)*>
891<!ELEMENT em (#PCDATA)>
892<!ELEMENT a (#PCDATA)>
893
894<!-- ............................................................... -->
895<!-- Change history ................................................ -->
896
897<!--
898#1997-08-18: maler
899#- Did a major revision.
900#1997-09-10: maler
901#- Updated FPI.
902#- Removed namekey element and put key attribute on name element.
903#- Made statusp element and supporting entities.
904#- Added slist element with sitem+ content.
905#- Required head on scrap and added new bnf subelement.
906#- Added an xnt element and allowed it and nt in regular text and rhs.
907#- Removed the ntref element.
908#- Added back the com element to the content of rhs.
909#- Added a key attribute to bibl.
910#- Removed the ident element.
911#- Added a term element to be used inside termdef.
912#- Added an xtermref element parallel to termref.
913#- Beefed up DTD comments.
914#1997-09-12: maler
915#- Allowed term element in general text.
916#- Changed bibref to EMPTY.
917#- Added ref.class to termdef.pcd.mix.
918#1997-09-14: maler
919#- Changed main attribute of xtermref from def to href.
920#- Added termdef.class to label contents.
921#1997-09-30: maler
922#- Added character entity module and added new entities.
923#- Removed p from appearing directly in self; created %p.mix;.
924#- Added inform-div (non-normative division) element.
925#- Fixed xtermref comment to mention HREF, not ref.
926#- Extended orglist model to allow optional affiliation.
927#- Modified author to make affiliation optional.
928#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
929#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
930#- Added unused HTML elements.
931#- Put empty system ID next to public ID in entity declarations.
932#1997-10-14: maler
933#- Fixed "unused" div content model to move nested div to mixture.
934#1997-10-16: maler
935#- Added SGML Open Exchange tables.
936#1997-11-28: maler
937#- Added support for prodgroup and its attributes.
938#- Added support for HTML tables.
939#- Added loc and bibref to content of com.
940#- Added loc to general p content models.
941#- Allowed p as alternative to statusp in status.
942#- Added non-null system IDs to external parameter entity declarations.
943#- (Modified the SGML Open table module to make it XML-compliant.)
944#- (Modified the character entity module.)
945#1997-12-29: maler
946#- Moved #PCDATA occurrences to come before GIs in content models.
947#- Removed use of the SGML Open table module.
948#- Added xspecref element.
949#- Ensured that all FPIs contain 4-digit year.
950#- (Modified the character entity module.)
951#1997-03-10: maler
952#- Merged the character entity and table modules into the main file.
953#- Added ldquo and rdquo entities.
954#- Added common attributes to prodgroup.
955#- Made the email element in header optional.
956#- Removed reference to the SGML Open table model.
957#- Added ednote element.
958#- Added quote element.
959#- Updated XLink usage to reflect 3 March 1998 WD.
960#- Added "local" entities to the class entities for customization.
961#- Parameterized several content models to allow for customization.
962#1997-03-23: maler
963#- Cleaned up some comments and removed some others.
964#- Added xml:space semi-common attribute to eg and bnf elements.
965#- Added show and embed attributes on all the uses of href.
966#- Added %common.att; to all HTML table elements.
967#- Added a real URI to the "typical invocation" comment.
968-->
969
970<!-- ............................................................... -->
971<!-- End of XML specification DTD .................................. -->
972<!-- ............................................................... -->
973