/ libxml2 / test / valid / dtds / spec.dtd
spec.dtd
  1  <!-- ............................................................... -->
  2  <!-- XML specification DTD ......................................... -->
  3  <!-- ............................................................... -->
  4  
  5  <!--
  6  TYPICAL INVOCATION:
  7  #  <!DOCTYPE spec PUBLIC
  8  #       "-//W3C//DTD Specification::19980323//EN"
  9  #       "http://www.w3.org/XML/Group/DTD/xmlspec.dtd">
 10  
 11  PURPOSE:
 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  
 16  DEPENDENCIES:
 17    None.
 18  
 19  CHANGE 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  
 32  MAINTAINER:
 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  <!-- ............................................................... -->