| Internet media type |
XHTML 1.0 was "a reformulation of the three HTML 4 document types as applications of XML 1.0". The World Wide Web Consortium (W3C) also simultaneously maintained the HTML 4.01 Recommendation. In the XHTML 1.0 Recommendation document, as published and revised in August 2002, the W3C commented that "The XHTML family is the next step in the evolution of the Internet. By migrating to XHTML today, content developers can enter the XML world with all of its attendant benefits, while remaining confident in their content's backward and future compatibility."
However, in 2005, the Web Hypertext Application Technology Working Group (WHATWG) formed, independently of the W3C, to work on advancing ordinary HTML not based on XHTML. The WHATWG eventually began working on a standard that supported both XML and non-XML serializations, HTML5, in parallel to W3C standards such as XHTML 2.0. In 2007, the W3C's HTML working group voted to officially recognize HTML5 and work on it as the next generation HTML standard. In 2009, the W3C allowed the XHTML 2.0 Working Group's charter to expire, acknowledging that HTML5 would be the sole next-generation HTML standard, including both XML and non-XML serializations. Of the two serializations, the W3C suggests that most authors use the HTML syntax, rather than the XHTML syntax.
The W3C recommendations of both XHTML 1.0 and XHTML 1.1 were retired on 27 March 2018, along with HTML 4.0, HTML 4.01, and HTML5.
XHTML was developed to make HTML more extensible and increase interoperability with other data formats. In addition, browsers were forgiving of errors in HTML, and most websites were displayed despite technical errors in the markup; XHTML introduced stricter error handling. HTML 4 was ostensibly an application of Standard Generalized Markup Language (SGML); however the specification for SGML was complex, and neither web browsers nor the HTML 4 Recommendation were fully conformant to it. The XML standard, approved in 1998, provided a simpler data format closer in simplicity to HTML 4. By shifting to an XML format, it was hoped HTML would become compatible with common XML tools; servers and proxies would be able to transform content, as necessary, for constrained devices such as mobile phones.
By using namespaces, XHTML documents could provide extensibility by including fragments from other XML-based languages such as Scalable Vector Graphics and MathML. Finally, the renewed work would provide an opportunity to divide HTML into reusable components (XHTML Modularization) and clean up untidy parts of the language.
There are various differences between XHTML and HTML. The Document Object Model (DOM) is a tree structure that represents the page internally in applications, and XHTML and HTML are two different ways of representing that in markup. Both are less expressive than the DOM — for example, "-->" may be placed in comments in the DOM, but cannot be represented in a comment in either XHTML or HTML — and generally, XHTML's XML syntax is more expressive than HTML (for example, arbitrary namespaces are not allowed in HTML). XHTML uses an XML syntax, while HTML uses a pseudo-SGML syntax (officially SGML for HTML 4 and under, but never in practice, and standardized away from SGML in HTML5). Because the expressible contents of the DOM syntax are slightly different, there are some changes in actual behavior between the two models. Syntax differences, however, can be overcome by implementing an alternate translational framework within the markup.
First, there are some differences in syntax:
- Broadly, the XML rules require that every element be closed, either with a separate closing tag (e.g. "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"</div>"},"2":{"wt":"xml"}},"i":0}}]}'></div>) or by using the self-closing syntax (e.g. "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<br/>"},"2":{"wt":"xml"}},"i":0}}]}'><br/>), while HTML syntax permits some elements to be unclosed because either they are always empty (e.g. "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<input>"},"2":{"wt":"html"}},"i":0}}]}'><input>) or their end can be determined implicitly ("omissibility", e.g. "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<p>"},"2":{"wt":"html"}},"i":0}}]}'><p>).
- XML is case-sensitive for element and attribute names, while HTML is not.
- Some shorthand features in HTML are omitted in XML, such as (1) attribute minimization, where attribute values or their quotes may be omitted (e.g. "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<option selected>"},"2":{"wt":"html"}},"i":0}}]}'><option selected> or "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<option selected{{=}}selected>"},"2":{"wt":"html"}},"i":0}}]}'><option selected=selected>, while in XML this must be expressed as "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<option selected{{=}}\"selected\">"},"2":{"wt":"xml"}},"i":0}}]}'><optionselected="selected">); (2) element minimization may be used to remove elements entirely (such as "},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"1":{"wt":"<tbody>"},"2":{"wt":"xml"}},"i":0}}]}'><tbody> inferred in a table if not given); and (3) the rarely used SGML syntax for element minimization ("shorttag"), which most browsers do not implement.
- There are numerous other technical requirements surrounding namespaces and precise parsing of whitespace and certain characters and elements. The exact parsing of HTML in practice has been undefined until recently; see the HTML5 specification ([HTML5]) for full details, or the working summary (HTML vs. XHTML).
In addition to the syntactical differences, there are some behavioral differences, mostly arising from the underlying differences in serialization. For example:
- Behavior on parse errors differs. A fatal parse error in XML (such as an incorrect tag structure) causes document processing to be aborted.
- Most content requiring namespaces will not work in HTML, except the built-in support for SVG and MathML in the HTML5 parser along with certain magic prefixes such as xlink.
- JavaScript processing is different in XHTML, with minor changes in case sensitivity to some functions, and further precautions to restrict processing to well-formed content. Scripts must not use the <html> element; this is not to be the case for XHTML unless otherwise stated with the "initial" and "inherit" keywords.
The similarities between HTML 4.01 and XHTML 1.0 led many websites and content management systems to adopt the initial W3C XHTML 1.0 Recommendation. To aid authors in the transition, the W3C provided guidance on how to publish XHTML 1.0 documents in an HTML-compatible manner, and serve them to browsers that were not designed for XHTML.
Such "HTML-compatible" content is sent using the HTML media type (text/html) rather than the official Internet media type for XHTML (application/xhtml+xml). When measuring the adoption of XHTML to that of regular HTML, therefore, it is important to distinguish whether it is media type usage or actual document contents that are being compared.
Most web browsers have mature support for all of the possible XHTML media types. The notable exception is Internet Explorer versions 8 and earlier by Microsoft; rather than rendering application/xhtml+xml content, a dialog box invites the user to save the content to disk instead. Both Internet Explorer 7 (released in 2006) and Internet Explorer 8 (released in March 2009) exhibit this behavior. Microsoft developer Chris Wilson explained in 2005 that IE7's priorities were improved browser security and CSS support, and that proper XHTML support would be difficult to graft onto IE's compatibility-oriented HTML parser; however, Microsoft added support for true XHTML in IE9.
As long as support is not widespread, most web developers avoid using XHTML that is not HTML-compatible, so advantages of XML such as namespaces, faster parsing, and smaller-footprint browsers do not benefit the user.
In the early 2000s, some Web developers began to question why Web authors ever made the leap into authoring in XHTML. Others countered that the problems ascribed to the use of XHTML could mostly be attributed to two main sources: the production of invalid XHTML documents by some Web authors and the lack of support for XHTML built into Internet Explorer 6. They went on to describe the benefits of XML-based Web documents (i.e. XHTML) regarding searching, indexing, and parsing as well as future-proofing the Web itself.
In October 2006, HTML inventor and W3C chair Tim Berners-Lee, introducing a major W3C effort to develop a new HTML specification, posted in his blog that "[t]he attempt to get the world to switch to XML ... all at once didn't work. The large HTML-generating public did not move ... Some large communities did shift and are enjoying the fruits of well-formed systems ... The plan is to charter a completely new HTML group." The current HTML5 working draft says "special attention has been given to defining clear conformance criteria for user agents in an effort to improve interoperability ... while at the same time updating the HTML specifications to address issues raised in the past few years." Ian Hickson, editor of the HTML5 specification criticizing the improper use of XHTML in 2002, is a member of the group developing this specification and is listed as one of the co-editors of the current working draft.
Simon Pieters researched the XML-compliance of mobile browsers and concluded "the claim that XHTML would be needed for mobile devices is simply a myth".
Before September of 2012, Wikipedia used the XHTML 1.0 Transitional doctype and syntax, though the content was not served as application/xhtml+xml.
December 1998 saw the publication of a W3C Working Draft entitled Reformulating HTML in XML. This introduced Voyager, the codename for a new markup language based on HTML 4, but adhering to the stricter syntax rules of XML. By February 1999 the name of the specification had changed to XHTML 1.0: The Extensible HyperText Markup Language, and in January 2000 it was officially adopted as a W3C Recommendation. There are three formal Document Type Definitions (DTD) for XHTML 1.0, corresponding to the three different versions of HTML 4.01:
- XHTML 1.0 Strict is the XML equivalent to strict HTML 4.01, and includes elements and attributes that have not been marked deprecated in the HTML 4.01 specification.
XHTML Mobile Profile (abbreviated XHTML MP or XHTML-MP) is a third-party variant of the W3C's XHTML Basic specification. Like XHTML Basic, XHTML was developed for information appliances with limited system resources.
In October 2001, a limited company called the Wireless Application Protocol Forum began adapting XHTML Basic for WAP 2.0, the second major version of the Wireless Application Protocol. WAP Forum based their DTD on the W3C's Modularization of XHTML, incorporating the same modules the W3C used in XHTML Basic 1.0—except for the Target Module. Starting with this foundation, the WAP Forum replaced the Basic Forms Module with a partial implementation of the Forms Module, added partial support for the Legacy and Presentation modules, and added full support for the Style Attribute Module.
In 2002, the WAP Forum has subsumed into the Open Mobile Alliance (OMA), which continued to develop XHTML Mobile Profile as a component of their OMA Browsing Specification.
XHTML Mobile Profile 1.1edit
To this version, finalized in 2004, the OMA added partial support for the Scripting Module and partial support for Intrinsic Events. XHTML MP 1.1 is part of v2.1 of the OMA Browsing Specification (1 November 2002).
XHTML Mobile Profile 1.2edit
This version, finalized on 27 February 2007, expands the capabilities of XHTML MP 1.1 with full support for the Forms Module and OMA Text Input Modes. XHTML MP 1.2 is part of v2.3 of the OMA Browsing Specification (13 March 2007).
XHTML Mobile Profile 1.3edit
XHTML MP 1.3 (finalized on 23 September 2008) uses the XHTML Basic 1.1 document type definition, which includes the Target Module. Events in this version of the specification are updated to DOM Level 3 specifications (i.e., they are platform- and language-neutral).
The XHTML 2 Working Group considered the creation of a new language based on XHTML 1.1. If XHTML 1.2 was created, it would include WAI-ARIA and role attributes to better support accessible web applications, and improved Semantic Web support through RDFa. The inputmode attribute from XHTML Basic 1.1, along with the target attribute (for specifying frame targets) might also be present. The XHTML2 WG had not been chartered to carry out the development of XHTML1.2. Since the W3C announced that it does not intend to recharter the XHTML2 WG, and closed the WG in December 2010, this means that the XHTML 1.2 proposal would not eventuate.
Between August 2002 and July 2006, the W3C released eight Working Drafts of XHTML 2.0, a new version of XHTML able to make a clean break from the past by discarding the requirement of backward compatibility. This lack of compatibility with XHTML 1.x and HTML 4 caused some early controversy in the web developer community. Some parts of the language (such as the role and RDFa attributes) were subsequently split out of the specification and worked on as separate modules, partially to help make the transition from XHTML 1.x to XHTML 2.0 smoother. The ninth draft of XHTML 2.0 was expected to appear in 2009, but on 2 July 2009, the W3C decided to let the XHTML2 Working Group charter expire by that year's end, effectively halting any further development of the draft into a standard. Instead, XHTML 2.0 and its related documents were released as W3C Notes in 2010.
New features to have been introduced by XHTML 2.0 included:
- HTML forms were to be replaced by XForms, an XML-based user input specification allowing forms to be displayed appropriately for different rendering devices.
- HTML frames were to be replaced by XFrames.
- The DOM Events were to be replaced by XML Events, which uses the XML Document Object Model.
- A new list element type, the nl element type, was to be included to specifically designate a list as a navigation list. This would have been useful in creating nested menus, which are currently created by a wide variety of means like nested unordered lists or nested definition lists.
- Any element was to be able to act as a hyperlink, e. g., Articles</li>"},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"code":{"wt":"<li href=\"articles.html\">Articles</li>"},"1":{"wt":"xml"}},"i":0}}]}'><li href="articles.html">Articles</li>, similar to XLink. However, XLink itself is not compatible with XHTML due to design differences.
- Any element was to be able to reference alternative media with the src attribute, e. g., London Bridge</p>"},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"code":{"wt":"<p src=\"lbridge.jpg\" type=\"image/jpeg\">London Bridge</p>"},"1":{"wt":"xml"}},"i":0}}]}'><p src="lbridge.jpg" type="image/jpeg">London Bridge</p> is the same as <p>London Bridge</p></object>"},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"code":{"wt":"<object src=\"lbridge.jpg\" type=\"image/jpeg\"><p>London Bridge</p></object>"},"1":{"wt":"xml"}},"i":0}}]}'><object src="lbridge.jpg" type="image/jpeg"><p>London Bridge</p></object>.
- The alt attribute of the img element was removed: alternative text was to be given in the content of the img element, much like the object element, e. g., HMS <span class=\"italic\">Audacious</span></img>"},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"code":{"wt":"<img src=\"hms_audacious.jpg\">HMS <span class=\"italic\">Audacious</span></img>"},"1":{"wt":"xml"}},"i":0}}]}'><img src="hms_audacious.jpg">HMS <span>Audacious</span></img>.
- A single heading element (h) was added. The level of these headings was determined by the depth of the nesting. This would have allowed the use of headings to be infinite, rather than limiting use to six levels deep.
- The remaining presentational elements i, b and tt, still allowed in XHTML 1.x (even Strict), were to be absent from XHTML 2.0. The only somewhat presentational elements remaining were to be sup and sub for superscript and subscript respectively because they have significant non-presentational uses and are required by certain languages. All other tags were meant to be semantic instead (e. g. strong for strong emphasis) while allowing the user agent to control the presentation of elements via CSS (e.g. rendered as boldface text in most visual browsers, but possibly rendered with changes of tone in a text-to-speech reader, larger + italic font per rules in a user-end stylesheet, etc.).
- The addition of RDF triple with the property and about attributes to facilitate the conversion from XHTML to RDF/XML.
<htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="ar">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en"lang="en">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>XHTML1.0StrictExample</title>
<scripttype="text/javascript">
//<![CDATA[
function loadpdf() {
document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf";
}
//]]>
</script>
</head>
<bodyonload="loadpdf()">
<p>Thisisanexampleofan
<abbrtitle="Extensible HyperText Markup Language">XHTML</abbr>1.0Strictdocument.<br/>
<imgid="validation-icon"
src="http://www.w3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict"/><br/>
<objectid="pdf-object"
name="pdf-object"
type="application/pdf"
data="http://www.w3.org/TR/xhtml1/xhtml1.pdf"
width="100%"
height="500">
</object>
</p>
</body>
</html>
Example 2.
\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">\n <head>\n <title>XHTML 1.0 Strict Example</title>\n <script type=\"application/javascript\">\n <![CDATA[\n function loadpdf() {\n document.getElementById(\"pdf-object\").src=\"http://www.w3.org/TR/xhtml1/xhtml1.pdf\";\n }\n ]]>\n </script>\n </head>\n <body onload=\"loadpdf()\">\n <p>This is an example of an\n <abbr title=\"Extensible HyperText Markup Language\">XHTML</abbr> 1.0 Strict document.<br />\n <img id=\"validation-icon\"\n src=\"http://www.w3.org/Icons/valid-xhtml10\"\n alt=\"Valid XHTML 1.0 Strict\"/><br />\n <object id=\"pdf-object\"\n type=\"application/pdf\"\n data=\"http://www.w3.org/TR/xhtml1/xhtml1.pdf\"\n width=\"100%\"\n height=\"500\"></object>\n </p>\n </body>\n</html>\n"}}'><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en">
<head>
<title>XHTML1.0StrictExample</title>
<scripttype="application/javascript">
<![CDATA[
function loadpdf() {
document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf";
}
]]>
</script>
</head>
<bodyonload="loadpdf()">
<p>Thisisanexampleofan
<abbrtitle="Extensible HyperText Markup Language">XHTML</abbr>1.0Strictdocument.<br/>
<imgid="validation-icon"
src="http://www.w3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict"/><br/>
<objectid="pdf-object"
type="application/pdf"
data="http://www.w3.org/TR/xhtml1/xhtml1.pdf"
width="100%"
height="500"></object>
</p>
</body>
</html>
Notes:
- The "loadpdf" function is actually a workaround for Internet Explorer. It can be replaced by adding <param name="src" value="http://www.w3.org/TR/xhtml1/xhtml1.pdf"/> within <object>.
- The img element does not get a name attribute in the XHTML 1.0 Strict DTD. Use id instead.
Cross-compatibility of XHTML and HTMLedit
HTML5 and XHTML5 serializations are largely inter-compatible if adhering to the stricter XHTML5 syntax, but there are some cases in which XHTML will not work as valid HTML5 (e.g., Processing instructions are non-existent in HTML, are treated as comments, and close on the first >, whereas they are fully allowed in XML, are treated as their own type, and close on ?>).
"The XML syntax". HTML: The Living Standard. WHATWG. Archived from the original on 5 June 2023.
- ↑ "XHTML 1.0 Specification, Section 1: What is XHTML?". World Wide Web Consortium. 2000-01-26. Retrieved 2007-06-16.
- ↑ "Frequently Asked Questions (FAQ) about the future of XHTML". w3.org.
- ↑ "XHTML™ 1.1 - Module-based XHTML - Second Edition Publication History". World Wide Web Consortium. 27 March 2018.
- ↑ "HTML5 Publication History". World Wide Web Consortium. 27 March 2018.
- ↑ Arjun Ray (1999-10-06). "Dropping the Normative Reference to SGML (was: I-D ACTION.)". Archived from the original on 2021-02-25. Retrieved 2008-12-29. ... However, since ISO 8879 does not afford applications the leeway to prohibit internal subsets, it follows that the letter of the HTML [4] spec automatically disentitles it to be a conforming SGML application...
- ↑ Jean-Luc David (2004-04-14). "Developing Wireless Content using XHTML Mobile". XML.com. Retrieved 2008-12-29. ... A useful feature of XHTML is that it can be manipulated as XML. Extensible Stylesheet Language Templates can be used to transform XHTML into WML or any other proprietary mobile formats...
- ↑ Clark, James (1997-12-15). "Comparison of SGML and XML". World Wide Web Consortium Note.
- ↑ "APIs in HTML documents". W3C. Retrieved 6 September 2026.
- ↑ "CSS Cascading and Inheritance Level 3". www.w3.org. Retrieved 2026-03-29.
- ↑ "Meta and Inline Tags that Google Understands | Google Search Central".
- ↑ Greta de Groat (2002). "Perspectives on the Web and Google: Monika Henzinger, Director of Research, Google", Journal of Internet Cataloging, Vol. 5(1), pp. 17-28, 2002.
- ↑ Early implementations (such as Mozilla 0.7 and Opera 6.0, both released in 2001) do not incrementally render XHTML as it is received over the network, giving a degraded user experience; see the Mozilla Web Author FAQ. Later browsers such as Opera 9.0, Safari 3.0, and Firefox 3.0 do not have this issue.
- ↑ prolog, strict mode, and XHTML in IE". Retrieved 2007-06-16. ...If we tried to support real XHTML in IE 7 we would have ended up using our existing HTML parser (which is focused on compatibility) and hacking in XML constructs. It is highly unlikely we could support XHTML well in this way; in particular, we would certainly not detect a few error cases here or there, and we would silently support invalid cases. This would, of course, cause compatibility problems based on parser error handling in the future, which XML is explicitly trying to avoid; we don't want to cause another mess like the one with current HTML error handling (rooted in compatibility with earlier browsers – you can blame me for that personally somewhat, but not IE). I would much rather take the time to implement XHTML properly after IE 7, and have it be truly interoperable...
- ↑ "Meta used for SEO". 18 December 2015. Archived from the original on March 31, 2016. Retrieved March 18, 2016.
- ↑ Danny Sullivan, How To Use HTML Meta Tags Archived 2008-09-13 at the Wayback Machine, Search Engine Watch, December 5, 2002
- 1 2 "XHTML 1.0: The Extensible HyperText Markup Language, W3C Recommendation 26 January 2000". World Wide Web Consortium. 2000-01-26. Retrieved 2008-07-19.
- ↑ "XHTML Modularization 1.1 - Second Edition, W3C Recommendation 29 July 2010". World Wide Web Consortium. 2010-07-29. Retrieved 2010-12-31.
- ↑ "XHTML Media Types – Second Edition, W3C Working Group Note 16 January 2009". World Wide Web Consortium. 2009-01-16. Retrieved 2009-01-28.
This document supersedes the HTML Compatibility Guidelines originally found in XHTML 1.0 Appendix C.
- ↑ "XHTML Basic, W3C Recommendation 19 December 2000". World Wide Web Consortium. 2000-12-19. Retrieved 2008-07-19.
- ↑ "XHTML-Print, W3C Recommendation 20 September 2006". World Wide Web Consortium. 2006-09-20. Retrieved 2008-07-19.
- 1 2 "XHTML 2.0, W3C Working Group Note 16 December 2010". World Wide Web Consortium. 2010-12-16. Retrieved 2010-12-31.
- ↑ "9 The XHTML syntax — HTML5". w3.org.
- ↑ HTML vs. XHTML, WHATWG Wiki
- ↑ According to Wayback Machine, Wikipedia began using <!DOCTYPE html> on 18 September 2012; before that, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> was used, starting from June of 2004.
Wikibooks has a book on the topic of: XHTML
|
|---|