/ libxml2 / result / valid / xhtml1.xhtml
xhtml1.xhtml
   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>&#x2122;</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> &copy; 1999 <a href="http://www.w3.org/">W3C</a><sup>&reg;</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>&#x2122;</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&#xA0;A</a>.</p>
 528  </li>
 529  
 530  <li>
 531  <p>The root element of the document must be <code>
 532  &lt;html&gt;</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&#xA0;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  &lt;!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&gt;
 554  
 555  &lt;!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&gt;
 558  
 559  &lt;!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&gt;
 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  &lt;?xml version="1.0" encoding="UTF-8"?&gt;
 571  &lt;!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"&gt;
 574  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
 575    &lt;head&gt;
 576      &lt;title&gt;Virtual Library&lt;/title&gt;
 577    &lt;/head&gt;
 578    &lt;body&gt;
 579      &lt;p&gt;Moved to &lt;a href="http://vlib.org/"&gt;vlib.org&lt;/a&gt;.&lt;/p&gt;
 580    &lt;/body&gt;
 581  &lt;/html&gt;</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  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
 605    &lt;head&gt;
 606      &lt;title&gt;A Math Example&lt;/title&gt;
 607    &lt;/head&gt;
 608    &lt;body&gt;
 609      &lt;p&gt;The following is MathML markup:&lt;/p&gt;
 610      &lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;
 611        &lt;apply&gt; &lt;log/&gt;
 612          &lt;logbase&gt;
 613            &lt;cn&gt; 3 &lt;/cn&gt;
 614          &lt;/logbase&gt;
 615          &lt;ci&gt; x &lt;/ci&gt;
 616        &lt;/apply&gt;
 617      &lt;/math&gt;
 618    &lt;/body&gt;
 619  &lt;/html&gt;
 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  &lt;?xml version="1.0" encoding="UTF-8"?&gt;
 629  &lt;!-- initially, the default namespace is "books" --&gt;
 630  &lt;book xmlns='urn:loc.gov:books'
 631      xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"&gt;
 632    &lt;title&gt;Cheaper by the Dozen&lt;/title&gt;
 633    &lt;isbn:number&gt;1568491379&lt;/isbn:number&gt;
 634    &lt;notes&gt;
 635      &lt;!-- make HTML the default namespace for a hypertext commentary --&gt;
 636      &lt;p xmlns='http://www.w3.org/1999/xhtml'&gt;
 637          This is also available &lt;a href="http://www.w3.org/"&gt;online&lt;/a&gt;.
 638      &lt;/p&gt;
 639    &lt;/notes&gt;
 640  &lt;/book&gt;
 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 (&amp;#x0020;)</li>
 693  <li>Tab (&amp;#x0009;)</li>
 694  <li>Carriage return (&amp;#x000D;)</li>
 695  <li>Line feed (&amp;#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 (&amp;#x000C;)</li>
 706  <li>Zero-width space (&amp;#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>&lt;p&gt;here is an emphasized
 782  &lt;em&gt;paragraph&lt;/em&gt;.&lt;/p&gt;</p>
 783  </div>
 784  
 785  <div class="bad">
 786  <p><strong><em>INCORRECT: overlapping elements</em></strong></p>
 787  
 788  <p>&lt;p&gt;here is an emphasized
 789  &lt;em&gt;paragraph.&lt;/p&gt;&lt;/em&gt;</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. &lt;li&gt; and &lt;LI&gt; 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>&lt;p&gt;here is a paragraph.&lt;/p&gt;&lt;p&gt;here is
 813  another paragraph.&lt;/p&gt;</p>
 814  </div>
 815  
 816  <div class="bad">
 817  <p><strong><em>INCORRECT: unterminated elements</em></strong></p>
 818  
 819  <p>&lt;p&gt;here is a paragraph.&lt;p&gt;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>&lt;table rows="3"&gt;</p>
 833  </div>
 834  
 835  <div class="bad">
 836  <p><strong><em>INCORRECT: unquoted attribute values</em></strong></p>
 837  
 838  <p>&lt;table rows=3&gt;</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>&lt;dl compact="compact"&gt;</p>
 853  </div>
 854  
 855  <div class="bad">
 856  <p><strong><em>INCORRECT: minimized attributes</em></strong></p>
 857  
 858  <p>&lt;dl compact&gt;</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>/&gt;</code>. For instance,
 864  <code>&lt;br/&gt;</code> or <code>&lt;hr&gt;&lt;/hr&gt;</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>&lt;br/&gt;&lt;hr/&gt;</p>
 871  </div>
 872  
 873  <div class="bad">
 874  <p><strong><em>INCORRECT: unterminated empty tags</em></strong></p>
 875  
 876  <p>&lt;br&gt;&lt;hr&gt;</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>&lt;</code> and
 894  <code>&amp;</code> will be treated as the start of markup, and
 895  entities such as <code>&amp;lt;</code> and <code>&amp;amp;</code>
 896  will be recognized as entity references by the XML processor to
 897  <code>&lt;</code> and <code>&amp;</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  &lt;script&gt;
 905   &lt;![CDATA[
 906   ... unescaped script content ...
 907   ]]&gt;
 908   &lt;/script&gt;
 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&#xA0;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&#xA0;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>&amp;euro;</code> or
1088  <code>&amp;#8364;</code> or <code>&amp;#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  &gt;</code> of empty elements, e.g. <code class="greenmono">
1154  &lt;br&#xA0;/&gt;</code>, <code class="greenmono">
1155  &lt;hr&#xA0;/&gt;</code> and <code class="greenmono">&lt;img
1156  src="karen.jpg" alt="Karen"&#xA0;/&gt;</code>. Also, use the
1157  minimized tag syntax for empty elements, e.g. <code class="greenmono">&lt;br /&gt;</code>, as the alternative syntax <code class="greenmono">&lt;br&gt;&lt;/br&gt;</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  &lt;p&gt; &lt;/p&gt;</code> and not <code class="greenmono">
1165  &lt;p&#xA0;/&gt;</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  &lt;</code> or <code>&amp;</code> or <code>]]&gt;</code> or <code>--</code>. Use
1170  external scripts if your script uses <code>&lt;</code> or <code>
1171  &amp;</code> or <code>]]&gt;</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">&lt;a id="foo" name="foo"&gt;...&lt;/a&gt;</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">&lt;?xml version="1.0"
1224  encoding="EUC-JP"?&gt;</code>) and a meta http-equiv statement
1225  (e.g. <code class="greenmono">&lt;meta http-equiv="Content-type"
1226  content='text/html; charset="EUC-JP"'&#xA0;/&gt;</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;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;amp;name=user</code>
1282  rather than as
1283  <code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;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&#xA0;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>