1<!-- ............................................................... -->
2<!-- XML specification DTD ......................................... -->
3<!-- ............................................................... -->
4
5<!--
6TYPICAL INVOCATION:
7#  <!DOCTYPE spec PUBLIC
8#       "-//W3C//DTD Specification V2.1//EN"
9#       "http://www.w3.org/XML/1998/06/xmlspec-v21.dtd">
10
11PURPOSE:
12  This XML DTD is for W3C specifications and other technical reports.
13  It is based in part on the TEI Lite and Sweb DTDs.
14
15DEPENDENCIES:
16  None.
17
18CHANGE HISTORY:
19  The list of changes is at the end of the DTD.
20
21  For all details, see the design report at:
22
23#   <http://www.w3.org/XML/1998/06/xmlspec-report-v21.htm>
24
25  Search this file for "#" in the first column to see change history
26  comments.  To find changes made this time, search for "2000-03-07".
27
28MAINTAINER:
29  Eve Maler
30  Sun Microsystems, Inc.
31  elm@east.sun.com
32  voice: +1 781 442 3190
33  fax:   +1 781 442 1437
34-->
35
36<!-- ............................................................... -->
37<!-- Entities for characters and symbols ........................... -->
38<!-- ............................................................... -->
39
40<!--
41#1998-03-10: maler: Added &ldquo; and &rdquo;.
42#                   Used 8879:1986-compatible decimal character
43#                   references.
44#                   Merged charent.mod file back into main file.
45#1998-05-14: maler: Fixed ldquo and rdquo.  Gave mdash a real number.
46#1998-12-03: maler: Escaped the leading ampersands.
47-->
48
49<!ENTITY lt     "&#38;#60;">
50<!ENTITY gt     "&#62;">
51<!ENTITY amp    "&#38;#38;">
52<!ENTITY apos   "&#39;">
53<!ENTITY quot   "&#34;">
54<!ENTITY nbsp   "&#160;">
55<!ENTITY mdash  "&#38;#x2014;">
56<!ENTITY ldquo  "&#38;#x201C;">
57<!ENTITY rdquo  "&#38;#x201D;">
58
59<!-- ............................................................... -->
60<!-- Entities for classes of standalone elements ................... -->
61<!-- ............................................................... -->
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#1998-05-14: maler: Added issue to %note.class;.
70#                   Removed %[local.]statusp.class;.
71#1998-05-21: maler: Added constraintnote to %note.class;.
72#1998-08-22: maler: Changed htable to table in %illus.class;.
73#                   Added definitions to %illus.class;.
74#2000-03-07: maler: Added proto and example to %illus.class;.
75-->
76
77<!ENTITY % local.p.class        "">
78<!ENTITY % p.class              "p
79                                %local.p.class;">
80
81<!ENTITY % local.list.class     "">
82<!ENTITY % list.class           "ulist|olist|slist|glist
83                                %local.list.class;">
84
85<!ENTITY % local.speclist.class "">
86<!ENTITY % speclist.class       "orglist|blist
87                                %local.speclist.class;">
88
89<!ENTITY % local.note.class     "">
90<!ENTITY % note.class           "note|issue|wfcnote|vcnote
91                                |constraintnote %local.note.class;">
92
93<!ENTITY % local.illus.class    "">
94<!ENTITY % illus.class          "eg|graphic|scrap|table|definitions
95                                |proto|example
96                                %local.illus.class;">
97
98<!-- ............................................................... -->
99<!-- Entities for classes of phrase-level elements ................. -->
100<!-- ............................................................... -->
101
102<!--
103#1997-12-29: maler: Added xspecref to %ref.class;.
104#1998-03-10: maler: Added %ednote.class;.
105#                   Added "local" entities for customization.
106#2000-03-07: maler: Added function, var, el, att, and attval to
107#                   %tech.class;.
108#                   Added sub, sup, and phrase to %emph.class;.
109-->
110
111<!ENTITY % local.annot.class    "">
112<!ENTITY % annot.class          "footnote
113                                %local.annot.class;">
114
115<!ENTITY % local.termdef.class  "">
116<!ENTITY % termdef.class        "termdef|term
117                                %local.termdef.class;">
118
119<!ENTITY % local.emph.class     "">
120<!ENTITY % emph.class           "emph|phrase|quote|sub|sup
121                                %local.emph.class;">
122
123<!ENTITY % local.ref.class      "">
124<!ENTITY % ref.class            "bibref|specref|termref|titleref
125                                |xspecref|xtermref
126                                %local.ref.class;">
127
128<!ENTITY % local.loc.class      "">
129<!ENTITY % loc.class            "loc
130                                %local.loc.class;">
131
132<!ENTITY % local.tech.class     "">
133<!ENTITY % tech.class           "kw|nt|xnt|code|function|var
134                                |el|att|attval
135                                %local.tech.class;">
136
137<!ENTITY % local.ednote.class   "">
138<!ENTITY % ednote.class         "ednote
139                                %local.ednote.class;">
140
141<!-- ............................................................... -->
142<!-- Entities for mixtures of standalone elements .................. -->
143<!-- ............................................................... -->
144
145<!--
146#1997-09-30: maler: Created %p.mix; to eliminate p from self.
147#1997-09-30: maler: Added %speclist.class; to %obj.mix; and %p.mix;.
148#1997-09-30: maler: Added %note.class; to %obj.mix; and %p.mix;.
149#1997-10-16: maler: Created %entry.mix;.  Note that some elements
150#                   left out here are still allowed in termdef,
151#                   which entry can contain through %p.pcd.mix;.
152#1997-11-28: maler: Added %p.class; to %statusobj.mix;.
153#1998-03-10: maler: Added %ednote.class; to all mixtures, except
154#                   %p.mix; and %statusobj.mix;, because paragraphs
155#                   and status paragraphs will contain ednote
156#                   through %p.pcd.mix;.
157#1998-03-23: maler: Added %termdef.mix; (broken out from
158#                    %termdef.pcd.mix;).
159#1998-05-14: maler: Removed %statusobj.mix; and all mentions of
160#                   %statusp.mix;.
161-->
162
163<!ENTITY % div.mix
164        "%p.class;|%list.class;|%speclist.class;|%note.class;
165        |%illus.class;|%ednote.class;">
166<!ENTITY % obj.mix
167        "%p.class;|%list.class;|%speclist.class;|%note.class;
168        |%illus.class;|%ednote.class;">
169<!ENTITY % p.mix
170        "%list.class;|%speclist.class;|%note.class;|%illus.class;">
171<!ENTITY % entry.mix
172        "%list.class;|note|eg|graphic|%ednote.class;">
173<!ENTITY % hdr.mix
174        "%p.class;|%list.class;|%ednote.class;">
175<!ENTITY % termdef.mix
176        "%note.class;|%illus.class;">
177
178<!-- ............................................................... -->
179<!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->
180<!-- ............................................................... -->
181
182<!--    Note that %termdef.pcd.mix contains %note.class;
183        and %illus.class;, considered standalone elements. -->
184
185<!--
186#1997-09-30: maler: Added scrap and %note.class; to %termdef.pcd.mix;.
187#1997-11-28: maler: Added %loc.class; to %p.pcd.mix;.
188#1998-03-10: maler: Added %ednote.class; to all mixtures.
189#1998-03-23: maler: Moved some %termdef.pcd.mix; stuff out to
190#                   %termdef.mix;.
191#1998-05-14: maler: Removed %statusp.pcd.mix;.
192#1998-05-21: maler: Added constraint element to %eg.pcd.mix;.
193#1999-07-02: maler: Added %loc.class; to %head.pcd.mix;,
194#                   %label.pcd.mix;, %eg.pcd.mix;, %termdef.pcd.mix;,
195#                   %tech.pcd.mix; (net: all PCD mixes have it).
196#                   Removed unused %loc.pcd.mix;.
197-->
198
199<!ENTITY % p.pcd.mix
200        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
201        |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
202<!ENTITY % head.pcd.mix
203        "#PCDATA|%annot.class;|%emph.class;|%tech.class;
204        |%loc.class;|%ednote.class;">
205<!ENTITY % label.pcd.mix
206        "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
207        |%tech.class;|%loc.class;|%ednote.class;">
208<!ENTITY % eg.pcd.mix
209        "#PCDATA|%annot.class;|%emph.class;|%loc.class;
210        |%ednote.class;|constraint">
211<!ENTITY % termdef.pcd.mix
212        "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
213        |%loc.class;|%ednote.class;">
214<!ENTITY % bibl.pcd.mix
215        "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
216<!ENTITY % tech.pcd.mix
217        "#PCDATA|%loc.class;|%ednote.class;">
218
219<!-- ............................................................... -->
220<!-- Entities for customizable content models ...................... -->
221<!-- ............................................................... -->
222
223<!--
224#1998-03-10: maler: Added customization entities.
225#1998-05-14: maler: Allowed prevlocs and latestloc in either order.
226#1999-07-02: maler: Made version optional; added copyright element.
227#2000-03-07: maler: Allowed status and abstract in opposite order.
228-->
229
230<!ENTITY % spec.mdl
231        "header, front?, body, back?">
232
233<!ENTITY % header.mdl
234        "title, subtitle?, version?, w3c-designation, w3c-doctype,
235        pubdate, notice*, publoc, ((prevlocs, latestloc?) |
236        (latestloc, prevlocs?))?, authlist, copyright?,
237        ((status, abstract) | (abstract, status)), pubstmt?,
238        sourcedesc?, langusage, revisiondesc">
239
240<!ENTITY % pubdate.mdl
241        "day?, month, year">
242
243<!-- ............................................................... -->
244<!-- Entities for common attributes ................................ -->
245<!-- ............................................................... -->
246
247<!--
248#2000-03-07: maler: Added %argtypes;.
249-->
250
251<!--    argtypes:
252        Values for function prototype argument datatypes. -->
253<!ENTITY % argtypes
254        '(boolean
255         |expression
256         |location-set
257         |node-set
258         |number
259         |object
260         |point
261         |range
262         |string)'>
263
264<!--    key attribute:
265        Optionally provides a sorting or indexing key, for cases when
266        the element content is inappropriate for this purpose. -->
267<!ENTITY % key.att
268        'key                    CDATA           #IMPLIED'>
269
270<!--    def attribute:
271        Points to the element where the relevant definition can be
272        found, using the IDREF mechanism.  %def.att; is for optional
273        def attributes, and %def-req.att; is for required def
274        attributes. -->
275<!ENTITY % def.att
276        'def                    IDREF           #IMPLIED'>
277<!ENTITY % def-req.att
278        'def                    IDREF           #REQUIRED'>
279
280<!--    ref attribute:
281        Points to the element where more information can be found,
282        using the IDREF mechanism.  %ref.att; is for optional
283        ref attributes, and %ref-req.att; is for required ref
284        attributes. -->
285<!ENTITY % ref.att
286        'ref                    IDREF           #IMPLIED'>
287<!ENTITY % ref-req.att
288        'ref                    IDREF           #REQUIRED'>
289
290<!--
291#1998-03-23: maler: Added show and actuate attributes to href.
292#                   Added semi-common xml:space attribute.
293#1998-08-22: maler: Used new xlink:form and #IMPLIED features.
294#1999-07-02: maler: Reorganized XLink-related entities completely;
295#                   added xmlns:xlink attribute to the mix.
296#2000-03-07: maler: Updated XLink usage to February 2000 draft,
297#                   except that href still has no namespace prefix.
298-->
299
300<!--    xmlns:xlink and xlink:type attributes:
301        xmlns:xlink declares the association of the xlink prefix
302        with the namespace created by the XLink specification.
303        xlink:type identifies an element as an XLink "simple" linking
304        element. -->
305<!ENTITY % simple-xlink.att
306        'xmlns:xlink            CDATA   #FIXED
307                                        "http://www.w3.org/1999/xlink"
308        xlink:type              CDATA   #FIXED "simple" '>
309
310<!--    href attributes:
311        The href attribute locates the remote-resource half of a
312        simple link; the element on which the href appears is the
313        local-resource half.  Some elements are usable links only if
314        the author chooses to supply a functional href.  The attribute
315        name should really be xlink:href, but is kept without the
316        prefix for now in order to be backwards-compatible. -->
317
318<!ENTITY % href.att
319        'href                   CDATA           #IMPLIED '>
320<!ENTITY % href-req.att
321        'href                   CDATA           #REQUIRED '>
322
323<!--    xlink:show and xlink:actuate attributes:
324        These attributes offer instructions to the display engine
325        about how to handle traversal to resource indicated by an
326        href locator. -->
327<!ENTITY % auto-embed.att
328        'xlink:show             CDATA           #FIXED "embed"
329        xlink:actuate           CDATA           #FIXED "onLoad" '>
330<!ENTITY % user-replace.att
331        'xlink:show             CDATA           #FIXED "replace"
332        xlink:actuate           CDATA           #FIXED "onRequest" '>
333<!ENTITY % user-new.att
334        'xlink:show             CDATA           #FIXED "new"
335        xlink:actuate           CDATA           #FIXED "onRequest" '>
336
337<!--    xml:space attribute:
338        Indicates that the element contains whitespace that the
339        formatter or other application should retain, as appropriate
340        to its function. -->
341<!ENTITY % xmlspace.att
342        'xml:space              (default
343                                |preserve)      #FIXED "preserve" '>
344
345<!--
346#2000-03-07: maler: Added common diff attribute.  Made %role.att;.
347-->
348
349<!--    diff attribute:
350        Indicates in what way the element has changed.  When a value
351        is not provided, that subelement should inherit a value from
352        its parent.  If the root element has no value supplied,
353        assume "off". -->
354<!ENTITY % diff.att
355        'diff                   (chg
356                                |add
357                                |del
358                                |off)           #IMPLIED'>
359
360<!--    role attribute:
361        Extends the useful life of the DTD by allowing authors to
362        make a subtype of any element.  No default. -->
363<!ENTITY % role.att
364        'role                   NMTOKEN         #IMPLIED'>
365
366<!--    Common attributes:
367        Every element has an ID attribute for links, a role
368        attribute, and a diff attribute. %common.att; is for
369        common attributes where the ID is optional, and
370        %common-idreq.att; is for common attributes where the
371        ID is required. -->
372<!ENTITY % common.att
373        'id                     ID              #IMPLIED
374        %role.att;
375        %diff.att;'>
376<!ENTITY % common-idreq.att
377        'id                     ID              #REQUIRED
378        %role.att;
379        %diff.att;'>
380
381<!-- ............................................................... -->
382<!-- Common elements ............................................... -->
383<!-- ............................................................... -->
384
385<!--    head: Title on divisions, productions, and the like -->
386<!ELEMENT head (%head.pcd.mix;)*>
387<!ATTLIST head %common.att;>
388
389<!-- ............................................................... -->
390<!-- Major specification structure ................................. -->
391<!-- ............................................................... -->
392
393<!--
394#1998-03-10: maler: Made spec content model easily customizable.
395#1999-07-02: maler: Added doctype atts and status att.
396#2000-03-07: maler: Added cr, issues, and dispcmts to w3c-doctype.
397-->
398
399<!ELEMENT spec (%spec.mdl;)>
400<!--    w3c-doctype attributes:
401        Indicates the type of document, so that the appropriate
402        stylesheet or workflow routing can be applied.  Should
403        *not* generate any text (such as the "REC-" or "NOTE-"
404        prefix on the W3C designation content).  No default.  If
405        w3c-doctype is "other", other-doctype should be filled in.
406
407        status attribute:
408        Indicates the stage of review of the document.  May affect
409        the stylesheet's treatment of ednotes (e.g., whether to
410        output them).  No default. -->
411
412<!ATTLIST spec
413        %common.att;
414        w3c-doctype     (cr
415                        |dispcmts
416                        |issues
417                        |note
418                        |other
419                        |pr
420                        |rec
421                        |wd)                    #IMPLIED
422        other-doctype   CDATA                   #IMPLIED
423        status          (int-review
424                        |ext-review
425                        |final)                 #IMPLIED
426>
427
428<!ELEMENT front (div1+)>
429<!ATTLIST front %common.att;>
430
431<!ELEMENT body (div1+)>
432<!ATTLIST body %common.att;>
433
434<!--
435#1997-09-30: maler: Added inform-div1 to back content.
436-->
437
438<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
439<!ATTLIST back %common.att;>
440
441<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
442<!ATTLIST div1 %common.att;>
443
444<!--
445#1997-09-30: maler: Added inform-div1 declarations.
446#2000-03-07: maler: Added div5 level.
447-->
448
449<!--    inform-div1: Non-normative division in back matter -->
450<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
451<!ATTLIST inform-div1 %common.att;>
452
453<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
454<!ATTLIST div2 %common.att;>
455
456<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
457<!ATTLIST div3 %common.att;>
458
459<!ELEMENT div4 (head, (%div.mix;)*, div5*)>
460<!ATTLIST div4 %common.att;>
461
462<!ELEMENT div5 (head, (%div.mix;)*)>
463<!ATTLIST div5 %common.att;>
464
465<!-- ............................................................... -->
466<!-- Specification header .......................................... -->
467<!-- ............................................................... -->
468
469<!--
470#1998-03-10: maler: Made header content model easily customizable.
471-->
472
473<!ELEMENT header (%header.mdl;)>
474<!ATTLIST header %common.att;>
475
476<!--    Example of title: "Extensible Cheese Language (XCL)" -->
477<!ELEMENT title (#PCDATA)>
478<!ATTLIST title %common.att;>
479
480<!--    Example of subtitle: "A Cheesy Specification" -->
481<!ELEMENT subtitle (#PCDATA)>
482<!ATTLIST subtitle %common.att;>
483
484<!--    Example of version: "Version 666.0" -->
485<!ELEMENT version (#PCDATA)>
486<!ATTLIST version %common.att;>
487
488<!--    Example of w3c-designation: "WD-xcl-19991231" -->
489<!ELEMENT w3c-designation (#PCDATA)>
490<!ATTLIST w3c-designation %common.att;>
491
492<!--    Example of w3c-doctype: "W3C Working Draft" -->
493<!ELEMENT w3c-doctype (#PCDATA)>
494<!ATTLIST w3c-doctype %common.att;>
495
496<!--
497#1998-03-10: maler: Made pubdate content model easily customizable.
498-->
499
500<!ELEMENT pubdate (%pubdate.mdl;)>
501<!ATTLIST pubdate %common.att;>
502
503<!ELEMENT day (#PCDATA)>
504<!ATTLIST day %common.att;>
505
506<!ELEMENT month (#PCDATA)>
507<!ATTLIST month %common.att;>
508
509<!ELEMENT year (#PCDATA)>
510<!ATTLIST year %common.att;>
511
512<!--
513#1999-07-02: maler: Declared copyright element.
514-->
515
516<!ELEMENT copyright (%hdr.mix;)+>
517<!ATTLIST copyright %common.att;>
518
519<!--    Example of notice: "This draft is for public comment..." -->
520<!ELEMENT notice (%hdr.mix;)+>
521<!ATTLIST notice %common.att;>
522
523<!--
524#2000-03-07: maler: Broadened models of *loc to %p.pcd.mix;.
525-->
526
527<!ELEMENT publoc (%p.pcd.mix;)*>
528<!ATTLIST publoc %common.att;>
529
530<!ELEMENT prevlocs (%p.pcd.mix;)*>
531<!ATTLIST prevlocs %common.att;>
532
533<!ELEMENT latestloc (%p.pcd.mix;)*>
534<!ATTLIST latestloc %common.att;>
535
536<!--      loc (defined in "Phrase-level elements" below) -->
537
538<!ELEMENT authlist (author+)>
539<!ATTLIST authlist %common.att;>
540
541<!--
542#1997-09-30: maler: Made affiliation optional.
543#1998-03-10: maler: Made email optional.
544-->
545
546<!ELEMENT author (name, affiliation?, email?)>
547<!ATTLIST author %common.att;>
548
549<!ELEMENT name (#PCDATA)>
550<!ATTLIST name
551        %common.att;
552        %key.att;>
553
554<!ELEMENT affiliation (#PCDATA)>
555<!ATTLIST affiliation %common.att;>
556
557<!--
558#1999-07-02: maler: Added show/actuate attributes and default values.
559-->
560
561
562<!ELEMENT email (#PCDATA)>
563<!--    href attribute:
564        email functions as a hypertext reference through this
565        required attribute.  Typically the reference would use
566        the mailto: scheme.  E.g.:
567
568<email href="mailto:elm@arbortext.com">elm@arbortext.com</email>
569        -->
570
571<!ATTLIST email
572        %common.att;
573        %simple-xlink.att;
574        %href-req.att;
575        %user-new.att;>
576
577<!--
578#1998-05-15: maler: Changed status content from %statusobj.mix;
579#                   to plain %obj.mix;.  statusp is obsolete.
580-->
581
582<!ELEMENT status (%obj.mix;)+>
583<!ATTLIST status %common.att;>
584
585<!ELEMENT abstract (%hdr.mix;)*>
586<!ATTLIST abstract %common.att;>
587
588<!ELEMENT pubstmt (%hdr.mix;)+>
589<!ATTLIST pubstmt %common.att;>
590
591<!ELEMENT sourcedesc (%hdr.mix;)+>
592<!ATTLIST sourcedesc %common.att;>
593
594<!ELEMENT langusage (language+)>
595<!ATTLIST langusage %common.att;>
596
597<!ELEMENT language (#PCDATA)>
598<!ATTLIST language %common.att;>
599
600<!ELEMENT revisiondesc (%hdr.mix;)+>
601<!ATTLIST revisiondesc %common.att;>
602
603<!-- ............................................................... -->
604<!-- Paragraph ..................................................... -->
605<!-- ............................................................... -->
606
607<!--
608#1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
609#1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix;
610#                   references.
611#1997-12-29: maler: Changed order of %statusobj.mix; and
612#                   %statusp.pcd.mix; references.
613#1998-05-14: maler: Removed statusp declarations.
614-->
615
616<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
617<!ATTLIST p %common.att;>
618
619<!-- ............................................................... -->
620<!-- Regular lists ................................................. -->
621<!-- ............................................................... -->
622
623<!--    ulist: Unordered list, typically bulleted. -->
624<!ELEMENT ulist (item+)>
625<!--    spacing attribute:
626        Use "normal" to get normal vertical spacing for items;
627        use "compact" to get less spacing.  The default is dependent
628        on the stylesheet. -->
629<!ATTLIST ulist
630        %common.att;
631        spacing         (normal|compact)        #IMPLIED>
632
633<!--    olist: Ordered list, typically numbered. -->
634<!ELEMENT olist (item+)>
635<!--    spacing attribute:
636        Use "normal" to get normal vertical spacing for items;
637        use "compact" to get less spacing.  The default is dependent
638        on the stylesheet. -->
639<!ATTLIST olist
640        %common.att;
641        spacing         (normal|compact)        #IMPLIED>
642
643<!ELEMENT item (%obj.mix;)+>
644<!ATTLIST item %common.att;>
645
646<!--    slist: Simple list, typically with no mark. -->
647<!ELEMENT slist (sitem+)>
648<!ATTLIST slist %common.att;>
649
650<!ELEMENT sitem (%p.pcd.mix;)*>
651<!ATTLIST sitem %common.att;>
652
653<!--    glist: Glossary list, typically two-column. -->
654<!ELEMENT glist (gitem+)>
655<!ATTLIST glist %common.att;>
656
657<!ELEMENT gitem (label, def)>
658<!ATTLIST gitem %common.att;>
659
660<!ELEMENT label (%label.pcd.mix;)*>
661<!ATTLIST label %common.att;>
662
663<!ELEMENT def (%obj.mix;)*>
664<!ATTLIST def %common.att;>
665
666<!-- ............................................................... -->
667<!-- Special lists ................................................. -->
668<!-- ............................................................... -->
669
670<!--    blist: Bibliography list. -->
671<!ELEMENT blist (bibl+)>
672<!ATTLIST blist %common.att;>
673
674<!--
675#1999-07-02: maler: Added show/actuate attributes and default values.
676-->
677
678<!ELEMENT bibl (%bibl.pcd.mix;)*>
679<!--    href attribute:
680        bibl optionally functions as a hypertext reference to the
681        referred-to resource through this attribute.  E.g.:
682
683        <bibl href="http://www.my.com/doc.htm">My Document</bibl>
684        -->
685<!ATTLIST bibl
686        %common.att;
687        %simple-xlink.att;
688        %href.att;
689        %user-replace.att;
690        %key.att;>
691
692<!--    orglist: Organization member list. -->
693<!ELEMENT orglist (member+)>
694<!ATTLIST orglist %common.att;>
695
696<!--
697#1997-09-30: maler: Added optional affiliation.
698-->
699
700<!ELEMENT member (name, affiliation?, role?)>
701<!ATTLIST member %common.att;>
702
703<!--      name (defined in "Specification header" above) -->
704<!--      affiliation (defined in "Specification header" above) -->
705
706<!ELEMENT role (#PCDATA)>
707<!ATTLIST role %common.att;>
708
709<!-- ............................................................... -->
710<!-- Notes ......................................................... -->
711<!-- ............................................................... -->
712
713<!ELEMENT note (%obj.mix;)+>
714<!ATTLIST note %common.att;>
715
716<!--
717#1998-05-14: maler: Declared issue element.
718#2000-03-07: maler: Added head, source, resolution, and status.
719-->
720
721<!ELEMENT issue (head?, source*, (%obj.mix;)+, resolution?)>
722<!--    status attribute:
723        Indicates whether the issue is open or closed.  Note that
724        the lack of a resolution element does not necessarily mean
725        that the issue is still open. -->
726<!ATTLIST issue
727        id              ID              #REQUIRED
728        %role.att;
729        %diff.att;
730        status          (open
731                        |closed)        "open"
732>
733
734<!ELEMENT source (%p.pcd.mix;)*>
735<!ATTLIST source
736        %common.att;>
737
738<!ELEMENT resolution (%obj.mix;)+>
739<!ATTLIST resolution %common.att;>
740
741<!--    wfcnote: Well-formedness constraint note. -->
742<!ELEMENT wfcnote (head, (%obj.mix;)+)>
743<!--    ID attribute:
744        wfcnote must have an ID so that it can be pointed to
745        from a wfc element in a production. -->
746<!ATTLIST wfcnote
747        %common-idreq.att;>
748
749<!--    vcnote: Validity constraint note. -->
750<!ELEMENT vcnote (head, (%obj.mix;)+)>
751<!--    ID attribute:
752        vcnote must have an ID so that it can be pointed to
753        from a vc element in a production. -->
754<!ATTLIST vcnote
755        %common-idreq.att;>
756
757<!--
758#1998-05-21: maler: Declared generic constraintnote element.
759-->
760
761<!--    constraintnote: Generic constraint note. -->
762<!ELEMENT constraintnote (head, (%obj.mix;)+)>
763<!--    ID attribute:
764        constraintnote must have an ID so that it can be
765        pointed to from a constraint element in a production. -->
766<!--    type attribute:
767        constraintnote must have a type value keyword so that
768        it can be correctly characterized in the specification. -->
769<!ATTLIST constraintnote
770        %common-idreq.att;
771        type            NMTOKEN         #REQUIRED>
772
773<!-- ............................................................... -->
774<!-- Basic display elements ........................................ -->
775<!-- ............................................................... -->
776
777<!--
778#1998-03-23: maler: Added xml:space attribute.
779-->
780
781<!--    eg: Example element, with whitespace respected. -->
782<!ELEMENT eg (%eg.pcd.mix;)*>
783<!ATTLIST eg
784        %common.att;
785        %xmlspace.att;>
786
787<!--
788#2000-03-07: maler: Removed the xml:attributes attribute.
789#                   Added %local.graphic.att;.
790-->
791
792<!--    graphic: Displayed graphic.  Graphic data should be
793        displayed at the point where it is referenced.  Not
794        actually conforming to XLink right now. -->
795<!ELEMENT graphic EMPTY>
796<!--    source attribute:
797        The graphic data must reside at the location pointed to. -->
798<!ENTITY % local.graphic.att "">
799<!ATTLIST graphic
800        %common.att;
801        %simple-xlink.att;
802        source                  CDATA           #REQUIRED
803        %auto-embed.att;
804        alt                     CDATA           #IMPLIED
805        %local.graphic.att;>
806
807<!--
808#2000-03-07: maler: Added proto element structure.
809-->
810
811<!--    proto: Function prototype, in the XPath/XPointer style. -->
812<!ELEMENT proto (arg*)>
813<!ATTLIST proto
814        %common.att;
815        name            NMTOKEN         #REQUIRED
816        return-type     %argtypes;      #REQUIRED
817>
818
819<!ELEMENT arg EMPTY>
820<!ATTLIST arg
821        %common.att;
822        type            %argtypes;      #REQUIRED
823        occur           (opt|req)       #IMPLIED
824>
825
826<!--
827#2000-03-07: maler: Added example element.
828-->
829
830<!ELEMENT example (head?, (%obj.mix;)+)>
831<!ATTLIST example %common.att;>
832
833<!-- ............................................................... -->
834<!-- EBNF .......................................................... -->
835<!-- ............................................................... -->
836
837<!--
838#1997-11-28: maler: Added prodgroup to scrap and defined it.
839#1998-05-21: maler: Added constraint to prod.
840#1999-07-02: maler: Added prodrecap to scrap; broadened scrap model.
841#                   Added headstyle attribute to scrap.
842-->
843
844<!--    scrap: Collection of EBNF language productions. -->
845<!ELEMENT scrap (head, (prodgroup | prod | bnf | prodrecap)+)>
846<!--    lang attribute:
847        The scrap can link to a description of the language used,
848        found in a language element in the header.
849        headstyle attribute:
850        Allows a scrap title to be suppressed from output.  To be
851        used only when a scrap title directly next to a section
852        title is distracting or repetetive. -->
853<!ATTLIST scrap
854        %common.att;
855        lang            IDREF           #IMPLIED
856        headstyle       (show|suppress) "show"
857>
858
859<!--    prodgroup: Sub-collection of productions, needed for
860        formatting reasons. -->
861<!ELEMENT prodgroup (prod+)>
862<!--    pcw<n> attributes:
863        Presentational attributes to control the width
864        of the "pseudo-table" columns used to output
865        groups of productions. -->
866<!ATTLIST prodgroup
867        %common.att;
868        pcw1            CDATA           #IMPLIED
869        pcw2            CDATA           #IMPLIED
870        pcw3            CDATA           #IMPLIED
871        pcw4            CDATA           #IMPLIED
872        pcw5            CDATA           #IMPLIED
873>
874
875<!--    prod: EBNF language production. -->
876<!ELEMENT prod (lhs, (rhs, (com|wfc|vc|constraint)*)+)>
877<!--    ID attribute:
878        The production must have an ID so that cross-references
879        (specref) and mentions of nonterminals (nt) can link to
880        it. -->
881<!ATTLIST prod
882        %common-idreq.att;>
883
884<!--    lhs: Left-hand side of production. -->
885<!ELEMENT lhs (#PCDATA)>
886<!ATTLIST lhs %common.att;>
887
888<!--    rhs: Right-hand side of production; may have many
889        "right-hand sides," one to a line. -->
890<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
891<!ATTLIST rhs %common.att;>
892
893<!--      nt and xnt (defined in "Phrase-level elements" below) -->
894
895<!--
896#1997-11-28: maler: Added loc and bibref to com content.
897-->
898
899<!--    com: Production comment. -->
900<!ELEMENT com (#PCDATA|loc|bibref)*>
901<!ATTLIST com %common.att;>
902
903<!--    wfc: Reference to a well-formedness constraint; should
904        generate the head of the wfcnote pointed to. -->
905<!ELEMENT wfc EMPTY>
906<!--    def attribute:
907        Each well formedness tagline in a production must link to the
908        wfcnote that defines it. -->
909<!ATTLIST wfc
910        %def-req.att;
911        %common.att;>
912
913<!--    vc: Reference to a validity constraint; should generate
914        the head of the vcnote pointed to. -->
915<!ELEMENT vc EMPTY>
916<!--    def attribute:
917        Each validity tagline in a production must link to the vcnote
918        that defines it. -->
919<!ATTLIST vc
920        %def-req.att;
921        %common.att;>
922
923<!--
924#1998-05-21: maler: Declared generic constraint element.
925-->
926
927<!--    constraint: Reference to a generic constraint; should
928        generate the head of the constraintnote pointed to. -->
929<!ELEMENT constraint EMPTY>
930<!--    def attribute:
931        Each constraint tagline in a production must link to the
932        constraint note that defines it. -->
933<!ATTLIST constraint
934        %def-req.att;
935        %common.att;>
936
937<!--
938#1998-03-23: maler: Added xml:space attribute.
939-->
940
941<!--    bnf: Un-marked-up EBNF production, with whitespace
942        respected. -->
943<!ELEMENT bnf (%eg.pcd.mix;)*>
944<!ATTLIST bnf
945        %common.att;
946        %xmlspace.att;>
947
948<!--
949#1999-07-02: maler: Declared prodrecap.
950-->
951
952<!--    prodrecap: Reference to production or bnf that appears
953        in its "normative" form elsewhere in the spec; should
954        generate a copy of the original production, without
955        a production number next to it. -->
956<!ELEMENT prodrecap EMPTY>
957<!ATTLIST prodrecap
958        %common.att;
959        %ref-req.att;>
960
961<!-- ............................................................... -->
962<!-- Table ......................................................... -->
963<!-- ............................................................... -->
964
965<!--
966#1997-10-16: maler: Added table mechanism.
967#1997-11-28: maler: Added non-null system ID to entity declaration.
968#                   Added HTML table module.
969#1997-12-29: maler: IGNOREd SGML Open table model.
970#1998-03-10: maler: Removed SGML Open table model.
971#                   Merged html-tbl.mod file into main file.
972#                   Added %common.att; to all HTML table elements.
973#1998-05-14: maler: Replaced table model with full HTML 4.0 model.
974#                   Removed htable in favor of table.
975#                   Removed htbody in favor of tbody.
976-->
977
978<!ENTITY % cellhalign.att
979        'align          (left|center
980                        |right|justify
981                        |char)          #IMPLIED
982        char            CDATA           #IMPLIED
983        charoff         CDATA           #IMPLIED'>
984
985<!ENTITY % cellvalign.att
986        'valign         (top|middle
987                        |bottom
988                        |baseline)      #IMPLIED'>
989
990<!ENTITY % thtd.att
991        'abbr           CDATA           #IMPLIED
992        axis            CDATA           #IMPLIED
993        headers         IDREFS          #IMPLIED
994        scope           (row
995                        |col
996                        |rowgroup
997                        |colgroup)      #IMPLIED
998        rowspan         NMTOKEN         "1"
999        colspan         NMTOKEN         "1"'>
1000
1001<!ENTITY % width.att
1002        'width          CDATA           #IMPLIED'>
1003
1004<!ENTITY % span.att
1005        'span           NMTOKEN         "1"'>
1006
1007<!--    table: HTML-based geometric table model. -->
1008<!ELEMENT table
1009        (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
1010<!ATTLIST table
1011        %common.att;
1012        %width.att;
1013        summary         CDATA           #IMPLIED
1014        border          CDATA           #IMPLIED
1015        frame           (void|above
1016                        |below|hsides
1017                        |lhs|rhs
1018                        |vsides|box
1019                        |border)        #IMPLIED
1020        rules           (none|groups
1021                        |rows|cols
1022                        |all)           #IMPLIED
1023        cellspacing     CDATA           #IMPLIED
1024        cellpadding     CDATA           #IMPLIED>
1025
1026<!ELEMENT caption (%p.pcd.mix;)*>
1027<!ATTLIST caption %common.att;>
1028
1029<!ELEMENT col EMPTY>
1030<!ATTLIST col
1031        %common.att;
1032        %span.att;
1033        %width.att;
1034        %cellhalign.att;
1035        %cellvalign.att;>
1036
1037<!ELEMENT colgroup (col)*>
1038<!ATTLIST colgroup
1039        %common.att;
1040        %span.att;
1041        %width.att;
1042        %cellhalign.att;
1043        %cellvalign.att;>
1044
1045<!ELEMENT thead (tr)+>
1046<!ATTLIST thead
1047        %common.att;
1048        %cellhalign.att;
1049        %cellvalign.att;>
1050
1051<!ELEMENT tfoot (tr)+>
1052<!ATTLIST tfoot
1053        %common.att;
1054        %cellhalign.att;
1055        %cellvalign.att;>
1056
1057<!ELEMENT tbody (tr)+>
1058<!ATTLIST tbody
1059        %common.att;
1060        %cellhalign.att;
1061        %cellvalign.att;>
1062
1063<!ELEMENT tr (th|td)+>
1064<!ATTLIST tr
1065        %common.att;
1066        %cellhalign.att;
1067        %cellvalign.att;>
1068
1069<!ELEMENT th (%p.pcd.mix;|%p.mix;)*>
1070<!ATTLIST th
1071        %common.att;
1072        %thtd.att;
1073        %cellhalign.att;
1074        %cellvalign.att;>
1075
1076<!ELEMENT td (%p.pcd.mix;|%p.mix;)*>
1077<!ATTLIST td
1078        %common.att;
1079        %thtd.att;
1080        %cellhalign.att;
1081        %cellvalign.att;>
1082
1083<!-- ............................................................... -->
1084<!-- IDL structures for DOM specifications ......................... -->
1085<!-- ............................................................... -->
1086
1087<!-- ............................................................... -->
1088<!-- Specialized entities for classes .............................. -->
1089
1090<!ENTITY % idl-desc.class
1091        "p|note">
1092
1093<!ENTITY % idl-tdef.class
1094        "typedef|constant|exception|reference|group">
1095
1096<!ENTITY % idl-mod.class
1097        "module|interface">
1098
1099<!ENTITY % idl-struct.class
1100        "struct|enum|sequence|union|typename">
1101
1102<!ENTITY % idl-meth.class
1103        "method|attribute">
1104
1105<!-- ............................................................... -->
1106<!-- Specialized entities for mixtures ............................. -->
1107
1108<!--    Quick reference to content model mixtures:
1109
1110                        desc tdef mod struct meth
1111group                     x    x   x    x      x
1112definitions, module       x    x   x
1113interface                 x    x               x
1114typedef, case, component                x
1115-->
1116
1117<!ENTITY % idl-grp.mix
1118        "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;
1119        |%idl-struct.class;|%idl-meth.class;">
1120
1121<!ENTITY % idl-defn.mix
1122        "%idl-desc.class;|%idl-tdef.class;|%idl-mod.class;">
1123
1124<!ENTITY % idl-intfc.mix
1125        "%idl-desc.class;|%idl-tdef.class;|%idl-meth.class;">
1126
1127<!ENTITY % idl-type.mix
1128        "%idl-struct.class;">
1129
1130<!-- ............................................................... -->
1131<!-- Specialized entities for common attributes .................... -->
1132
1133<!--    name attribute:
1134        Provides a name.  Required. -->
1135<!ENTITY % idl-name.att
1136        'name                   CDATA           #REQUIRED'>
1137
1138<!--    type attribute:
1139        Provides a type.  Required. -->
1140<!ENTITY % idl-type.att
1141        'type                   CDATA           #REQUIRED'>
1142
1143<!-- ............................................................... -->
1144<!-- Common IDL element ............................................ -->
1145
1146<!ELEMENT descr ((%obj.mix;)*)>
1147<!ATTLIST descr %common.att;>
1148
1149<!-- ............................................................... -->
1150<!-- IDL definition elements ....................................... -->
1151
1152<!--    definitions: Top-level element for definitions. -->
1153<!ELEMENT definitions (%idl-defn.mix;)+>
1154<!ATTLIST definitions %common.att;>
1155
1156<!--    group: Element used to group a set of definitions. -->
1157
1158<!ELEMENT group (descr, (%idl-grp.mix;)*)>
1159<!ATTLIST group
1160        %common.att;
1161        %idl-name.att;>
1162
1163<!--    interface: Definition of an interface. -->
1164<!ELEMENT interface (descr, (%idl-intfc.mix;)*)>
1165<!ATTLIST interface
1166        %common.att;
1167        %idl-name.att;
1168        inherits        CDATA           #IMPLIED>
1169
1170<!--    module: Definition of a module. -->
1171<!ELEMENT module (descr, (%idl-defn.mix;)*)>
1172<!ATTLIST module
1173        %common.att;
1174        %idl-name.att;>
1175
1176<!--    reference: Reference to some other declaration. -->
1177<!ELEMENT reference EMPTY>
1178<!ATTLIST reference
1179        %common.att;
1180        declaration     IDREF           #REQUIRED>
1181
1182<!--    typedef: Definition of a named type. -->
1183<!ELEMENT typedef (descr, (%idl-type.mix;))>
1184<!ATTLIST typedef
1185        %common.att;
1186        %idl-name.att;
1187        array.size      NMTOKEN         #IMPLIED>
1188
1189<!--    struct: Declaration of a struct type. -->
1190<!ELEMENT struct (descr, component+)>
1191<!ATTLIST struct
1192        %common.att;
1193        %idl-name.att;>
1194
1195<!--    component: Declaration of a structural member. -->
1196<!ELEMENT component (%idl-type.mix;)>
1197<!ATTLIST component
1198        %common.att;
1199        %idl-name.att;>
1200
1201<!--    union: Declaration of a union type. -->
1202<!ELEMENT union (descr, case+)>
1203<!ATTLIST union
1204        %common.att;
1205        %idl-name.att;
1206        switch.type     CDATA           #REQUIRED>
1207
1208<!ELEMENT case (descr, (%idl-type.mix;))>
1209<!ATTLIST case
1210        %common.att;
1211        labels          CDATA           #REQUIRED>
1212
1213<!--    enum: Declaration of an enum type. -->
1214<!ELEMENT enum (descr, enumerator+)>
1215<!ATTLIST enum
1216        %common.att;
1217        %idl-name.att;>
1218
1219<!ELEMENT enumerator (descr)>
1220<!ATTLIST enumerator
1221        %common.att;
1222        %idl-name.att;>
1223
1224<!--    sequence: Declaration of a sequence type (not named). -->
1225<!ELEMENT sequence (sequence*)>
1226<!ATTLIST sequence
1227        %common.att;
1228        %idl-type.att;
1229        size            NMTOKEN         #IMPLIED>
1230
1231<!--    constant: Declaration of a named constant. -->
1232<!ELEMENT constant (descr)>
1233<!ATTLIST constant
1234        %common.att;
1235        %idl-name.att;
1236        %idl-type.att;
1237        value           CDATA           #REQUIRED>
1238
1239<!--    exception: Declaration of an exception. -->
1240<!ELEMENT exception (descr, component*)>
1241<!ATTLIST exception
1242        %common.att;
1243        %idl-name.att;>
1244<!-- component (defined under struct, above)-->
1245
1246<!--    attribute: Declaration of an attribute (data member). -->
1247<!ELEMENT attribute (descr)>
1248<!ATTLIST attribute
1249        %common.att;
1250        %idl-name.att;
1251        %idl-type.att;
1252        readonly        (yes
1253                        |no)            "no">
1254
1255<!--    method: Declaration of a method. -->
1256<!ELEMENT method (descr, parameters, returns, raises)>
1257<!ATTLIST method
1258        %common.att;
1259        %idl-name.att;>
1260
1261<!ELEMENT parameters (param*)>
1262<!ATTLIST parameters %common.att;>
1263
1264<!ELEMENT param (descr)>
1265<!ATTLIST param
1266        %common.att;
1267        %idl-name.att;
1268        %idl-type.att;
1269        attr            (in
1270                        |out
1271                        |inout)         "inout">
1272
1273<!ELEMENT returns (descr)>
1274<!ATTLIST returns
1275        %common.att;
1276        %idl-type.att;>
1277
1278<!ELEMENT raises (exception*)>
1279<!-- exception (defined under constant, above)-->
1280
1281<!ELEMENT typename (#PCDATA)>
1282<!ATTLIST typename %common.att;>
1283
1284<!-- ............................................................... -->
1285<!-- Phrase-level elements ......................................... -->
1286<!-- ............................................................... -->
1287
1288<!--
1289#2000-03-07: maler: Added att and attval elements.
1290-->
1291
1292<!--    att: Attribute name. -->
1293<!ELEMENT att (%tech.pcd.mix;)*>
1294<!ATTLIST att %common.att;>
1295
1296<!--    attval: Attribute value. -->
1297<!ELEMENT attval (%tech.pcd.mix;)*>
1298<!ATTLIST attval %common.att;>
1299
1300<!--    bibref: Reference to a bibliography list entry; should
1301        generate, in square brackets, "key" on bibl. -->
1302<!ELEMENT bibref EMPTY>
1303<!--    ref attribute:
1304        A bibliography reference must link to the bibl element that
1305        describes the resource. -->
1306<!ATTLIST bibref
1307        %common.att;
1308        %ref-req.att;>
1309
1310<!ELEMENT code (%tech.pcd.mix;)*>
1311<!ATTLIST code %common.att;>
1312
1313<!--
1314#1998-03-10: maler: Declared ednote and related elements.
1315#1999-07-02: maler: Changed edtext content from #PCDATA to %p.pcd.mix;.
1316-->
1317
1318<!--    ednote: Editorial note for communication among editors. -->
1319<!ELEMENT ednote (name?, date?, edtext)>
1320<!ATTLIST ednote %common.att;>
1321
1322<!ELEMENT date (#PCDATA)>
1323<!ATTLIST date %common.att;>
1324
1325<!ELEMENT edtext (%p.pcd.mix;)*>
1326<!ATTLIST edtext %common.att;>
1327
1328<!--
1329#2000-03-07: maler: Added el element.
1330-->
1331
1332<!--    el: Element type name (GI). -->
1333<!ELEMENT el (%tech.pcd.mix;)*>
1334<!ATTLIST el %common.att;>
1335
1336<!--
1337#2000-03-07: maler: Expanded emph to %p.pcd.mix;.
1338-->
1339
1340<!ELEMENT emph (%p.pcd.mix;)*>
1341<!ATTLIST emph %common.att;>
1342
1343<!--    footnote: Both footnote content and call to footnote. -->
1344<!ELEMENT footnote (%obj.mix;)+>
1345<!ATTLIST footnote %common.att;>
1346
1347<!--
1348#2000-03-07: maler: Added function and gave it content of
1349#                   %tech.pcd.mix; instead of XPath's #PCDATA.
1350-->
1351
1352<!ELEMENT function (%tech.pcd.mix;)*>
1353<!ATTLIST function %common.att;>
1354
1355<!ELEMENT kw (%tech.pcd.mix;)*>
1356<!ATTLIST kw %common.att;>
1357
1358<!--
1359#1999-07-02: maler: Added show/actuate attributes and default values.
1360-->
1361
1362<!--    loc: Generic link to a Web resource, similar to HTML's A. -->
1363<!ELEMENT loc (#PCDATA)>
1364<!--    href attribute:
1365        The purpose of a loc element is to function as a A-like
1366        hypertext link to a resource.  (Ideally, the content of loc
1367        will also mention the URI of the resource, so that readers of
1368        the printed version will be able to locate the resource.) E.g.:
1369
1370<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
1371        -->
1372<!ATTLIST loc
1373        %common.att;
1374        %simple-xlink.att;
1375        %href-req.att;
1376        %user-replace.att;>
1377
1378<!--    nt: Mention of a nonterminal in text, along with a link to
1379        the production in the current document that defines it. -->
1380<!ELEMENT nt (#PCDATA)>
1381<!--    def attribute:
1382        The nonterminal must link to the production that defines
1383        it. -->
1384<!ATTLIST nt
1385        %common.att;
1386        %def-req.att;>
1387
1388<!--
1389#2000-03-07: maler: Declared phrase.
1390-->
1391
1392<!--    phrase: "Attribute hanger" for small bits of (e.g.) differenced
1393        text in a paragraph or similar, when another element isn't handy.
1394        Beware that its content model may allow more nested elements than
1395        would normally be allowed in some contexts. -->
1396<!ELEMENT phrase (%p.pcd.mix;)*>
1397<!ATTLIST phrase %common.att;>
1398
1399<!--
1400#1998-03-10: maler: Declared quote.
1401-->
1402
1403<!--    quote: Scare quotes and other purely presentational quotes. -->
1404<!ELEMENT quote (%p.pcd.mix;)*>
1405<!ATTLIST quote %common.att;>
1406
1407<!--    specref: Reference to a div, olist item, prod, or issue
1408        in the current document; should generate italic "[n.n],
1409        Section Title" for div, "n" for numbered item, "[n]" for
1410        production, or "Issue id" for issue. -->
1411<!ELEMENT specref EMPTY>
1412<!--    ref attribute:
1413        The purpose of a specref element is to link to a div, item
1414        in an olist, or production in the current spec. -->
1415<!ATTLIST specref
1416        %common.att;
1417        %ref-req.att;>
1418
1419<!--
1420#2000-03-07: maler: Added sub and sup.
1421-->
1422
1423<!--    sub: Subscript. -->
1424<!ELEMENT sub (#PCDATA)>
1425<!ATTLIST sub %common.att;>
1426
1427<!--    sup: Superscript. -->
1428<!ELEMENT sup (#PCDATA)>
1429<!ATTLIST sup %common.att;>
1430
1431<!--    term: The term in text that is being defined in text. -->
1432<!ELEMENT term (#PCDATA)>
1433<!ATTLIST term %common.att;>
1434
1435<!--    termdef: Definition of a term in text. -->
1436<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
1437<!--    ID attribute:
1438        A term definition must have an ID so that it can be linked
1439        to from termref elements. -->
1440<!--    term attribute:
1441        The canonical form of the term or phrase being defined must
1442        appear in this attribute, even if the term or phrase also
1443        appears in the element content in identical form (e.g., in
1444        the term element). -->
1445<!ATTLIST termdef
1446        %common-idreq.att;
1447        term            CDATA           #REQUIRED>
1448
1449<!--    termref: Mention of a term, along with a link to the
1450        definition in the current document. -->
1451<!ELEMENT termref (#PCDATA)>
1452<!--    ref attribute:
1453        A term reference must link to the termdef element that
1454        defines the term. -->
1455<!ATTLIST termref
1456        %common.att;
1457        %def-req.att;>
1458
1459<!--
1460#1999-07-02: maler: Added show/actuate attributes and default values.
1461-->
1462
1463<!--    titleref: Citation of another document, which can also
1464        link to that document if it is a Web resource. -->
1465<!ELEMENT titleref (#PCDATA)>
1466<!--    href attribute:
1467        A title reference can optionally function as a hypertext
1468        link to the resource with this title.  E.g.:
1469
1470<loc href="http://www.my.com/doc.htm">http://www.my.com/doc.htm</loc>
1471        -->
1472
1473<!ATTLIST titleref
1474        %common.att;
1475        %simple-xlink.att;
1476        %href.att;
1477        %user-new.att;>
1478
1479<!--
1480#2000-03-07: maler: Added var.
1481-->
1482
1483<!--    var: String standing for a variable value that the user
1484        or system will supply.  For example: "For each node
1485        <var>x</var> in this node-set..." -->
1486<!ELEMENT var (%tech.pcd.mix;)*>
1487<!ATTLIST var %common.att;>
1488
1489<!--
1490#1999-07-02: maler: Added show/actuate attributes and default values.
1491-->
1492
1493<!--    xnt: Mention of a nonterminal in text, along with a link to
1494        the production in another document that defines it. -->
1495<!ELEMENT xnt (#PCDATA)>
1496<!--    href attribute:
1497        The nonterminal must hyperlink to a resource that serves
1498        to define it (e.g., a production in a related XML
1499        specification).  E.g.:
1500
1501<xnt href="http://www.w3.org/TR/spec.htm#prod3">Name</xnt>
1502        -->
1503
1504<!ATTLIST xnt
1505        %common.att;
1506        %simple-xlink.att;
1507        %href-req.att;
1508        %user-new.att;>
1509
1510<!--
1511#1997-12-29: maler: Declared xspecref.
1512#1999-07-02: maler: Added show/actuate attributes and default values.
1513-->
1514
1515<!--    xspecref: Reference to a div, olist item, prod, or issue
1516        in a related specification document; should generate
1517        no special text. -->
1518<!ELEMENT xspecref (#PCDATA)>
1519<!--    href attribute:
1520        The spec reference must hyperlink to the resource to
1521        cross-refer to (e.g., a section in a related XML
1522        specification).  E.g.:
1523
1524<xspecref href="http://www.w3.org/TR/spec.htm#sec2">
1525the section on constraints</xspecref>
1526        -->
1527
1528<!ATTLIST xspecref
1529        %common.att;
1530        %simple-xlink.att;
1531        %href-req.att;
1532        %user-new.att;>
1533
1534<!--
1535#1999-07-02: maler: Added show/actuate attributes and default values.
1536-->
1537
1538<!--    termref: Mention of a term, along with a link to the
1539        definition in a related document. -->
1540<!ELEMENT xtermref (#PCDATA)>
1541<!--    href attribute:
1542        The term reference must hyperlink to the resource that
1543        serves to define the term (e.g., a term definition in
1544        a related XML specification).  E.g.:
1545
1546<xtermref href="http://www.w3.org/TR/spec.htm#term5">
1547entity
1548</xtermref>
1549        -->
1550
1551<!ATTLIST xtermref
1552        %common.att;
1553        %simple-xlink.att;
1554        %href-req.att;
1555        %user-new.att;>
1556
1557<!-- ............................................................... -->
1558<!-- Unused elements for ADEPT ..................................... -->
1559<!-- ............................................................... -->
1560
1561<!--
1562#1997-09-30: maler: Added unusued elements.
1563#1997-10-14: maler: Fixed div to move nested div to the mixture.
1564#1998-05-14: maler: Added key-term, htable, and htbody.
1565#1998-11-30: maler: Added para, listitem, itemizedlist, and orderedlist.
1566-->
1567
1568<!--    The following elements are purposely declared but never
1569        referenced.  Declaring them allows them to be pasted from
1570        an HTML document, an earlier version of an XMLspec document,
1571        or a DocBook document into a document using this DTD in ADEPT.
1572        The ATD Context Transformation mechanism will try to convert
1573        them to the appropriate element for this DTD.  While this
1574        conversion will not work for all fragments, it does allow many
1575        cases to work reasonably well. -->
1576
1577<!ELEMENT div
1578        (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
1579<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
1580<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
1581<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
1582<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
1583<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
1584<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
1585<!ELEMENT pre (%eg.pcd.mix;|em)*>
1586<!ELEMENT ul (item|li)*>
1587<!ELEMENT ol (item|li)*>
1588<!ELEMENT li (#PCDATA|%obj.mix;)*>
1589<!ELEMENT em (#PCDATA)>
1590<!ELEMENT a (#PCDATA)>
1591
1592<!ELEMENT key-term (#PCDATA)>
1593<!ELEMENT htable
1594        (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
1595<!ELEMENT htbody (tr)+>
1596<!ELEMENT statusp (%p.pcd.mix;|%p.mix;)*>
1597
1598<!ELEMENT itemizedlist (listitem*)>
1599<!ELEMENT orderedlist (listitem*)>
1600<!ELEMENT listitem (para*)>
1601<!ELEMENT para (#PCDATA)>
1602
1603<!-- ............................................................... -->
1604<!-- Change history ................................................ -->
1605<!-- ............................................................... -->
1606
1607<!--
1608#1997-08-18: maler
1609#- Did a major revision.
1610#1997-09-10: maler
1611#- Updated FPI.
1612#- Removed namekey element and put key attribute on name element.
1613#- Made statusp element and supporting entities.
1614#- Added slist element with sitem+ content.
1615#- Required head on scrap and added new bnf subelement.
1616#- Added an xnt element and allowed it and nt in regular text and rhs.
1617#- Removed the ntref element.
1618#- Added back the com element to the content of rhs.
1619#- Added a key attribute to bibl.
1620#- Removed the ident element.
1621#- Added a term element to be used inside termdef.
1622#- Added an xtermref element parallel to termref.
1623#- Beefed up DTD comments.
1624#1997-09-12: maler
1625#- Allowed term element in general text.
1626#- Changed bibref to EMPTY.
1627#- Added ref.class to termdef.pcd.mix.
1628#1997-09-14: maler
1629#- Changed main attribute of xtermref from def to href.
1630#- Added termdef.class to label contents.
1631#1997-09-30: maler
1632#- Added character entity module and added new entities.
1633#- Removed p from appearing directly in self; created %p.mix;.
1634#- Added inform-div (non-normative division) element.
1635#- Fixed xtermref comment to mention href, not ref.
1636#- Extended orglist model to allow optional affiliation.
1637#- Modified author to make affiliation optional.
1638#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
1639#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
1640#- Added unused HTML elements.
1641#- Put empty system ID next to public ID in entity declarations.
1642#1997-10-14: maler
1643#- Fixed "unused" div content model to move nested div to mixture.
1644#1997-10-16: maler
1645#- Added SGML Open Exchange tables.
1646#1997-11-28: maler
1647#- Added support for prodgroup and its attributes.
1648#- Added support for HTML tables.
1649#- Added loc and bibref to content of com.
1650#- Added loc to general p content models.
1651#- Allowed p as alternative to statusp in status.
1652#- Added non-null system IDs to external parameter entity declarations.
1653#- (Modified the SGML Open table module to make it XML-compliant.)
1654#- (Modified the character entity module.)
1655#1997-12-29: maler
1656#- Moved #PCDATA occurrences to come before GIs in content models.
1657#- Removed use of the SGML Open table module.
1658#- Added xspecref element.
1659#- Ensured that all FPIs contain 4-digit year.
1660#- (Modified the character entity module.)
1661#1998-03-10: maler
1662#- Merged the character entity and table modules into the main file.
1663#- Added ldquo and rdquo entities.
1664#- Added common attributes to prodgroup.
1665#- Made the email element in header optional.
1666#- Removed reference to the SGML Open table model.
1667#- Added ednote element.
1668#- Added quote element.
1669#- Updated XLink usage to reflect 3 March 1998 WD.
1670#- Added "local" entities to the class entities for customization.
1671#- Parameterized several content models to allow for customization.
1672#1998-03-23: maler
1673#- Cleaned up some comments and removed some others.
1674#- Added xml:space semi-common attribute to eg and bnf elements.
1675#- Added show and embed attributes on all the uses of href.
1676#- Added %common.att; to all HTML table elements.
1677#- Added a real URI to the "typical invocation" comment.
1678#1998-05-14: maler
1679#- Fixed mdash, ldquo, and rdquo character entities.
1680#- Switched to the full HTML 4.0 table model.
1681#- Removed htable/htbody elements and replaced them with table/tbody.
1682#- Added issue element to %note.class; and declared it.
1683#- Allowed prevlocs and latestloc in either order.
1684#- Added key-term, htable, htbody, and statusp as unused elements.
1685#- Removed real statusp element in favor of plain p.
1686#1998-05-21: maler
1687#- Declared generic constraint and constraintnote elements.
1688#- Added constraintnote to %note.class;.
1689#- Added constraint to %eg.pcd.mix; and prod content model.
1690#1998-08-22: maler
1691#- Fixed %illus.class; to mention table instead of htable.
1692#- Added definitions to %illus.class; for DOM model.
1693#- Added DOM definitions element and its substructure.
1694#- Updated XLink usage in %href.att; to use xlink:form and #IMPLIED.
1695#- Added clarifying comments to href-using elements.
1696#1998-11-30: maler
1697#- Added new unused elements to support DocBook translation.
1698#- Updated maler phone numbers.
1699#1998-12-3: maler
1700#- Fixed character entities with respect to escaping of ampersands.
1701#- Added many more explanatory comments.
1702#1999-07-02: maler
1703#- Added %loc.class; to all PCD mixes that didn't already have it.
1704#- Removed unused %loc.pcd.mix;.
1705#- Made version in spec header optional.
1706#- Added three new attributes to spec.
1707#- Broadened content of edtext.
1708#- Added optional copyright element to header.
1709#- Reorganized XLink-related parameter entities; added xmlns:xlink.
1710#- Changed edtext content from #PCDATA to %p.pcd.mix;.
1711#- Added show/actuate atts and default values to all href elements.
1712#- Changed versioning scheme from 8-digit dates to version numbers.
1713#- Added w3c-doctype, other-doctype, status atts to spec element.
1714#- Added prodrecap element inside scrap.
1715#- Added headstyle attribute to scrap.
1716#2000-03-07: maler
1717#- Added proto element, its arg subelement, and the %argtypes; entity.
1718#- Added function, var, sub, sup, phrase, el, att, attval elements.
1719#- Expanded emph to %p.pcd.mix;.
1720#- Allowed status and abstract to appear in the opposite order.
1721#- Updated XLink usage to the latest WD, except for href and source.
1722#- Removed the xml:attributes attribute from graphic.
1723#- Added %local.graphic.att; to graphic.
1724#- Added common diff attribute.
1725#- Added div5 element.
1726#- Broadened content models of publoc, prevlocs, and latestloc.
1727#- Added head, source, resolution, and status attribute to issue.
1728#- Added cr, issues, and dispcmts to w3c-doctype attribute on spec.
1729#- Added example element.
1730-->
1731
1732<!-- ............................................................... -->
1733<!-- End of XML specification DTD .................................. -->
1734<!-- ............................................................... -->
1735