XHTML

Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same expressive possibilities as HTML, but a stricter syntax. Whereas HTML was an application of SGML, a very flexible markup language, XHTML is an application of XML, a more restrictive subset of SGML. Because they need to be well-formed XML documents, XHTML documents offer greater potential for automated processing than older flavors of HTML. XHTML 1.0 became a World Wide Web Consortium (W3C) Recommendation on January 26, 2000.

Contents

Overview

Missing image
W3C_valid_XHTML_1.0_icon.png
The W3C offers this icon, which may be placed on valid XHTML documents once they pass through the W3C Markup Validator.

XHTML is the successor to, and the current version of, HTML. The need for a more strict version of HTML was felt primarily because World Wide Web content now needs to be delivered to many devices (like mobile devices) apart from traditional computers, where extra resources cannot be devoted to support the generosities of HTML. A DTD (Document Type Definition) defines the rules of XHTML, against which documents can be checked.

Most of the recent versions of popular web browsers render XHTML properly, and many older browsers will also render XHTML as it is mostly a subset of HTML and most browsers do not require valid HTML. Similarly, almost all web browsers that are compatible with XHTML also render HTML properly. Some say this is slowing the switch from HTML to XHTML.

An especially useful feature of XHTML is that different XML namespaces (such as MathML and SVG) can be incorporated within it.

The changes from HTML to transitional XHTML are minor, and are mainly to achieve conformance with XML. The most important change is the requirement that the document must be well formed and all elements must be closed. Additionally, in XHTML, all tags must be written in lowercase. This is in direct contrast to established traditions which began around the time of HTML 2.0, when most people preferred uppercase tags. In XHTML, all attributes, even numerical ones, must be quoted. (This is not mandatory in SGML (hence in HTML), where quotes are not required if the content consists only of alphanumeric and certain allowed special characters.) All elements must also be closed, including empty elements such as img and br. This can be done by adding a closing slash to the start tag: <img … /> and <br />. Attribute minimization (e.g., <option selected>) is also prohibited; instead, use <option selected="selected">. More differences are detailed in the W3C XHTML specification [1].

Versions of XHTML

XHTML 1.0

The original XHTML W3C Recommendation, XHTML 1.0, was simply a reformulation of HTML 4.01 in XML. There are three different 'flavors' of XHTML 1.0, each equal in scope to their respective HTML 4.01 versions.

XHTML 1.1

The most recent XHTML W3C Recommendation is XHTML 1.1: Module-based XHTML. Authors can import additional features (such as framesets) into their markup. This version also allows for ruby markup support, needed for East-Asian languages (especially CJK).

This is the specification that the W3C recommends all new web pages be created in.

The XHTML 2.0 draft specification

Work on XHTML 2.0 is, as of 2005, still underway; in fact, the DTD has not even been authored yet. The XHTML 2.0 draft is controversial because it breaks backwards compatibility with all previous versions, and is therefore in effect a new markup language created to circumvent (X)HTML's limitations rather than being simply a new version.

New features brought into the HTML family of markup languages by XHTML 2.0 state that:

Others in the XHTML family

Validating XHTML documents

An XHTML document that conforms to the XHTML specification is said to be a valid document. In a perfect world, all browsers would follow the web standards and valid documents would predictably render on every browser and platform. Although validating your XHTML does not ensure cross-browser compatibility, it is recommended. A document can be checked for validity with the W3C Markup Validation Service.

DOCTYPEs

For a document to validate, it must contain a Document Type Declaration, or DOCTYPE. A DOCTYPE declares to the browser what Document Type Definition (DTD) the document conforms to. A DTD should be placed at the very beginning of an XHTML document. These are the most common XHTML DTDs:

XHTML 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Character encoding may be specified at the beginning of an XHTML document in the XML declaration and within a meta http-equiv statement. (If an XML document lacks encoding specification, an XML parser assumes that the encoding is UTF-8 or UTF-16, unless the encoding has already been determined by a higher protocol.)

Common errors

Some of the most common errors in XHTML are:

This is not an exhaustive list, but gives a general sense of errors that XHTML coders often make.

Backward compatibilities

XHTML 1.0 is backward compatible with HTML when served as text/html. However, there are problems associated, especially for Internet Explorer. For more information, please refer to XHTML section in the criticisms of Internet Explorer article. Furthermore, XHTML 2.0 has been faulted for not being backward compatible with XHTML 1.x efforts.

Example

The following is an example of XHTML 1.0 Strict.

<?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">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
     <head>
         <title>XHTML Example</title>
     </head>
     <body>
         <p>This is tiny example of an XHTML usage.</p>
     </body>
 </html>

See also

External links

Missing image
Wikibooks.png
Wikibooks

Wikibooks Programming has more about this subject:
XHTML

Validators

See also: XHTML, 2000, As of 2005, C-HTML, CJK, Character encoding, Comparison of document markup languages, Comparison of layout engines (XHTML), Computer