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