
This document is also available in these non-normative formats: Single XHTML file, PostScript version, PDF version, ZIP archive, and Gzip'd TAR archive.
Copyright ©2004 W3C® (MIT, ERCIM , Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
XHTML 2 is a general-purpose markup language designed for representing documents for a wide range of purposes across the World Wide Web. To this end it does not attempt to be all things to all people, supplying every possible markup idiom, but to supply a generally useful set of elements.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is the sixth public Working Draft of this specification. It should in no way be considered stable, and should not be normatively referenced for any purposes whatsoever. This version includes an early implementation of XHTML 2.0 in RELAX NG [RELAXNG], but does not include the implementations in DTD or XML Schema form. Those will be included in subsequent versions, once the content of this language stabilizes. This version also does not address the issues revolving around the use of [XLINK] by XHTML 2.0. Those issues are being worked independent of the evolution of this specification. Those issues should, of course, be resolved as quickly as possible, and the resolution will be reflected in a future draft. Finally, the Working Group is actively working to resolve many of the issues that have been submitted by the public, but not all of them have been addressed yet. If your particular issue has not yet been addressed, please be patient - there are many issues, and some are more complex than others.
Formal issues and error reports on this specification shall be submitted to www-html-editor@w3.org (archive). It is inappropriate to send discussion email to this address. Public discussion may take place on www-html@w3.org (archive). To subscribe send an email to www-html-request@w3.org with the word subscribe in the subject line.
This document has been produced by the W3C HTML Working Group (members only) as part of the W3C HTML Activity. The goals of the HTML Working Group are discussed in the HTML Working Group charter.
This document was produced under the 24 January 2002 CPP as amended by the W3C Patent Policy Transition Procedure. The Working Group maintains a public list of patent disclosures relevant to this document; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than "work in progress."
This section is informative.
XHTML 2 is a general purpose markup language designed for representing documents for a wide range of purposes across the World Wide Web. To this end it does not attempt to be all things to all
people, supplying every possible markup idiom, but to supply a generally useful set of elements, with the possibility of extension using the class attribute on the span and
div elements in combination with stylesheets, and attributes from the metadata attributes collection.
In designing XHTML 2, a number of design aims were kept in mind to help direct the design. These included:
Because earlier versions of HTML were special-purpose languages, it was necessary to ensure a level of backwards compatibility with new versions so that new documents would still be usable in older browsers. However, thanks to XML and stylesheets, such strict element-wise backwards compatibility is no longer necessary, since an XML-based browser, of which at the time of writing means more than 95% of browsers in use, can process new markup languages without having to be updated. Much of XHTML 2 works already in existing browsers; much, but not all: just as when forms and tables were added to HTML, and people had to wait for new version of browsers before being able to use the new facilities, some parts of XHTML 2, such as XForms and XML Events, still require user agents that understand that functionality.
The very first version of HTML was designed to represent the structure of a document, not its presentation. Even though presentation-oriented elements were later added to the language by browser manufacturers, HTML is at heart a document structuring language. XHTML 2 takes HTML back to these roots, by removing all presentation elements, and subordinating all presentation to stylesheets. This gives greater flexibility, greater accessibility, more device independence, and more powerful presentation possibilities, since stylesheets can do more than the presentational elements of HTML ever did.
The original versions of HTML relied upon built-in knowledge on the part of User Agents and other document processors. While much of this knowledge had to do with presentation (see above), the bulk of the remainder had to do with the relationships between documents — so called "linking".
A variety of W3C and other efforts, most notably [XLINK], attempted to create a grammar for defining the characteristings of linking. Unfortunately, these grammars all fall short of the requirements of XHTML. While the community continues in its efforts to create a comprehensive grammar, the HTML Working Group has defined a grammar that is sufficient for its needs. The linking constructs in this document are described in terms of this grammar, [HLINK].
Note that by describing the linking characteristics using [HLINK], this document is NOT requiring that implementations support the HLINK constructs or grammar, just as it does not require implementations support [CSS2] even though some presentation aspects of this document are defined using CSS. Instead, the document relies upon this grammar as a formalism for ensuring that the characteristics of inter-document "links" can be described in a consistent manner, and thus implemented consistently.
XHTML 2 is designed to be recognizable to the HTML and XHTML 1 author, while correcting errors and insufficiencies identified in earlier versions of the HTML family, and taking the opportunity to make improvements.
The most visible changes are the following:
hr element was used to separate sections of a text from each other. In retrospect, the name hr (for horizontal
rule) was badly chosen, because an hr was neither necessarily horizontal (in vertical text it was vertical), nor necessarily a rule (books often use other typographical methods to
represent separators, such as a line of three asterisks, and stylesheets can be used to give you this freedom). In order to emphasize its structuring nature, and to make it clearer that it has no
essential directionality, hr has been renamed separator.br element was used to add micro-structure to text, essentially breaking a piece of text into several 'lines'. This micro-structure is
now made explicit in XHTML 2 with the l element, which encloses the text to be broken. Amongst other advantages, this gives more presentational
opportunities, such as the ability to automatically number lines, or to color alternate lines differently.Images: the HTML img element has many shortcomings: it only allows you to specify a single resource for an image, rather than offering the fallback opportunities of the object element; the only fallback option it gives is the alt text, which can only be plain text, and not marked up in any way; the
longdesc attribute which allows you to provide a long description of the image is difficult to author and seldom supported.
XHTML 2 takes a completely different approach, by taking the premise that all images have a long description and treating the image and the text as equivalents. In XHTML 2 any element may
have a src attribute, which specifies a resource (such as an image) to load instead of the element. If the resource is unavailable
(because of network failure, because it is of a type that the browser can't handle, or because images have been turned off) then the element is used instead. Essentially the longdesc has
been moved into the document, though this behavior also mimicks the fallback behavior of the object element. (To achieve the tooltip
effect that some browsers gave with the alt attribute, as in HTML4 you use the title attribute).
ins and del elements to mark changes in a document, an attribute edit may be used
on any element for the same purpose.<li><a
href="home.html">Home</a></li>, you can now write <li href="home.html">Home</li>. Even though this means that the a element is now strictly-speaking unnecessary, it has been retained.Events: event handling in HTML was restricted in several ways: since the event names were hard-wired in the language (such as onclick), the only way to add new events was to change
the language; many of the events (such as click) were device-specific, rather than referring to the intent of the event (such as activating a link); you could only handle an event in one
scripting language — it was not possible to supply event handlers in the same document for several different scripting languages.
XHTML 2 uses XML Events [XMLEVENTS] to specify event handling, giving greater freedom in the ability to handle events.
XHTML 2 is a member of the XHTML Family of markup languages. It is an XHTML Host Language as defined in XHTML Modularization. As such, it is made up of a set of XHTML Modules that together describe the elements and attributes of the language, and their content model. XHTML 2 updates many of the modules defined in XHTML Modularization 1.0 [XHTMLMOD], and includes the updated versions of all those modules and their semantics. XHTML 2 also uses modules from Ruby [RUBY], XML Events [XMLEVENTS], and XForms [XFORMS].
The modules defined in this specification are largely extensions of the modules defined in XHTML Modularization 1.0. This specification also defines the semantics of the modules it includes. So, that means that unlike earlier versions of XHTML that relied upon the semantics defined in HTML 4 [HTML4], all of the semantics for XHTML 2 are defined either in this specification or in the specifications that it normatively references.
Even though the XHTML 2 modules are defined in this specification, they are available for use in other XHTML family markup languages. Over time, it is possible that the modules defined in this specification will migrate into the XHTML Modularization specification.
This section is normative.
While some terms are defined in place, the following definitions are used throughout this document. Familiarity with the W3C XML 1.0 Recommendation [XML] is highly recommended.
This section is normative.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
In this document, the use of the word 'schema' refers to any definition of the syntax of XHTML 2, regardless of the definition language used.
A strictly conforming XHTML 2.0 document is a document that requires only the facilities described as mandatory in this specification. Such a document must meet all the following criteria:
The document must conform to the constraints expressed in the schemas in Appendix B - XHTML 2.0 RELAX NG Definition, Appendix D - XHTML 2.0 Schema and Appendix F - XHTML 2.0 Document Type Definition.
The local part of the root element of the document must be html.
The start tag of the root element of the document must explicitly contain an xmlns declaration for the XHTML 2.0 namespace [XMLNS]. The namespace URI for XHTML 2.0 is defined to be http://www.w3.org/2002/06/xhtml2.
The start tag must also contain an xsi:schemaLocation attribute. The schema location for XHTML 2.0 is defined to be
TBD.
An example root element might look like:
<html xmlns="http://www.w3.org/2002/06/xhtml2"
xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2002/06/xhtml2 TBD"
>
There must be a DOCTYPE declaration in the document prior to the root element. If present, the public identifier included in the DOCTYPE declaration must reference the DTD found in Appendix F using its Public Identifier. The system identifier may be modified appropriately.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "TBD">
Here is an example of an XHTML 2.0 document.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN"
"TBD">
<html xmlns="http://www.w3.org/2002/06/xhtml2"
xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2002/06/xhtml2 TBD"
>
<head>
<title>Virtual Library</title>
</head>
<body>
<p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p>
</body>
</html>
Note that in this example, the XML declaration is included. An XML declaration like the one above is 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 when the character encoding of the document is other than the default UTF-8 or UTF-16 and no encoding was determined by a higher-level protocol.
A conforming user agent must meet all of the following criteria:
ID (e.g., the id attribute on most XHTML 2 elements) as
fragment identifiers.White space is handled according to the rules of [XML]. All elements preserve whitespace.
The user agent must use the definition from CSS for processing white space characters [CSS3-TEXT].
In the absence of a style-sheet, including user agents that do not process stylesheets, visual presentation should be as if the user agent used the CSS stylesheet specified in Appendix H.
This section is normative.
The XHTML 2.0 document type is a fully functional document type with rich semantics. It is a collection of XHTML-conforming modules (most of which are defined in this specification). The Modules and their elements are listed here for information purposes, but the definitions in their base documents should be considered authoritative. In the on-line version of this document, the module names in the list below link into the definitions of the modules within the relevant version of the authoritative specification.
body, head, html, titleaddress, blockcode, blockquote, div, h, h1, h2, h3, h4, h5, h6, p, pre, section, separatorabbr, cite, code, dfn, em, kbd, l, quote, samp, span, strong, sub, sup, varadl, dt, dd, label, nl, ol, ul, liclass, id, and title attributeshref, hreftype, cite, target, rel, rev, access, nextfocus, prevfocus, and
xml:base attributesxml:lang attributedir attributeedit, and datetime attributessrc, and type attributesusemap, ismap, shape, and coords attributesabout, content, datatype, property, rel, resource, restype, and rev attributesmeta, linkobject, param, standbynoscript, scriptstyle attributestyle elementcaption, col, colgroup, summary, table, tbody, td, tfoot, th, thead, trXHTML 2.0 also uses the following externally defined modules:
ruby, rbc, rtc, rb, rt, rpaction, alert, bind, case, choices, copy, delete, dispatch, extension, filename, group, help, hint, input, insert, instance, item, itemset, label, load, mediatype, message, model, output,
range, rebuild, recalculate, refresh, repeat, reset, revalidate, secret, select, select1, send, setfocus, setindex, setvalue, submission, submit, switch, textarea, toggle, trigger, upload, and
value elements, and repeat-model, repeat-bind, repeat-nodeset, repeat-startindex, and repeat-number attributeslistener element, and defaultAction, event, handler, objserver, phase, propagate, and target attributes in the [XMLEVENTS] namespaceAn implementation of this document type as a RELAX NG grammar is defined in Appendix B, as an XML Schema in Appendix D, and as a DTD in Appendix F.
Identifying XHTML version in ansence of DTDs PR #7336
State: Suspended
Resolution: Defer
User: None
Notes:
BAE F2F: for the present DTD's are required for entity resolution. This is a tricky issue, and the working group needs to resolve it quickly. We are asking for input from the Hypertext Coordination
Group and others in our quest to sort it out.
This section is normative.
This document defines a variety of XHTML modules and the semantics of those modules. This section describes the conventions used in those module definitions.
Each module in this document is structured in the following way:
Note that attributes are fully defined only the first time they are used in each module. After that, only a brief description of the attribute is provided, along with a link back to the primary definition.
An abstract module is a definition of an XHTML module using prose text and some informal markup conventions. While such a definition is not generally useful in the machine processing of document types, it is critical in helping people understand what is contained in a module. This section defines the way in which XHTML abstract modules are defined. An XHTML-conforming module is not required to provide an abstract module definition. However, anyone developing an XHTML module is encouraged to provide an abstraction to ease in the use of that module.
The abstract modules are not defined in a formal grammar. However, the definitions do adhere to the following syntactic conventions. These conventions are similar to those of XML DTDs, and should be familiar to XML DTD authors. Each discrete syntactic element can be combined with others to make more complex expressions that conform to the algebra defined here.
expr ?expr +expr *a , ba is required, followed by expression b.a | ba - b&).*).|), inside of
parentheses following the attribute name. If the attribute has a default value, that value is followed by an asterisk (*). If the attribute has a fixed value, the attribute name is
followed by an equals sign (=) and the fixed value enclosed in quotation marks.Abstract module definitions define minimal, atomic content models for each module. These minimal content models reference the elements in the module itself. They may also reference elements in other modules upon which the abstract module depends. Finally, the content model in many cases requires that text be permitted as content to one or more elements. In these cases, the symbol used for text is PCDATA. This is a term, defined in the XML 1.0 Recommendation, that refers to processed character data. A content type can also be defined as EMPTY, meaning the element has no content in its minimal content model.
In some instances, it is necessary to define the types of attribute values or the explicit set of permitted values for attributes. The following attribute types (defined in the XML 1.0 Recommendation) are used in the definitions of the abstract modules:
| Attribute Type | Definition |
|---|---|
| CDATA | Character data |
| ID | A document-unique identifier |
| IDREF | A reference to a document-unique identifier |
| IDREFS | A space-separated list of references to document-unique identifiers |
| NMTOKEN | A name composed of only name tokens as defined in XML 1.0 [XML]. |
| NMTOKENS | One or more white space separated NMTOKEN values |
| NUMBER | Sequence consisting only digits ([0-9]) |
| PCDATA | Processed character data |
In addition to these pre-defined data types, XHTML Modularization defines the following data types and their semantics (as appropriate):
| Data type | Description |
|---|---|
| Charset | A character encoding, as per [RFC2045]. |
| ContentTypes | A list of media ranges with optional accept parameters, as defined in section 14.1 of [RFC2616] as the field value of the accept request header. |
| Coordinates | Comma separated list of Lengths used in defining areas. |
| Datetime | Date and time information, as defined by the type dateTime in [XMLSCHEMA]. |
| HrefTarget | Name used as destination for results of certain actions, with legal values as defined by NMTOKEN. |
| LanguageCode | A language code, as per [RFC3066]. |
| LanguageCodes | A comma-separated list of language ranges with optional accept parameters, as defined in section 14.5 of [RFC2616] as the field value of the Accept-Language request header. |
| Length | The value may be either in pixels or a percentage of the available horizontal or vertical space. Thus, the value "50%" means half of the available space. |
| LocationPath | A location path as defined in [XPATH]. |
| MediaDesc |
A comma-separated list of media descriptors as described by [CSS2]. The default is |
| Number | One or more digits |
| QName | An [XMLNS]-qualified name. See QName for a formal definition. |
| Text | Arbitrary textual data, likely meant to be human-readable. |
| URI | A Uniform Resource Identifier Reference, as defined by the type anyURI in [XMLSCHEMA]. |
| URIs | A space-separated list of URIs as defined above. |
This section is normative.
Many of the modules in this document define the required attributes for their elements. The elements in those modules may also reference zero or more attribute collections. Attribute collections are defined in their own modules, but the meta collection "Common" is defined in this section. The table below summarizes the attribute collections available.
| Collection | Module | Description |
|---|---|---|
| Core | Core Attributes Module | Basic attributes used to identify and classify elements and their content. |
| I18N | Internationalization Attribute Module | Attribute to identify the language of an elements and its contents. |
| Bi-directional | Bi-directional Text Collection | Attributes used to manage bi-directional text. |
| Edit | Edit Attributes Module | Attributes used to annotate when and how an element's content was edited. |
| Embedding | Embedding Attributes Module | Attributes used to embed content from other resources within the current element. |
| Events | XML Events Module | Attributes that allow associating of events and event processing with an element and its contents. |
| Hypertext | Hyptertext Attributes Module | Attributes that designate characteristics of links within and among documents. |
| Map | Image Map Attributes Module | Attributes for defining and referencing client-side image maps. |
| Metainformation | Metainformation Attributes | Attributes that allow associating of elements with metainformation about those elements |
| Style | Style Attribute Module | An attribute for associating style information with an element and its contents. |
| Common | Attribute Collections Module | A meta-collection of all the other collections, including the Core, I18N, Events, Edit, Embedding, Map, Metainformation, Style, Bi-directional, and Hypertext attribute collections. |
Implementation: RELAX NG
Each of the attributes defined in an XHTML attribute collection is available when its corresponding module is included in an XHTML Host Language or an XHTML Integration Set (see [XHTMLMOD]). In such a situation, the attributes are available for use on elements that are NOT in the XHTML namespace when they are referenced using their
namespace-qualified identifier (e.g., xhtml:id). The semantics of the attributes remain the same regardless of whether they are referenced using their qualified identifier or not. If
both the qualified and non-qualified identifier for an attribute are used on the same XHTML namespace element, the behavior is unspecified.
xml:id PR #7442
State: Suspended
Resolution: Defer
User: None
Notes:
If xml:id becomes stable document in time for use in this document, we will migrate to its use.
This section is normative.
The Document Module defines the major structural elements for XHTML. These elements effectively act as the basis for the content model of many XHTML family document types. The elements and attributes included in this module are:
| Elements | Attributes | Minimal Content Model |
|---|---|---|
| html | Common, version (CDATA), xmlns (URI = "http://www.w3.org/2002/06/xhtml2"), xsi:schemaLocation (URIs = "http://www.w3.org/2002/06/xhtml2 TBD") | head, body |
| head | Common | title |
| title | Common | (PCDATA | Text)* |
| body | Common | ( Heading | Structural | List)* |
This module is the basic structural definition for XHTML content. The html element acts as the root element for all XHTML Family Document Types.
Note that the value of the xmlns declaration is defined to be "http://www.w3.org/2002/06/xhtml2". Also note that because the xmlns declaration is treated specially by XML namespace-aware parsers [XMLNS], it is legal to have it present as an attribute of each element. However, any time the xmlns declaration is used in the context of an XHTML module, whether with a prefix or not, the value of the declaration shall be the XHTML namespace defined here.
Implementation: RELAX NG
After the document type declaration, the remainder of an XHTML document is contained by the html element.
Attributes
Need a normative definition for the version attribute
The version attribute needs a machine processable format so that document processors can reliably determine that the document is an XHTML Family conforming document.The head element contains information about the current document, such as its title, that is not considered document content. The default presentation of the head is not to display it; however that can be overridden with a stylesheet for special purpose use. User agents may however make information in the head available to users through other mechanisms.
Attributes
<head>
<title>My Life</title>
</head>
Every XHTML document must have a title element in the head section.
Attributes
The title element is used to identify the document. Since documents are often consulted out of context, authors should provide context-rich titles. Thus, instead of a title such as "Introduction", which doesn't provide much contextual background, authors should supply a title such as "Introduction to Medieval Bee-Keeping" instead.
For reasons of accessibility, user agents must always make the content of the title element available to users. The mechanism for doing so depends on the user agent (e.g., as a caption, spoken).
<title>A study of population dynamics</title>
The body of a document contains the document's content. The content may be processed by a user agent in a variety of ways. For example by visual browsers it can be presented as text, images, colors, graphics, etc., an audio user agent may speak the same content, and a search engine may create an index prioritized according to where text appears.
Attributes
<body id="theBody">
<p>A paragraph</p>
</body>
This section is normative.
This module defines all of the basic text container elements, attributes, and their content models that are structural in nature.
| Element | Attributes | Minimal Content Model |
|---|---|---|
| address | Common | (PCDATA | Text)* |
| blockcode | Common | (PCDATA | Text | Heading | Structural | List)* |
| blockquote | Common | (PCDATA | Text | Heading | Structural | List)* |
| div | Common | (PCDATA | Flow)* |
| h | Common | (PCDATA | Text)* |
| h1 | Common | (PCDATA | Text)* |
| h2 | Common | (PCDATA | Text)* |
| h3 | Common | (PCDATA | Text)* |
| h4 | Common | (PCDATA | Text)* |
| h5 | Common | (PCDATA | Text)* |
| h6 | Common | (PCDATA | Text)* |
| p | Common | (PCDATA | Text | List | blockcode | blockquote | pre )* |
| pre | Common | (PCDATA | Text)* |
| section | Common | (PCDATA | Flow)* |
| separator | Common | EMPTY |
The content model for this module defines some content sets:
Implementation: RELAX NG
The address element may be used by authors to supply contact information for a document or a major part of a document such as a form. This element often appears at the beginning or end of a document.
Attributes
<address href="mailto:webmaster@example.net">Webmaster</address>
This element indicates that its contents are a block of "code" (see the code element). This element is similar to the pre element, in that whitespace in the enclosed text has semantic relevance. The whitespace should normally be included in visual renderings of the content.
Non-visual user agents are not required to respect extra white space in the content of a blockcode element.
Attributes
The following example shows a code fragment:
<blockcode class="Perl">
sub squareFn {
my $var = shift;
return $var * $var ;
}
</blockcode>
Here is how this might be rendered:
sub squareFn {
my $var = shift;
return $var * $var ;
}
This element designates a block of quoted text.
Attributes
This example formats an excerpt from "The Two Towers", by J.R.R. Tolkien, as a blockquote.
<blockquote cite="http://www.example.com/tolkien/twotowers.html"> <p>They went in single file, running like hounds on a strong scent, and an eager light was in their eyes. Nearly due west the broad swath of the marching Orcs tramped its ugly slot; the sweet grass of Rohan had been bruised and blackened as they passed.</p> </blockquote>
The div element, in conjunction with the id and class attributes, offers a generic mechanism for adding extra structure to documents. This element defines no presentational idioms on the content. Thus, authors may use this element in conjunction with style sheets, the xml:lang attribute, etc., to tailor XHTML to their own needs and tastes.
Attributes
For example, suppose you wish to make a presentation in XHTML, where each slide is enclosed in a separate element. You could use a
div element, with a class of slide:
<body>
<h>The meaning of life</h>
<p>By Huntington B. Snark</p>
<div class="slide">
<h>What do I mean by "life"</h>
<p>....</p>
</div>
<div class="slide">
<h>What do I mean by "mean"?</h>
...
</div>
...
</body>
A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
Attributes
There are two styles of headings in XHTML: the numbered versions h1, h2 etc., and the structured version h, which is used in combination with the section element.
There are six levels of numbered headings in XHTML with h1 as the most important and h6 as the least. The visual presentation of headers can render more important headings in larger fonts than less important ones.
Structured headings use the single h element, in combination with the section element to indicate the structure of the document, and the nesting of the sections indicates the importance of the heading. The heading for the section is the one that is a child of the section element.
For example:
<body>
<h>This is a top level heading</h>
<p>....</p>
<section>
<p>....</p>
<h>This is a second-level heading</h>
<p>....</p>
<h>This is another second-level heading</h>
<p>....</p>
</section>
<section>
<p>....</p>
<h>This is another second-level heading</h>
<p>....</p>
<section>
<h>This is a third-level heading</h>
<p>....</p>
</section>
</section>
These visual representation of these levels can be distinguished in a style sheet:
h {font-family: sans-serif; font-weight: bold; font-size: 200%}
section h {font-size: 150%} /* A second-level heading */
section section h {font-size: 120%} /* A third-level heading */
etc.
Numbered sections and references
XHTML does not itself cause section numbers to be generated from headings. Style sheet
languages such as CSS however allow authors to control the generation of section numbers.
The practice of skipping heading levels is considered to be bad practice. The series h1 h2 h1 is acceptable, while h1 h3 h1 is not, since the heading level h2 has been skipped.
The p element represents a paragraph.
In comparison with earlier versions of HTML, where a paragraph could only contain inline text, XHTML2's paragraphs represent the conceptual idea of a paragraph, and so may contain lists, blockquotes, pre's and tables as well as inline text. They may not, however, contain directly nested p elements.
Attributes
<p>Payment options include: <ul> <li>cash</li> <li>credit card</li> <li>luncheon vouchers.</li> </ul> </p>
The pre element indicates that whitespace in the enclosed text has semantic relevance, and will normally be included in visual renderings of the content.
Note that all elements in the XHTML family preserve their whitespace in the document, which is only removed on rendering, via a stylesheet, according to the rules of CSS [CSS]. This means that in principle any elements may preserve or collapse whitespace on rendering, under control of a stylesheet. Also note that there is no normative requirement that the <pre> element be rendered in a monospace font (although this is the default rendering), nor that text wrapping be disabled.
Non-visual user agents are not required to respect extra white space in the content of a pre element.