1<!-- ............................................................... --> 2<!-- XML specification DTD ......................................... --> 3<!-- ............................................................... --> 4 5<!-- 6TYPICAL INVOCATION: 7# <!DOCTYPE spec PUBLIC 8# "-//W3C//DTD Specification::19980521//EN" 9# "http://www.w3.org/XML/1998/06/xmlspec-19980521.dtd"> 10 11PURPOSE: 12 This DTD was developed for use with the XML family of W3C 13 specifications. It is an XML-compliant DTD based in part on 14 the TEI Lite and Sweb DTDs. 15 16DEPENDENCIES: 17 None. 18 19CHANGE HISTORY: 20 The list of changes is at the end of the DTD. 21 22 For all details, see the design report at: 23 24# <http://www.w3.org/XML/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 32MAINTAINER: 33 Eve Maler 34 ArborText Inc. 35 elm@arbortext.com 36 voice: +1 781 270 5750 37 fax: +1 781 273 3760 38--> 39 40<!-- ............................................................... --> 41<!-- Entities for characters and symbols ........................... --> 42 43<!-- 44#1998-03-10: maler: Added “ 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<!-- ............................................................... -->