Return to xhtml1.xhtml CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / result / valid |
1.1 ! misho 1: <?xml version="1.0"?> ! 2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "dtds/xhtml1-strict.dtd"> ! 3: <?xml-stylesheet href="W3C-PR.css" type="text/css"?> ! 4: <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> ! 5: <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ! 6: <title>XHTML 1.0: The Extensible HyperText Markup ! 7: Language</title> ! 8: <link rel="stylesheet" href="W3C-PR.css" type="text/css" /> ! 9: <style type="text/css"> ! 10: span.term { font-style: italic; color: rgb(0, 0, 192) } ! 11: code { ! 12: color: green; ! 13: font-family: monospace; ! 14: font-weight: bold; ! 15: } ! 16: ! 17: code.greenmono { ! 18: color: green; ! 19: font-family: monospace; ! 20: font-weight: bold; ! 21: } ! 22: .good { ! 23: border: solid green; ! 24: border-width: 2px; ! 25: color: green; ! 26: font-weight: bold; ! 27: margin-right: 5%; ! 28: margin-left: 0; ! 29: } ! 30: .bad { ! 31: border: solid red; ! 32: border-width: 2px; ! 33: margin-left: 0; ! 34: margin-right: 5%; ! 35: color: rgb(192, 101, 101); ! 36: } ! 37: ! 38: img { ! 39: color: white; ! 40: border: none; ! 41: } ! 42: ! 43: div.navbar { text-align: center; } ! 44: div.contents { ! 45: background-color: rgb(204,204,255); ! 46: padding: 0.5em; ! 47: border: none; ! 48: margin-right: 5%; ! 49: } ! 50: .tocline { list-style: none; } ! 51: table.exceptions { background-color: rgb(255,255,153); } ! 52: </style> ! 53: </head> ! 54: <body> ! 55: <div class="navbar"> ! 56: <a href="#toc">table of contents</a> ! 57: <hr /> ! 58: </div> ! 59: <div class="head"><p><a href="http://www.w3.org/"><img class="head" src="w3c_home.gif" alt="W3C" /></a></p> ! 60: ! 61: <h1 class="head"><a name="title" id="title">XHTML</a><sup>™</sup> 1.0: ! 62: The Extensible HyperText Markup Language</h1> ! 63: ! 64: <h2>A Reformulation of HTML 4.0 in XML 1.0</h2> ! 65: ! 66: <h3>W3C Proposed Recommendation 10 December 1999</h3> ! 67: ! 68: <dl> ! 69: <dt>This version:</dt> ! 70: ! 71: <dd><a href="http://www.w3.org/TR/1999/PR-xhtml1-19991210"> ! 72: http://www.w3.org/TR/1999/PR-xhtml1-19991210</a> <br /> ! 73: (<a href="xhtml1.ps">Postscript version</a>, ! 74: <a href="xhtml1.pdf">PDF version</a>, ! 75: <a href="xhtml1.zip">ZIP archive</a>, or ! 76: <a href="xhtml1.tgz">Gzip'd TAR archive</a>) ! 77: </dd> ! 78: ! 79: <dt>Latest version:</dt> ! 80: ! 81: <dd><a href="http://www.w3.org/TR/xhtml1"> ! 82: http://www.w3.org/TR/xhtml1</a></dd> ! 83: ! 84: <dt>Previous versions:</dt> ! 85: ! 86: <dd><a href="http://www.w3.org/TR/1999/WD-xhtml1-19991124"> ! 87: http://www.w3.org/TR/1999/WD-xhtml1-19991124</a></dd> ! 88: <dd><a href="http://www.w3.org/TR/1999/PR-xhtml1-19990824"> ! 89: http://www.w3.org/TR/1999/PR-xhtml1-19990824</a></dd> ! 90: ! 91: <dt>Authors:</dt> ! 92: ! 93: <dd>See <a href="#acks">acknowledgements</a>.</dd> ! 94: </dl> ! 95: ! 96: <p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"> ! 97: Copyright</a> © 1999 <a href="http://www.w3.org/">W3C</a><sup>®</sup> ! 98: (<a href="http://www.lcs.mit.edu/">MIT</a>, <a href="http://www.inria.fr/">INRIA</a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer"> ! 99: liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks"> ! 100: trademark</a>, <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document ! 101: use</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-software">software ! 102: licensing</a> rules apply.</p> ! 103: <hr /> ! 104: </div> ! 105: ! 106: <h2 class="notoc">Abstract</h2> ! 107: ! 108: <p>This specification defines <abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 1.0, a reformulation of HTML ! 109: 4.0 as an XML 1.0 application, and three <abbr title="Document Type Definition">DTDs</abbr> corresponding to ! 110: the ones defined by HTML 4.0. The semantics of the elements and ! 111: their attributes are defined in the W3C Recommendation for HTML ! 112: 4.0. These semantics provide the foundation for future ! 113: extensibility of XHTML. Compatibility with existing HTML user ! 114: agents is possible by following a small set of guidelines.</p> ! 115: ! 116: <h2>Status of this document</h2> ! 117: ! 118: <p><em>This section describes the status of this document at the time ! 119: of its publication. Other documents may supersede this document. The ! 120: latest status of this document series is maintained at the W3C.</em></p> ! 121: ! 122: <p>This specification is a Proposed Recommendation of the HTML Working Group. It is ! 123: a revision of the Proposed Recommendation dated <a href="http://www.w3.org/TR/1999/PR-xhtml1-19990824/">24 August ! 124: 1999</a> incorporating changes as a result of comments from the Proposed ! 125: Recommendation review, and ! 126: comments and further deliberations of the W3C HTML Working Group. A ! 127: <a href="xhtml1-diff-19991210.html">diff-marked version</a> from the previous ! 128: proposed recommendation is available for comparison purposes.</p> ! 129: ! 130: <p>On 10 December 1999, this document enters a ! 131: <a href="http://www.w3.org/Consortium/Process/#RecsPR"> ! 132: Proposed Recommendation</a> review period. From that date until 8 January ! 133: 2000, ! 134: W3C Advisory Committee representatives are encouraged ! 135: to review this specification and return comments in their completed ! 136: ballots to w3c-html-review@w3.org. Please send any comments of a ! 137: confidential nature in separate email to w3t-html@w3.org, which is ! 138: visible to the Team only.</p> ! 139: ! 140: <p>No sooner than 14 days after the end of the review period, the ! 141: Director will announce the document's disposition: it may become a W3C ! 142: Recommendation (possibly with minor changes), it may revert to Working ! 143: Draft status, or it may be dropped as a W3C work item.</p> ! 144: ! 145: <p>Publication as a Proposed Recommendation does not imply endorsement ! 146: by the W3C membership. This is still a draft document and may be ! 147: updated, replaced or obsoleted by other documents at any time. It is ! 148: inappropriate to cite W3C Proposed Recommendation as other than "work ! 149: in progress."</p> ! 150: ! 151: <p>This document has been produced as part of the <a href="http://www.w3.org/MarkUp/">W3C HTML Activity</a>. The goals of ! 152: the <a href="http://www.w3.org/MarkUp/Group/">HTML Working ! 153: Group</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members ! 154: only</a>)</i> are discussed in the <a href="http://www.w3.org/MarkUp/Group/HTMLcharter">HTML Working Group ! 155: charter</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members ! 156: only</a>)</i>.</p> ! 157: ! 158: <p>A list of current W3C Recommendations and other technical documents ! 159: can be found at <a href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p> ! 160: ! 161: <p>Public discussion on <abbr title="HyperText Markup Language">HTML</abbr> features takes place on the mailing list <a href="mailto:www-html@w3.org"> www-html@w3.org</a> (<a href="http://lists.w3.org/Archives/Public/www-html/">archive</a>). The W3C ! 162: staff contact for work on HTML is <a href="mailto:dsr@w3.org">Dave ! 163: Raggett</a>.</p> ! 164: ! 165: <p>Please report errors in this document to <a href="mailto:www-html-editor@w3.org">www-html-editor@w3.org</a>.</p> ! 166: ! 167: <p>The list of known errors in this specification is available at <a href="http://www.w3.org/1999/12/PR-xhtml1-19991210-errata">http://www.w3.org/1999/12/PR-xhtml1-19991210-errata</a>.</p> ! 168: ! 169: <h2 class="notoc"><a id="toc" name="toc">Contents</a></h2> ! 170: ! 171: <div class="contents"> ! 172: <ul class="toc"> ! 173: <li class="tocline">1. <a href="#xhtml">What is XHTML?</a> ! 174: ! 175: <ul class="toc"> ! 176: <li class="tocline">1.1 <a href="#html4">What is HTML 4.0?</a></li> ! 177: ! 178: <li class="tocline">1.2 <a href="#xml">What is XML?</a></li> ! 179: ! 180: <li class="tocline">1.3 <a href="#why">Why the need for XHTML?</a></li> ! 181: </ul> ! 182: </li> ! 183: ! 184: <li class="tocline">2. <a href="#defs">Definitions</a> ! 185: ! 186: <ul class="toc"> ! 187: <li class="tocline">2.1 <a href="#terms">Terminology</a></li> ! 188: ! 189: <li class="tocline">2.2 <a href="#general">General Terms</a></li> ! 190: </ul> ! 191: </li> ! 192: ! 193: <li class="tocline">3. <a href="#normative">Normative Definition of XHTML 1.0</a> ! 194: ! 195: ! 196: <ul class="toc"> ! 197: <li class="tocline">3.1 <a href="#docconf">Document Conformance</a></li> ! 198: ! 199: <li class="tocline">3.2 <a href="#uaconf">User Agent Conformance</a></li> ! 200: </ul> ! 201: </li> ! 202: ! 203: <li class="tocline">4. <a href="#diffs">Differences with HTML 4.0</a> ! 204: ! 205: </li> ! 206: ! 207: <li class="tocline">5. <a href="#issues">Compatibility Issues</a> ! 208: ! 209: <ul class="toc"> ! 210: <li class="tocline">5.1 <a href="#media">Internet Media Types</a></li> ! 211: </ul> ! 212: </li> ! 213: ! 214: <li class="tocline">6. <a href="#future">Future Directions</a> ! 215: ! 216: <ul class="toc"> ! 217: <li class="tocline">6.1 <a href="#mods">Modularizing HTML</a></li> ! 218: ! 219: <li class="tocline">6.2 <a href="#extensions">Subsets and Extensibility</a></li> ! 220: ! 221: <li class="tocline">6.3 <a href="#profiles">Document Profiles</a></li> ! 222: </ul> ! 223: </li> ! 224: ! 225: <li class="tocline"><a href="#dtds">Appendix A. DTDs</a></li> ! 226: ! 227: <li class="tocline"><a href="#prohibitions">Appendix B. Element ! 228: Prohibitions</a></li> ! 229: ! 230: <li class="tocline"><a href="#guidelines">Appendix C. HTML Compatibility Guidelines</a></li> ! 231: ! 232: <li class="tocline"><a href="#acks">Appendix D. Acknowledgements</a></li> ! 233: ! 234: <li class="tocline"><a href="#refs">Appendix E. References</a></li> ! 235: </ul> ! 236: </div> ! 237: ! 238: <!--OddPage--> ! 239: <h1><a name="xhtml" id="xhtml">1. What is XHTML?</a></h1> ! 240: ! 241: <p>XHTML is a family of current and future document types and modules that ! 242: reproduce, subset, and extend HTML 4.0 <a href="#ref-html4">[HTML]</a>. XHTML family document types are <abbr title="Extensible Markup Language">XML</abbr> based, ! 243: and ultimately are designed to work in conjunction with XML-based user agents. ! 244: The details of this family and its evolution are ! 245: discussed in more detail in the section on <a href="#future">Future ! 246: Directions</a>. </p> ! 247: ! 248: <p>XHTML 1.0 (this specification) is the first document type in the XHTML ! 249: family. It is a reformulation of the three HTML 4.0 document types as ! 250: applications of XML 1.0 <a href="#ref-xml"> [XML]</a>. It is intended ! 251: to be used as a language for content that is both XML-conforming and, if some ! 252: simple <a href="#guidelines">guidelines</a> are followed, ! 253: operates in HTML 4.0 conforming user agents. Developers who migrate ! 254: their content to XHTML 1.0 will realize the following benefits:</p> ! 255: ! 256: <ul> ! 257: <li>XHTML documents are XML conforming. As such, they are readily viewed, ! 258: edited, and validated with standard XML tools.</li> ! 259: <li>XHTML documents can be written to ! 260: to operate as well or better than they did before in existing ! 261: HTML 4.0-conforming user agents as well as in new, XHTML 1.0 conforming user ! 262: agents.</li> ! 263: <li>XHTML documents can utilize applications (e.g. scripts and applets) that rely ! 264: upon either the HTML Document Object Model or the XML Document Object Model <a href="#ref-dom">[DOM]</a>.</li> ! 265: <li>As the XHTML family evolves, documents conforming to XHTML 1.0 will be more ! 266: likely to interoperate within and among various XHTML environments.</li> ! 267: </ul> ! 268: ! 269: <p>The XHTML family is the next step in the evolution of the Internet. By ! 270: migrating to XHTML today, content developers can enter the XML world with all ! 271: of its attendant benefits, while still remaining confident in their ! 272: content's backward and future compatibility.</p> ! 273: ! 274: <h2><a name="html4" id="html4">1.1 What is HTML 4.0?</a></h2> ! 275: ! 276: <p>HTML 4.0 <a href="#ref-html4">[HTML]</a> is an <abbr title="Standard Generalized Markup Language">SGML</abbr> (Standard ! 277: Generalized Markup Language) application conforming to ! 278: International Standard <abbr title="Organization for International Standardization">ISO</abbr> 8879, and is widely regarded as the ! 279: standard publishing language of the World Wide Web.</p> ! 280: ! 281: <p>SGML is a language for describing markup languages, ! 282: particularly those used in electronic document exchange, document ! 283: management, and document publishing. HTML is an example of a ! 284: language defined in SGML.</p> ! 285: ! 286: <p>SGML has been around since the middle 1980's and has remained ! 287: quite stable. Much of this stability stems from the fact that the ! 288: language is both feature-rich and flexible. This flexibility, ! 289: however, comes at a price, and that price is a level of ! 290: complexity that has inhibited its adoption in a diversity of ! 291: environments, including the World Wide Web.</p> ! 292: ! 293: <p>HTML, as originally conceived, was to be a language for the ! 294: exchange of scientific and other technical documents, suitable ! 295: for use by non-document specialists. HTML addressed the problem ! 296: of SGML complexity by specifying a small set of structural and ! 297: semantic tags suitable for authoring relatively simple documents. ! 298: In addition to simplifying the document structure, HTML added ! 299: support for hypertext. Multimedia capabilities were added ! 300: later.</p> ! 301: ! 302: <p>In a remarkably short space of time, HTML became wildly ! 303: popular and rapidly outgrew its original purpose. Since HTML's ! 304: inception, there has been rapid invention of new elements for use ! 305: within HTML (as a standard) and for adapting HTML to vertical, ! 306: highly specialized, markets. This plethora of new elements has ! 307: led to compatibility problems for documents across different ! 308: platforms.</p> ! 309: ! 310: <p>As the heterogeneity of both software and platforms rapidly ! 311: proliferate, it is clear that the suitability of 'classic' HTML ! 312: 4.0 for use on these platforms is somewhat limited.</p> ! 313: ! 314: <h2><a name="xml" id="xml">1.2 What is XML?</a></h2> ! 315: ! 316: <p>XML<sup>™</sup> is the shorthand for Extensible Markup ! 317: Language, and is an acronym of Extensible Markup Language <a href="#ref-xml">[XML]</a>.</p> ! 318: ! 319: <p>XML was conceived as a means of regaining the power and ! 320: flexibility of SGML without most of its complexity. Although a ! 321: restricted form of SGML, XML nonetheless preserves most of SGML's ! 322: power and richness, and yet still retains all of SGML's commonly ! 323: used features.</p> ! 324: ! 325: <p>While retaining these beneficial features, XML removes many of ! 326: the more complex features of SGML that make the authoring and ! 327: design of suitable software both difficult and costly.</p> ! 328: ! 329: <h2><a name="why" id="why">1.3 Why the need for XHTML?</a></h2> ! 330: ! 331: <p>The benefits of migrating to XHTML 1.0 are described above. Some of the ! 332: benefits of migrating to XHTML in general are:</p> ! 333: ! 334: <ul> ! 335: <li>Document developers and user agent designers are constantly ! 336: discovering new ways to express their ideas through new markup. In XML, it is ! 337: relatively easy to introduce new elements or additional element ! 338: attributes. The XHTML family is designed to accommodate these extensions ! 339: through XHTML modules and techniques for developing new XHTML-conforming ! 340: modules (described in the forthcoming XHTML Modularization specification). ! 341: These modules will permit the combination of existing and ! 342: new feature sets when developing content and when designing new user ! 343: agents.</li> ! 344: ! 345: <li>Alternate ways of accessing the Internet are constantly being ! 346: introduced. Some estimates indicate that by the year 2002, 75% of ! 347: Internet document viewing will be carried out on these alternate ! 348: platforms. The XHTML family is designed with general user agent ! 349: interoperability in mind. Through a new user agent and document profiling ! 350: mechanism, servers, proxies, and user agents will be able to perform ! 351: best effort content transformation. Ultimately, it will be possible to ! 352: develop XHTML-conforming content that is usable by any XHTML-conforming ! 353: user agent.</li> ! 354: ! 355: </ul> ! 356: <!--OddPage--> ! 357: <h1><a name="defs" id="defs">2. Definitions</a></h1> ! 358: ! 359: <h2><a name="terms" id="terms">2.1 Terminology</a></h2> ! 360: ! 361: <p>The following terms are used in this specification. These ! 362: terms extend the definitions in <a href="#ref-rfc2119"> ! 363: [RFC2119]</a> in ways based upon similar definitions in ISO/<abbr title="International Electro-technical Commission">IEC</abbr> ! 364: 9945-1:1990 <a href="#ref-posix">[POSIX.1]</a>:</p> ! 365: ! 366: <dl> ! 367: <dt>Implementation-defined</dt> ! 368: ! 369: <dd>A value or behavior is implementation-defined when it is left ! 370: to the implementation to define [and document] the corresponding ! 371: requirements for correct document construction.</dd> ! 372: ! 373: <dt>May</dt> ! 374: ! 375: <dd>With respect to implementations, the word "may" is to be ! 376: interpreted as an optional feature that is not required in this ! 377: specification but can be provided. With respect to <a href="#docconf">Document Conformance</a>, the word "may" means that ! 378: the optional feature must not be used. The term "optional" has ! 379: the same definition as "may".</dd> ! 380: ! 381: <dt>Must</dt> ! 382: ! 383: <dd>In this specification, the word "must" is to be interpreted ! 384: as a mandatory requirement on the implementation or on Strictly ! 385: Conforming XHTML Documents, depending upon the context. The term ! 386: "shall" has the same definition as "must".</dd> ! 387: ! 388: <dt>Reserved</dt> ! 389: ! 390: <dd>A value or behavior is unspecified, but it is not allowed to ! 391: be used by Conforming Documents nor to be supported by a ! 392: Conforming User Agents.</dd> ! 393: ! 394: <dt>Should</dt> ! 395: ! 396: <dd>With respect to implementations, the word "should" is to be ! 397: interpreted as an implementation recommendation, but not a ! 398: requirement. With respect to documents, the word "should" is to ! 399: be interpreted as recommended programming practice for documents ! 400: and a requirement for Strictly Conforming XHTML Documents.</dd> ! 401: ! 402: <dt>Supported</dt> ! 403: ! 404: <dd>Certain facilities in this specification are optional. If a ! 405: facility is supported, it behaves as specified by this ! 406: specification.</dd> ! 407: ! 408: <dt>Unspecified</dt> ! 409: ! 410: <dd>When a value or behavior is unspecified, the specification ! 411: defines no portability requirements for a facility on an ! 412: implementation even when faced with a document that uses the ! 413: facility. A document that requires specific behavior in such an ! 414: instance, rather than tolerating any behavior when using that ! 415: facility, is not a Strictly Conforming XHTML Document.</dd> ! 416: </dl> ! 417: ! 418: <h2><a name="general" id="general">2.2 General Terms</a></h2> ! 419: ! 420: <dl> ! 421: <dt>Attribute</dt> ! 422: ! 423: <dd>An attribute is a parameter to an element declared in the ! 424: DTD. An attribute's type and value range, including a possible ! 425: default value, are defined in the DTD.</dd> ! 426: ! 427: <dt>DTD</dt> ! 428: ! 429: <dd>A DTD, or document type definition, is a collection of XML ! 430: declarations that, as a collection, defines the legal structure, ! 431: <span class="term">elements</span>, and <span class="term"> ! 432: attributes</span> that are available for use in a document that ! 433: complies to the DTD.</dd> ! 434: ! 435: <dt>Document</dt> ! 436: ! 437: <dd>A document is a stream of data that, after being combined ! 438: with any other streams it references, is structured such that it ! 439: holds information contained within <span class="term"> ! 440: elements</span> that are organized as defined in the associated ! 441: <span class="term">DTD</span>. See <a href="#docconf">Document ! 442: Conformance</a> for more information.</dd> ! 443: ! 444: <dt>Element</dt> ! 445: ! 446: <dd>An element is a document structuring unit declared in the ! 447: <span class="term">DTD</span>. The element's content model is ! 448: defined in the <span class="term">DTD</span>, and additional ! 449: semantics may be defined in the prose description of the ! 450: element.</dd> ! 451: ! 452: <dt><a name="facilities" id="facilities">Facilities</a></dt> ! 453: ! 454: <dd>Functionality includes <span class="term">elements</span>, ! 455: <span class="term">attributes</span>, and the semantics ! 456: associated with those <span class="term">elements</span> and ! 457: <span class="term">attributes</span>. An implementation ! 458: supporting that functionality is said to provide the necessary ! 459: facilities.</dd> ! 460: ! 461: <dt>Implementation</dt> ! 462: ! 463: <dd>An implementation is a system that provides collection of ! 464: <span class="term">facilities</span> and services that supports ! 465: this specification. See <a href="#uaconf">User Agent ! 466: Conformance</a> for more information.</dd> ! 467: ! 468: <dt>Parsing</dt> ! 469: ! 470: <dd>Parsing is the act whereby a <span class="term"> ! 471: document</span> is scanned, and the information contained within ! 472: the <span class="term">document</span> is filtered into the ! 473: context of the <span class="term">elements</span> in which the ! 474: information is structured.</dd> ! 475: ! 476: <dt>Rendering</dt> ! 477: ! 478: <dd>Rendering is the act whereby the information in a <span class="term">document</span> is presented. This presentation is ! 479: done in the form most appropriate to the environment (e.g. ! 480: aurally, visually, in print).</dd> ! 481: ! 482: <dt>User Agent</dt> ! 483: ! 484: <dd>A user agent is an <span class="term">implementation</span> ! 485: that retrieves and processes XHTML documents. See <a href="#uaconf">User Agent Conformance</a> for more information.</dd> ! 486: ! 487: <dt>Validation</dt> ! 488: ! 489: <dd>Validation is a process whereby <span class="term"> ! 490: documents</span> are verified against the associated <span class="term">DTD</span>, ensuring that the structure, use of <span class="term">elements</span>, and use of <span class="term"> ! 491: attributes</span> are consistent with the definitions in the ! 492: <span class="term">DTD</span>.</dd> ! 493: ! 494: <dt><a name="wellformed" id="wellformed">Well-formed</a></dt> ! 495: ! 496: <dd>A <span class="term">document</span> is well-formed when it ! 497: is structured according to the rules defined in <a href="http://www.w3.org/TR/REC-xml#sec-well-formed">Section 2.1</a> of ! 498: the XML 1.0 Recommendation <a href="#ref-xml">[XML]</a>. ! 499: Basically, this definition states that elements, delimited by ! 500: their start and end tags, are nested properly within one ! 501: another.</dd> ! 502: </dl> ! 503: ! 504: <!--OddPage--> ! 505: <h1><a name="normative" id="normative">3. Normative Definition of ! 506: XHTML 1.0</a></h1> ! 507: ! 508: <h2><a name="docconf" id="docconf">3.1 Document ! 509: Conformance</a></h2> ! 510: ! 511: <p>This version of XHTML provides a definition of strictly ! 512: conforming XHTML documents, which are restricted to tags and ! 513: attributes from the XHTML namespace. See <a href="#well-formed">Section 3.1.2</a> for information on using XHTML ! 514: with other namespaces, for instance, to include metadata ! 515: expressed in <abbr title="Resource Description Format">RDF</abbr> within XHTML documents.</p> ! 516: ! 517: <h3><a name="strict" id="strict">3.1.1 Strictly Conforming ! 518: Documents</a></h3> ! 519: ! 520: <p>A Strictly Conforming XHTML Document is a document that ! 521: requires only the facilities described as mandatory in this ! 522: specification. Such a document must meet all of the following ! 523: criteria:</p> ! 524: ! 525: <ol> ! 526: <li> ! 527: <p>It must validate against one of the three DTDs found in <a href="#dtds">Appendix A</a>.</p> ! 528: </li> ! 529: ! 530: <li> ! 531: <p>The root element of the document must be <code> ! 532: <html></code>.</p> ! 533: </li> ! 534: ! 535: <li> ! 536: <p>The root element of the document must designate the XHTML ! 537: namespace using the <code>xmlns</code> attribute <a href="#ref-xmlns">[XMLNAMES]</a>. The namespace for XHTML is ! 538: defined to be ! 539: <code>http://www.w3.org/1999/xhtml</code>.</p> ! 540: </li> ! 541: ! 542: <li> ! 543: <p>There must be a DOCTYPE declaration in the document prior to ! 544: the root element. The public identifier included in ! 545: the DOCTYPE declaration must reference one of the three DTDs ! 546: found in <a href="#dtds">Appendix A</a> using the respective ! 547: Formal Public Identifier. The system identifier may be changed to reflect ! 548: local system conventions.</p> ! 549: ! 550: <pre> ! 551: <!DOCTYPE html ! 552: PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ! 553: "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd> ! 554: ! 555: <!DOCTYPE html ! 556: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ! 557: "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-transitional.dtd> ! 558: ! 559: <!DOCTYPE html ! 560: PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" ! 561: "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-frameset.dtd> ! 562: </pre> ! 563: </li> ! 564: </ol> ! 565: ! 566: <p>Here is an example of a minimal XHTML document.</p> ! 567: ! 568: <div class="good"> ! 569: <pre> ! 570: <?xml version="1.0" encoding="UTF-8"?> ! 571: <!DOCTYPE html ! 572: PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ! 573: "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd"> ! 574: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> ! 575: <head> ! 576: <title>Virtual Library</title> ! 577: </head> ! 578: <body> ! 579: <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> ! 580: </body> ! 581: </html></pre> ! 582: </div> ! 583: ! 584: <p>Note that in this example, the XML declaration is included. An XML ! 585: declaration like the one above is ! 586: not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required ! 587: when the character encoding of the document is other than the default UTF-8 or ! 588: UTF-16.</p> ! 589: ! 590: <h3><a name="well-formed" id="well-formed">3.1.2 Using XHTML with ! 591: other namespaces</a></h3> ! 592: ! 593: <p>The XHTML namespace may be used with other XML namespaces ! 594: as per <a href="#ref-xmlns">[XMLNAMES]</a>, although such ! 595: documents are not strictly conforming XHTML 1.0 documents as ! 596: defined above. Future work by W3C will address ways to specify ! 597: conformance for documents involving multiple namespaces.</p> ! 598: ! 599: <p>The following example shows the way in which XHTML 1.0 could ! 600: be used in conjunction with the MathML Recommendation:</p> ! 601: ! 602: <div class="good"> ! 603: <pre> ! 604: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> ! 605: <head> ! 606: <title>A Math Example</title> ! 607: </head> ! 608: <body> ! 609: <p>The following is MathML markup:</p> ! 610: <math xmlns="http://www.w3.org/1998/Math/MathML"> ! 611: <apply> <log/> ! 612: <logbase> ! 613: <cn> 3 </cn> ! 614: </logbase> ! 615: <ci> x </ci> ! 616: </apply> ! 617: </math> ! 618: </body> ! 619: </html> ! 620: </pre> ! 621: </div> ! 622: ! 623: <p>The following example shows the way in which XHTML 1.0 markup ! 624: could be incorporated into another XML namespace:</p> ! 625: ! 626: <div class="good"> ! 627: <pre> ! 628: <?xml version="1.0" encoding="UTF-8"?> ! 629: <!-- initially, the default namespace is "books" --> ! 630: <book xmlns='urn:loc.gov:books' ! 631: xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"> ! 632: <title>Cheaper by the Dozen</title> ! 633: <isbn:number>1568491379</isbn:number> ! 634: <notes> ! 635: <!-- make HTML the default namespace for a hypertext commentary --> ! 636: <p xmlns='http://www.w3.org/1999/xhtml'> ! 637: This is also available <a href="http://www.w3.org/">online</a>. ! 638: </p> ! 639: </notes> ! 640: </book> ! 641: </pre> ! 642: </div> ! 643: ! 644: <h2><a name="uaconf" id="uaconf">3.2 User Agent ! 645: Conformance</a></h2> ! 646: ! 647: <p>A conforming user agent must meet all of the following ! 648: criteria:</p> ! 649: ! 650: <ol> ! 651: <li>In order to be consistent with the XML 1.0 Recommendation <a href="#ref-xml">[XML]</a>, the user agent must parse and evaluate ! 652: an XHTML document for well-formedness. If the user agent claims ! 653: to be a validating user agent, it must also validate documents ! 654: against their referenced DTDs according to <a href="#ref-xml"> ! 655: [XML]</a>.</li> ! 656: ! 657: <li>When the user agent claims to support <a href="#facilities"> ! 658: facilities</a> defined within this specification or required by ! 659: this specification through normative reference, it must do so in ! 660: ways consistent with the facilities' definition.</li> ! 661: ! 662: <li>When a user agent processes an XHTML document as generic XML, ! 663: it shall only recognize attributes of type ! 664: <code>ID</code> (e.g. the <code>id</code> attribute on most XHTML elements) ! 665: as fragment identifiers.</li> ! 666: ! 667: <li>If a user agent encounters an element it does not recognize, ! 668: it must render the element's content.</li> ! 669: ! 670: <li>If a user agent encounters an attribute it does not ! 671: recognize, it must ignore the entire attribute specification ! 672: (i.e., the attribute and its value).</li> ! 673: ! 674: <li>If a user agent encounters an attribute value it doesn't ! 675: recognize, it must use the default attribute value.</li> ! 676: ! 677: <li>If it encounters an entity reference (other than one ! 678: of the predefined entities) for which the User Agent has ! 679: processed no declaration (which could happen if the declaration ! 680: is in the external subset which the User Agent hasn't read), the entity ! 681: reference should be rendered as the characters (starting ! 682: with the ampersand and ending with the semi-colon) that ! 683: make up the entity reference.</li> ! 684: ! 685: <li>When rendering content, User Agents that encounter ! 686: characters or character entity references that are recognized but not renderable should display the document in such a way that it is obvious to the user that normal rendering has not taken place.</li> ! 687: ! 688: <li> ! 689: The following characters are defined in [XML] as whitespace characters: ! 690: ! 691: <ul> ! 692: <li>Space (&#x0020;)</li> ! 693: <li>Tab (&#x0009;)</li> ! 694: <li>Carriage return (&#x000D;)</li> ! 695: <li>Line feed (&#x000A;)</li> ! 696: </ul> ! 697: ! 698: <p> ! 699: The XML processor normalizes different system's line end codes into one ! 700: single line-feed character, that is passed up to the application. The XHTML ! 701: user agent in addition, must treat the following characters as whitespace: ! 702: </p> ! 703: ! 704: <ul> ! 705: <li>Form feed (&#x000C;)</li> ! 706: <li>Zero-width space (&#x200B;)</li> ! 707: </ul> ! 708: ! 709: <p> ! 710: In elements where the 'xml:space' attribute is set to 'preserve', the user ! 711: agent must leave all whitespace characters intact (with the exception of ! 712: leading and trailing whitespace characters, which should be removed). ! 713: Otherwise, whitespace ! 714: is handled according to the following rules: ! 715: </p> ! 716: ! 717: <ul> ! 718: <li> ! 719: All whitespace surrounding block elements should be removed. ! 720: </li> ! 721: <li> ! 722: Comments are removed entirely and do not affect whitespace handling. One ! 723: whitespace character on either side of a comment is treated as two white ! 724: space characters. ! 725: </li> ! 726: <li> ! 727: Leading and trailing whitespace inside a block element must be removed. ! 728: </li> ! 729: <li>Line feed characters within a block element must be converted into a ! 730: space (except when the 'xml:space' attribute is set to 'preserve'). ! 731: </li> ! 732: <li> ! 733: A sequence of white space characters must be reduced to a single space ! 734: character (except when the 'xml:space' attribute is set to 'preserve'). ! 735: </li> ! 736: <li> ! 737: With regard to rendition, ! 738: the User Agent should render the content in a ! 739: manner appropriate to the language in which the content is written. ! 740: In languages whose primary script is Latinate, the ASCII space ! 741: character is typically used to encode both grammatical word boundaries and ! 742: typographic whitespace; in languages whose script is related to Nagari ! 743: (e.g., Sanskrit, Thai, etc.), grammatical boundaries may be encoded using ! 744: the ZW 'space' character, but will not typically be represented by ! 745: typographic whitespace in rendered output; languages using Arabiform scripts ! 746: may encode typographic whitespace using a space character, but may also use ! 747: the ZW space character to delimit 'internal' grammatical boundaries (what ! 748: look like words in Arabic to an English eye frequently encode several words, ! 749: e.g. 'kitAbuhum' = 'kitAbu-hum' = 'book them' == their book); and languages ! 750: in the Chinese script tradition typically neither encode such delimiters nor ! 751: use typographic whitespace in this way. ! 752: </li> ! 753: </ul> ! 754: ! 755: <p>Whitespace in attribute values is processed according to <a href="#ref-xml">[XML]</a>.</p> ! 756: </li> ! 757: </ol> ! 758: ! 759: <!--OddPage--> ! 760: <h1><a name="diffs" id="diffs">4. Differences with HTML ! 761: 4.0</a></h1> ! 762: ! 763: <p>Due to the fact that XHTML is an XML application, certain ! 764: practices that were perfectly legal in SGML-based HTML 4.0 <a href="#ref-html4">[HTML]</a> must be changed.</p> ! 765: ! 766: <h2><a name="h-4.1" id="h-4.1">4.1 Documents must be ! 767: well-formed</a></h2> ! 768: ! 769: <p><a href="#wellformed">Well-formedness</a> is a new concept ! 770: introduced by <a href="#ref-xml">[XML]</a>. Essentially this ! 771: means that all elements must either have closing tags or be ! 772: written in a special form (as described below), and that all the ! 773: elements must nest.</p> ! 774: ! 775: <p>Although overlapping is illegal in SGML, it was widely ! 776: tolerated in existing browsers.</p> ! 777: ! 778: <div class="good"> ! 779: <p><strong><em>CORRECT: nested elements.</em></strong></p> ! 780: ! 781: <p><p>here is an emphasized ! 782: <em>paragraph</em>.</p></p> ! 783: </div> ! 784: ! 785: <div class="bad"> ! 786: <p><strong><em>INCORRECT: overlapping elements</em></strong></p> ! 787: ! 788: <p><p>here is an emphasized ! 789: <em>paragraph.</p></em></p> ! 790: </div> ! 791: ! 792: <h2><a name="h-4.2" id="h-4.2">4.2 Element and attribute ! 793: names must be in lower case</a></h2> ! 794: ! 795: <p>XHTML documents must use lower case for all HTML element and ! 796: attribute names. This difference is necessary because XML is ! 797: case-sensitive e.g. <li> and <LI> are different ! 798: tags.</p> ! 799: ! 800: <h2><a name="h-4.3" id="h-4.3">4.3 For non-empty elements, ! 801: end tags are required</a></h2> ! 802: ! 803: <p>In SGML-based HTML 4.0 certain elements were permitted to omit ! 804: the end tag; with the elements that followed implying closure. ! 805: This omission is not permitted in XML-based XHTML. All elements ! 806: other than those declared in the DTD as <code>EMPTY</code> must ! 807: have an end tag.</p> ! 808: ! 809: <div class="good"> ! 810: <p><strong><em>CORRECT: terminated elements</em></strong></p> ! 811: ! 812: <p><p>here is a paragraph.</p><p>here is ! 813: another paragraph.</p></p> ! 814: </div> ! 815: ! 816: <div class="bad"> ! 817: <p><strong><em>INCORRECT: unterminated elements</em></strong></p> ! 818: ! 819: <p><p>here is a paragraph.<p>here is another ! 820: paragraph.</p> ! 821: </div> ! 822: ! 823: <h2><a name="h-4.4" id="h-4.4">4.4 Attribute values must ! 824: always be quoted</a></h2> ! 825: ! 826: <p>All attribute values must be quoted, even those which appear ! 827: to be numeric.</p> ! 828: ! 829: <div class="good"> ! 830: <p><strong><em>CORRECT: quoted attribute values</em></strong></p> ! 831: ! 832: <p><table rows="3"></p> ! 833: </div> ! 834: ! 835: <div class="bad"> ! 836: <p><strong><em>INCORRECT: unquoted attribute values</em></strong></p> ! 837: ! 838: <p><table rows=3></p> ! 839: </div> ! 840: ! 841: <h2><a name="h-4.5" id="h-4.5">4.5 Attribute ! 842: Minimization</a></h2> ! 843: ! 844: <p>XML does not support attribute minimization. Attribute-value ! 845: pairs must be written in full. Attribute names such as <code> ! 846: compact</code> and <code>checked</code> cannot occur in elements ! 847: without their value being specified.</p> ! 848: ! 849: <div class="good"> ! 850: <p><strong><em>CORRECT: unminimized attributes</em></strong></p> ! 851: ! 852: <p><dl compact="compact"></p> ! 853: </div> ! 854: ! 855: <div class="bad"> ! 856: <p><strong><em>INCORRECT: minimized attributes</em></strong></p> ! 857: ! 858: <p><dl compact></p> ! 859: </div> ! 860: ! 861: <h2><a name="h-4.6" id="h-4.6">4.6 Empty Elements</a></h2> ! 862: ! 863: <p>Empty elements must either have an end tag or the start tag must end with <code>/></code>. For instance, ! 864: <code><br/></code> or <code><hr></hr></code>. See <a href="#guidelines">HTML Compatibility Guidelines</a> for information on ways to ! 865: ensure this is backward compatible with HTML 4.0 user agents.</p> ! 866: ! 867: <div class="good"> ! 868: <p><strong><em>CORRECT: terminated empty tags</em></strong></p> ! 869: ! 870: <p><br/><hr/></p> ! 871: </div> ! 872: ! 873: <div class="bad"> ! 874: <p><strong><em>INCORRECT: unterminated empty tags</em></strong></p> ! 875: ! 876: <p><br><hr></p> ! 877: </div> ! 878: ! 879: <h2><a name="h-4.7" id="h-4.7">4.7 Whitespace handling in ! 880: attribute values</a></h2> ! 881: ! 882: <p>In attribute values, user agents will strip leading and ! 883: trailing whitespace from attribute values and map sequences ! 884: of one or more whitespace characters (including line breaks) to ! 885: a single inter-word space (an ASCII space character for western ! 886: scripts). See <a href="http://www.w3.org/TR/REC-xml#AVNormalize"> ! 887: Section 3.3.3</a> of <a href="#ref-xml">[XML]</a>.</p> ! 888: ! 889: <h2><a name="h-4.8" id="h-4.8">4.8 Script and Style ! 890: elements</a></h2> ! 891: ! 892: <p>In XHTML, the script and style elements are declared as having ! 893: <code>#PCDATA</code> content. As a result, <code><</code> and ! 894: <code>&</code> will be treated as the start of markup, and ! 895: entities such as <code>&lt;</code> and <code>&amp;</code> ! 896: will be recognized as entity references by the XML processor to ! 897: <code><</code> and <code>&</code> respectively. Wrapping ! 898: the content of the script or style element within a <code> ! 899: CDATA</code> marked section avoids the expansion of these ! 900: entities.</p> ! 901: ! 902: <div class="good"> ! 903: <pre> ! 904: <script> ! 905: <![CDATA[ ! 906: ... unescaped script content ... ! 907: ]]> ! 908: </script> ! 909: </pre> ! 910: </div> ! 911: ! 912: <p><code>CDATA</code> sections are recognized by the XML ! 913: processor and appear as nodes in the Document Object Model, see ! 914: <a href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597"> ! 915: Section 1.3</a> of the DOM Level 1 Recommendation <a href="#ref-dom">[DOM]</a>.</p> ! 916: ! 917: <p>An alternative is to use external script and style ! 918: documents.</p> ! 919: ! 920: <h2><a name="h-4.9" id="h-4.9">4.9 SGML exclusions</a></h2> ! 921: ! 922: <p>SGML gives the writer of a DTD the ability to exclude specific ! 923: elements from being contained within an element. Such ! 924: prohibitions (called "exclusions") are not possible in XML.</p> ! 925: ! 926: <p>For example, the HTML 4.0 Strict DTD forbids the nesting of an ! 927: '<code>a</code>' element within another '<code>a</code>' element ! 928: to any descendant depth. It is not possible to spell out such ! 929: prohibitions in XML. Even though these prohibitions cannot be ! 930: defined in the DTD, certain elements should not be nested. A ! 931: summary of such elements and the elements that should not be ! 932: nested in them is found in the normative <a href="#prohibitions"> ! 933: Appendix B</a>.</p> ! 934: ! 935: <h2><a name="h-4.10" id="h-4.10">4.10 The elements with 'id' and 'name' ! 936: attributes</a></h2> ! 937: ! 938: <p>HTML 4.0 defined the <code>name</code> attribute for the elements ! 939: <code>a</code>, ! 940: <code>applet</code>, <code>frame</code>, ! 941: <code>iframe</code>, <code>img</code>, and <code>map</code>. ! 942: HTML 4.0 also introduced ! 943: the <code>id</code> attribute. Both of these attributes are designed to be ! 944: used as fragment identifiers.</p> ! 945: <p>In XML, fragment identifiers are of type <code>ID</code>, and ! 946: there can only be a single attribute of type <code>ID</code> per element. ! 947: Therefore, in XHTML 1.0 the <code>id</code> ! 948: attribute is defined to be of type <code>ID</code>. In order to ! 949: ensure that XHTML 1.0 documents are well-structured XML documents, XHTML 1.0 ! 950: documents MUST use the <code>id</code> attribute when defining fragment ! 951: identifiers, even on elements that historically have also had a ! 952: <code>name</code> attribute. ! 953: See the <a href="#guidelines">HTML Compatibility ! 954: Guidelines</a> for information on ensuring such anchors are backwards ! 955: compatible when serving XHTML documents as media type <code>text/html</code>. ! 956: </p> ! 957: <p>Note that in XHTML 1.0, the <code>name</code> attribute of these ! 958: elements is formally deprecated, and will be removed in a ! 959: subsequent version of XHTML.</p> ! 960: ! 961: <!--OddPage--> ! 962: <h1><a name="issues" id="issues">5. Compatibility Issues</a></h1> ! 963: ! 964: <p>Although there is no requirement for XHTML 1.0 documents to be ! 965: compatible with existing user agents, in practice this is easy to ! 966: accomplish. Guidelines for creating compatible documents can be ! 967: found in <a href="#guidelines">Appendix C</a>.</p> ! 968: ! 969: <h2><a name="media" id="media">5.1 Internet Media Type</a></h2> ! 970: <p>As of the publication of this recommendation, the general ! 971: recommended MIME labeling for XML-based applications ! 972: has yet to be resolved.</p> ! 973: ! 974: <p>However, XHTML Documents which follow the guidelines set forth ! 975: in <a href="#guidelines">Appendix C</a>, "HTML Compatibility Guidelines" may be ! 976: labeled with the Internet Media Type "text/html", as they ! 977: are compatible with most HTML browsers. This document ! 978: makes no recommendation about MIME labeling of other ! 979: XHTML documents.</p> ! 980: ! 981: <!--OddPage--> ! 982: <h1><a name="future" id="future">6. Future Directions</a></h1> ! 983: ! 984: <p>XHTML 1.0 provides the basis for a family of document types ! 985: that will extend and subset XHTML, in order to support a wide ! 986: range of new devices and applications, by defining modules and ! 987: specifying a mechanism for combining these modules. This ! 988: mechanism will enable the extension and sub-setting of XHTML 1.0 ! 989: in a uniform way through the definition of new modules.</p> ! 990: ! 991: <h2><a name="mods" id="mods">6.1 Modularizing HTML</a></h2> ! 992: ! 993: <p>As the use of XHTML moves from the traditional desktop user ! 994: agents to other platforms, it is clear that not all of the XHTML ! 995: elements will be required on all platforms. For example a hand ! 996: held device or a cell-phone may only support a subset of XHTML ! 997: elements.</p> ! 998: ! 999: <p>The process of modularization breaks XHTML up into a series of ! 1000: smaller element sets. These elements can then be recombined to ! 1001: meet the needs of different communities.</p> ! 1002: ! 1003: <p>These modules will be defined in a later W3C document.</p> ! 1004: ! 1005: <h2><a name="extensions" id="extensions">6.2 Subsets and ! 1006: Extensibility</a></h2> ! 1007: ! 1008: <p>Modularization brings with it several advantages:</p> ! 1009: ! 1010: <ul> ! 1011: <li> ! 1012: <p>It provides a formal mechanism for sub-setting XHTML.</p> ! 1013: </li> ! 1014: ! 1015: <li> ! 1016: <p>It provides a formal mechanism for extending XHTML.</p> ! 1017: </li> ! 1018: ! 1019: <li> ! 1020: <p>It simplifies the transformation between document types.</p> ! 1021: </li> ! 1022: ! 1023: <li> ! 1024: <p>It promotes the reuse of modules in new document types.</p> ! 1025: </li> ! 1026: </ul> ! 1027: ! 1028: <h2><a name="profiles" id="profiles">6.3 Document ! 1029: Profiles</a></h2> ! 1030: ! 1031: <p>A document profile specifies the syntax and semantics of a set ! 1032: of documents. Conformance to a document profile provides a basis ! 1033: for interoperability guarantees. The document profile specifies ! 1034: the facilities required to process documents of that type, e.g. ! 1035: which image formats can be used, levels of scripting, style sheet ! 1036: support, and so on.</p> ! 1037: ! 1038: <p>For product designers this enables various groups to define ! 1039: their own standard profile.</p> ! 1040: ! 1041: <p>For authors this will obviate the need to write several ! 1042: different versions of documents for different clients.</p> ! 1043: ! 1044: <p>For special groups such as chemists, medical doctors, or ! 1045: mathematicians this allows a special profile to be built using ! 1046: standard HTML elements plus a group of elements geared to the ! 1047: specialist's needs.</p> ! 1048: ! 1049: <!--OddPage--> ! 1050: <h1><a name="appendices" id="appendices"></a> ! 1051: <a name="dtds" id="dtds">Appendix A. DTDs</a></h1> ! 1052: ! 1053: <p><b>This appendix is normative.</b></p> ! 1054: ! 1055: <p>These DTDs and entity sets form a normative part of this ! 1056: specification. The complete set of DTD files together with an XML ! 1057: declaration and SGML Open Catalog is included in the <a href="xhtml1.zip">zip file</a> for this specification.</p> ! 1058: ! 1059: <h2><a name="h-A1" id="h-A1">A.1 Document Type ! 1060: Definitions</a></h2> ! 1061: ! 1062: <p>These DTDs approximate the HTML 4.0 DTDs. It is likely that ! 1063: when the DTDs are modularized, a method of DTD construction will ! 1064: be employed that corresponds more closely to HTML 4.0.</p> ! 1065: ! 1066: <ul> ! 1067: <li> ! 1068: <p><a href="DTD/xhtml1-strict.dtd" type="text/plain"> ! 1069: XHTML-1.0-Strict</a></p> ! 1070: </li> ! 1071: ! 1072: <li> ! 1073: <p><a href="DTD/xhtml1-transitional.dtd" type="text/plain"> ! 1074: XHTML-1.0-Transitional</a></p> ! 1075: </li> ! 1076: ! 1077: <li> ! 1078: <p><a href="DTD/xhtml1-frameset.dtd" type="text/plain"> ! 1079: XHTML-1.0-Frameset</a></p> ! 1080: </li> ! 1081: </ul> ! 1082: ! 1083: <h2><a name="h-A2" id="h-A2">A.2 Entity Sets</a></h2> ! 1084: ! 1085: <p>The XHTML entity sets are the same as for HTML 4.0, but have ! 1086: been modified to be valid XML 1.0 entity declarations. Note the ! 1087: entity for the Euro currency sign (<code>&euro;</code> or ! 1088: <code>&#8364;</code> or <code>&#x20AC;</code>) is defined ! 1089: as part of the special characters.</p> ! 1090: ! 1091: <ul> ! 1092: <li> ! 1093: <p><a href="DTD/xhtml-lat1.ent">Latin-1 characters</a></p> ! 1094: </li> ! 1095: ! 1096: <li> ! 1097: <p><a href="DTD/xhtml-special.ent">Special characters</a></p> ! 1098: </li> ! 1099: ! 1100: <li> ! 1101: <p><a href="DTD/xhtml-symbol.ent">Symbols</a></p> ! 1102: </li> ! 1103: </ul> ! 1104: ! 1105: <!--OddPage--> ! 1106: <h1><a name="prohibitions" id="prohibitions">Appendix B. Element ! 1107: Prohibitions</a></h1> ! 1108: ! 1109: <p><b>This appendix is normative.</b></p> ! 1110: ! 1111: <p>The following elements have prohibitions on which elements ! 1112: they can contain (see <a href="#h-4.9">Section 4.9</a>). This ! 1113: prohibition applies to all depths of nesting, i.e. it contains ! 1114: all the descendant elements.</p> ! 1115: ! 1116: <dl><dt><code class="tag">a</code></dt> ! 1117: <dd> ! 1118: cannot contain other <code>a</code> elements.</dd> ! 1119: <dt><code class="tag">pre</code></dt> ! 1120: <dd>cannot contain the <code>img</code>, <code>object</code>, ! 1121: <code>big</code>, <code>small</code>, <code>sub</code>, or <code> ! 1122: sup</code> elements.</dd> ! 1123: ! 1124: <dt><code class="tag">button</code></dt> ! 1125: <dd>cannot contain the <code>input</code>, <code>select</code>, ! 1126: <code>textarea</code>, <code>label</code>, <code>button</code>, ! 1127: <code>form</code>, <code>fieldset</code>, <code>iframe</code> or ! 1128: <code>isindex</code> elements.</dd> ! 1129: <dt><code class="tag">label</code></dt> ! 1130: <dd>cannot contain other <code class="tag">label</code> elements.</dd> ! 1131: <dt><code class="tag">form</code></dt> ! 1132: <dd>cannot contain other <code>form</code> elements.</dd> ! 1133: </dl> ! 1134: ! 1135: <!--OddPage--> ! 1136: <h1><a name="guidelines" id="guidelines">Appendix C. ! 1137: HTML Compatibility Guidelines</a></h1> ! 1138: ! 1139: <p><b>This appendix is informative.</b></p> ! 1140: ! 1141: <p>This appendix summarizes design guidelines for authors who ! 1142: wish their XHTML documents to render on existing HTML user ! 1143: agents.</p> ! 1144: ! 1145: <h2>C.1 Processing Instructions</h2> ! 1146: <p>Be aware that processing instructions are rendered on some ! 1147: user agents. However, also note that when the XML declaration is not included ! 1148: in a document, the document can only use the default character encodings UTF-8 ! 1149: or UTF-16.</p> ! 1150: ! 1151: <h2>C.2 Empty Elements</h2> ! 1152: <p>Include a space before the trailing <code>/</code> and <code> ! 1153: ></code> of empty elements, e.g. <code class="greenmono"> ! 1154: <br /></code>, <code class="greenmono"> ! 1155: <hr /></code> and <code class="greenmono"><img ! 1156: src="karen.jpg" alt="Karen" /></code>. Also, use the ! 1157: minimized tag syntax for empty elements, e.g. <code class="greenmono"><br /></code>, as the alternative syntax <code class="greenmono"><br></br></code> allowed by XML ! 1158: gives uncertain results in many existing user agents.</p> ! 1159: ! 1160: <h2>C.3 Element Minimization and Empty Element Content</h2> ! 1161: <p>Given an empty instance of an element whose content model is ! 1162: not <code>EMPTY</code> (for example, an empty title or paragraph) ! 1163: do not use the minimized form (e.g. use <code class="greenmono"> ! 1164: <p> </p></code> and not <code class="greenmono"> ! 1165: <p /></code>).</p> ! 1166: ! 1167: <h2>C.4 Embedded Style Sheets and Scripts</h2> ! 1168: <p>Use external style sheets if your style sheet uses <code> ! 1169: <</code> or <code>&</code> or <code>]]></code> or <code>--</code>. Use ! 1170: external scripts if your script uses <code><</code> or <code> ! 1171: &</code> or <code>]]></code> or <code>--</code>. Note that XML parsers ! 1172: are permitted to silently remove the contents of comments. Therefore, the historical ! 1173: practice of "hiding" scripts and style sheets within comments to make the ! 1174: documents backward compatible is likely to not work as expected in XML-based ! 1175: implementations.</p> ! 1176: ! 1177: <h2>C.5 Line Breaks within Attribute Values</h2> ! 1178: <p>Avoid line breaks and multiple whitespace characters within ! 1179: attribute values. These are handled inconsistently by user ! 1180: agents.</p> ! 1181: ! 1182: <h2>C.6 Isindex</h2> ! 1183: <p>Don't include more than one <code>isindex</code> element in ! 1184: the document <code>head</code>. The <code>isindex</code> element ! 1185: is deprecated in favor of the <code>input</code> element.</p> ! 1186: ! 1187: <h2>C.7 The <code>lang</code> and <code>xml:lang</code> Attributes</h2> ! 1188: <p>Use both the <code>lang</code> and <code>xml:lang</code> ! 1189: attributes when specifying the language of an element. The value ! 1190: of the <code>xml:lang</code> attribute takes precedence.</p> ! 1191: ! 1192: <h2>C.8 Fragment Identifiers</h2> ! 1193: <p>In XML, <abbr title="Uniform Resource Identifiers">URIs</abbr> [<a href="#ref-rfc2396">RFC2396</a>] that end with fragment identifiers of the form ! 1194: <code>"#foo"</code> do not refer to elements with an attribute ! 1195: <code>name="foo"</code>; rather, they refer to elements with an ! 1196: attribute defined to be of type <code>ID</code>, e.g., the <code> ! 1197: id</code> attribute in HTML 4.0. Many existing HTML clients don't ! 1198: support the use of <code>ID</code>-type attributes in this way, ! 1199: so identical values may be supplied for both of these attributes to ensure ! 1200: maximum forward and backward compatibility (e.g., <code class="greenmono"><a id="foo" name="foo">...</a></code>).</p> ! 1201: ! 1202: <p>Further, since the set of ! 1203: legal values for attributes of type <code>ID</code> is much smaller than ! 1204: for those of type <code>CDATA</code>, the type of the <code>name</code> ! 1205: attribute has been changed to <code>NMTOKEN</code>. This attribute is ! 1206: constrained such that it can only have the same values as type ! 1207: <code>ID</code>, or as the <code>Name</code> production in XML 1.0 Section ! 1208: 2.5, production 5. Unfortunately, this constraint cannot be expressed in the ! 1209: XHTML 1.0 DTDs. Because of this change, care must be taken when ! 1210: converting existing HTML documents. The values of these attributes ! 1211: must be unique within the document, valid, and any references to these ! 1212: fragment identifiers (both ! 1213: internal and external) must be updated should the values be changed during ! 1214: conversion.</p> ! 1215: <p>Finally, note that XHTML 1.0 has deprecated the ! 1216: <code>name</code> attribute of the <code>a</code>, <code>applet</code>, <code>frame</code>, <code>iframe</code>, <code>img</code>, and <code>map</code> ! 1217: elements, and it will be ! 1218: removed from XHTML in subsequent versions.</p> ! 1219: ! 1220: <h2>C.9 Character Encoding</h2> ! 1221: <p>To specify a character encoding in the document, use both the ! 1222: encoding attribute specification on the xml declaration (e.g. ! 1223: <code class="greenmono"><?xml version="1.0" ! 1224: encoding="EUC-JP"?></code>) and a meta http-equiv statement ! 1225: (e.g. <code class="greenmono"><meta http-equiv="Content-type" ! 1226: content='text/html; charset="EUC-JP"' /></code>). The ! 1227: value of the encoding attribute of the xml processing instruction ! 1228: takes precedence.</p> ! 1229: ! 1230: <h2>C.10 Boolean Attributes</h2> ! 1231: <p>Some HTML user agents are unable to interpret boolean ! 1232: attributes when these appear in their full (non-minimized) form, ! 1233: as required by XML 1.0. Note this problem doesn't effect user ! 1234: agents compliant with HTML 4.0. The following attributes are ! 1235: involved: <code>compact</code>, <code>nowrap</code>, <code> ! 1236: ismap</code>, <code>declare</code>, <code>noshade</code>, <code> ! 1237: checked</code>, <code>disabled</code>, <code>readonly</code>, ! 1238: <code>multiple</code>, <code>selected</code>, <code> ! 1239: noresize</code>, <code>defer</code>.</p> ! 1240: ! 1241: <h2>C.11 Document Object Model and XHTML</h2> ! 1242: <p> ! 1243: The Document Object Model level 1 Recommendation [<a href="#ref-dom">DOM</a>] ! 1244: defines document object model interfaces for XML and HTML 4.0. The HTML 4.0 ! 1245: document object model specifies that HTML element and attribute names are ! 1246: returned in upper-case. The XML document object model specifies that ! 1247: element and attribute names are returned in the case they are specified. In ! 1248: XHTML 1.0, elements and attributes are specified in lower-case. This apparent difference can be ! 1249: addressed in two ways: ! 1250: </p> ! 1251: <ol> ! 1252: <li>Applications that access XHTML documents served as Internet media type ! 1253: <code>text/html</code> ! 1254: via the <abbr title="Document Object Model">DOM</abbr> can use the HTML DOM, ! 1255: and can rely upon element and attribute names being returned in ! 1256: upper-case from those interfaces.</li> ! 1257: <li>Applications that access XHTML documents served as Internet media types ! 1258: <code>text/xml</code> or <code>application/xml</code> ! 1259: can also use the XML DOM. Elements and attributes will be returned in lower-case. ! 1260: Also, some XHTML elements may or may ! 1261: not appear ! 1262: in the object tree because they are optional in the content model ! 1263: (e.g. the <code>tbody</code> element within ! 1264: <code>table</code>). This occurs because in HTML 4.0 some elements were ! 1265: permitted to be minimized such that their start and end tags are both omitted ! 1266: (an SGML feature). ! 1267: This is not possible in XML. Rather than require document authors to insert ! 1268: extraneous elements, XHTML has made the elements optional. ! 1269: Applications need to adapt to this ! 1270: accordingly.</li> ! 1271: </ol> ! 1272: ! 1273: <h2>C.12 Using Ampersands in Attribute Values</h2> ! 1274: <p> ! 1275: When an attribute value contains an ampersand, it must be expressed as a character ! 1276: entity reference ! 1277: (e.g. "<code>&amp;</code>"). For example, when the ! 1278: <code>href</code> attribute ! 1279: of the <code>a</code> element refers to a ! 1280: CGI script that takes parameters, it must be expressed as ! 1281: <code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user</code> ! 1282: rather than as ! 1283: <code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user</code>. ! 1284: </p> ! 1285: ! 1286: <h2>C.13 Cascading Style Sheets (CSS) and XHTML</h2> ! 1287: ! 1288: <p>The Cascading Style Sheets level 2 Recommendation [<a href="#ref-css2">CSS2</a>] defines style ! 1289: properties which are applied to the parse tree of the HTML or XML ! 1290: document. Differences in parsing will produce different visual or ! 1291: aural results, depending on the selectors used. The following hints ! 1292: will reduce this effect for documents which are served without ! 1293: modification as both media types:</p> ! 1294: ! 1295: <ol> ! 1296: <li> ! 1297: CSS style sheets for XHTML should use lower case element and ! 1298: attribute names.</li> ! 1299: ! 1300: ! 1301: <li>In tables, the tbody element will be inferred by the parser of an ! 1302: HTML user agent, but not by the parser of an XML user agent. Therefore ! 1303: you should always explicitely add a tbody element if it is referred to ! 1304: in a CSS selector.</li> ! 1305: ! 1306: <li>Within the XHTML name space, user agents are expected to ! 1307: recognize the "id" attribute as an attribute of type ID. ! 1308: Therefore, style sheets should be able to continue using the ! 1309: shorthand "#" selector syntax even if the user agent does not read ! 1310: the DTD.</li> ! 1311: ! 1312: <li>Within the XHTML name space, user agents are expected to ! 1313: recognize the "class" attribute. Therefore, style sheets should be ! 1314: able to continue using the shorthand "." selector syntax.</li> ! 1315: ! 1316: <li> ! 1317: CSS defines different conformance rules for HTML and XML documents; ! 1318: be aware that the HTML rules apply to XHTML documents delivered as ! 1319: HTML and the XML rules apply to XHTML documents delivered as XML.</li> ! 1320: </ol> ! 1321: <!--OddPage--> ! 1322: <h1><a name="acks" id="acks">Appendix D. ! 1323: Acknowledgements</a></h1> ! 1324: ! 1325: <p><b>This appendix is informative.</b></p> ! 1326: ! 1327: <p>This specification was written with the participation of the ! 1328: members of the W3C HTML working group:</p> ! 1329: ! 1330: <dl> ! 1331: <dd>Steven Pemberton, CWI (HTML Working Group Chair)<br /> ! 1332: Murray Altheim, Sun Microsystems<br /> ! 1333: Daniel Austin, CNET: The Computer Network<br /> ! 1334: Frank Boumphrey, HTML Writers Guild<br /> ! 1335: John Burger, Mitre<br /> ! 1336: Andrew W. Donoho, IBM<br /> ! 1337: Sam Dooley, IBM<br /> ! 1338: Klaus Hofrichter, GMD<br /> ! 1339: Philipp Hoschka, W3C<br /> ! 1340: Masayasu Ishikawa, W3C<br /> ! 1341: Warner ten Kate, Philips Electronics<br /> ! 1342: Peter King, Phone.com<br /> ! 1343: Paula Klante, JetForm<br /> ! 1344: Shin'ichi Matsui, W3C/Panasonic<br /> ! 1345: Shane McCarron, Applied Testing and Technology (The Open Group through August ! 1346: 1999)<br /> ! 1347: Ann Navarro, HTML Writers Guild<br /> ! 1348: Zach Nies, Quark<br /> ! 1349: Dave Raggett, W3C/HP (W3C lead for HTML)<br /> ! 1350: Patrick Schmitz, Microsoft<br /> ! 1351: Sebastian Schnitzenbaumer, Stack Overflow<br /> ! 1352: Chris Wilson, Microsoft<br /> ! 1353: Ted Wugofski, Gateway 2000<br /> ! 1354: Dan Zigmond, WebTV Networks</dd> ! 1355: </dl> ! 1356: ! 1357: <!--OddPage--> ! 1358: <h1><a name="refs" id="refs">Appendix E. References</a></h1> ! 1359: ! 1360: <p><b>This appendix is informative.</b></p> ! 1361: ! 1362: <dl> ! 1363: ! 1364: <dt><a name="ref-css2" id="ref-css2"><b>[CSS2]</b></a></dt> ! 1365: ! 1366: <dd><a href="http://www.w3.org/TR/REC-CSS2">"Cascading Style Sheets, level 2 (CSS2) Specification"</a>, B. ! 1367: Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.<br /> ! 1368: Available at: <a href="http://www.w3.org/TR/REC-CSS2"> ! 1369: http://www.w3.org/TR/REC-CSS2</a></dd> ! 1370: ! 1371: <dt><a name="ref-dom" id="ref-dom"><b>[DOM]</b></a></dt> ! 1372: ! 1373: <dd><a href="http://www.w3.org/TR/REC-DOM-Level-1">"Document Object Model (DOM) Level 1 Specification"</a>, Lauren ! 1374: Wood <i>et al.</i>, 1 October 1998.<br /> ! 1375: Available at: <a href="http://www.w3.org/TR/REC-DOM-Level-1"> ! 1376: http://www.w3.org/TR/REC-DOM-Level-1</a></dd> ! 1377: ! 1378: <dt><a name="ref-html4" id="ref-html4"><b>[HTML]</b></a></dt> ! 1379: ! 1380: <dd><a href="http://www.w3.org/TR/1999/PR-html40-19990824">"HTML 4.01 Specification"</a>, D. Raggett, A. Le Hors, I. ! 1381: Jacobs, 24 August 1999.<br /> ! 1382: Available at: <a href="http://www.w3.org/TR/1999/PR-html40-19990824"> ! 1383: http://www.w3.org/TR/1999/PR-html40-19990824</a></dd> ! 1384: ! 1385: <dt><a name="ref-posix" id="ref-posix"><b>[POSIX.1]</b></a></dt> ! 1386: ! 1387: <dd>"ISO/IEC 9945-1:1990 Information Technology - Portable ! 1388: Operating System Interface (POSIX) - Part 1: System Application ! 1389: Program Interface (API) [C Language]", Institute of Electrical ! 1390: and Electronics Engineers, Inc, 1990.</dd> ! 1391: ! 1392: <dt><a name="ref-rfc2046" id="ref-rfc2046"><b> ! 1393: [RFC2046]</b></a></dt> ! 1394: ! 1395: <dd><a href="http://www.ietf.org/rfc/rfc2046.txt">"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part ! 1396: Two: Media Types"</a>, N. Freed and N. Borenstein, November ! 1397: 1996.<br /> ! 1398: Available at <a href="http://www.ietf.org/rfc/rfc2046.txt"> ! 1399: http://www.ietf.org/rfc/rfc2046.txt</a>. Note that this RFC ! 1400: obsoletes RFC1521, RFC1522, and RFC1590.</dd> ! 1401: ! 1402: <dt><a name="ref-rfc2119" id="ref-rfc2119"><b> ! 1403: [RFC2119]</b></a></dt> ! 1404: ! 1405: <dd><a href="http://www.ietf.org/rfc/rfc2119.txt">"RFC2119: Key words for use in RFCs to Indicate Requirement ! 1406: Levels"</a>, S. Bradner, March 1997.<br /> ! 1407: Available at: <a href="http://www.ietf.org/rfc/rfc2119.txt"> ! 1408: http://www.ietf.org/rfc/rfc2119.txt</a></dd> ! 1409: ! 1410: <dt><a name="ref-rfc2376" id="ref-rfc2376"><b> ! 1411: [RFC2376]</b></a></dt> ! 1412: ! 1413: <dd><a href="http://www.ietf.org/rfc/rfc2376.txt">"RFC2376: XML Media Types"</a>, E. Whitehead, M. Murata, July ! 1414: 1998.<br /> ! 1415: Available at: <a href="http://www.ietf.org/rfc/rfc2376.txt"> ! 1416: http://www.ietf.org/rfc/rfc2376.txt</a></dd> ! 1417: ! 1418: <dt><a name="ref-rfc2396" id="ref-rfc2396"><b> ! 1419: [RFC2396]</b></a></dt> ! 1420: ! 1421: <dd><a href="http://www.ietf.org/rfc/rfc2396.txt">"RFC2396: Uniform Resource Identifiers (URI): Generic ! 1422: Syntax"</a>, T. Berners-Lee, R. Fielding, L. Masinter, August ! 1423: 1998.<br /> ! 1424: This document updates RFC1738 and RFC1808.<br /> ! 1425: Available at: <a href="http://www.ietf.org/rfc/rfc2396.txt"> ! 1426: http://www.ietf.org/rfc/rfc2396.txt</a></dd> ! 1427: ! 1428: <dt><a name="ref-xml" id="ref-xml"><b>[XML]</b></a></dt> ! 1429: ! 1430: <dd><a href="http://www.w3.org/TR/REC-xml">"Extensible Markup Language (XML) 1.0 Specification"</a>, T. ! 1431: Bray, J. Paoli, C. M. Sperberg-McQueen, 10 February 1998.<br /> ! 1432: Available at: <a href="http://www.w3.org/TR/REC-xml"> ! 1433: http://www.w3.org/TR/REC-xml</a></dd> ! 1434: ! 1435: <dt><a name="ref-xmlns" id="ref-xmlns"><b>[XMLNAMES]</b></a></dt> ! 1436: ! 1437: <dd><a href="http://www.w3.org/TR/REC-xml-names">"Namespaces in XML"</a>, T. Bray, D. Hollander, A. Layman, 14 ! 1438: January 1999.<br /> ! 1439: XML namespaces provide a simple method for qualifying names used ! 1440: in XML documents by associating them with namespaces identified ! 1441: by URI.<br /> ! 1442: Available at: <a href="http://www.w3.org/TR/REC-xml-names"> ! 1443: http://www.w3.org/TR/REC-xml-names</a></dd> ! 1444: ! 1445: </dl> ! 1446: <p><a href="http://www.w3.org/WAI/WCAG1AAA-Conformance" title="Explanation of Level Triple-A Conformance"> ! 1447: <img height="32" width="88" src="wcag1AAA.gif" alt="Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /></a></p> ! 1448: <div class="navbar"> ! 1449: <hr /> ! 1450: <a href="#toc">table of contents</a> ! 1451: </div> ! 1452: </body> ! 1453: </html>