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