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