Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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"?> |
Daniel Veillard | 6f4561a | 2002-03-25 12:10:14 +0000 | [diff] [blame] | 4 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 5 | <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 6 | <title>XHTML 1.0: The Extensible HyperText Markup |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 7 | Language</title> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 8 | <link rel="stylesheet" href="W3C-PR.css" type="text/css" /> |
Daniel Veillard | ef8dd7b | 2003-03-23 12:02:56 +0000 | [diff] [blame] | 9 | <style type="text/css"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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); } |
Daniel Veillard | ef8dd7b | 2003-03-23 12:02:56 +0000 | [diff] [blame] | 52 | </style> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 53 | </head> |
| 54 | <body> |
| 55 | <div class="navbar"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 56 | <a href="#toc">table of contents</a> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 57 | <hr /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 58 | </div> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 59 | <div class="head"><p><a href="http://www.w3.org/"><img class="head" src="w3c_home.gif" alt="W3C" /></a></p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 60 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 61 | <h1 class="head"><a name="title" id="title">XHTML</a><sup>™</sup> 1.0: |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 68 | <dl> |
| 69 | <dt>This version:</dt> |
| 70 | |
| 71 | <dd><a href="http://www.w3.org/TR/1999/PR-xhtml1-19991210"> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 72 | http://www.w3.org/TR/1999/PR-xhtml1-19991210</a> <br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 76 | <a href="xhtml1.tgz">Gzip'd TAR archive</a>) |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 95 | |
| 96 | <p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"> |
| 97 | Copyright</a> © 1999 <a href="http://www.w3.org/">W3C</a><sup>®</sup> |
| 98 | (<a href="http://www.lcs.mit.edu/">MIT</a>, <a href="http://www.inria.fr/">INRIA</a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer"> |
| 99 | liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks"> |
| 100 | trademark</a>, <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document |
| 101 | use</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-software">software |
| 102 | licensing</a> rules apply.</p> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 103 | <hr /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 104 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 105 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 106 | <h2 class="notoc">Abstract</h2> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 107 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 108 | <p>This specification defines <abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 1.0, a reformulation of HTML |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 115 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 116 | <h2>Status of this document</h2> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 117 | |
| 118 | <p><em>This section describes the status of this document at the time |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 119 | of its publication. Other documents may supersede this document. The |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 120 | latest status of this document series is maintained at the W3C.</em></p> |
| 121 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 122 | <p>This specification is a Proposed Recommendation of the HTML Working Group. It is |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 129 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 130 | <p>On 10 December 1999, this document enters a |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 139 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 144 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 145 | <p>Publication as a Proposed Recommendation does not imply endorsement |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 148 | inappropriate to cite W3C Proposed Recommendation as other than "work |
| 149 | in progress."</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 150 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 157 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 158 | <p>A list of current W3C Recommendations and other technical documents |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 159 | can be found at <a href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 160 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 162 | staff contact for work on HTML is <a href="mailto:dsr@w3.org">Dave |
| 163 | Raggett</a>.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 164 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 165 | <p>Please report errors in this document to <a href="mailto:www-html-editor@w3.org">www-html-editor@w3.org</a>.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 166 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 168 | |
| 169 | <h2 class="notoc"><a id="toc" name="toc">Contents</a></h2> |
| 170 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 171 | <div class="contents"> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 172 | <ul class="toc"> |
| 173 | <li class="tocline">1. <a href="#xhtml">What is XHTML?</a> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 174 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 175 | <ul class="toc"> |
| 176 | <li class="tocline">1.1 <a href="#html4">What is HTML 4.0?</a></li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 177 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 194 | |
| 195 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 196 | <ul class="toc"> |
| 197 | <li class="tocline">3.1 <a href="#docconf">Document Conformance</a></li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 198 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 199 | <li class="tocline">3.2 <a href="#uaconf">User Agent Conformance</a></li> |
| 200 | </ul> |
| 201 | </li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 202 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 203 | <li class="tocline">4. <a href="#diffs">Differences with HTML 4.0</a> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 204 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 236 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 237 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 238 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 239 | <h1><a name="xhtml" id="xhtml">1. What is XHTML?</a></h1> |
| 240 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 241 | <p>XHTML is a family of current and future document types and modules that |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 247 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 248 | <p>XHTML 1.0 (this specification) is the first document type in the XHTML |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 255 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 256 | <ul> |
| 257 | <li>XHTML documents are XML conforming. As such, they are readily viewed, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 258 | edited, and validated with standard XML tools.</li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 259 | <li>XHTML documents can be written to |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 263 | <li>XHTML documents can utilize applications (e.g. scripts and applets) that rely |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 264 | upon either the HTML Document Object Model or the XML Document Object Model <a href="#ref-dom">[DOM]</a>.</li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 265 | <li>As the XHTML family evolves, documents conforming to XHTML 1.0 will be more |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 266 | likely to interoperate within and among various XHTML environments.</li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 267 | </ul> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 268 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 269 | <p>The XHTML family is the next step in the evolution of the Internet. By |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 272 | content's backward and future compatibility.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 273 | |
| 274 | <h2><a name="html4" id="html4">1.1 What is HTML 4.0?</a></h2> |
| 275 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 276 | <p>HTML 4.0 <a href="#ref-html4">[HTML]</a> is an <abbr title="Standard Generalized Markup Language">SGML</abbr> (Standard |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 280 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 281 | <p>SGML is a language for describing markup languages, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 285 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 286 | <p>SGML has been around since the middle 1980's and has remained |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 292 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 293 | <p>HTML, as originally conceived, was to be a language for the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 301 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 302 | <p>In a remarkably short space of time, HTML became wildly |
| 303 | popular and rapidly outgrew its original purpose. Since HTML's |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 309 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 310 | <p>As the heterogeneity of both software and platforms rapidly |
| 311 | proliferate, it is clear that the suitability of 'classic' HTML |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 312 | 4.0 for use on these platforms is somewhat limited.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 313 | |
| 314 | <h2><a name="xml" id="xml">1.2 What is XML?</a></h2> |
| 315 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 316 | <p>XML<sup>™</sup> is the shorthand for Extensible Markup |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 317 | Language, and is an acronym of Extensible Markup Language <a href="#ref-xml">[XML]</a>.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 318 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 319 | <p>XML was conceived as a means of regaining the power and |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 320 | flexibility of SGML without most of its complexity. Although a |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 323 | used features.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 324 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 325 | <p>While retaining these beneficial features, XML removes many of |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 326 | the more complex features of SGML that make the authoring and |
| 327 | design of suitable software both difficult and costly.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 328 | |
| 329 | <h2><a name="why" id="why">1.3 Why the need for XHTML?</a></h2> |
| 330 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 331 | <p>The benefits of migrating to XHTML 1.0 are described above. Some of the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 332 | benefits of migrating to XHTML in general are:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 333 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 334 | <ul> |
| 335 | <li>Document developers and user agent designers are constantly |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 344 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 345 | <li>Alternate ways of accessing the Internet are constantly being |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 354 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 355 | </ul> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 356 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 361 | <p>The following terms are used in this specification. These |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 365 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 366 | <dl> |
| 367 | <dt>Implementation-defined</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 368 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 369 | <dd>A value or behavior is implementation-defined when it is left |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 370 | to the implementation to define [and document] the corresponding |
| 371 | requirements for correct document construction.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 372 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 373 | <dt>May</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 374 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 375 | <dd>With respect to implementations, the word "may" is to be |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 376 | interpreted as an optional feature that is not required in this |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 380 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 381 | <dt>Must</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 382 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 383 | <dd>In this specification, the word "must" is to be interpreted |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 384 | as a mandatory requirement on the implementation or on Strictly |
| 385 | Conforming XHTML Documents, depending upon the context. The term |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 386 | "shall" has the same definition as "must".</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 387 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 388 | <dt>Reserved</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 389 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 390 | <dd>A value or behavior is unspecified, but it is not allowed to |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 391 | be used by Conforming Documents nor to be supported by a |
| 392 | Conforming User Agents.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 393 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 394 | <dt>Should</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 395 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 396 | <dd>With respect to implementations, the word "should" is to be |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 397 | interpreted as an implementation recommendation, but not a |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 398 | requirement. With respect to documents, the word "should" is to |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 399 | be interpreted as recommended programming practice for documents |
| 400 | and a requirement for Strictly Conforming XHTML Documents.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 401 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 402 | <dt>Supported</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 403 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 404 | <dd>Certain facilities in this specification are optional. If a |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 405 | facility is supported, it behaves as specified by this |
| 406 | specification.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 407 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 408 | <dt>Unspecified</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 409 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 410 | <dd>When a value or behavior is unspecified, the specification |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 416 | </dl> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 417 | |
| 418 | <h2><a name="general" id="general">2.2 General Terms</a></h2> |
| 419 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 420 | <dl> |
| 421 | <dt>Attribute</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 422 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 425 | default value, are defined in the DTD.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 426 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 427 | <dt>DTD</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 428 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 429 | <dd>A DTD, or document type definition, is a collection of XML |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 434 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 435 | <dt>Document</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 436 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 437 | <dd>A document is a stream of data that, after being combined |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 443 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 444 | <dt>Element</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 445 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 446 | <dd>An element is a document structuring unit declared in the |
| 447 | <span class="term">DTD</span>. The element's content model is |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 451 | |
| 452 | <dt><a name="facilities" id="facilities">Facilities</a></dt> |
| 453 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 454 | <dd>Functionality includes <span class="term">elements</span>, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 460 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 461 | <dt>Implementation</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 462 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 463 | <dd>An implementation is a system that provides collection of |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 467 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 468 | <dt>Parsing</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 469 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 470 | <dd>Parsing is the act whereby a <span class="term"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 475 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 476 | <dt>Rendering</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 477 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 478 | <dd>Rendering is the act whereby the information in a <span class="term">document</span> is presented. This presentation is |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 479 | done in the form most appropriate to the environment (e.g. |
| 480 | aurally, visually, in print).</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 481 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 482 | <dt>User Agent</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 483 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 484 | <dd>A user agent is an <span class="term">implementation</span> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 485 | that retrieves and processes XHTML documents. See <a href="#uaconf">User Agent Conformance</a> for more information.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 486 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 487 | <dt>Validation</dt> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 488 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 489 | <dd>Validation is a process whereby <span class="term"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 493 | |
| 494 | <dt><a name="wellformed" id="wellformed">Well-formed</a></dt> |
| 495 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 496 | <dd>A <span class="term">document</span> is well-formed when it |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 502 | </dl> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 503 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 504 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 511 | <p>This version of XHTML provides a definition of strictly |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 516 | |
| 517 | <h3><a name="strict" id="strict">3.1.1 Strictly Conforming |
| 518 | Documents</a></h3> |
| 519 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 520 | <p>A Strictly Conforming XHTML Document is a document that |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 521 | requires only the facilities described as mandatory in this |
| 522 | specification. Such a document must meet all of the following |
| 523 | criteria:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 524 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 525 | <ol> |
| 526 | <li> |
| 527 | <p>It must validate against one of the three DTDs found in <a href="#dtds">Appendix A</a>.</p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 528 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 529 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 530 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 531 | <p>The root element of the document must be <code> |
| 532 | <html></code>.</p> |
| 533 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 534 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 535 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 541 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 542 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 546 | found in <a href="#dtds">Appendix A</a> using the respective |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 547 | Formal Public Identifier. The system identifier may be changed to reflect |
| 548 | local system conventions.</p> |
| 549 | |
| 550 | <pre> |
| 551 | <!DOCTYPE html |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 552 | PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| 553 | "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 554 | |
| 555 | <!DOCTYPE html |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 556 | PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| 557 | "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-transitional.dtd> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 558 | |
| 559 | <!DOCTYPE html |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 560 | PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" |
| 561 | "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-frameset.dtd> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 562 | </pre> |
| 563 | </li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 564 | </ol> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 565 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 566 | <p>Here is an example of a minimal XHTML document.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 567 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 568 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 569 | <pre> |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 570 | <?xml version="1.0" encoding="UTF-8"?> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 571 | <!DOCTYPE html |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 572 | PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| 573 | "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd"> |
| 574 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 575 | <head> |
| 576 | <title>Virtual Library</title> |
| 577 | </head> |
| 578 | <body> |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 579 | <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 580 | </body> |
| 581 | </html></pre> |
| 582 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 583 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 584 | <p>Note that in this example, the XML declaration is included. An XML |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 589 | |
| 590 | <h3><a name="well-formed" id="well-formed">3.1.2 Using XHTML with |
| 591 | other namespaces</a></h3> |
| 592 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 593 | <p>The XHTML namespace may be used with other XML namespaces |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 598 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 599 | <p>The following example shows the way in which XHTML 1.0 could |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 600 | be used in conjunction with the MathML Recommendation:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 601 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 602 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 603 | <pre> |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 604 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 605 | <head> |
| 606 | <title>A Math Example</title> |
| 607 | </head> |
| 608 | <body> |
| 609 | <p>The following is MathML markup:</p> |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 610 | <math xmlns="http://www.w3.org/1998/Math/MathML"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 611 | <apply> <log/> |
| 612 | <logbase> |
| 613 | <cn> 3 </cn> |
| 614 | </logbase> |
| 615 | <ci> x </ci> |
| 616 | </apply> |
| 617 | </math> |
| 618 | </body> |
| 619 | </html> |
| 620 | </pre> |
| 621 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 622 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 623 | <p>The following example shows the way in which XHTML 1.0 markup |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 624 | could be incorporated into another XML namespace:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 625 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 626 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 627 | <pre> |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 628 | <?xml version="1.0" encoding="UTF-8"?> |
| 629 | <!-- initially, the default namespace is "books" --> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 630 | <book xmlns='urn:loc.gov:books' |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 631 | xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 632 | <title>Cheaper by the Dozen</title> |
| 633 | <isbn:number>1568491379</isbn:number> |
| 634 | <notes> |
| 635 | <!-- make HTML the default namespace for a hypertext commentary --> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 636 | <p xmlns='http://www.w3.org/1999/xhtml'> |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 637 | This is also available <a href="http://www.w3.org/">online</a>. |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 638 | </p> |
| 639 | </notes> |
| 640 | </book> |
| 641 | </pre> |
| 642 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 643 | |
| 644 | <h2><a name="uaconf" id="uaconf">3.2 User Agent |
| 645 | Conformance</a></h2> |
| 646 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 647 | <p>A conforming user agent must meet all of the following |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 648 | criteria:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 649 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 656 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 657 | <li>When the user agent claims to support <a href="#facilities"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 658 | facilities</a> defined within this specification or required by |
| 659 | this specification through normative reference, it must do so in |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 660 | ways consistent with the facilities' definition.</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 661 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 662 | <li>When a user agent processes an XHTML document as generic XML, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 666 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 667 | <li>If a user agent encounters an element it does not recognize, |
| 668 | it must render the element's content.</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 669 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 670 | <li>If a user agent encounters an attribute it does not |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 671 | recognize, it must ignore the entire attribute specification |
| 672 | (i.e., the attribute and its value).</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 673 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 674 | <li>If a user agent encounters an attribute value it doesn't |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 675 | recognize, it must use the default attribute value.</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 676 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 677 | <li>If it encounters an entity reference (other than one |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 678 | of the predefined entities) for which the User Agent has |
| 679 | processed no declaration (which could happen if the declaration |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 680 | is in the external subset which the User Agent hasn't read), the entity |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 684 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 685 | <li>When rendering content, User Agents that encounter |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 687 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 688 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 689 | The following characters are defined in [XML] as whitespace characters: |
| 690 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 691 | <ul> |
| 692 | <li>Space (&#x0020;)</li> |
| 693 | <li>Tab (&#x0009;)</li> |
| 694 | <li>Carriage return (&#x000D;)</li> |
| 695 | <li>Line feed (&#x000A;)</li> |
| 696 | </ul> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 697 | |
| 698 | <p> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 699 | The XML processor normalizes different system's line end codes into one |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 704 | <ul> |
| 705 | <li>Form feed (&#x000C;)</li> |
| 706 | <li>Zero-width space (&#x200B;)</li> |
| 707 | </ul> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 708 | |
| 709 | <p> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 710 | In elements where the 'xml:space' attribute is set to 'preserve', the user |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 717 | <ul> |
| 718 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 719 | All whitespace surrounding block elements should be removed. |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 720 | </li> |
| 721 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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. |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 725 | </li> |
| 726 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 727 | Leading and trailing whitespace inside a block element must be removed. |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 728 | </li> |
| 729 | <li>Line feed characters within a block element must be converted into a |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 730 | space (except when the 'xml:space' attribute is set to 'preserve'). |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 731 | </li> |
| 732 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 733 | A sequence of white space characters must be reduced to a single space |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 734 | character (except when the 'xml:space' attribute is set to 'preserve'). |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 735 | </li> |
| 736 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 744 | the ZW 'space' character, but will not typically be represented by |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 745 | typographic whitespace in rendered output; languages using Arabiform scripts |
| 746 | may encode typographic whitespace using a space character, but may also use |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 747 | the ZW space character to delimit 'internal' grammatical boundaries (what |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 748 | look like words in Arabic to an English eye frequently encode several words, |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 749 | e.g. 'kitAbuhum' = 'kitAbu-hum' = 'book them' == their book); and languages |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 750 | in the Chinese script tradition typically neither encode such delimiters nor |
| 751 | use typographic whitespace in this way. |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 752 | </li> |
| 753 | </ul> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 754 | |
| 755 | <p>Whitespace in attribute values is processed according to <a href="#ref-xml">[XML]</a>.</p> |
| 756 | </li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 757 | </ol> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 758 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 759 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 760 | <h1><a name="diffs" id="diffs">4. Differences with HTML |
| 761 | 4.0</a></h1> |
| 762 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 763 | <p>Due to the fact that XHTML is an XML application, certain |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 764 | practices that were perfectly legal in SGML-based HTML 4.0 <a href="#ref-html4">[HTML]</a> must be changed.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 765 | |
| 766 | <h2><a name="h-4.1" id="h-4.1">4.1 Documents must be |
| 767 | well-formed</a></h2> |
| 768 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 769 | <p><a href="#wellformed">Well-formedness</a> is a new concept |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 774 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 775 | <p>Although overlapping is illegal in SGML, it was widely |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 776 | tolerated in existing browsers.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 777 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 778 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 779 | <p><strong><em>CORRECT: nested elements.</em></strong></p> |
| 780 | |
| 781 | <p><p>here is an emphasized |
| 782 | <em>paragraph</em>.</p></p> |
| 783 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 784 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 785 | <div class="bad"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 786 | <p><strong><em>INCORRECT: overlapping elements</em></strong></p> |
| 787 | |
| 788 | <p><p>here is an emphasized |
| 789 | <em>paragraph.</p></em></p> |
| 790 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 795 | <p>XHTML documents must use lower case for all HTML element and |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 796 | attribute names. This difference is necessary because XML is |
| 797 | case-sensitive e.g. <li> and <LI> are different |
| 798 | tags.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 803 | <p>In SGML-based HTML 4.0 certain elements were permitted to omit |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 808 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 809 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 810 | <p><strong><em>CORRECT: terminated elements</em></strong></p> |
| 811 | |
| 812 | <p><p>here is a paragraph.</p><p>here is |
| 813 | another paragraph.</p></p> |
| 814 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 815 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 816 | <div class="bad"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 817 | <p><strong><em>INCORRECT: unterminated elements</em></strong></p> |
| 818 | |
| 819 | <p><p>here is a paragraph.<p>here is another |
| 820 | paragraph.</p> |
| 821 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 822 | |
| 823 | <h2><a name="h-4.4" id="h-4.4">4.4 Attribute values must |
| 824 | always be quoted</a></h2> |
| 825 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 826 | <p>All attribute values must be quoted, even those which appear |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 827 | to be numeric.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 828 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 829 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 830 | <p><strong><em>CORRECT: quoted attribute values</em></strong></p> |
| 831 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 832 | <p><table rows="3"></p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 833 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 834 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 835 | <div class="bad"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 836 | <p><strong><em>INCORRECT: unquoted attribute values</em></strong></p> |
| 837 | |
| 838 | <p><table rows=3></p> |
| 839 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 840 | |
| 841 | <h2><a name="h-4.5" id="h-4.5">4.5 Attribute |
| 842 | Minimization</a></h2> |
| 843 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 844 | <p>XML does not support attribute minimization. Attribute-value |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 848 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 849 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 850 | <p><strong><em>CORRECT: unminimized attributes</em></strong></p> |
| 851 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 852 | <p><dl compact="compact"></p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 853 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 854 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 855 | <div class="bad"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 856 | <p><strong><em>INCORRECT: minimized attributes</em></strong></p> |
| 857 | |
| 858 | <p><dl compact></p> |
| 859 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 860 | |
| 861 | <h2><a name="h-4.6" id="h-4.6">4.6 Empty Elements</a></h2> |
| 862 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 863 | <p>Empty elements must either have an end tag or the start tag must end with <code>/></code>. For instance, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 864 | <code><br/></code> or <code><hr></hr></code>. See <a href="#guidelines">HTML Compatibility Guidelines</a> for information on ways to |
| 865 | ensure this is backward compatible with HTML 4.0 user agents.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 866 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 867 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 868 | <p><strong><em>CORRECT: terminated empty tags</em></strong></p> |
| 869 | |
| 870 | <p><br/><hr/></p> |
| 871 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 872 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 873 | <div class="bad"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 874 | <p><strong><em>INCORRECT: unterminated empty tags</em></strong></p> |
| 875 | |
| 876 | <p><br><hr></p> |
| 877 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 878 | |
| 879 | <h2><a name="h-4.7" id="h-4.7">4.7 Whitespace handling in |
| 880 | attribute values</a></h2> |
| 881 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 882 | <p>In attribute values, user agents will strip leading and |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 888 | |
| 889 | <h2><a name="h-4.8" id="h-4.8">4.8 Script and Style |
| 890 | elements</a></h2> |
| 891 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 892 | <p>In XHTML, the script and style elements are declared as having |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 893 | <code>#PCDATA</code> content. As a result, <code><</code> and |
| 894 | <code>&</code> will be treated as the start of markup, and |
| 895 | entities such as <code>&lt;</code> and <code>&amp;</code> |
| 896 | will be recognized as entity references by the XML processor to |
| 897 | <code><</code> and <code>&</code> respectively. Wrapping |
| 898 | the content of the script or style element within a <code> |
| 899 | CDATA</code> marked section avoids the expansion of these |
| 900 | entities.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 901 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 902 | <div class="good"> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 903 | <pre> |
| 904 | <script> |
| 905 | <![CDATA[ |
| 906 | ... unescaped script content ... |
| 907 | ]]> |
| 908 | </script> |
| 909 | </pre> |
| 910 | </div> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 911 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 912 | <p><code>CDATA</code> sections are recognized by the XML |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 916 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 917 | <p>An alternative is to use external script and style |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 918 | documents.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 919 | |
| 920 | <h2><a name="h-4.9" id="h-4.9">4.9 SGML exclusions</a></h2> |
| 921 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 922 | <p>SGML gives the writer of a DTD the ability to exclude specific |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 923 | elements from being contained within an element. Such |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 924 | prohibitions (called "exclusions") are not possible in XML.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 925 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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"> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 933 | Appendix B</a>.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 938 | <p>HTML 4.0 defined the <code>name</code> attribute for the elements |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 945 | <p>In XML, fragment identifiers are of type <code>ID</code>, and |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 957 | <p>Note that in XHTML 1.0, the <code>name</code> attribute of these |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 958 | elements is formally deprecated, and will be removed in a |
| 959 | subsequent version of XHTML.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 960 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 961 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 962 | <h1><a name="issues" id="issues">5. Compatibility Issues</a></h1> |
| 963 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 964 | <p>Although there is no requirement for XHTML 1.0 documents to be |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 965 | compatible with existing user agents, in practice this is easy to |
| 966 | accomplish. Guidelines for creating compatible documents can be |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 967 | found in <a href="#guidelines">Appendix C</a>.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 968 | |
| 969 | <h2><a name="media" id="media">5.1 Internet Media Type</a></h2> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 970 | <p>As of the publication of this recommendation, the general |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 971 | recommended MIME labeling for XML-based applications |
| 972 | has yet to be resolved.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 973 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 974 | <p>However, XHTML Documents which follow the guidelines set forth |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 975 | in <a href="#guidelines">Appendix C</a>, "HTML Compatibility Guidelines" may be |
| 976 | labeled with the Internet Media Type "text/html", as they |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 977 | are compatible with most HTML browsers. This document |
| 978 | makes no recommendation about MIME labeling of other |
| 979 | XHTML documents.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 980 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 981 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 982 | <h1><a name="future" id="future">6. Future Directions</a></h1> |
| 983 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 984 | <p>XHTML 1.0 provides the basis for a family of document types |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 990 | |
| 991 | <h2><a name="mods" id="mods">6.1 Modularizing HTML</a></h2> |
| 992 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 993 | <p>As the use of XHTML moves from the traditional desktop user |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 998 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 999 | <p>The process of modularization breaks XHTML up into a series of |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1000 | smaller element sets. These elements can then be recombined to |
| 1001 | meet the needs of different communities.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1002 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1003 | <p>These modules will be defined in a later W3C document.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1004 | |
| 1005 | <h2><a name="extensions" id="extensions">6.2 Subsets and |
| 1006 | Extensibility</a></h2> |
| 1007 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1008 | <p>Modularization brings with it several advantages:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1009 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1010 | <ul> |
| 1011 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1012 | <p>It provides a formal mechanism for sub-setting XHTML.</p> |
| 1013 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1014 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1015 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1016 | <p>It provides a formal mechanism for extending XHTML.</p> |
| 1017 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1018 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1019 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1020 | <p>It simplifies the transformation between document types.</p> |
| 1021 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1022 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1023 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1024 | <p>It promotes the reuse of modules in new document types.</p> |
| 1025 | </li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1026 | </ul> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1027 | |
| 1028 | <h2><a name="profiles" id="profiles">6.3 Document |
| 1029 | Profiles</a></h2> |
| 1030 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1031 | <p>A document profile specifies the syntax and semantics of a set |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1037 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1038 | <p>For product designers this enables various groups to define |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1039 | their own standard profile.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1040 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1041 | <p>For authors this will obviate the need to write several |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1042 | different versions of documents for different clients.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1043 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1044 | <p>For special groups such as chemists, medical doctors, or |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1045 | mathematicians this allows a special profile to be built using |
| 1046 | standard HTML elements plus a group of elements geared to the |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1047 | specialist's needs.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1048 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1049 | <!--OddPage--> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1050 | <h1><a name="appendices" id="appendices"></a> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1051 | <a name="dtds" id="dtds">Appendix A. DTDs</a></h1> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1052 | |
| 1053 | <p><b>This appendix is normative.</b></p> |
| 1054 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1055 | <p>These DTDs and entity sets form a normative part of this |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1058 | |
| 1059 | <h2><a name="h-A1" id="h-A1">A.1 Document Type |
| 1060 | Definitions</a></h2> |
| 1061 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1062 | <p>These DTDs approximate the HTML 4.0 DTDs. It is likely that |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1063 | when the DTDs are modularized, a method of DTD construction will |
| 1064 | be employed that corresponds more closely to HTML 4.0.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1065 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1066 | <ul> |
| 1067 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1068 | <p><a href="DTD/xhtml1-strict.dtd" type="text/plain"> |
| 1069 | XHTML-1.0-Strict</a></p> |
| 1070 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1071 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1072 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1073 | <p><a href="DTD/xhtml1-transitional.dtd" type="text/plain"> |
| 1074 | XHTML-1.0-Transitional</a></p> |
| 1075 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1076 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1077 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1078 | <p><a href="DTD/xhtml1-frameset.dtd" type="text/plain"> |
| 1079 | XHTML-1.0-Frameset</a></p> |
| 1080 | </li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1081 | </ul> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1082 | |
| 1083 | <h2><a name="h-A2" id="h-A2">A.2 Entity Sets</a></h2> |
| 1084 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1085 | <p>The XHTML entity sets are the same as for HTML 4.0, but have |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1086 | been modified to be valid XML 1.0 entity declarations. Note the |
| 1087 | entity for the Euro currency sign (<code>&euro;</code> or |
| 1088 | <code>&#8364;</code> or <code>&#x20AC;</code>) is defined |
| 1089 | as part of the special characters.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1090 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1091 | <ul> |
| 1092 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1093 | <p><a href="DTD/xhtml-lat1.ent">Latin-1 characters</a></p> |
| 1094 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1095 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1096 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1097 | <p><a href="DTD/xhtml-special.ent">Special characters</a></p> |
| 1098 | </li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1099 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1100 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1101 | <p><a href="DTD/xhtml-symbol.ent">Symbols</a></p> |
| 1102 | </li> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1103 | </ul> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1104 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1105 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1111 | <p>The following elements have prohibitions on which elements |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1115 | |
| 1116 | <dl><dt><code class="tag">a</code></dt> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1117 | <dd> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1118 | cannot contain other <code>a</code> elements.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1119 | <dt><code class="tag">pre</code></dt> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1120 | <dd>cannot contain the <code>img</code>, <code>object</code>, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1121 | <code>big</code>, <code>small</code>, <code>sub</code>, or <code> |
| 1122 | sup</code> elements.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1123 | |
| 1124 | <dt><code class="tag">button</code></dt> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1125 | <dd>cannot contain the <code>input</code>, <code>select</code>, |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1129 | <dt><code class="tag">label</code></dt> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1130 | <dd>cannot contain other <code class="tag">label</code> elements.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1131 | <dt><code class="tag">form</code></dt> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1132 | <dd>cannot contain other <code>form</code> elements.</dd> |
| 1133 | </dl> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1134 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1135 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 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 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1141 | <p>This appendix summarizes design guidelines for authors who |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1142 | wish their XHTML documents to render on existing HTML user |
| 1143 | agents.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1144 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1145 | <h2>C.1 Processing Instructions</h2> |
| 1146 | <p>Be aware that processing instructions are rendered on some |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1150 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1151 | <h2>C.2 Empty Elements</h2> |
| 1152 | <p>Include a space before the trailing <code>/</code> and <code> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1153 | ></code> of empty elements, e.g. <code class="greenmono"> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1154 | <br /></code>, <code class="greenmono"> |
| 1155 | <hr /></code> and <code class="greenmono"><img |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1156 | src="karen.jpg" alt="Karen" /></code>. Also, use the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1157 | minimized tag syntax for empty elements, e.g. <code class="greenmono"><br /></code>, as the alternative syntax <code class="greenmono"><br></br></code> allowed by XML |
| 1158 | gives uncertain results in many existing user agents.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1159 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1160 | <h2>C.3 Element Minimization and Empty Element Content</h2> |
| 1161 | <p>Given an empty instance of an element whose content model is |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1162 | not <code>EMPTY</code> (for example, an empty title or paragraph) |
| 1163 | do not use the minimized form (e.g. use <code class="greenmono"> |
| 1164 | <p> </p></code> and not <code class="greenmono"> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1165 | <p /></code>).</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1166 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1167 | <h2>C.4 Embedded Style Sheets and Scripts</h2> |
| 1168 | <p>Use external style sheets if your style sheet uses <code> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1169 | <</code> or <code>&</code> or <code>]]></code> or <code>--</code>. Use |
| 1170 | external scripts if your script uses <code><</code> or <code> |
| 1171 | &</code> or <code>]]></code> or <code>--</code>. Note that XML parsers |
| 1172 | are permitted to silently remove the contents of comments. Therefore, the historical |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1173 | practice of "hiding" scripts and style sheets within comments to make the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1174 | documents backward compatible is likely to not work as expected in XML-based |
| 1175 | implementations.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1176 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1177 | <h2>C.5 Line Breaks within Attribute Values</h2> |
| 1178 | <p>Avoid line breaks and multiple whitespace characters within |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1179 | attribute values. These are handled inconsistently by user |
| 1180 | agents.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1181 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1182 | <h2>C.6 Isindex</h2> |
| 1183 | <p>Don't include more than one <code>isindex</code> element in |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1184 | the document <code>head</code>. The <code>isindex</code> element |
| 1185 | is deprecated in favor of the <code>input</code> element.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1186 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1189 | attributes when specifying the language of an element. The value |
| 1190 | of the <code>xml:lang</code> attribute takes precedence.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1191 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1194 | <code>"#foo"</code> do not refer to elements with an attribute |
| 1195 | <code>name="foo"</code>; rather, they refer to elements with an |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1196 | attribute defined to be of type <code>ID</code>, e.g., the <code> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1197 | id</code> attribute in HTML 4.0. Many existing HTML clients don't |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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 |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1200 | maximum forward and backward compatibility (e.g., <code class="greenmono"><a id="foo" name="foo">...</a></code>).</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1201 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1202 | <p>Further, since the set of |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1215 | <p>Finally, note that XHTML 1.0 has deprecated the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1219 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1220 | <h2>C.9 Character Encoding</h2> |
| 1221 | <p>To specify a character encoding in the document, use both the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1222 | encoding attribute specification on the xml declaration (e.g. |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1223 | <code class="greenmono"><?xml version="1.0" |
| 1224 | encoding="EUC-JP"?></code>) and a meta http-equiv statement |
| 1225 | (e.g. <code class="greenmono"><meta http-equiv="Content-type" |
| 1226 | content='text/html; charset="EUC-JP"' /></code>). The |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1227 | value of the encoding attribute of the xml processing instruction |
| 1228 | takes precedence.</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1229 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1230 | <h2>C.10 Boolean Attributes</h2> |
| 1231 | <p>Some HTML user agents are unable to interpret boolean |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1232 | attributes when these appear in their full (non-minimized) form, |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1233 | as required by XML 1.0. Note this problem doesn't effect user |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1240 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1241 | <h2>C.11 Document Object Model and XHTML</h2> |
| 1242 | <p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1251 | <ol> |
| 1252 | <li>Applications that access XHTML documents served as Internet media type |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1257 | <li>Applications that access XHTML documents served as Internet media types |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1271 | </ol> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1272 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1273 | <h2>C.12 Using Ampersands in Attribute Values</h2> |
| 1274 | <p> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1275 | When an attribute value contains an ampersand, it must be expressed as a character |
| 1276 | entity reference |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1277 | (e.g. "<code>&amp;</code>"). For example, when the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1278 | <code>href</code> attribute |
| 1279 | of the <code>a</code> element refers to a |
| 1280 | CGI script that takes parameters, it must be expressed as |
| 1281 | <code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user</code> |
| 1282 | rather than as |
| 1283 | <code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user</code>. |
| 1284 | </p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1285 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1286 | <h2>C.13 Cascading Style Sheets (CSS) and XHTML</h2> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1287 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1288 | <p>The Cascading Style Sheets level 2 Recommendation [<a href="#ref-css2">CSS2</a>] defines style |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1294 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1295 | <ol> |
| 1296 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1297 | CSS style sheets for XHTML should use lower case element and |
| 1298 | attribute names.</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1299 | |
| 1300 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1301 | <li>In tables, the tbody element will be inferred by the parser of an |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1305 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1306 | <li>Within the XHTML name space, user agents are expected to |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1307 | recognize the "id" attribute as an attribute of type ID. |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1308 | Therefore, style sheets should be able to continue using the |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1309 | shorthand "#" selector syntax even if the user agent does not read |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1310 | the DTD.</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1311 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1312 | <li>Within the XHTML name space, user agents are expected to |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1313 | recognize the "class" attribute. Therefore, style sheets should be |
| 1314 | able to continue using the shorthand "." selector syntax.</li> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1315 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1316 | <li> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1320 | </ol> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1321 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1322 | <h1><a name="acks" id="acks">Appendix D. |
| 1323 | Acknowledgements</a></h1> |
| 1324 | |
| 1325 | <p><b>This appendix is informative.</b></p> |
| 1326 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1327 | <p>This specification was written with the participation of the |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1328 | members of the W3C HTML working group:</p> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1329 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1330 | <dl> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 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 /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1345 | Shane McCarron, Applied Testing and Technology (The Open Group through August |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 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 /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1354 | Dan Zigmond, WebTV Networks</dd> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1355 | </dl> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1356 | |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1357 | <!--OddPage--> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1358 | <h1><a name="refs" id="refs">Appendix E. References</a></h1> |
| 1359 | |
| 1360 | <p><b>This appendix is informative.</b></p> |
| 1361 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1362 | <dl> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1363 | |
| 1364 | <dt><a name="ref-css2" id="ref-css2"><b>[CSS2]</b></a></dt> |
| 1365 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1366 | <dd><a href="http://www.w3.org/TR/REC-CSS2">"Cascading Style Sheets, level 2 (CSS2) Specification"</a>, B. |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1367 | Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1368 | Available at: <a href="http://www.w3.org/TR/REC-CSS2"> |
| 1369 | http://www.w3.org/TR/REC-CSS2</a></dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1370 | |
| 1371 | <dt><a name="ref-dom" id="ref-dom"><b>[DOM]</b></a></dt> |
| 1372 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1373 | <dd><a href="http://www.w3.org/TR/REC-DOM-Level-1">"Document Object Model (DOM) Level 1 Specification"</a>, Lauren |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1374 | Wood <i>et al.</i>, 1 October 1998.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1377 | |
| 1378 | <dt><a name="ref-html4" id="ref-html4"><b>[HTML]</b></a></dt> |
| 1379 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1380 | <dd><a href="http://www.w3.org/TR/1999/PR-html40-19990824">"HTML 4.01 Specification"</a>, D. Raggett, A. Le Hors, I. |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1381 | Jacobs, 24 August 1999.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1384 | |
| 1385 | <dt><a name="ref-posix" id="ref-posix"><b>[POSIX.1]</b></a></dt> |
| 1386 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1387 | <dd>"ISO/IEC 9945-1:1990 Information Technology - Portable |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1388 | Operating System Interface (POSIX) - Part 1: System Application |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1389 | Program Interface (API) [C Language]", Institute of Electrical |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1390 | and Electronics Engineers, Inc, 1990.</dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1391 | |
| 1392 | <dt><a name="ref-rfc2046" id="ref-rfc2046"><b> |
| 1393 | [RFC2046]</b></a></dt> |
| 1394 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 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 |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1397 | 1996.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1401 | |
| 1402 | <dt><a name="ref-rfc2119" id="ref-rfc2119"><b> |
| 1403 | [RFC2119]</b></a></dt> |
| 1404 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 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 /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1407 | Available at: <a href="http://www.ietf.org/rfc/rfc2119.txt"> |
| 1408 | http://www.ietf.org/rfc/rfc2119.txt</a></dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1409 | |
| 1410 | <dt><a name="ref-rfc2376" id="ref-rfc2376"><b> |
| 1411 | [RFC2376]</b></a></dt> |
| 1412 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1413 | <dd><a href="http://www.ietf.org/rfc/rfc2376.txt">"RFC2376: XML Media Types"</a>, E. Whitehead, M. Murata, July |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1414 | 1998.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1415 | Available at: <a href="http://www.ietf.org/rfc/rfc2376.txt"> |
| 1416 | http://www.ietf.org/rfc/rfc2376.txt</a></dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1417 | |
| 1418 | <dt><a name="ref-rfc2396" id="ref-rfc2396"><b> |
| 1419 | [RFC2396]</b></a></dt> |
| 1420 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 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 |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1423 | 1998.<br /> |
| 1424 | This document updates RFC1738 and RFC1808.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1425 | Available at: <a href="http://www.ietf.org/rfc/rfc2396.txt"> |
| 1426 | http://www.ietf.org/rfc/rfc2396.txt</a></dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1427 | |
| 1428 | <dt><a name="ref-xml" id="ref-xml"><b>[XML]</b></a></dt> |
| 1429 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1430 | <dd><a href="http://www.w3.org/TR/REC-xml">"Extensible Markup Language (XML) 1.0 Specification"</a>, T. |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1431 | Bray, J. Paoli, C. M. Sperberg-McQueen, 10 February 1998.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1432 | Available at: <a href="http://www.w3.org/TR/REC-xml"> |
| 1433 | http://www.w3.org/TR/REC-xml</a></dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1434 | |
| 1435 | <dt><a name="ref-xmlns" id="ref-xmlns"><b>[XMLNAMES]</b></a></dt> |
| 1436 | |
Daniel Veillard | 8265a18 | 2003-06-13 10:05:56 +0000 | [diff] [blame] | 1437 | <dd><a href="http://www.w3.org/TR/REC-xml-names">"Namespaces in XML"</a>, T. Bray, D. Hollander, A. Layman, 14 |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1438 | January 1999.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1439 | XML namespaces provide a simple method for qualifying names used |
| 1440 | in XML documents by associating them with namespaces identified |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1441 | by URI.<br /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1442 | Available at: <a href="http://www.w3.org/TR/REC-xml-names"> |
| 1443 | http://www.w3.org/TR/REC-xml-names</a></dd> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1444 | |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1445 | </dl> |
Daniel Veillard | 2f36224 | 2001-03-02 17:36:21 +0000 | [diff] [blame] | 1446 | <p><a href="http://www.w3.org/WAI/WCAG1AAA-Conformance" title="Explanation of Level Triple-A Conformance"> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 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> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1448 | <div class="navbar"> |
Daniel Veillard | d5c2f92 | 2002-11-21 14:10:52 +0000 | [diff] [blame] | 1449 | <hr /> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1450 | <a href="#toc">table of contents</a> |
| 1451 | </div> |
Daniel Veillard | 75c2921 | 2000-03-14 18:33:47 +0000 | [diff] [blame] | 1452 | </body> |
Daniel Veillard | 686d6b6 | 2000-01-03 11:08:02 +0000 | [diff] [blame] | 1453 | </html> |