[html5] r1152 - /
whatwg at whatwg.org
whatwg at whatwg.org
Wed Dec 19 19:47:23 PST 2007
Author: ianh
Date: 2007-12-19 19:47:13 -0800 (Wed, 19 Dec 2007)
New Revision: 1152
Modified:
index
source
Log:
[acgiowt] (2) Massive overhaul of the content models of most elements. The Block vs Inline distinction has been replaced by a new set of content categories, block/inline mixing is now allowed, the definition of paragraphs is revamped, and many related issues have been addressed.
Modified: index
===================================================================
--- index 2007-12-19 02:23:15 UTC (rev 1151)
+++ index 2007-12-20 03:47:13 UTC (rev 1152)
@@ -24,7 +24,7 @@
<h1 id=html-5>HTML 5</h1>
- <h2 class="no-num no-toc" id=working>Working Draft — 19 December
+ <h2 class="no-num no-toc" id=working>Working Draft — 20 December
2007</h2>
<p>You can take part in this work. <a
@@ -311,27 +311,35 @@
</span>Structure</a>
<li><a href="#kinds"><span class=secno>3.3.3. </span>Kinds of
- elements</a>
+ content</a>
<ul class=toc>
- <li><a href="#block-level"><span class=secno>3.3.3.1.
- </span>Block-level elements</a>
+ <li><a href="#metadata"><span class=secno>3.3.3.1. </span>Metadata
+ content</a>
- <li><a href="#inline-level"><span class=secno>3.3.3.2.
- </span>Inline-level content</a>
+ <li><a href="#prose"><span class=secno>3.3.3.2. </span>Prose
+ content</a>
- <li><a href="#transparent"><span class=secno>3.3.3.3.
- </span>Transparent content models</a>
+ <li><a href="#sectioning"><span class=secno>3.3.3.3.
+ </span>Sectioning content</a>
- <li><a href="#determining"><span class=secno>3.3.3.4.
- </span>Determining if a particular element contains block-level
- elements or inline-level content</a>
+ <li><a href="#heading"><span class=secno>3.3.3.4. </span>Heading
+ content</a>
- <li><a href="#interactive0"><span class=secno>3.3.3.5.
- </span>Interactive elements</a>
+ <li><a href="#phrasing"><span class=secno>3.3.3.5. </span>Phrasing
+ content</a>
- <li><a href="#paragraphs"><span class=secno>3.3.3.6.
- </span>Paragraphs</a>
+ <li><a href="#embedded"><span class=secno>3.3.3.6. </span>Embedded
+ content</a>
+
+ <li><a href="#interactive0"><span class=secno>3.3.3.7.
+ </span>Interactive content</a>
</ul>
+
+ <li><a href="#transparent"><span class=secno>3.3.4. </span>Transparent
+ content models</a>
+
+ <li><a href="#paragraphs"><span class=secno>3.3.5.
+ </span>Paragraphs</a>
</ul>
<li><a href="#global"><span class=secno>3.4. </span>Global
@@ -468,7 +476,7 @@
</ul>
</ul>
- <li><a href="#prose"><span class=secno>3.9. </span>Prose</a>
+ <li><a href="#prose0"><span class=secno>3.9. </span>Prose</a>
<ul class=toc>
<li><a href="#the-p"><span class=secno>3.9.1. </span>The
<code>p</code> element</a>
@@ -590,7 +598,7 @@
common to <code>ins</code> and <code>del</code> elements</a>
</ul>
- <li><a href="#embedded"><span class=secno>3.14. </span>Embedded
+ <li><a href="#embedded0"><span class=secno>3.14. </span>Embedded
content</a>
<ul class=toc>
<li><a href="#the-figure"><span class=secno>3.14.1. </span>The
@@ -1569,7 +1577,7 @@
<li><a href="#the-input0"><span class=secno>8.2.2. </span>The input
stream</a>
<ul class=toc>
- <li><a href="#determining0"><span class=secno>8.2.2.1.
+ <li><a href="#determining"><span class=secno>8.2.2.1.
</span>Determining the character encoding</a>
<li><a href="#character0"><span class=secno>8.2.2.2.
@@ -2470,8 +2478,8 @@
<p>Elements in the DOM represent things; that is, they have intrinsic
<em>meaning</em>, also known as semantics.
- <p class=example>For example, a <code><a href="#p">p</a></code> element
- represents a paragraph.
+ <p class=example>For example, an <code><a href="#ol">ol</a></code> element
+ represents an ordered list.
<p>In addition, documents and elements in the DOM host APIs that extend the
DOM Core APIs, providing new features to application developers using DOM5
@@ -5326,6 +5334,8 @@
title="">month</var>, and <var title="">day</var> to the <var
title="">results</var>.
</li>
+ <!-- XXX we should allow the algorithm to abort here without
+ error, with just a date. -->
<!-- WHITESPACE -->
<li>
@@ -5930,129 +5940,66 @@
<code>foreignObject</code> element is conforming.</p>
</div>
- <h4 id=kinds><span class=secno>3.3.3. </span>Kinds of elements</h4>
+ <h4 id=kinds><span class=secno>3.3.3. </span>Kinds of content</h4>
<p>Each element in HTML falls into zero or more categories that group
- elements with similar characteristics together. This specification uses
- the following categories:
+ elements with similar characteristics together. The following categories
+ are used in this specification:
<ul class=brief>
- <li><a href="#metadata">Metadata elements</a>
+ <li><a href="#metadata0">Metadata content</a>
- <li><a href="#sectioning">Sectioning elements</a>
+ <li><a href="#prose1">Prose content</a>
- <li><a href="#block-level0">Block-level elements</a>
+ <li><a href="#sectioning0">Sectioning content</a>
- <li><a href="#strictly">Strictly inline-level content</a>
+ <li><a href="#heading0">Heading content</a>
- <li><a href="#structured">Structured inline-level elements</a>
+ <li><a href="#phrasing0">Phrasing content</a>
- <li><a href="#interactive1">Interactive elements</a>
+ <li><a href="#embedded1">Embedded content</a>
- <li><span>Form control elements</span>
+ <li><span>Form control content</span>
+
+ <li><a href="#interactive1">Interactive content</a></li>
+ <!--
+ <li><span>Form content</span></li> XXX "Form control elements"
+-->
</ul>
- <!-- XXX check that all the above got a section defining them,
+ <!-- XXX xref check that all the above got a section defining them,
however briefly -->
<!-- XXX check that the element definitions also link to those
sections -->
+ <!-- XXX list all the elements for each kind of element in the
+ sections below. -->
<p>Some elements have unique requirements and do not fit into any
particular category.
- <p>In addition, some elements represent various common concepts; for
- example, some elements represent <span>paragraphs</span>.
+ <h5 id=metadata><span class=secno>3.3.3.1. </span>Metadata content</h5>
- <h5 id=block-level><span class=secno>3.3.3.1. </span><dfn
- id=block-level0>Block-level elements</dfn></h5>
+ <p><dfn id=metadata0>Metadata content</dfn> is content that sets up the
+ presentation or behaviour of the rest of the content, or that sets up the
+ relationship of the document with other documents, or that conveys other
+ "out of band" information.
- <p>Block-level elements are used for structural grouping of page content.
+ <p>Elements from other namespaces whose semantics are primarily
+ metadata-related (e.g. RDF) are also <a href="#metadata0">metadata
+ content</a>.
- <p>There are several kinds of block-level elements:
+ <h5 id=prose><span class=secno>3.3.3.2. </span>Prose content</h5>
- <ul>
- <li>Some can only contain other block-level elements: <code><a
- href="#blockquote">blockquote</a></code>, <code><a
- href="#section">section</a></code>, <code><a
- href="#article">article</a></code>, <code><a
- href="#header">header</a></code>.
+ <p>Most elements that are used in the body of documents and applications
+ are categorised as <dfn id=prose1>prose content</dfn>.
- <li>Some can only contain <a href="#inline-level0">inline-level
- content</a>: <code><a href="#p">p</a></code>, <code><a
- href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code>, <code><a
- href="#address">address</a></code>.
-
- <li>Some can contain either block-level elements or <a
- href="#inline-level0">inline-level content</a> (but not both): <code><a
- href="#nav">nav</a></code>, <code><a href="#aside">aside</a></code>,
- <code><a href="#footer">footer</a></code>, <code><a
- href="#div">div</a></code>.
-
- <li>Finally, some have very specific content models: <code><a
- href="#ul">ul</a></code>, <code><a href="#ol">ol</a></code>, <code><a
- href="#dl">dl</a></code>, <code><a href="#table">table</a></code>,
- <code><a href="#script0">script</a></code>.
- </ul>
-
- <p>There are also elements that seem to be block-level but aren't, such as
- <code><a href="#body0">body</a></code>, <code><a href="#li">li</a></code>,
- <code><a href="#dt">dt</a></code>, <code><a href="#dd">dd</a></code>, and
- <code><a href="#td">td</a></code>. These elements are allowed only in
- specific places, not simply anywhere that block-level elements are
- allowed.
-
- <p>Some block-level elements play multiple roles. For instance, the
- <code><a href="#script0">script</a></code> elements is allowed inside
- <code><a href="#head">head</a></code> elements and can also be used as <a
- href="#inline-level0">inline-level content</a>. Similarly, the <code><a
- href="#ul">ul</a></code>, <code><a href="#ol">ol</a></code>, <code><a
- href="#dl">dl</a></code>, <code><a href="#table">table</a></code>, and
- <code><a href="#blockquote">blockquote</a></code> elements play dual roles
- as both block-level and inline-level elements.
-
- <h5 id=inline-level><span class=secno>3.3.3.2. </span><dfn
- id=inline-level0>Inline-level content</dfn></h5>
-
- <p>Inline-level content consists of text and various elements to annotate
- the text, as well as some <a href="#embedded0">embedded content</a> (such
- as images or sound clips).
-
- <p>Inline-level content comes in various types:
-
- <dl>
- <dt><dfn id=strictly>Strictly inline-level content</dfn>
-
- <dd>Text, <a href="#embedded0">embedded content</a>, and elements that
- annotate the text without introducing structural grouping. For example:
- <code><a href="#a">a</a></code>, <code><a href="#meter">meter</a></code>,
- <code><a href="#img">img</a></code>. Elements used in contexts allowing
- only strictly inline-level content must not have any descendants that are
- anything other than strictly inline-level content.
-
- <dt><dfn id=structured>Structured inline-level elements</dfn>
-
- <dd>Block-level elements that can also be used as inline-level content.
- For example: <code><a href="#ol">ol</a></code>, <code><a
- href="#blockquote">blockquote</a></code>, <code><a
- href="#table">table</a></code>.
- </dl>
-
- <p><dfn id=embedded0>Embedded content</dfn> consists of elements that
- introduce content from other resources into the document, for example
- <code><a href="#img">img</a></code>. Embedded content elements can have
- <dfn id=fallback>fallback content</dfn>: content that is to be used when
- the external resource cannot be used (e.g. because it is of an unsupported
- format). The element definitions state what the fallback is, if any.
-
<p>As a general rule, elements whose content model allows any <a
- href="#block-level0">block-level elements</a>, or allows any <a
- href="#inline-level0">inline-level content</a>, should have either at
- least one descendant text node that is not <a
- href="#inter-element">inter-element whitespace</a>, or at least one
- descendant element node that is <a href="#embedded0">embedded content</a>.
- For the purposes of this requirement, nodes that are descendants of
- <code><a href="#del">del</a></code> elements must not be counted as
- contributing to the ancestors of the <code><a href="#del">del</a></code>
- element.
+ href="#prose1">prose content</a> should have either at least one
+ descendant text node that is not <a href="#inter-element">inter-element
+ whitespace</a>, or at least one descendant element node that is <a
+ href="#embedded1">embedded content</a>. For the purposes of this
+ requirement, <code><a href="#del">del</a></code> elements and their
+ descendants must not be counted as contributing to the ancestors of the
+ <code><a href="#del">del</a></code> element.
<p>This requirement is not a hard requirement, however, as there are many
cases where an element can be empty legitimately, for example when it is
@@ -6060,96 +6007,75 @@
the element is part of a template and would on most pages be filled in but
on some pages is not relevant.
- <h5 id=transparent><span class=secno>3.3.3.3. </span>Transparent content
- models</h5>
+ <h5 id=sectioning><span class=secno>3.3.3.3. </span>Sectioning content</h5>
- <p>Some elements are described as <dfn id=transparent0>transparent</dfn>;
- they have "transparent" as their content model. Some elements are
- described as <dfn id=semi-transparent>semi-transparent</dfn>; this means
- that part of their content model is "transparent" but that is not the only
- part of the content model that must be satisfied.
+ <p><dfn id=sectioning0>Sectioning content</dfn> is content that defines the
+ scope of <a href="#heading0" title="heading content">headers</a>, <a
+ href="#footer" title=footer>footers</a>, and <a href="#address"
+ title=address>contact information</a>.
- <p>When a content model includes a part that is "transparent", those parts
- must only contain content that would still be conformant if all
- transparent and semi-transparent elements in the tree were replaced, in
- their parent element, by the children in the "transparent" part of their
- content model, retaining order.
+ <p>Each <a href="#sectioning0">sectioning content</a> element potentially
+ has a heading. See the section on <a href="#headings0">headings and
+ sections</a> for further details.
- <p>When a transparent or semi-transparent element has no parent, then the
- part of its content model that is "transparent" must instead be treated as
- zero or more <a href="#block-level0">block-level elements</a>, or <a
- href="#inline-level0">inline-level content</a> (but not both).
+ <h5 id=heading><span class=secno>3.3.3.4. </span>Heading content</h5>
- <h5 id=determining><span class=secno>3.3.3.4. </span><dfn
- id=determining1>Determining if a particular element contains block-level
- elements or inline-level content</dfn></h5>
+ <p><dfn id=heading0>Heading content</dfn> defines the header of a section
+ (whether explicitly marked up using <a href="#sectioning0">sectioning
+ content</a> elements, or implied by the heading content itself).
- <p>Some elements are defined to have content models that allow either <a
- href="#block-level0">block-level elements</a> or <a
- href="#inline-level0">inline-level content</a>, but not both. For example,
- the <code><a href="#aside">aside</a></code> and <code><a
- href="#li">li</a></code> elements.
+ <h5 id=phrasing><span class=secno>3.3.3.5. </span>Phrasing content</h5>
- <p>To establish whether such an element is being used as a block-level
- container or as an inline-level container, for example in order to
- determine if a document conforms to these requirements, user agents must
- look at the element's child nodes. If any of the child nodes are not
- allowed in block-level contexts, then the element is being used for <a
- href="#inline-level0">inline-level content</a>. If all the child nodes are
- allowed in a block-level context, then the element is being used for <a
- href="#block-level0">block-level elements</a>.
+ <p><dfn id=phrasing0>Phrasing content</dfn> is the text of the document, as
+ well as elements that mark up that text at the intra-paragraph level. Runs
+ of <a href="#phrasing0">phrasing content</a> form <a href="#paragraph"
+ title=paragraph>paragraphs</a>.
- <p>Whenever this search would examine a <a
- href="#transparent0">transparent</a> element, the element's own child
- nodes must be examined instead, potentially recursing further if any of
- those are themselves transparent.
+ <p>All <a href="#phrasing0">phrasing content</a> is also <a
+ href="#prose1">prose content</a>. Any content model that expects <a
+ href="#prose1">prose content</a> also expects <a
+ href="#phrasing0">phrasing content</a>.
- <div class=example>
- <p>For instance, in the following (non-conforming) XML fragment, the
- <code><a href="#li">li</a></code> element is being used as an
- inline-level element container, because the <code><a
- href="#meta0">meta</a></code> element is not allowed in a block-level
- context. (It doesn't matter, for the purposes of determining whether it
- is an inline-level or block-level context, that the <code><a
- href="#meta0">meta</a></code> element is not allowed in inline-level
- contexts either.)</p>
+ <p>As a general rule, elements whose content model allows any <a
+ href="#phrasing0">phrasing content</a> should have either at least one
+ descendant text node that is not <a href="#inter-element">inter-element
+ whitespace</a>, or at least one descendant element node that is <a
+ href="#embedded1">embedded content</a>. For the purposes of this
+ requirement, nodes that are descendants of <code><a
+ href="#del">del</a></code> elements must not be counted as contributing to
+ the ancestors of the <code><a href="#del">del</a></code> element.
- <pre><ol>
- <li>
- <p> Hello World </p>
- <meta title="this is an invalid example"/>
- </li>
-</ol>
-</pre>
+ <p class=note>Most elements that are categorised as phrasing content can
+ only contain elements that are themselves categorised as phrasing content,
+ not any prose content.
- <p>In the following fragment, the <code><a href="#aside">aside</a></code>
- element is being used as a block-level container, because even though all
- the elements it contains could be considered inline-level elements, there
- are no nodes that can only be considered inline-level.</p>
+ <p>Text nodes that are not <a href="#inter-element">inter-element
+ whitespace</a> are <a href="#phrasing0">phrasing content</a>.
- <pre><aside>
- <ol>
- <li> ... </li>
- </ol>
- <ul>
- <li> ... </li>
- </ul>
-</aside></pre>
+ <h5 id=embedded><span class=secno>3.3.3.6. </span>Embedded content</h5>
- <p>On the other hand, in the following similar fragment, the <code><a
- href="#aside">aside</a></code> element is an inline-level container,
- because the text ("Foo") can only be considered inline-level.</p>
+ <p><dfn id=embedded1>Embedded content</dfn> is content that imports another
+ resource into the document, or content from another vocabulary that is
+ inserted into the document.
- <pre><aside>
- <ol>
- <li> ... </li>
- </ol>
- Foo
-</aside></pre>
- </div>
+ <p>All <a href="#embedded1">embedded content</a> is also <a
+ href="#phrasing0">phrasing content</a> (and <a href="#prose1">prose
+ content</a>). Any content model that expects <a href="#phrasing0">phrasing
+ content</a> (or <a href="#prose1">prose content</a>) also expects <a
+ href="#embedded1">embedded content</a>.
- <h5 id=interactive0><span class=secno>3.3.3.5. </span><dfn
- id=interactive1>Interactive elements</dfn></h5>
+ <p>Elements that are from namespaces other than the <a
+ href="#html-namespace0">HTML namespace</a> and that convey content but not
+ metadata, are <a href="#embedded1">embedded content</a> for the purposes
+ of the content models defined in this specification. (For example, MathML,
+ or SVG.)
+
+ <p>Some embedded content elements can have <dfn id=fallback>fallback
+ content</dfn>: content that is to be used when the external resource
+ cannot be used (e.g. because it is of an unsupported format). The element
+ definitions state what the fallback is, if any.
+
+ <h5 id=interactive0><span class=secno>3.3.3.7. </span>Interactive content</h5>
<!-- Don't change the above <dfn> or the text below without checking
all cross-references. Some of them refer specifically to the
activation behavior stuff. -->
@@ -6165,6 +6091,9 @@
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20HTML%3E%0A%3Cform%20action%3D%22http%3A//google.com/%22%3EX%3C/form%3E%0A%3Cscript%3E%0Avar%20evt%20%3D%20document.createEvent%28%22Events%22%29%3B%0Aevt.initEvent%28%22submit%22%2C%20true%2C%20true%29%3B%0Adocument.getElementsByTagName%28%27form%27%29%5B0%5D.dispatchEvent%28evt%29%3B%0A%3C/script%3E
-->
+ <p><dfn id=interactive1>Interactive content</dfn> is content that is
+ specifically intended for user interaction.
+
<p>Certain elements in HTML can be activated, for instance <code><a
href="#a">a</a></code> elements, <code>button</code> elements, or
<code>input</code> elements when their <code>type</code> attribute is set
@@ -6201,34 +6130,88 @@
this spec, update xrefs -->
<p class=note>Most interactive elements have content models that disallow
- nesting interactive elements.</p>
- <!--
- <li><span>Form control elements</span></li> XXX
--->
+ nesting interactive elements.
- <h5 id=paragraphs><span class=secno>3.3.3.6. </span>Paragraphs</h5>
+ <h4 id=transparent><span class=secno>3.3.4. </span>Transparent content
+ models</h4>
+ <p>Some elements are described as <dfn id=transparent0>transparent</dfn>;
+ they have "transparent" as their content model. Some elements are
+ described as <dfn id=semi-transparent>semi-transparent</dfn>; this means
+ that part of their content model is "transparent" but that is not the only
+ part of the content model that must be satisfied.
+
+ <p>When a content model includes a part that is "transparent", those parts
+ must only contain content that would still be conformant if all
+ transparent and semi-transparent elements in the tree were replaced, in
+ their parent element, by the children in the "transparent" part of their
+ content model, retaining order.
+
+ <p>When a transparent or semi-transparent element has no parent, then the
+ part of its content model that is "transparent" must instead be treated as
+ accepting any <a href="#prose1">prose content</a>.
+
+ <h4 id=paragraphs><span class=secno>3.3.5. </span>Paragraphs</h4>
+
<p>A <dfn id=paragraph>paragraph</dfn> is typically a block of text with
one or more sentences that discuss a particular topic, as in typography,
but can also be used for more general thematic grouping. For instance, an
address is also a paragraph, as is a part of a form, a byline, or a stanza
in a poem.
- <p>Paragraphs can be represented by several elements. The <code><a
- href="#address">address</a></code> element always represents a paragraph
- of contact information for its section, the <code><a
- href="#aside">aside</a></code>, <code><a href="#nav">nav</a></code>,
- <code><a href="#footer">footer</a></code>, <code><a
- href="#li">li</a></code>, and <code><a href="#dd">dd</a></code> elements
- represent paragraphs with various specific semantics when they are <a
- href="#determining1" title="Determining if a particular element contains
- block-level elements or inline-level content">used as inline-level content
- containers</a>, the <code><a href="#figure">figure</a></code> element
- represents a paragraph in the form of <a href="#embedded0">embedded
- content</a>, and the <code><a href="#p">p</a></code> element represents
- all the other kinds of paragraphs, for which there are no dedicated
- elements.
+ <p>Paragraphs in <a href="#prose1">prose content</a> are defined relative
+ to what the document looks like without the <code><a
+ href="#ins">ins</a></code> and <code><a href="#del">del</a></code>
+ elements complicating matters. Let <var title="">view</var> be a view of
+ the DOM that replaces all <code><a href="#ins">ins</a></code> and <code><a
+ href="#del">del</a></code> elements in the document with their contents.
+ Then, in <var title="">view</var>, for each run of <a
+ href="#phrasing0">phrasing content</a> uninterrupted by other types of
+ content, in an element that accepts content other than <a
+ href="#phrasing0">phrasing content</a>, let <var title="">first</var> be
+ the first node of the run, and let <var title="">last</var> be the last
+ node of the run. For each run, a paragraph exists in the original DOM from
+ immediately before <var title="">first</var> to immediately after <var
+ title="">last</var>. (Paragraphs can thus span across <code><a
+ href="#ins">ins</a></code> and <code><a href="#del">del</a></code>
+ elements.)
+ <p>A <a href="#paragraph">paragraph</a> is also formed by <code><a
+ href="#p">p</a></code> elements.
+
+ <p class=note>The <code><a href="#p">p</a></code> element can be used to
+ wrap individual paragraphs when there would otherwise not be any content
+ other than phrasing content to separate the paragraphs from each other.
+
+ <div class=example>
+ <p>In the following example, there are two paragraphs in a section. There
+ is also a header, which contains phrasing content that is not a
+ paragraph. Note how the comments and <span>intra-element
+ whitespace</span> do not form paragraphs.</p>
+
+ <pre><section>
+ <h1>Example of paragraphs</h1>
+ This is the <em>first</em> paragraph in this example.
+ <p>This is the second.</p>
+ <!-- This is not a paragraph. -->
+</section></pre>
+
+ <p>The following example takes that markup and puts <code><a
+ href="#ins">ins</a></code> and <code><a href="#del">del</a></code>
+ elements around some of the markup to show that the text was changed
+ (though in this case, the changes don't really make much sense,
+ admittedly). Notice how this example has exactly the same paragraphs as
+ the previous one, despite the <code><a href="#ins">ins</a></code> and
+ <code><a href="#del">del</a></code> elements.</p>
+
+ <pre><section>
+ <ins><h1>Example of paragraphs</h1>
+ This is the <em>first</em> paragraph in</ins> this example<del>.
+ <p>This is the second.</p></del>
+ <!-- This is not a paragraph. -->
+</section></pre>
+ </div>
+
<h3 id=global><span class=secno>3.4. </span>Global attributes</h3>
<p>The following attributes are common to and may be specified on all <a
@@ -6815,9 +6798,12 @@
<h4 id=the-html><span class=secno>3.6.1. </span>The <dfn
id=html><code>html</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As the root element of a document.
@@ -6843,6 +6829,7 @@
contents; you all have written a blog template with a <div
class="main"> or <div class="content">. Why do we also need a body?
- http://www.glazman.org/weblog/dotclear/index.php?2005/05/27/1055-adam-2
+ - http://www.glazman.org/weblog/dotclear/index.php?post/2005/05/27/1055-adam-2
-->
<dt>Element-specific attributes:
@@ -6901,15 +6888,14 @@
<h3 id=document><span class=secno>3.7. </span>Document metadata</h3>
- <p>Document metadata is represented by <dfn id=metadata>metadata
- elements</dfn> in the document's <code><a href="#head">head</a></code>
- element.
-
<h4 id=the-head><span class=secno>3.7.1. </span>The <dfn
id=head><code>head</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As the first element in an <code><a href="#html">html</a></code>
@@ -6917,15 +6903,7 @@
<dt>Content model:
- <dd>In any order unless otherwise specified: optionally one <code><a
- href="#meta0">meta</a></code> element with a <code
- title=attr-meta-charset><a href="#charset0">charset</a></code> attribute,
- exactly one <code><a href="#title1">title</a></code> element, optionally
- one <code><a href="#base">base</a></code> element, and zero or more other
- <a href="#metadata">metadata elements</a> (in particular, <code><a
- href="#link">link</a></code>, <code><a href="#meta0">meta</a></code>,
- <code><a href="#style">style</a></code>, and <code><a
- href="#script0">script</a></code>).
+ <dd>Zero or more elements of <a href="#metadata0">metadata content</a>.
<dt>Element-specific attributes:
@@ -6943,9 +6921,11 @@
<h4 id=the-title0><span class=secno>3.7.2. </span>The <dfn
id=title1><code>title</code></dfn> element</h4>
- <p><a href="#metadata" title="metadata elements">Metadata element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
<dt>Contexts in which this element may be used:
<dd>In a <code><a href="#head">head</a></code> element containing no other
@@ -6953,7 +6933,7 @@
<dt>Content model:
- <dd>Text (for details, see prose).
+ <dd>Text.
<dt>Element-specific attributes:
@@ -6972,6 +6952,12 @@
different from its first header, since the first header does not have to
stand alone when taken out of context.
+ <p>There must be no more than one <code><a href="#title1">title</a></code>
+ element per document.
+
+ <p>The <code><a href="#title1">title</a></code> element must not contain
+ any elements.
+
<div class=example>
<p>Here are some examples of appropriate titles, contrasted with the
top-level headers that might be used on those same pages.</p>
@@ -6993,9 +6979,6 @@
<h1>The Dances</h1></pre>
</div>
- <p>The <code><a href="#title1">title</a></code> element must not contain
- any elements.
-
<p>The string to use as the document's title is given by the <code
title=dom-document-title><a
href="#document.title">document.title</a></code> DOM attribute. User
@@ -7005,15 +6988,15 @@
<h4 id=the-base><span class=secno>3.7.3. </span>The <dfn
id=base><code>base</code></dfn> element</h4>
- <p><a href="#metadata" title="metadata elements">Metadata element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>In a <code><a href="#head">head</a></code> element, after the <code><a
- href="#meta0">meta</a></code> element with the <code
- title=attr-meta-charset><a href="#charset0">charset</a></code> attribute,
- if any, but before any other elements.
+ <dd>In a <code><a href="#head">head</a></code> element containing no other
+ <code><a href="#base">base</a></code> elements.
<dt>Content model:
@@ -7099,12 +7082,14 @@
<h4 id=the-link><span class=secno>3.7.4. </span>The <dfn
id=link><code>link</code></dfn> element</h4>
- <p><a href="#metadata" title="metadata elements">Metadata element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#metadata">metadata elements</a> are expected.
+ <dd>Where <a href="#metadata0">metadata content</a> is expected.
<dd>In a <code><a href="#noscript">noscript</a></code> element that is a
child of a <code><a href="#head">head</a></code> element.
@@ -7349,9 +7334,11 @@
<h4 id=meta><span class=secno>3.7.5. </span>The <dfn
id=meta0><code>meta</code></dfn> element</h4>
- <p><a href="#metadata" title="metadata elements">Metadata element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
<dt>Contexts in which this element may be used:
<dd>If the <code title=attr-meta-charset><a
@@ -7368,7 +7355,7 @@
a <code><a href="#head">head</a></code> element.
<dd>If the <code title=attr-meta-name><a href="#name">name</a></code>
- attribute is present: where <a href="#metadata">metadata elements</a> are
+ attribute is present: where <a href="#metadata0">metadata content</a> is
expected.
<dt>Content model:
@@ -7618,7 +7605,7 @@
<tr>
<td><span title="attr-meta-http-equiv-content-type">Content-Type</span>
<td><code title="">Content-Type</code>
- <td>Non-conforming
+ <td>Non-conforming [ XXX though maybe we should allow it for migration? ]
<tr>
<td><span title="attr-meta-http-equiv-content-script-type">Content-Script-Type</span>
<td><code title="">Content-Script-Type</code>
@@ -7854,14 +7841,20 @@
<h4 id=the-style><span class=secno>3.7.6. </span>The <dfn
id=style><code>style</code></dfn> element</h4>
- <p><a href="#metadata" title="metadata elements">Metadata element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
+ <dd>If the <code title=attr-style-scoped><a
+ href="#scoped">scoped</a></code> attribute is present: <a
+ href="#prose1">prose content</a>.
+
<dt>Contexts in which this element may be used:
<dd>If the <code title=attr-style-scoped><a
- href="#scoped">scoped</a></code> attribute is absent: where
- <span>metadata</span> elements are expected.
+ href="#scoped">scoped</a></code> attribute is absent: where <a
+ href="#metadata0">metadata content</a> is expected.
<dd>If the <code title=attr-style-scoped><a
href="#scoped">scoped</a></code> attribute is absent: in a <code><a
@@ -7869,10 +7862,10 @@
<code><a href="#head">head</a></code> element.
<dd>If the <code title=attr-style-scoped><a
- href="#scoped">scoped</a></code> attribute is present: at the start of
- <code><a href="#article">article</a></code>, <code><a
- href="#aside">aside</a></code>, <code><a href="#div">div</a></code>, and
- <code><a href="#section">section</a></code> elements.
+ href="#scoped">scoped</a></code> attribute is present: where <a
+ href="#prose1">prose content</a> is expected, but before any <a
+ href="#phrasing0">phrasing content</a> and before any sibling elements
+ that are not <code><a href="#style">style</a></code> elements.
<dt>Content model:
@@ -7949,13 +7942,11 @@
<p>If the <code title=attr-style-scoped><a href="#scoped">scoped</a></code>
attribute <em>is</em> specified, then the <code><a
- href="#style">style</a></code> element must be the child of an <code><a
- href="#article">article</a></code>, <code><a
- href="#aside">aside</a></code>, <code><a href="#div">div</a></code>, or
- <code><a href="#section">section</a></code> element, before any text nodes
- other than <a href="#inter-element">inter-element whitespace</a>, and
- before any elements other than other <code><a
- href="#style">style</a></code> elements.
+ href="#style">style</a></code> element must be the child of a <a
+ href="#prose1">prose content</a> element, before any text nodes other than
+ <a href="#inter-element">inter-element whitespace</a>, and before any
+ elements other than other <code><a href="#style">style</a></code>
+ elements.
<p id=title-on-style>The <dfn id=title3
title=attr-style-title><code>title</code></dfn> attribute on <code><a
@@ -8093,24 +8084,22 @@
<h3 id=sections><span class=secno>3.8. </span>Sections</h3>
- <p><dfn id=sectioning>Sectioning elements</dfn> are elements that divide
- the page into, for lack of a better word, sections. This section describes
- HTML's sectioning elements and elements that support them.
+ <p id=applyToSection>Some elements, for example <code><a
+ href="#address">address</a></code> elements, are scoped to their nearest
+ ancestor sectioning content. For such elements <var title="">x</var>, the
+ elements that apply to a <a href="#sectioning0">sectioning content</a>
+ element <var title="">e</var> are all the <var title="">x</var> elements
+ whose nearest <a href="#sectioning0">sectioning content</a> ancestor is
+ <var title="">e</var>.
- <p id=applyToSection>Some elements are scoped to their nearest ancestor
- sectioning element. For example, <code><a
- href="#address">address</a></code> elements apply just to their section.
- For such elements <var title="">x</var>, the elements that apply to a
- sectioning element <var title="">e</var> are all the <var title="">x</var>
- elements whose nearest sectioning element is <var title="">e</var>.
-
<h4 id=the-body><span class=secno>3.8.1. </span>The <dfn
id=body0><code>body</code></dfn> element</h4>
- <p><a href="#sectioning" title="sectioning elements">Sectioning
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#sectioning0">Sectioning content</a>.
+
<dt>Contexts in which this element may be used:
<dd>As the second element in an <code><a href="#html">html</a></code>
@@ -8118,7 +8107,7 @@
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>.
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -8133,10 +8122,6 @@
<p>The <code><a href="#body0">body</a></code> element represents the main
content of the document.
- <p>The <code><a href="#body0">body</a></code> element potentially has a
- heading. See the section on <a href="#headings0">headings and sections</a>
- for further details.
-
<p>In conforming documents, there is only one <code><a
href="#body0">body</a></code> element. The <code
title=dom-document-body><a href="#body">document.body</a></code> DOM
@@ -8152,19 +8137,20 @@
<h4 id=the-section><span class=secno>3.8.2. </span>The <dfn
id=section><code>section</code></dfn> element</h4>
- <p><a href="#sectioning" title="sectioning elements">Sectioning</a> <a
- href="#block-level0" title="block-level elements">block-level element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
+ <dd><a href="#sectioning0">Sectioning content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <code><a href="#style">style</a></code> elements,
- followed by zero or more <a href="#block-level0">block-level
- elements</a>.
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -8186,25 +8172,23 @@
site's home page could be split into sections for an introduction, news
items, contact information.
- <p>Each <code><a href="#section">section</a></code> element potentially has
- a heading. See the section on <a href="#headings0">headings and
- sections</a> for further details.
-
<h4 id=the-nav><span class=secno>3.8.3. </span>The <dfn
id=nav><code>nav</code></dfn> element</h4>
- <p><a href="#sectioning" title="sectioning elements">Sectioning</a> <a
- href="#block-level0" title="block-level elements">block-level element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
+ <dd><a href="#sectioning0">Sectioning content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>, or <a
- href="#inline-level0">inline-level content</a> (but not both).
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -8220,31 +8204,23 @@
a page that links to other pages or to parts within the page: a section
with navigation links.
- <p>When <a href="#determining1" title="Determining if a particular element
- contains block-level elements or inline-level content">used as an
- inline-level content</a> container, the element represents a <a
- href="#paragraph">paragraph</a>.
-
- <p>Each <code><a href="#nav">nav</a></code> element potentially has a
- heading. See the section on <a href="#headings0">headings and sections</a>
- for further details.
-
<h4 id=the-article><span class=secno>3.8.4. </span>The <dfn
id=article><code>article</code></dfn> element</h4>
- <p><a href="#sectioning" title="sectioning elements">Sectioning</a> <a
- href="#block-level0" title="block-level elements">block-level element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
+ <dd><a href="#sectioning0">Sectioning content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <code><a href="#style">style</a></code> elements,
- followed by zero or more <a href="#block-level0">block-level
- elements</a>.
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -8271,7 +8247,10 @@
for instance, contact information that <a
href="#applyToSection">applies</a> to a parent <code><a
href="#body0">body</a></code> element still covers the <code><a
- href="#article">article</a></code> as well.
+ href="#article">article</a></code> as well.</p>
+ <!-- XXX
+ or should we apply the rules in the last paragraph to all articles?
+ -->
<p>When <code><a href="#article">article</a></code> elements are nested,
the inner <code><a href="#article">article</a></code> elements represent
@@ -8286,29 +8265,23 @@
href="#address">address</a></code> element) does not apply to nested
<code><a href="#article">article</a></code> elements.
- <p>Each <code><a href="#article">article</a></code> element potentially has
- a heading. See the section on <a href="#headings0">headings and
- sections</a> for further details.
-
<h4 id=the-blockquote><span class=secno>3.8.5. </span>The <dfn
id=blockquote><code>blockquote</code></dfn> element</h4>
- <p><a href="#sectioning" title="sectioning elements">Sectioning</a> <a
- href="#block-level0" title="block-level elements">block-level element</a>,
- and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dd><a href="#sectioning0">Sectioning content</a>.
+ <dt>Contexts in which this element may be used:
+
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>.
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -8340,8 +8313,8 @@
users to follow such citation links.
<p>If a <code><a href="#blockquote">blockquote</a></code> element is <a
- href="#preceeded">preceeded or followed</a> by a <code><a
- href="#p">p</a></code> element that contains a single <code><a
+ href="#preceeded">preceeded or followed</a> by a <a
+ href="#paragraph">paragraph</a> that contains a single <code><a
href="#cite2">cite</a></code> element and is itself not <a
href="#preceeded">preceeded or followed</a> by another <code><a
href="#blockquote">blockquote</a></code> element and does not itself have
@@ -8350,10 +8323,6 @@
source of the quotation contained in the <code><a
href="#blockquote">blockquote</a></code> element.
- <p>Each <code><a href="#blockquote">blockquote</a></code> element
- potentially has a heading. See the section on <a
- href="#headings0">headings and sections</a> for further details.
-
<p>The <dfn id=cite0 title=dom-quote-cite><code>cite</code></dfn> DOM
attribute <code>reflects</code> the element's <code title="">cite</code>
content attribte.
@@ -8366,20 +8335,20 @@
<h4 id=the-aside><span class=secno>3.8.6. </span>The <dfn
id=aside><code>aside</code></dfn> element</h4>
- <p><a href="#sectioning" title="sectioning elements">Sectioning</a> <a
- href="#block-level0" title="block-level elements">block-level element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
+ <dd><a href="#sectioning0">Sectioning content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <code><a href="#style">style</a></code> elements,
- followed by either zero or more <a href="#block-level0">block-level
- elements</a>, or <a href="#inline-level0">inline-level content</a> (but
- not both).
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -8397,30 +8366,25 @@
which could be considered separate from that content. Such sections are
often represented as sidebars in printed typography.
- <p>When <a href="#determining1" title="Determining if a particular element
- contains block-level elements or inline-level content">used as an
- inline-level content</a> container, the element represents a <a
- href="#paragraph">paragraph</a>.
-
- <p>Each <code><a href="#aside">aside</a></code> element potentially has a
- heading. See the section on <a href="#headings0">headings and sections</a>
- for further details.
-
<h4 id=the-h1><span class=secno>3.8.7. </span>The <dfn
id=h1><code>h1</code></dfn>, <dfn id=h2><code>h2</code></dfn>, <dfn
id=h3><code>h3</code></dfn>, <dfn id=h4><code>h4</code></dfn>, <dfn
id=h5><code>h5</code></dfn>, and <dfn id=h6><code>h6</code></dfn> elements</h4>
- <p><a href="#block-level0">Block-level elements</a>.
-
<dl class=element>
- <dt>Contexts in which these elements may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
+ <dd><a href="#heading0">Heading content</a>.
+
+ <dt>Contexts in which this element may be used:
+
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -8445,25 +8409,24 @@
<h4 id=the-header><span class=secno>3.8.8. </span>The <dfn
id=header><code>header</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
+ <dd><a href="#heading0">Heading content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected
- and there are no <code><a href="#header">header</a></code> ancestors.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>,
- including at least one descendant <code><a href="#h1">h1</a></code>,
- <code><a href="#h2">h2</a></code>, <code><a href="#h3">h3</a></code>,
- <code><a href="#h4">h4</a></code>, <code><a href="#h5">h5</a></code>, or
- <code><a href="#h6">h6</a></code> element, but no <span>sectioning
- element</span> descendants, no <code><a href="#header">header</a></code>
- element descendants, and no <code><a href="#footer">footer</a></code>
- element descendants.
+ <dd><a href="#prose1">Prose content</a>, including at least one descendant
+ that is <a href="#heading0">heading content</a>, but no <a
+ href="#sectioning0">sectioning content</a> descendants, no <code><a
+ href="#header">header</a></code> element descendants, and no <code><a
+ href="#footer">footer</a></code> element descendants.
<dt>Element-specific attributes:
@@ -8480,25 +8443,16 @@
heading — for example it would be reasonable for the header to
include version history information.
- <p><code><a href="#header">header</a></code> elements must not contain any
- <code><a href="#header">header</a></code> elements, <code><a
- href="#footer">footer</a></code> elements, or any sectioning elements
- (such as <code><a href="#section">section</a></code>) as descendants.
-
- <p><code><a href="#header">header</a></code> elements must have at least
- one <code><a href="#h1">h1</a></code>, <code><a href="#h2">h2</a></code>,
- <code><a href="#h3">h3</a></code>, <code><a href="#h4">h4</a></code>,
- <code><a href="#h5">h5</a></code>, or <code><a href="#h6">h6</a></code>
- element as a descendant.
-
<p>For the purposes of document summaries, outlines, and the like, <code><a
href="#header">header</a></code> elements are equivalent to the highest <a
href="#rank" title=rank>ranked</a> <code><a
href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code> element
- descendant (the first such element if there are multiple elements with
- that <a href="#rank">rank</a>).
+ descendant of the <code><a href="#header">header</a></code> element (the
+ first such element if there are multiple elements with that <a
+ href="#rank">rank</a>).
- <p>Other heading elements indicate subheadings or subtitles.
+ <p>Other heading elements in the <code><a href="#header">header</a></code>
+ element indicate subheadings or subtitles.
<div class=example>
<p>Here are some examples of valid headers. In each case, the emphasised
@@ -8547,25 +8501,21 @@
<h4 id=the-footer><span class=secno>3.8.9. </span>The <dfn
id=footer><code>footer</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Either zero or more <a href="#block-level0">block-level elements</a>,
- but with no <code><a href="#h1">h1</a></code>, <code><a
- href="#h2">h2</a></code>, <code><a href="#h3">h3</a></code>, <code><a
- href="#h4">h4</a></code>, <code><a href="#h5">h5</a></code>, <code><a
- href="#h6">h6</a></code>, <code><a href="#header">header</a></code>, or
- <code><a href="#footer">footer</a></code> elements as descendants, and
- with no <a href="#sectioning" title="sectioning elements">sectioning
- elements</a> as descendants; or, <a href="#inline-level0">inline-level
- content</a> (but not both).
+ <dd><a href="#prose1">Prose content</a>, but with no <a
+ href="#heading0">heading content</a> descendants, no <a
+ href="#sectioning0">sectioning content</a> descendants, and no <code><a
+ href="#footer">footer</a></code> element descendants.
<dt>Element-specific attributes:
@@ -8582,20 +8532,6 @@
footer typically contains information about its section such as who wrote
it, links to related documents, copyright data, and the like.
- <p><code><a href="#footer">footer</a></code> elements must not contain any
- <code><a href="#footer">footer</a></code>, <code><a
- href="#header">header</a></code>, <code><a href="#h1">h1</a></code>,
- <code><a href="#h2">h2</a></code>, <code><a href="#h3">h3</a></code>,
- <code><a href="#h4">h4</a></code>, <code><a href="#h5">h5</a></code>, or
- <code><a href="#h6">h6</a></code> elements, or any of the sectioning
- elements (such as <code><a href="#section">section</a></code>), as
- descendants.
-
- <p>When <a href="#determining1" title="Determining if a particular element
- contains block-level elements or inline-level content">used as an
- inline-level content</a> container, the element represents a <a
- href="#paragraph">paragraph</a>.
-
<p>Contact information for the section given in a <code><a
href="#footer">footer</a></code> should be marked up using the <code><a
href="#address">address</a></code> element.</p>
@@ -8604,17 +8540,22 @@
<h4 id=the-address><span class=secno>3.8.10. </span>The <dfn
id=address><code>address</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd><a href="#inline-level0">Inline-level content</a>.
+ <dd><a href="#prose1">Prose content</a>, but with no <a
+ href="#heading0">heading content</a> descendants, no <a
+ href="#sectioning0">sectioning content</a> descendants, no <code><a
+ href="#footer">footer</a></code> element descendants, and no <code><a
+ href="#address">address</a></code> element descendants.
<dt>Element-specific attributes:
@@ -8626,9 +8567,9 @@
href="#htmlelement">HTMLElement</a></code>.
</dl>
- <p>The <code><a href="#address">address</a></code> element represents a <a
- href="#paragraph">paragraph</a> of contact information for the section it
- <a href="#applyToSection">applies</a> to.
+ <p>The <code><a href="#address">address</a></code> element represents the
+ contact information for the section it <a
+ href="#applyToSection">applies</a> to.
<div class=example>
<p>For example, a page at the W3C Web site related to HTML might include
@@ -8667,7 +8608,9 @@
<code><a href="#address">address</a></code> elements that <a
href="#applyToSection">apply</a> to that sectioning element and its
ancestor sectioning elements. The contact information is the collection of
- all the information given by those elements.
+ all the information given by those elements.</p>
+ <!--
+ XXX exception for nested article elements? -->
<p class=note>Contact information for one sectioning element, e.g. an
<code><a href="#aside">aside</a></code> element, does not apply to its
@@ -8680,19 +8623,20 @@
elements and the <code><a href="#header">header</a></code> element are
headings.
- <p>The first heading in a sectioning element gives the header for that
- section. Subsequent headers of equal or higher <a href="#rank">rank</a>
- start new (implied) sections, headers of lower <a href="#rank">rank</a>
- start subsections that are part of the previous one.
+ <p>The first element of <a href="#heading0">heading content</a> in an
+ element of <a href="#sectioning0">sectioning content</a> gives the header
+ for that section. Subsequent headers of equal or higher <a
+ href="#rank">rank</a> start new (implied) sections, headers of lower <a
+ href="#rank">rank</a> start subsections that are part of the previous one.
<p>Sectioning elements other than <code><a
href="#blockquote">blockquote</a></code> are always considered subsections
- of their nearest ancestor sectioning element, regardless of what implied
- sections other headings may have created. However, <code><a
- href="#blockquote">blockquote</a></code> elements <em>are</em> associated
- with implied sections. Effectively, <code><a
- href="#blockquote">blockquote</a></code> elements act like sections on the
- inside, and act opaquely on the outside.
+ of their nearest ancestor element of <a href="#sectioning0">sectioning
+ content,</a> regardless of what implied sections other headings may have
+ created. However, <code><a href="#blockquote">blockquote</a></code>
+ elements <em>are</em> associated with implied sections. Effectively,
+ <code><a href="#blockquote">blockquote</a></code> elements act like
+ sections on the inside, and act opaquely on the outside.
<div class=example>
<p>For the following fragment:</p>
@@ -8744,9 +8688,10 @@
href="#h1">h1</a></code> elements, or to use elements of the appropriate
<a href="#rank">rank</a> for the section's nesting level.
- <p>Authors are also encouraged to explictly wrap sections in sectioning
- elements, instead of relying on the implicit sections generated by having
- multiple heading in one sectioning element.
+ <p>Authors are also encouraged to explictly wrap sections in elements of <a
+ href="#sectioning0">sectioning content</a>, instead of relying on the
+ implicit sections generated by having multiple heading in one element of
+ <a href="#sectioning0">sectioning content</a>.
<div class=example>
<p>For example, the following is correct:</p>
@@ -8789,6 +8734,10 @@
<h5 id=outlines><span class=secno>3.8.11.1. </span>Creating an outline</h5>
+ <p class=big-issue>This section will be rewritten at some point. The
+ algorithm likely won't change, but its description will be dramatically
+ simplified.
+
<p>Documents can be viewed as a tree of sections, which defines how each
element in the tree is semantically related to the others, in terms of the
overall section structure. This tree is related to the document tree, but
@@ -8800,57 +8749,65 @@
<p>To derive the tree of sections from the document tree, a hypothetical
tree is used, consisting of a view of the document tree containing only
- the <code><a href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code>
- and <code><a href="#header">header</a></code> elements, and the sectioning
- elements other than <code><a href="#blockquote">blockquote</a></code>.
- Descendants of <code><a href="#h1">h1</a></code>-<code><a
- href="#h6">h6</a></code>, <code><a href="#header">header</a></code>, and
- <code><a href="#blockquote">blockquote</a></code> elements must be removed
- from this view.
+ the elements of <a href="#heading0">heading content</a> and the elements
+ of <a href="#sectioning0">sectioning content</a> other than <code><a
+ href="#blockquote">blockquote</a></code>. Descendants of <code><a
+ href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code>, <code><a
+ href="#header">header</a></code>, and <code><a
+ href="#blockquote">blockquote</a></code> elements must be removed from
+ this view.
<p>The hypothetical tree must be rooted at the <a href="#root-element">root
- element</a> or at a sectioning element. In particular, while the sections
- inside <code><a href="#blockquote">blockquote</a></code>s do not
- contribute to the document's tree of sections, <code><a
+ element</a> or at an element of <a href="#sectioning0">sectioning
+ content</a>. In particular, while the sections inside <code><a
+ href="#blockquote">blockquote</a></code>s do not contribute to the
+ document's tree of sections, <code><a
href="#blockquote">blockquote</a></code>s can have outlines of their own.
<p>UAs must take this hypothetical tree (which will become the outline) and
mutate it by walking it depth first in <a href="#tree-order">tree
- order</a> and, for each <code><a href="#h1">h1</a></code>-<code><a
- href="#h6">h6</a></code> or <code><a href="#header">header</a></code>
- element that is not the first element of its parent sectioning element,
- inserting a new sectioning element, as follows:
+ order</a> and, for each element of <a href="#heading0">heading content</a>
+ that is not the first element of its parent <a
+ href="#sectioning0">sectioning content</a> element, inserting a new
+ element of <a href="#sectioning0">sectioning content</a>, as follows:
<dl class=switch>
<dt>If the element is a <code><a href="#header">header</a></code> element,
or if it is an <code><a href="#h1">h1</a></code>-<code><a
href="#h6">h6</a></code> node of <a href="#rank">rank</a> equal to or
- higher than the first element in the parent sectioning element (assuming
- that is also an <code><a href="#h1">h1</a></code>-<code><a
- href="#h6">h6</a></code> node), or if the first element of the parent
- sectioning element is a sectioning element:
+ higher than the first element in the parent element of <a
+ href="#sectioning0">sectioning content</a> (assuming that is also an
+ <code><a href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code>
+ node), or if the first element of the parent element of <a
+ href="#sectioning0">sectioning content</a> is an element of <a
+ href="#sectioning0">sectioning content</a>:
- <dd>Insert the new sectioning element as the immediately following sibling
- of the parent sectioning element, and move all the elements from the
- current heading element up to the end of the parent sectioning element
- into the new sectioning element.
+ <dd>Insert the new element of <a href="#sectioning0">sectioning
+ content</a> as the immediately following sibling of the parent element of
+ <a href="#sectioning0">sectioning content</a>, and move all the elements
+ from the current element of <a href="#heading0">heading content</a> up to
+ the end of the parent element of <a href="#sectioning0">sectioning
+ content</a> into the new element of <a href="#sectioning0">sectioning
+ content</a>.
<dt>Otherwise:
<dd>Move the current heading element, and all subsequent siblings up to
- but excluding the next sectioning element, <code><a
- href="#header">header</a></code> element, or <code><a
- href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code> of equal or
- higher <a href="#rank">rank</a>, whichever comes first, into the new
- sectioning element, then insert the new sectioning element where the
- current header was.
+ but excluding the next element of <a href="#sectioning0">sectioning
+ content</a>, <code><a href="#header">header</a></code> element, or
+ <code><a href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code> of
+ equal or higher <a href="#rank">rank</a>, whichever comes first, into the
+ new element of <a href="#sectioning0">sectioning content</a>, then insert
+ the new element of <a href="#sectioning0">sectioning content</a> where
+ the current header was.
</dl>
<p>The outline is then the resulting hypothetical tree. The <a href="#rank"
title=rank>ranks</a> of the headers become irrelevant at this point: each
- sectioning element in the hypothetical tree contains either no or one
- heading element child. If there is one, then it gives the section's
- heading, of there isn't, the section has no heading.
+ element of <a href="#sectioning0">sectioning content</a> in the
+ hypothetical tree contains either no or one heading element child. If
+ there is one, then it gives the section's heading, of there isn't, the
+ section has no heading.
<p>Sections are nested as in the hypothetical tree. If a sectioning element
is a child of another, that means it is a subsection of that other
@@ -8914,6 +8871,10 @@
<h5 id=associatedSection><span class=secno>3.8.11.2. </span>Determining
which heading and section applies to a particular node</h5>
+ <p class=big-issue>This section will be rewritten at some point. The
+ algorithm likely won't change, but its description will be dramatically
+ simplified.
+
<p>Given a particular node, user agents must use the following algorithm,
<em>in the given order</em>, to determine which heading and section the
node is most closely associated with. The processing of this algorithm
@@ -8944,34 +8905,38 @@
real document tree, then that element is the associated section.
Otherwise, there is no associated section element.
- <li>If the node is a sectioning element, then the associated section is
- itself. The UA must then generate the <a href="#outlines">hypothetical
- section tree</a> described in the previous section, rooted at the section
- itself. If the section element, in that hypothetical tree, has a child
- element that is an <code><a href="#h1">h1</a></code>-<code><a
- href="#h6">h6</a></code> element or a <code><a
- href="#header">header</a></code> element, then that element is the
- associated heading. Otherwise, there is no associated heading element.
+ <li>If the node is an element of <a href="#sectioning0">sectioning
+ content</a>, then the associated section is itself. The UA must then
+ generate the <a href="#outlines">hypothetical section tree</a> described
+ in the previous section, rooted at the section itself. If the section
+ element, in that hypothetical tree, has a child element that is an
+ <code><a href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code>
+ element or a <code><a href="#header">header</a></code> element, then that
+ element is the associated heading. Otherwise, there is no associated
+ heading element.
<li>If the node is a <code><a href="#footer">footer</a></code> or <code><a
href="#address">address</a></code> element, then the associated section
- is the nearest ancestor sectioning element, if there is one. The node's
- associated heading is the same as that sectioning element's associated
- heading (i.e. repeat this algorithm for that sectioning element). If
- there is no ancestor sectioning element, the element has no associated
- section nor an associated heading.
+ is the nearest ancestor element of <a href="#sectioning0">sectioning
+ content</a>, if there is one. The node's associated heading is the same
+ as that element of <a href="#sectioning0">sectioning content</a>'s
+ associated heading (i.e. repeat this algorithm for that element of <a
+ href="#sectioning0">sectioning content</a>). If there is no ancestor
+ element of <a href="#sectioning0">sectioning content</a>, the element has
+ no associated section nor an associated heading.
<li>Otherwise, the node is just a normal node, and the document has to be
examined more closely to determine its section and heading. Create a view
- rooted at the nearest ancestor sectioning element (or the <a
+ rooted at the nearest ancestor element of <a
+ href="#sectioning0">sectioning content</a> (or the <a
href="#root-element">root element</a> if there is none) that has just
<code><a href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code>
elements, <code><a href="#header">header</a></code> elements, the node
- itself, and sectioning elements other than <code><a
- href="#blockquote">blockquote</a></code> elements. (Descendants of any of
- the nodes in this view can be ignored, as can any node later in the tree
- than the node in question, as the algorithm below merely walks backwards
- up this view.)
+ itself, and elements of <a href="#sectioning0">sectioning content</a>
+ other than <code><a href="#blockquote">blockquote</a></code> elements.
+ (Descendants of any of the nodes in this view can be ignored, as can any
+ node later in the tree than the node in question, as the algorithm below
+ merely walks backwards up this view.)
<li>Let <var title="">n</var> be an iterator for this view, initialised at
the node in question.
@@ -9010,22 +8975,23 @@
<var title="">c</var> to be this element, and continue going backwards
through the previous siblings.
- <li>If <var title="">n</var> is pointing at a sectioning element, then
- from this point on top-level heading candidates are being searched for.
- (Specifically, we are looking for the nearest top-level header for the
- current section.) Continue going backwards through the previous
- siblings.
+ <li>If <var title="">n</var> is pointing at an element of <a
+ href="#sectioning0">sectioning content</a>, then from this point on
+ top-level heading candidates are being searched for. (Specifically, we
+ are looking for the nearest top-level header for the current section.)
+ Continue going backwards through the previous siblings.
</ol>
<li>If the answer from the previous step (the loop) is null, which can
only happen if the node has no preceeding headings and is not contained
- in a sectioning element, then there is no associated heading and no
- associated section.
+ in an element of <a href="#sectioning0">sectioning content</a>, then
+ there is no associated heading and no associated section.
- <li>Otherwise, if the answer from the earlier loop step is a sectioning
- element, then the associated section is that element and the associated
- heading is that sectioning element's associated heading (i.e. repeat this
- algorithm for that section).
+ <li>Otherwise, if the answer from the earlier loop step is an element of
+ <a href="#sectioning0">sectioning content</a>, then the associated
+ section is that element and the associated heading is that element of <a
+ href="#sectioning0">sectioning content</a>'s associated heading (i.e.
+ repeat this algorithm for that section).
<li>Otherwise, if the answer from that same earlier step is an <code><a
href="#h1">h1</a></code>-<code><a href="#h6">h6</a></code> element or a
@@ -9037,10 +9003,11 @@
<p class=note>Not all nodes have an associated header or section. For
example, if a section is implied, as when multiple headers are found in
- one sectioning element, then a node in that section has an anonymous
- associated section (its section is not represented by a real element), and
- the algorithm above does not associate that node with any particular
- sectioning element.
+ one element of <a href="#sectioning0">sectioning content</a>, then a node
+ in that section has an anonymous associated section (its section is not
+ represented by a real element), and the algorithm above does not associate
+ that node with any particular element of <a href="#sectioning0">sectioning
+ content</a>.
<div class=example>
<p>For the following fragment:</p>
@@ -9170,22 +9137,23 @@
original single page becomes the heading of the site, repeated on every
page.
- <h3 id=prose><span class=secno>3.9. </span>Prose</h3>
+ <h3 id=prose0><span class=secno>3.9. </span>Prose</h3>
<h4 id=the-p><span class=secno>3.9.1. </span>The <dfn
id=p><code>p</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd><a href="#inline-level0">Inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -9200,11 +9168,6 @@
<p>The <code><a href="#p">p</a></code> element represents a <a
href="#paragraph">paragraph</a>.
- <p><code><a href="#p">p</a></code> elements can contain a mixture of <a
- href="#strictly">strictly inline-level content</a>, such as text, images,
- hyperlinks, etc, and <a href="#structured">structured inline-level
- elements</a>, such as lists, tables, and block quotes.
-
<div class=example>
<p>The following examples are conforming HTML fragments:</p>
@@ -9262,13 +9225,14 @@
<h4 id=the-hr><span class=secno>3.9.2. </span>The <dfn
id=hr><code>hr</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
@@ -9292,13 +9256,14 @@
<h4 id=the-br><span class=secno>3.9.3. </span>The <dfn
id=br><code>br</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
@@ -9354,16 +9319,27 @@
<p>Address: <input name="address"></p></pre>
<!-- XXX should have labels in the examples above --></div>
+ <p>If a <a href="#paragraph">paragraph</a> consists of nothing but a single
+ <code><a href="#br">br</a></code> element, it represents a placeholder
+ blank line (e.g. as in a template). Such blank lines must not be used for
+ presentation purposes.</p>
+ <!-- XXX i'm uncomfortable about
+ this. The use case is editing, e.g. contentEditable, where a user
+ has created a new paragraph but not added any text to it yet. Such
+ content shouldn't go over the wire, though. We need to make it
+ illegal while still defining what it means. Maybe. -->
+
<h4 id=the-dialog><span class=secno>3.9.4. </span>The <dfn
id=dialog><code>dialog</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
@@ -9416,7 +9392,7 @@
or <code><a href="#blockquote">blockquote</a></code> elements in this
markup. Indeed, a <code><a href="#q">q</a></code> element inside a
<code><a href="#dd">dd</a></code> element in a conversation would actually
- imply the person talking were themselves quoting someone else. See the
+ imply the people talking were themselves quoting someone else. See the
<code><a href="#cite2">cite</a></code>, <code><a href="#q">q</a></code>,
and <code><a href="#blockquote">blockquote</a></code> elements for other
ways to cite or quote.
@@ -9426,21 +9402,18 @@
<h4 id=the-pre><span class=secno>3.10.1. </span>The <dfn
id=pre><code>pre</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -9533,18 +9506,15 @@
<h4 id=the-ol><span class=secno>3.11.1. </span>The <dfn
id=ol><code>ol</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
<dd>Zero or more <code><a href="#li">li</a></code> elements.
@@ -9604,18 +9574,15 @@
<h4 id=the-ul><span class=secno>3.11.2. </span>The <dfn
id=ul><code>ul</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
<dd>Zero or more <code><a href="#li">li</a></code> elements.
@@ -9639,9 +9606,12 @@
<h4 id=the-li><span class=secno>3.11.3. </span>The <dfn
id=li><code>li</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>Inside <code><a href="#ol">ol</a></code> elements.
@@ -9652,17 +9622,10 @@
<dt>Content model:
- <dd>When the element is a child of an <code><a href="#ol">ol</a></code> or
- <code><a href="#ul">ul</a></code> element and the grandchild of an
- element that is <a href="#determining1" title="Determining if a
- particular element contains block-level elements or inline-level
- content">being used as an inline-level content container</a>, or, when
- the element is a child of a <code><a href="#menu">menu</a></code>
- element: <a href="#inline-level0">inline-level content</a>.
+ <dd>When the element is a child of a <code><a href="#menu">menu</a></code>
+ element: <a href="#phrasing0">phrasing content</a>.
- <dd>Otherwise: zero or more <a href="#block-level0">block-level
- elements</a>, or <a href="#inline-level0">inline-level content</a> (but
- not both).
+ <dd>Otherwise: <a href="#prose1">prose content</a>.
<dt>Element-specific attributes:
@@ -9689,35 +9652,6 @@
list-related relationship to any other <code><a href="#li">li</a></code>
element.
- <p>When the list item is the child of an <code><a href="#ol">ol</a></code>
- or <code><a href="#ul">ul</a></code> element, the content model of the
- item depends on the way that parent element was used. If it was used as
- structured inline content (i.e. if <em>that</em> element's parent was <a
- href="#determining1" title="Determining if a particular element contains
- block-level elements or inline-level content">used as an inline-level
- content</a> container), then the <code><a href="#li">li</a></code> element
- must only contain <a href="#inline-level0">inline-level content</a>.
- Otherwise, the element may be used either for <a href="#inline-level0"
- title="inline-level content">inline content</a> or <a
- href="#block-level0">block-level elements</a>.
-
- <p>When the list item is the child of a <code><a
- href="#menu">menu</a></code> element, the <code><a
- href="#li">li</a></code> element must contain only <a
- href="#inline-level0">inline-level content</a>.
-
- <p>When the list item is not the child of an <code><a
- href="#ol">ol</a></code>, <code><a href="#ul">ul</a></code>, or <code><a
- href="#menu">menu</a></code> element, e.g. because it is an orphaned node
- not in the document, it may contain either for <a href="#inline-level0"
- title="inline-level content">inline content</a> or <a
- href="#block-level0">block-level elements</a>.
-
- <p>When <a href="#determining1" title="Determining if a particular element
- contains block-level elements or inline-level content">used as an
- inline-level content</a> container, the list item represents a single <a
- href="#paragraph">paragraph</a>.
-
<p>The <dfn id=value title=attr-li-value><code>value</code></dfn>
attribute, if present, must be a <a href="#valid0">valid integer</a>
giving the ordinal value of the first list item.
@@ -9741,18 +9675,15 @@
<h4 id=the-dl><span class=secno>3.11.4. </span>The <dfn
id=dl><code>dl</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
<dd>Zero or more groups each consisting of one or more <code><a
@@ -9845,9 +9776,12 @@
<h4 id=the-dt><span class=secno>3.11.5. </span>The <dfn
id=dt><code>dt</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>Before <code><a href="#dd">dd</a></code> or <code><a
@@ -9859,7 +9793,7 @@
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -9884,9 +9818,12 @@
<h4 id=the-dd><span class=secno>3.11.6. </span>The <dfn
id=dd><code>dd</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>After <code><a href="#dt">dt</a></code> or <code><a
@@ -9898,16 +9835,8 @@
<dt>Content model:
- <dd>When the element is a child of a <code><a href="#dl">dl</a></code>
- element and the grandchild of an element that is <a href="#determining1"
- title="Determining if a particular element contains block-level elements
- or inline-level content">being used as an inline-level content
- container</a>: <a href="#inline-level0">inline-level content</a>.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Otherwise: zero or more <a href="#block-level0">block-level
- elements</a>, or <a href="#inline-level0">inline-level content</a> (but
- not both).
-
<dt>Element-specific attributes:
<dd>None.
@@ -9924,48 +9853,28 @@
discourse, or quote, part in a conversation (<code><a
href="#dialog">dialog</a></code> element).
- <p>The content model of a <code><a href="#dd">dd</a></code> element depends
- on the way its parent element is being used. If the parent element is a
- <code><a href="#dl">dl</a></code> element that is being used as structured
- inline content (i.e. if the <code><a href="#dl">dl</a></code> element's
- parent element is being <a href="#determining1" title="Determining if a
- particular element contains block-level elements or inline-level
- content">used as an inline-level content</a> container), then the <code><a
- href="#dd">dd</a></code> element must only contain <a
- href="#inline-level0">inline-level content</a>.
-
- <p>Otherwise, the element may be used either for <a href="#inline-level0"
- title="inline-level content">inline content</a> or <a
- href="#block-level0">block-level elements</a>.
-
<h3 id=phrase><span class=secno>3.12. </span>Phrase elements</h3>
<!-- XXX ruby (delayed until someone can define it with error handling rules) -->
<h4 id=the-a><span class=secno>3.12.1. </span>The <dfn
id=a><code>a</code></dfn> element</h4>
- <p><a href="#interactive1" title="interactive elements">Interactive</a>, <a
- href="#strictly">strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
+ <dd><a href="#interactive1">Interactive content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed, if there are no ancestor <a href="#interactive1">interactive
- elements</a>.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>, but there must be no
- <a href="#interactive1" title="interactive elements">interactive</a>
- descendants.
+ <dd><a href="#phrasing0">Phrasing content</a>, but there must be no <a
+ href="#interactive1">interactive content</a> descendant.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>, but
- there must be no <a href="#interactive1" title="interactive
- elements">interactive</a> descendants.
-
<dt>Element-specific attributes:
<dd><code title=attr-hyperlink-href><a href="#href6">href</a></code>
@@ -10100,10 +10009,9 @@
<p class=note>One way that a user agent can enable users to follow
hyperlinks is by allowing <code><a href="#a">a</a></code> elements to be
- clicked, or focussed and activated by the keyboard. This <a
- href="#interactive1" title="interactive elements">will cause</a> the
- aforementioned <a href="#activation0">activation behavior</a> to be
- invoked.
+ clicked, or focussed and activated by the keyboard. This <span
+ title="interactive elements">will cause</span> the aforementioned <a
+ href="#activation0">activation behavior</a> to be invoked.
<p>The DOM attributes <dfn id=href3
title=dom-a-href><code>href</code></dfn>, <dfn id=ping0
@@ -10124,22 +10032,19 @@
<h4 id=the-q><span class=secno>3.12.2. </span>The <dfn
id=q><code>q</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd><code title=attr-q-cite><a href="#cite1">cite</a></code>
@@ -10172,17 +10077,18 @@
<h4 id=the-cite><span class=secno>3.12.3. </span>The <dfn
id=cite2><code>cite</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -10233,22 +10139,19 @@
<h4 id=the-em><span class=secno>3.12.4. </span>The <dfn
id=em><code>em</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None.
@@ -10316,22 +10219,19 @@
<h4 id=the-strong><span class=secno>3.12.5. </span>The <dfn
id=strong><code>strong</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None.
@@ -10368,22 +10268,19 @@
<h4 id=the-small><span class=secno>3.12.6. </span>The <dfn
id=small><code>small</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None.
@@ -10432,22 +10329,19 @@
<h4 id=the-m><span class=secno>3.12.7. </span>The <dfn
id=m><code>m</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None.
@@ -10487,19 +10381,19 @@
<h4 id=the-dfn><span class=secno>3.12.8. </span>The <dfn
id=dfn><code>dfn</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed, if there are no ancestor <code><a href="#dfn">dfn</a></code>
- elements.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>, but there must
- be no descendant <code><a href="#dfn">dfn</a></code> elements.
+ <dd><a href="#phrasing0">Phrasing content</a>, but there must be no
+ descendant <code><a href="#dfn">dfn</a></code> elements.
<dt>Element-specific attributes:
@@ -10515,13 +10409,11 @@
<p>The <code><a href="#dfn">dfn</a></code> element represents the defining
instance of a term. The <a href="#paragraph">paragraph</a>, <a href="#dl"
- title=dl>description list group</a>, or <a href="#sectioning"
- title="sectioning elements">section</a> that contains the <code><a
+ title=dl>description list group</a>, or <span title="sectioning
+ elements">section</span> that contains the <code><a
href="#dfn">dfn</a></code> element contains the definition for the term
given by the contents of the <code><a href="#dfn">dfn</a></code> element.
- <p><code><a href="#dfn">dfn</a></code> elements must not be nested.
-
<p><dfn id=defining>Defining term</dfn>: If the <code><a
href="#dfn">dfn</a></code> element has a <dfn id=title4
title=attr-dfn-title><code>title</code></dfn> attribute, then the exact
@@ -10560,7 +10452,7 @@
but whose <code><a href="#textcontent">textContent</a></code> exactly
equals the <a href="#defining" title="defining term">term</a> of a
<code><a href="#dfn">dfn</a></code> element in the document, and that has
- no <a href="#interactive1">interactive elements</a> or <code><a
+ no <span>interactive elements</span> or <code><a
href="#dfn">dfn</a></code> elements either as ancestors or descendants,
and has no other elements as ancestors that are themselves matching these
conditions, should be presented in such a way that the user can jump from
@@ -10592,17 +10484,18 @@
<h4 id=the-abbr><span class=secno>3.12.9. </span>The <dfn
id=abbr><code>abbr</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -10655,17 +10548,18 @@
<h4 id=the-time><span class=secno>3.12.10. </span>The <dfn
id=time><code>time</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -10804,17 +10698,18 @@
<h4 id=the-progress><span class=secno>3.12.11. </span>The <dfn
id=progress><code>progress</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -10990,17 +10885,18 @@
id=meter><code>meter</code></dfn> element</h4>
<!-- Keep this after <progress> and NOT close to <time> -->
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11369,22 +11265,19 @@
<h4 id=the-code><span class=secno>3.12.13. </span>The <dfn
id=code><code>code</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None, but the <code title=attr-title><a href="#title">title</a></code>
@@ -11426,17 +11319,18 @@
<h4 id=the-var><span class=secno>3.12.14. </span>The <dfn
id=var><code>var</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11467,22 +11361,19 @@
<h4 id=the-samp><span class=secno>3.12.15. </span>The <dfn
id=samp><code>samp</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None, but the <code title=attr-title><a href="#title">title</a></code>
@@ -11523,17 +11414,18 @@
<h4 id=the-kbd><span class=secno>3.12.16. </span>The <dfn
id=kbd><code>kbd</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11585,17 +11477,18 @@
id=sub><code>sub</code></dfn> and <dfn id=sup><code>sup</code></dfn>
elements</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which these elements may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11656,22 +11549,19 @@
<h4 id=the-span><span class=secno>3.12.18. </span>The <dfn
id=span><code>span</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd>When used in an element whose content model is only <a
- href="#strictly">strictly inline-level content</a>: only <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Otherwise: any <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None, but the <code title=attr-title><a href="#title">title</a></code>
@@ -11695,17 +11585,18 @@
<h4 id=the-i><span class=secno>3.12.19. </span>The <dfn
id=i><code>i</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11734,7 +11625,7 @@
element:</p>
<pre><p>The <i>felis silvestris catus</i> is cute.</p>
-<p>The <i>block-level elements</i> are defined above.</p>
+<p>The term <i>prose content</i> is defined above.</p>
<p>There is a certain <i lang="fr">je ne sais quoi</i> in the air.</p></pre>
<p>In the following example, a dream sequence is marked up using <code><a
@@ -11768,17 +11659,18 @@
<h4 id=the-b><span class=secno>3.12.20. </span>The <dfn
id=b><code>b</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11855,17 +11747,18 @@
<h4 id=the-bdo><span class=secno>3.12.21. </span>The <dfn
id=bdo><code>bdo</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -11913,21 +11806,88 @@
<p>The <code><a href="#ins">ins</a></code> and <code><a
href="#del">del</a></code> elements represent edits to the document.
+ <div class=note>
+ <p>Since the <code><a href="#ins">ins</a></code> and <code><a
+ href="#del">del</a></code> elements do not affect <a href="#paragraph"
+ title=paragraph>paragraphing</a>, it is possible, in some cases where
+ paragraphs are <a href="#paragraph" title=paragraph>implied</a> (without
+ explicit <code><a href="#p">p</a></code> elements), for an <code><a
+ href="#ins">ins</a></code> or <code><a href="#del">del</a></code> element
+ to span both an entire paragraph or other non-<a
+ href="#phrasing0">phrasing content</a> elements and part of another
+ paragraph.</p>
+
+ <p>For example:</p>
+
+ <pre><section>
+ <ins>
+ <p>
+ This is a paragraph that was inserted.
+ </p>
+ This is another paragraph whose first sentence was inserted
+ at the same time as the paragraph above.
+ </ins>
+ This is a second sentence, which was there all along.
+</section></pre>
+
+ <p>By only wrapping some paragraphs in <code><a href="#p">p</a></code>
+ elements, one can even get the end of one paragraph, a whole second
+ paragraph, and the start of a third paragraph to be covered by the same
+ <code><a href="#ins">ins</a></code> or <code><a
+ href="#del">del</a></code> element (though this is very confusing, and
+ not considered good practice):</p>
+
+ <pre><section>
+ This is the first paragraph. <ins>This sentence was
+ inserted.
+ <p>This second paragraph was inserted.</p>
+ This sentence was inserted too.</ins> This is the
+ third paragraph in this example.</p>
+</section></pre>
+
+ <p>However, due to the way <a href="#paragraph" title=paragraph>implied
+ paragraphs</a> are defined, it is not possible to mark up the end of one
+ paragraph and the start of the very next one using the same <code><a
+ href="#ins">ins</a></code> or <code><a href="#del">del</a></code>
+ element. You instead have to use one (or two) <code><a
+ href="#p">p</a></code> element(s) and two <code><a
+ href="#ins">ins</a></code> or <code><a href="#del">del</a></code>
+ elements:
+
+ <p>For example:</p>
+
+ <pre><section>
+ <p>This is the first paragraph. <del>This sentence was
+ deleted.</p>
+ <p><del>This sentence was deleted too.</del> That
+ sentence needed a separate <del> element.</p>
+</section></pre>
+
+ <p>Partly because of the confusion described above, authors are strongly
+ recommended to always mark up all paragraphs with the <code><a
+ href="#p">p</a></code> element, and to not have any <code><a
+ href="#ins">ins</a></code> or <code><a href="#del">del</a></code>
+ elements that cross across any <a href="#paragraph"
+ title=paragraph>implied paragraphs</a>.</p>
+ </div>
+
<h4 id=the-ins><span class=secno>3.13.1. </span>The <dfn
id=ins><code>ins</code></dfn> element</h4>
- <p><a href="#transparent0">Transparent</a> <a href="#block-level0"
- title="block-level elements">block-level element</a>, and <a
- href="#transparent0">transparent</a> <a href="#strictly">strictly
- inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd>When the element only contains <a href="#phrasing0">phrasing
+ content</a>: <a href="#phrasing0">phrasing content</a>.
+
+ <dd>Otherwise: <a href="#prose1">prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> is expected.
+ <dd>When the element only contains <a href="#phrasing0">phrasing
+ content</a>: where <a href="#phrasing0">phrasing content</a> is expected.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Otherwise: where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
@@ -11948,70 +11908,91 @@
<p>The <code><a href="#ins">ins</a></code> element represents an addition
to the document.
- <p>The <code><a href="#ins">ins</a></code> element must be used only where
- <a href="#block-level0">block-level elements</a> or <a
- href="#strictly">strictly inline-level content</a> can be used.
-
- <p>An <code><a href="#ins">ins</a></code> element can only contain content
- that would still be conformant if all elements with <a
- href="#transparent0">transparent</a> content models were replaced by their
- contents.
-
<div class=example>
- <p>The following would be syntactically legal:</p>
+ <p>The following represents the addition of a single paragraph:</p>
<pre><aside>
<ins>
- <p>...</p>
+ <p> I like fruit. </p>
</ins>
</aside></pre>
- <p>As would this:</p>
+ <p>As does this, because everything in the <code><a
+ href="#aside">aside</a></code> element here counts as <a
+ href="#phrasing0">phrasing content</a> and therefore there is just one <a
+ href="#paragraph">paragraph</a>:</p>
<pre><aside>
<ins>
- <em>...</em>
+ Apples are <em>tasty</em>.
</ins>
+ <ins>
+ So are pears.
+ </ins>
</aside></pre>
+ </div>
- <p>However, this last example would be illegal, as <code><a
- href="#em">em</a></code> and <code><a href="#p">p</a></code> cannot both
- be used inside an <code><a href="#aside">aside</a></code> element at the
- same time:</p>
+ <p><code><a href="#ins">ins</a></code> elements should not cross <a
+ href="#paragraph" title=paragraph>implied paragraph</a> boundaries.
+ <div class=example>
+ <p>The following example represents the addition of two paragraphs, the
+ second of which was inserted in two parts. The first <code><a
+ href="#ins">ins</a></code> element in this example thus crosses a
+ paragraph boundary, which is considered poor form.</p>
+
<pre><aside>
- <ins>
- <p>...</p>
+ <ins datetime="2005-03-16T00:00Z">
+ <p> I like fruit. </p>
+ Apples are <em>tasty</em>.
</ins>
- <ins>
- <em>...</em>
+ <ins datetime="2007-12-19T00:00Z">
+ So are pears.
</ins>
</aside></pre>
- </div>
+ <p>Here is a better way of marking this up. It uses more elements, but
+ none of the elements cross implied paragraph boundaries.</p>
+
+ <pre><aside>
+ <ins datetime="2005-03-16T00:00Z">
+ <p> I like fruit. </p>
+ </ins>
+ <ins datetime="2005-03-16T00:00Z">
+ Apples are <em>tasty</em>.
+ </ins>
+ <ins datetime="2007-12-19T00:00Z">
+ So are pears.
+ </ins>
+</aside></pre>
+ <!-- Those date's aren't random. They're the start and end of
+ something. Can you guess what? -->
+ </div>
+
<h4 id=the-del><span class=secno>3.13.2. </span>The <dfn
id=del><code>del</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#strictly">strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd>When the element only contains <a href="#phrasing0">phrasing
+ content</a>: <a href="#phrasing0">phrasing content</a>.
+
+ <dd>Otherwise: <a href="#prose1">prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> is expected.
+ <dd>When the element only contains <a href="#phrasing0">phrasing
+ content</a>: where <a href="#phrasing0">phrasing content</a> is expected.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Otherwise: where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
<dd>When the element has a parent: same content model as the parent
- element (without taking into account the other children of the parent
- element).
+ element.
- <dd>Otherwise: zero or more <a href="#block-level0">block-level
- elements</a>, or <a href="#inline-level0">inline-level content</a> (but
- not both).
+ <dd>Otherwise: <a href="#prose1">prose content</a>.
<dt>Element-specific attributes:
@@ -12028,31 +12009,9 @@
<p>The <code><a href="#del">del</a></code> element represents a removal
from the document.
- <p>The <code><a href="#del">del</a></code> element must only contain
- content that would be allowed inside the parent element (regardless of
- what the parent element actually contains).
+ <p><code><a href="#del">del</a></code> elements should not cross <a
+ href="#paragraph" title=paragraph>implied paragraph</a> boundaries.
- <div class=example>
- <p>The following would be syntactically legal:</p>
-
- <pre><aside>
- <del>
- <p>...</p>
- </del>
- <ins>
- <em>...</em>
- </ins>
-</aside></pre>
-
- <p>...even though the <code><a href="#p">p</a></code> and <code><a
- href="#em">em</a></code> elements would never be allowed side by side in
- the <code><a href="#aside">aside</a></code> element. This is allowed
- because the <code><a href="#del">del</a></code> element represents
- content that was removed, and it is quite possible that an edit could
- cause an element to go from being an inline-level container to a
- block-level container, or vice-versa.</p>
- </div>
-
<h4 id=attributes><span class=secno>3.13.3. </span>Attributes common to
<code><a href="#ins">ins</a></code> and <code><a
href="#del">del</a></code> elements</h4>
@@ -12101,25 +12060,28 @@
title=dom-mod-datetime><code>dateTime</code></dfn> DOM attribute must
reflect the element's <code title="">datetime</code> content attribute.
- <h3 id=embedded><span class=secno>3.14. </span>Embedded content</h3>
+ <h3 id=embedded0><span class=secno>3.14. </span>Embedded content</h3>
<h4 id=the-figure><span class=secno>3.14.1. </span>The <dfn
id=figure><code>figure</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>In any order, exactly one <code><a href="#legend">legend</a></code>
- element, and exactly one <a href="#embedded0">embedded content</a>
- element.
+ <dd>Either one <code><a href="#legend">legend</a></code> element followed
+ by <a href="#prose1">prose content</a>.
+ <dd>Or: <a href="#prose1">Prose content</a> followed by one <code><a
+ href="#legend">legend</a></code> element.
+
<dt>Element-specific attributes:
<dd>None.
@@ -12130,69 +12092,29 @@
href="#htmlelement">HTMLElement</a></code>.
</dl>
- <p>The <code><a href="#figure">figure</a></code> element represents a <a
- href="#paragraph">paragraph</a> consisting of embedded content and a
- caption.
+ <p>The <code><a href="#figure">figure</a></code> element represents some <a
+ href="#prose1">prose content</a> with a caption.
- <p>The first <a href="#embedded0">embedded content</a> element child of the
- <code><a href="#figure">figure</a></code> element, if any, is the
- paragraph's content.
-
<p>The first <code><a href="#legend">legend</a></code> element child of the
element, if any, represents the caption of the embedded content. If there
is no child <code><a href="#legend">legend</a></code> element, then there
is no caption.
- <p>If the embedded content cannot be used, then, for the purposes of
- establishing what the <code><a href="#figure">figure</a></code> element
- represents:
+ <p>The remainder of the element's contents, if any, represents the
+ captioned content.
- <dl class=switch>
- <dt>If the embedded content's <a href="#fallback">fallback content</a> is
- a single <a href="#embedded0">embedded content</a> element
-
- <dd>The <code><a href="#figure">figure</a></code> element must be treated
- as if that <a href="#embedded0">embedded content</a> element was the
- <code><a href="#figure">figure</a></code> element's embedded content. (If
- that embedded content can't be used either, then this processing must be
- done again, with the new embedded content's <a href="#fallback">fallback
- content</a>.)
-
- <dt>If the embedded content's fallback is nothing
-
- <dd>The entire <code><a href="#figure">figure</a></code> element
- (including the caption, if any) must be ignored.
-
- <dt>If the embedded content's fallback is <a
- href="#inline-level0">inline-level content</a>
-
- <dd>The entire <code><a href="#figure">figure</a></code> element
- (including the caption, if any) must be treated as being a single <a
- href="#paragraph">paragraph</a> with that <a
- href="#inline-level0">inline-level content</a> as its content.
-
- <dt>Otherwise
-
- <dd>The entire <code><a href="#figure">figure</a></code> element
- (including the caption, if any) must be treated as being replaced by that
- fallback content.
- </dl>
-
<h4 id=the-img><span class=secno>3.14.2. </span>The <dfn
id=img><code>img</code></dfn> element</h4>
- <p><a href="#strictly" title="Strictly inline-level content">Strictly
- inline-level</a> <a href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
<dd>Empty.
@@ -12692,13 +12614,10 @@
title=attr-hyperlink-href><a href="#href6">href</a></code> attribute.
<p>The <code><a href="#img">img</a></code> element supports <a
- href="#dimension0">dimension attributes</a>.
+ href="#dimension0">dimension attributes</a>.</p>
+ <!-- XXX contents of <img> should be ignored for rendering but not
+ for semantics, e.g. <script>, <input>, etc. -->
- <p>The <code><a href="#img">img</a></code> element must be empty.</p>
- <!-- contents
- should be ignored for rendering but not for semantics,
- e.g. <script>, <input>, etc. -->
-
<p>The DOM attributes <dfn id=alt0
title=dom-img-alt><code>alt</code></dfn>, <dfn id=src0
title=dom-img-src><code>src</code></dfn>, <dfn id=usemap
@@ -12723,21 +12642,18 @@
<h4 id=the-iframe><span class=secno>3.14.3. </span>The <dfn
id=iframe><code>iframe</code></dfn> element</h4>
- <p><a href="#strictly" title="Strictly inline-level content">Strictly
- inline-level</a> <a href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
- <dd>Text (for details, see prose).
+ <dd>Text that conforms to the requirements given in the prose.
<dt>Element-specific attributes:
@@ -12812,14 +12728,19 @@
<a href="#browsing0">browsing context</a>, regardless of whether the
specified initial contents are successfully used.
- <p><code><a href="#iframe">iframe</a></code> elements may contain any text.
- <code><a href="#iframe">iframe</a></code> elements must not contain
- element nodes. Descendants of <code><a href="#iframe">iframe</a></code>
- elements represent nothing. (In legacy user agents that do not support
- <code><a href="#iframe">iframe</a></code> elements, the contents would be
- parsed as markup that could act as fallback content.)
+ <p>Descendants of <code><a href="#iframe">iframe</a></code> elements
+ represent nothing. (In legacy user agents that do not support <code><a
+ href="#iframe">iframe</a></code> elements, the contents would be parsed as
+ markup that could act as fallback content.)
- <p class=big-issue>restrictions for what that text must be?
+ <p>The content model of <code><a href="#iframe">iframe</a></code> elements
+ is text, except that the text must be such that <span title=big-issue>...
+ anyone have any bright ideas?</span></p>
+ <!--XXX
+ Gotta handle <script> elements inside <iframe>s that screw around with the DOM on the fly, or that use document.write().
+ Gotta handle <iframe> elements created from script with text contents.
+ Gotta handle the XML case.
+ -->
<p class=note>The <a href="#html-0">HTML parser</a> treats markup inside
<code><a href="#iframe">iframe</a></code> elements as text.
@@ -12831,18 +12752,15 @@
<h4 id=the-embed><span class=secno>3.14.4. </span>The <dfn
id=embed><code>embed</code></dfn> element</h4>
- <p><a href="#strictly" title="Strictly inline-level content">Strictly
- inline-level</a> <a href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
<dd>Empty.
@@ -12964,32 +12882,20 @@
<h4 id=the-object><span class=secno>3.14.5. </span>The <dfn
id=object><code>object</code></dfn> element</h4>
- <p><a href="#strictly" title="Strictly inline-level content">Strictly
- inline-level</a> <a href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
- <dd>When used as the child of a <code><a href="#figure">figure</a></code>
- element, or, when used as a <em><code><a href="#figure">figure</a></code>
- fallback <code><a href="#object">object</a></code></em>: Zero or more
- <code><a href="#param">param</a></code> elements, followed by either zero
- or more <a href="#block-level0">block-level elements</a> or a single
- <code><a href="#object">object</a></code> element, which is then
- considered to be a <em><code><a href="#figure">figure</a></code> fallback
- <code><a href="#object">object</a></code></em>.
+ <dd>Zero or more <code><a href="#param">param</a></code> elements, then,
+ <a href="#transparent0">transparent</a>.
- <dd>Otherwise: Zero or more <code><a href="#param">param</a></code>
- elements, followed by <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd><code title=attr-object-data><a href="#data">data</a></code>
@@ -13026,9 +12932,6 @@
other interfaces.</p>
</dl>
- <p class=big-issue>Shouldn't allow inline-level content to be the content
- model when the parent's content model is strictly inline only.
-
<p>The <code><a href="#object">object</a></code> element can represent an
external resource, which, depending on the type of the resource, will
either be treated as an image, as a nested <a href="#browsing0">browsing
@@ -13247,14 +13150,16 @@
<h4 id=the-param><span class=secno>3.14.6. </span>The <dfn
id=param><code>param</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of an <code><a href="#object">object</a></code> element,
- before any content other than <code><a href="#param">param</a></code>
- elements.
+ before any <a href="#prose1">prose content</a>.
<dt>Content model:
@@ -13303,19 +13208,15 @@
<h4 id=video><span class=secno>3.14.7. </span>The <dfn
id=video1><code>video</code></dfn> element</h4>
- <p><a href="#semi-transparent">Semi-transparent</a> <a href="#strictly"
- title="Strictly inline-level content">strictly inline-level</a> <a
- href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
<dd>If the element has a <code title=attr-media-src><a
@@ -13373,12 +13274,13 @@
<p>Content may be provided inside the <code><a
href="#video1">video</a></code> element. User agents should not show this
- fallback content to the user; it is intended for older Web browsers which
- do not support <code><a href="#video1">video</a></code>, so that legacy
- video plugins can be tried, or to show text to the users of these older
- browser informing them of how to access the video contents.
+ content to the user; it is intended for older Web browsers which do not
+ support <code><a href="#video1">video</a></code>, so that legacy video
+ plugins can be tried, or to show text to the users of these older browser
+ informing them of how to access the video contents.
- <p class=note>In particular, the fallback content isn't intended to address
+ <p class=note>In particular, this content is not <i><a
+ href="#fallback">fallback content</a></i> intended to address
accessibility concerns. To make video content accessible to the blind,
deaf, and those with other physical or cognitive disabilities, authors are
expected to provide alternative media streams and/or to embed
@@ -13535,19 +13437,15 @@
<h4 id=audio><span class=secno>3.14.8. </span>The <dfn
id=audio1><code>audio</code></dfn> element</h4>
- <p><a href="#semi-transparent">Semi-transparent</a> <a href="#strictly"
- title="Strictly inline-level content">strictly inline-level</a> <a
- href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
<dd>If the element has a <code title=attr-media-src><a
@@ -13595,12 +13493,13 @@
<p>Content may be provided inside the <code><a
href="#audio1">audio</a></code> element. User agents should not show this
- fallback content to the user; it is intended for older Web browsers which
- do not support <code><a href="#audio1">audio</a></code>, so that legacy
- audio plugins can be tried, or to show text to the users of these older
- browser informing them of how to access the audio contents.
+ content to the user; it is intended for older Web browsers which do not
+ support <code><a href="#audio1">audio</a></code>, so that legacy audio
+ plugins can be tried, or to show text to the users of these older browser
+ informing them of how to access the audio contents.
- <p class=note>In particular, the fallback content isn't intended to address
+ <p class=note>In particular, this content is not <i><a
+ href="#fallback">fallback content</a></i> intended to address
accessibility concerns. To make audio content accessible to the deaf or to
those with other physical or cognitive disabilities, authors are expected
to provide alternative media streams and/or to embed accessibility aids
@@ -15740,13 +15639,16 @@
<h4 id=the-source><span class=secno>3.14.10. </span>The <dfn
id=source><code>source</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
- <dd>As a child of a <a href="#media5">media element</a>, before any
- content other than <code><a href="#source">source</a></code> elements.
+ <dd>As a child of a <a href="#media5">media element</a>, before any <a
+ href="#prose1">prose content</a>.
<dt>Content model:
@@ -15941,21 +15843,18 @@
<h4 id=the-canvas><span class=secno>3.14.11. </span>The <dfn
id=canvas><code>canvas</code></dfn> element</h4>
- <p><a href="#strictly" title="Strictly inline-level content">Strictly
- inline-level</a> <a href="#embedded0">embedded content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>As the only <a href="#embedded0">embedded content</a> child of a
- <code><a href="#figure">figure</a></code> element.
+ <dd><a href="#embedded1">Embedded content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#embedded1">embedded content</a> is expected.
+
<dt>Content model:
- <dd><a href="#inline-level0">Inline-level content</a>.
+ <dd><a href="#transparent0">Transparent</a>.
<dt>Element-specific attributes:
@@ -15978,9 +15877,6 @@
};</pre>
</dl>
- <p class=big-issue>Shouldn't allow inline-level content to be the content
- model when the parent's content model is strictly inline only.
-
<p>The <code><a href="#canvas">canvas</a></code> element represents a
resolution-dependent bitmap canvas, which can be used for rendering
graphs, game graphics, or other visual images on the fly.
@@ -16010,13 +15906,14 @@
(e.g. if the page was viewed in an interactive visual medium and is now
being printed, or if some script that ran during the page layout process
painted on the element), then the <code><a
- href="#canvas">canvas</a></code> element must be treated as embedded
- content with the current image and size. Otherwise, the element's fallback
- content must be used instead.
+ href="#canvas">canvas</a></code> element must be treated as <a
+ href="#embedded1">embedded content</a> with the current image and size.
+ Otherwise, the element's <a href="#fallback">fallback content</a> must be
+ used instead.
<p>In non-visual media, and in visual media with <span>scripting
disabled</span>, the <code><a href="#canvas">canvas</a></code> element's
- fallback content must be used instead.
+ <a href="#fallback">fallback content</a> must be used instead.
<p>The <code><a href="#canvas">canvas</a></code> element has two attributes
to control the size of the coordinate space: <dfn id=width0
@@ -17460,17 +17357,18 @@
<h4 id=the-map><span class=secno>3.14.12. </span>The <dfn
id=map><code>map</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>.
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -17510,14 +17408,15 @@
<h4 id=the-area><span class=secno>3.14.13. </span>The <dfn
id=area><code>area</code></dfn> element</h4>
- <p><a href="#strictly">Strictly inline-level content</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed, but only as a descendant of a <code><a
- href="#map">map</a></code> element.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected, but only
+ if there is a <code><a href="#map">map</a></code> element ancestor.
<dt>Content model:
@@ -17737,10 +17636,9 @@
<p class=note>One way that a user agent can enable users to follow
hyperlinks is by allowing <code><a href="#area">area</a></code> elements
- to be clicked, or focussed and activated by the keyboard. This <a
- href="#interactive1" title="interactive elements">will cause</a> the
- aforementioned <a href="#activation0">activation behavior</a> to be
- invoked.
+ to be clicked, or focussed and activated by the keyboard. This <span
+ title="interactive elements">will cause</span> the aforementioned <a
+ href="#activation0">activation behavior</a> to be invoked.
<p>The DOM attributes <dfn id=alt2
title=dom-area-alt><code>alt</code></dfn>, <dfn id=coords0
@@ -17814,9 +17712,10 @@
<p class=note>In user agents that do not support images, or that have
images disabled, <code><a href="#object">object</a></code> elements cannot
- represent images, and thus this section never applies (the fallback
- content is shown instead). The following steps therefore only apply to
- <code><a href="#img">img</a></code> elements.
+ represent images, and thus this section never applies (the <a
+ href="#fallback">fallback content</a> is shown instead). The following
+ steps therefore only apply to <code><a href="#img">img</a></code>
+ elements.
<ol>
<li>
@@ -18100,18 +17999,15 @@
<h4 id=the-table><span class=secno>3.15.1. </span>The <dfn
id=table><code>table</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#prose1">Prose content</a>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
<dd>In this order: optionally a <code><a
@@ -18158,7 +18054,8 @@
practice and non-conforming
<p>The children of a <code><a href="#table">table</a></code> element must
- be, in order:
+ be, in order:</p>
+ <!-- XXX do we need this? it's already up there... -->
<ol>
<li>
@@ -18371,9 +18268,12 @@
<h4 id=the-caption><span class=secno>3.15.2. </span>The <dfn
id=caption0><code>caption</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As the first element child of a <code><a
@@ -18381,7 +18281,7 @@
<dt>Content model:
- <dd><a href="#strictly">Strictly inline-level content</a>.
+ <dd><a href="#phrasing0">Phrasing content</a>.
<dt>Element-specific attributes:
@@ -18403,9 +18303,12 @@
<h4 id=the-colgroup><span class=secno>3.15.3. </span>The <dfn
id=colgroup><code>colgroup</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#table">table</a></code> element, after
@@ -18457,9 +18360,12 @@
<h4 id=the-col><span class=secno>3.15.4. </span>The <dfn
id=col><code>col</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#colgroup">colgroup</a></code> element
@@ -18510,9 +18416,12 @@
<h4 id=the-tbody><span class=secno>3.15.5. </span>The <dfn
id=tbody><code>tbody</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#table">table</a></code> element, after
@@ -18594,9 +18503,12 @@
<h4 id=the-thead><span class=secno>3.15.6. </span>The <dfn
id=thead0><code>thead</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#table">table</a></code> element, after
@@ -18634,9 +18546,12 @@
<h4 id=the-tfoot><span class=secno>3.15.7. </span>The <dfn
id=tfoot0><code>tfoot</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#table">table</a></code> element, after
@@ -18683,9 +18598,12 @@
<h4 id=the-tr><span class=secno>3.15.8. </span>The <dfn
id=tr><code>tr</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#thead0">thead</a></code> element.
@@ -18796,17 +18714,19 @@
<h4 id=the-td><span class=secno>3.15.9. </span>The <dfn
id=td><code>td</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#tr">tr</a></code> element.
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>, or <a
- href="#inline-level0">inline-level content</a> (but not both).
+ <dd><a href="#prose1">Prose content</a>.
<dt>Element-specific attributes:
@@ -18871,17 +18791,20 @@
<h4 id=the-th><span class=secno>3.15.10. </span>The <dfn
id=th><code>th</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#tr">tr</a></code> element.
<dt>Content model:
- <dd>Zero or more <a href="#block-level0">block-level elements</a>, or <a
- href="#inline-level0">inline-level content</a> (but not both).
+ <dd><a href="#prose1">Prose content</a>.</dd>
+ <!-- XXX should we make that phrasing content? -->
<dt>Element-specific attributes:
@@ -19754,19 +19677,19 @@
<h4 id=script><span class=secno>3.17.1. </span>The <dfn
id=script0><code>script</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, <a href="#strictly">strictly inline-level content</a>, and <a
- href="#metadata" title="metadata elements">metadata element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#metadata">metadata elements</a> are expected.
+ <dd><a href="#metadata0">Metadata content</a>.
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Where <a href="#inline-level0">inline-level content</a> is expected.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#metadata0">metadata content</a> is expected.
+
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
+
<dt>Content model:
<dd>If there is no <code title=attr-script-src><a
@@ -20177,33 +20100,23 @@
<h4 id=the-noscript><span class=secno>3.17.2. </span>The <dfn
id=noscript><code>noscript</code></dfn> element</h4>
- <p>When <a href="#scripting1">scripting is disabled</a>: <a
- href="#metadata" title="metadata elements">metadata element</a>, <a
- href="#transparent0">transparent</a> <a href="#block-level0"
- title="block-level elements">block-level element</a>, and <a
- href="#transparent0">transparent</a> <a href="#strictly">strictly
- inline-level content</a>.
+ <dl class=element>
+ <dt>Categories
- <p>When <a href="#scripting2">scripting is enabled</a>: <a href="#metadata"
- title="metadata elements">metadata element</a>, <a href="#block-level0"
- title="block-level elements">block-level element</a>, and <a
- href="#strictly">strictly inline-level content</a>.
+ <dd><a href="#metadata0">Metadata content</a>.
- <dl class=element>
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
<dd>In a <code><a href="#head">head</a></code> element of an <a
href="#html-" title=">HTML documents">HTML document</a>, if there are no
ancestor <code><a href="#noscript">noscript</a></code> elements.
- <dd>Where <a href="#block-level0">block-level elements</a> are expected in
- <a href="#html-">HTML documents</a>, if there are no ancestor <code><a
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected in <a
+ href="#html-">HTML documents</a>, if there are no ancestor <code><a
href="#noscript">noscript</a></code> elements.
- <dd>Where <a href="#inline-level0">inline-level content</a> is expected in
- <a href="#html-">HTML documents</a>, if there are no ancestor <code><a
- href="#noscript">noscript</a></code> elements.
-
<dt>Content model:
<dd>When <a href="#scripting1">scripting is disabled</a>, in a <code><a
@@ -20331,19 +20244,19 @@
<h4 id=the-event-source><span class=secno>3.17.3. </span>The <dfn
id=event-source><code>event-source</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, <a href="#strictly">strictly inline-level content</a>, and <a
- href="#metadata" title="metadata elements">metadata element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#metadata">metadata elements</a> are expected.
+ <dd><a href="#metadata0">Metadata content</a>.
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Where <a href="#inline-level0">inline-level content</a> is expected.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#metadata0">metadata content</a> is expected.
+
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
+
<dt>Content model:
<dd>Empty.
@@ -20420,19 +20333,19 @@
<h4 id=the-details><span class=secno>3.18.1. </span>The <dfn
id=details><code>details</code></dfn> element</h4>
- <p><a href="#interactive1" title="interactive elements">Interactive</a>, <a
- href="#block-level0" title="block-level elements">block-level element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><span>Prose element</span>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>One <code><a href="#legend">legend</a></code> element followed by
- either one or more <a href="#block-level0">block-level elements</a> or <a
- href="#inline-level0">inline-level content</a> (but not both).
+ <dd>One <code><a href="#legend">legend</a></code> element followed by <a
+ href="#prose1">prose content</a>.
<dt>Element-specific attributes:
@@ -20497,22 +20410,24 @@
<h4 id=datagrid><span class=secno>3.18.2. </span>The <dfn
id=datagrid0><code>datagrid</code></dfn> element</h4>
- <p><a href="#interactive1" title="interactive elements">Interactive</a>, <a
- href="#block-level0" title="block-level elements">block-level element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><span>Prose element</span>.
+
+ <dd><span>Interactive element</span>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected,
- if there are no ancestor <a href="#interactive1">interactive
- elements</a>.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
<dd>Either: Nothing.
- <dd>Or: One or more <a href="#block-level0">block-level elements</a>, the
- first of which is not a <code><a href="#table">table</a></code> element.
+ <dd>Or: <a href="#prose1">Prose content</a>, but where the first element
+ child node, if any, is not a <code><a href="#table">table</a></code>
+ element.
<dd>Or: A single <code><a href="#table">table</a></code> element.
@@ -22546,18 +22461,18 @@
<h4 id=the-command><span class=secno>3.18.3. </span>The <dfn
id=command0><code>command</code></dfn> element</h4>
- <p><a href="#metadata" title="metadata elements">Metadata element</a>, and
- <a href="#strictly">strictly inline-level content</a>.</p>
- <!-- XXX we sure we
- want it to be metadata? -->
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
+ <dd><a href="#phrasing0">Phrasing content</a>.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#metadata">metadata elements</a> are expected.
+ <dd>Where <a href="#metadata0">metadata content</a> is expected.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
<dt>Content model:
@@ -22759,23 +22674,21 @@
<h4 id=menus><span class=secno>3.18.4. </span>The <dfn
id=menu><code>menu</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>, and <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd><span>Prose element</span>.
- <dd>Where <a href="#structured">structured inline-level elements</a> are
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#prose1">prose content</a> is expected.
+
<dt>Content model:
- <dd>Zero or more <code><a href="#li">li</a></code> elements, or <a
- href="#inline-level0">inline-level content</a> (but not both).
+ <dd>Either: Zero or more <code><a href="#li">li</a></code> elements.
+ <dd>Or: <a href="#phrasing0">Phrasing content</a>.
+
<dt>Element-specific attributes:
<dd><code title=attr-menu-type><a href="#type15">type</a></code>
@@ -22831,8 +22744,8 @@
represents an unordered list of items (each represented by an <code><a
href="#li">li</a></code> element), each of which represents a command that
the user may perform or activate, or, if the element has no <code><a
- href="#li">li</a></code> element children, a <a
- href="#paragraph">paragraph</a> describing available commands.
+ href="#li">li</a></code> element children, <a href="#prose1">prose
+ content</a> describing available commands.
<p>The <dfn id=label1 title=attr-menu-label><code>label</code></dfn>
attribute gives the label of the menu. It is used by user agents to
@@ -23116,10 +23029,10 @@
href="#reflect">reflect</a> the <code title=attr-contextmenu><a
href="#contextmenu">contextmenu</a></code> content attribute.
- <h5 id=toolbars><span class=secno>3.18.4.4. </span><dfn
- id=toolbars0>Toolbars</dfn></h5>
+ <h5 id=toolbars><span class=secno>3.18.4.4. </span>Toolbars</h5>
- <p>Toolbars are a kind of menu that is always visible.
+ <p><dfn id=toolbars0>Toolbars</dfn> are a kind of menu that is always
+ visible.
<p>When a <code><a href="#menu">menu</a></code> element has a <code
title=attr-menu-type><a href="#type15">type</a></code> attribute with the
@@ -23624,19 +23537,21 @@
<h4 id=the-datatemplate><span class=secno>3.19.2. </span>The <dfn
id=datatemplate0><code>datatemplate</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a> and <a href="#metadata" title="metadata elements">metadata
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd><a href="#metadata0">Metadata content</a>.
+
+ <dd><a href="#prose1">Prose content</a>.
+
<dt>Contexts in which this element may be used:
<dd>As the root element of an <a href="#xml-documents" title="xml
documents">XML document</a>.
- <dd>Where <a href="#metadata">metadata elements</a> are expected.
+ <dd>Where <a href="#metadata0">metadata content</a> is expected.
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
@@ -23658,9 +23573,12 @@
<h4 id=the-rule><span class=secno>3.19.3. </span>The <dfn
id=rule><code>rule</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As a child of a <code><a href="#datatemplate0">datatemplate</a></code>
@@ -23732,13 +23650,16 @@
<h4 id=the-nest><span class=secno>3.19.4. </span>The <dfn
id=nest><code>nest</code></dfn> element</h4>
- <!-- element has no special category -->
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
- <dd>As a descendant of a <code><a href="#rule">rule</a></code> element,
- regardless of the parent element's content model.
+ <dd>As a child of a descendant of a <code><a href="#rule">rule</a></code>
+ element, regardless of the element's content model.
<dt>Content model:
@@ -24494,6 +24415,10 @@
id=legend><code>legend</code></dfn> element</h4>
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
<dd>As the first child of a <code>fieldset</code> element.
@@ -24507,13 +24432,8 @@
<dt>Content model:
- <dd>If used as a child of a <code>fieldset</code> or <code><a
- href="#details">details</a></code> element: <a href="#strictly">strictly
- inline-level content</a>
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>If used as a child of a <code><a href="#figure">figure</a></code>
- element: <a href="#inline-level0">inline-level content</a>.
-
<dt>Element-specific attributes:
<dd>None.
@@ -24531,20 +24451,18 @@
<h4 id=the-div><span class=secno>3.20.2. </span>The <dfn
id=div><code>div</code></dfn> element</h4>
- <p><a href="#block-level0" title="block-level elements">Block-level
- element</a>.
-
<dl class=element>
+ <dt>Categories
+
+ <dd>None.
+
<dt>Contexts in which this element may be used:
- <dd>Where <a href="#block-level0">block-level elements</a> are expected.
+ <dd>Where <a href="#prose1">prose content</a> is expected.
<dt>Content model:
- <dd>Zero or more <code><a href="#style">style</a></code> elements,
- followed by either zero or more <a href="#block-level0">block-level
- elements</a>, or <a href="#inline-level0">inline-level content</a> (but
- not both).
+ <dd><a href="#transparent0">Transparent</a>.
<dt>Element-specific attributes:
@@ -24565,7 +24483,7 @@
group of consecutive elements.
<p class=big-issue>Allowing <code><a href="#div">div</a></code> elements to
- contain inline elements makes it easy for authors to abuse <code><a
+ contain phrasing content makes it easy for authors to abuse <code><a
href="#div">div</a></code>, using it with the <code>class=""</code>
attribute to the point of not having any other elements in the markup.
This is a disaster from an accessibility point of view, and it would be
@@ -32337,16 +32255,15 @@
title=event-textInput>textInput</code> event) at the caret.</p>
<p>If the caret is positioned somewhere where <a
- href="#inline-level0">inline-level content</a> is not allowed (e.g.
- because the element accepts "both block-level and inline-level content
- but not both", and the element already contains block-level content),
- then the user agent must not insert the text directly at the caret
- position. In such cases the behaviour is UA-dependent, but user agents
- must not, in response to a request to insert text, generate a DOM that
- is less conformant than the DOM prior to the request.</p>
+ href="#phrasing0">phrasing content</a> is not allowed (e.g. inside an
+ empty <code><a href="#ol">ol</a></code> element), then the user agent
+ must not insert the text directly at the caret position. In such cases
+ the behaviour is UA-dependent, but user agents must not, in response to
+ a request to insert text, generate a DOM that is less conformant than
+ the DOM prior to the request.</p>
<p>User agents should allow users to insert new paragraphs into elements
- that only contain block-level content.</p>
+ that contains only content other than paragraphs.</p>
<div class=example>
<p>For example, given the markup:</p>
@@ -32367,35 +32284,34 @@
<dt id=contenteditable-breakBlock>Break block
<dd>
- <p>UAs should offer a way for the user to request that the current block
- be broken at the caret, e.g. as the default action of a <code
+ <p>UAs should offer a way for the user to request that the current
+ paragraph be broken at the caret, e.g. as the default action of a <code
title=event-keydown>keydown</code> event whose identifier is the "Enter"
key and that has no modifiers set.</p>
<p>The exact behaviour is UA-dependent, but user agents must not, in
- response to a request to break a block, generate a DOM that is less
+ response to a request to break a paragraph, generate a DOM that is less
conformant than the DOM prior to the request.
<dt id=contenteditable-br>Insert a line separator
<dd>
<p>UAs should offer a way for the user to request an explicit line break
- at the caret position without breaking the block, e.g. as the default
- action of a <code title=event-keydown>keydown</code> event whose
+ at the caret position without breaking the paragraph, e.g. as the
+ default action of a <code title=event-keydown>keydown</code> event whose
identifier is the "Enter" key and that has a shift modifier set. Line
separators are typically found within a poem verse or an address. To
insert a line break, the user agent must insert a <code><a
href="#br">br</a></code> element.</p>
<p>If the caret is positioned somewhere where <a
- href="#inline-level0">inline-level content</a> is not allowed (e.g.
- because the element accepts "both block-level and inline-level content
- but not both", and the element already contains block-level content),
- then the user agent must not insert the <code><a
- href="#br">br</a></code> element directly at the caret position. In such
- cases the behaviour is UA-dependent, but user agents must not, in
- response to a request to insert a line separator, generate a DOM that is
- less conformant than the DOM prior to the request.
+ href="#phrasing0">phrasing content</a> is not allowed (e.g. in an empty
+ <code><a href="#ol">ol</a></code> element), then the user agent must not
+ insert the <code><a href="#br">br</a></code> element directly at the
+ caret position. In such cases the behaviour is UA-dependent, but user
+ agents must not, in response to a request to insert a line separator,
+ generate a DOM that is less conformant than the DOM prior to the
+ request.
<dt id=contenteditable-delete>Delete
@@ -32423,7 +32339,7 @@
<p>UAs should offer a way for the user to mark text as having <a
href="#em" title=em>stress emphasis</a> and as being <a href="#strong"
title=strong>important</a>, and may offer the user the ability to mark
- text and blocks with other semantics.</p>
+ text and paragraphs with other semantics.</p>
<p>UAs should similarly offer a way for the user to insert empty semantic
elements (such as, again, <code><a href="#em">em</a></code>, <code><a
@@ -32474,7 +32390,7 @@
if the user selects a block of text and hits <kbd><kbd>Enter</kbd></kbd>,
the UA might interpret that as a request to delete the content of <a
href="#a-selection">the selection</a> followed by a request to break the
- block at that position.
+ paragraph at that position.
<h4 id=making><span class=secno>5.2.2. </span>Making entire documents
editable</h4>
@@ -34029,22 +33945,21 @@
<li><code title=""><p></code>
- <li><code title=""><pre></code>
+ <li><code title=""><pre></code></li>
+ <!-- XXX this list is incomplete -->
</ul>
<p>...then the user agent must do nothing.</p>
<p>Otherwise, the user agent must, for every position in the selection,
- take the furthest <a href="#block-level0" title="block-level
- elements">block-level element</a> ancestor of that position that
- contains only <a href="#inline-level0">inline-level content</a> and is
- not being used as a <a href="#structured" title="structured inline-level
- elements">structured inline-level element</a>, and, if that element is a
- descendant of the editing host, rename it (as if the <code
- title="">Element.renameNode()</code> method had been used) according to
- the <var title="">value</var>, by stripping the leading
- <code><</code> character and the trailing <code>></code> character
- and using the rest as the new tag name, using the HTML namespace.
+ take the furthest <a href="#prose1">prose content</a> ancestor element
+ of that position that contains only <a href="#phrasing0">phrasing
+ content</a>, and, if that element is a descendant of the editing host,
+ rename it (as if the <code title="">Element.renameNode()</code> method
+ had been used) according to the <var title="">value</var>, by stripping
+ the leading <code><</code> character and the trailing
+ <code>></code> character and using the rest as the new tag name,
+ using the HTML namespace.
<dt>If the <var title="">commandId</var> is <dfn id=delete
title=command-delete><code>delete</code></dfn>
@@ -36846,7 +36761,7 @@
determine the character encoding is given by the XML specification. This
section does not apply to XML documents. <a href="#refsXML">[XML]</a>
- <h5 id=determining0><span class=secno>8.2.2.1. </span>Determining the
+ <h5 id=determining><span class=secno>8.2.2.1. </span>Determining the
character encoding</h5>
<p>In some cases, it might be impractical to unambiguously determine the
@@ -39605,7 +39520,7 @@
href="#small">small</a></code>, <code>strike</code>, <code><a
href="#strong">strong</a></code>, <code>tt</code>, and <code>u</code>.
- <dt><dfn id=phrasing>Phrasing</dfn>
+ <dt><dfn id=phrasing1>Phrasing</dfn>
<dd>
<p>All other elements found while parsing an HTML document.
@@ -40718,7 +40633,7 @@
<li>
<p>If <var title="">node</var> is not in the <a
href="#formatting">formatting</a> category, and is not in the <a
- href="#phrasing">phrasing</a> category, and is not an <code><a
+ href="#phrasing1">phrasing</a> category, and is not an <code><a
href="#address">address</a></code> or <code><a
href="#div">div</a></code> element, then stop this algorithm.
</li>
@@ -40768,7 +40683,7 @@
<li>
<p>If <var title="">node</var> is not in the <a
href="#formatting">formatting</a> category, and is not in the <a
- href="#phrasing">phrasing</a> category, and is not an <code><a
+ href="#phrasing1">phrasing</a> category, and is not an <code><a
href="#address">address</a></code> or <code><a
href="#div">div</a></code> element, then stop this algorithm.
</li>
@@ -41048,7 +40963,7 @@
<p>Let the <var title="">furthest block</var> be the topmost node
in the <a href="#stack">stack of open elements</a> that is lower
in the stack than the <var title="">formatting element</var>, and
- is not an element in the <a href="#phrasing">phrasing</a> or <a
+ is not an element in the <a href="#phrasing1">phrasing</a> or <a
href="#formatting">formatting</a> categories. There might not be
one.
@@ -41459,8 +41374,8 @@
<p><a href="#insert">Insert an HTML element</a> for the token.</p>
- <p class=note>This element will be a <a href="#phrasing">phrasing</a>
- element.</p>
+ <p class=note>This element will be a <a
+ href="#phrasing1">phrasing</a> element.</p>
<!--
Put the following into the MathML namespace if parsed:
math, mrow, mfrac, msqrt, mroot, mstyle, merror, mpadded,
@@ -41503,7 +41418,7 @@
<li>
<p>Otherwise, if <var title="">node</var> is in neither the <a
href="#formatting">formatting</a> category nor the <a
- href="#phrasing">phrasing</a> category, then this is a <a
+ href="#phrasing1">phrasing</a> category, then this is a <a
href="#parse0">parse error</a>. Stop this algorithm. The end tag
token is ignored.
@@ -44671,19 +44586,15 @@
<h4 id=the-font><span class=secno>9.1.2. </span>The <dfn
id=font><code>font</code></dfn> element</h4>
- <p><a href="#transparent0">Transparent</a> <a href="#block-level0"
- title="block-level elements">block-level element</a>, and <a
- href="#transparent0">transparent</a> <a href="#strictly">strictly
- inline-level content</a>.
-
<dl class=element>
- <dt>Contexts in which this element may be used:
+ <dt>Categories
- <dd>Where <span>block-level content</span> is allowed.
+ <dd><a href="#phrasing0">Phrasing content</a>.
- <dd>Where <a href="#strictly">strictly inline-level content</a> is
- allowed.
+ <dt>Contexts in which this element may be used:
+ <dd>Where <a href="#phrasing0">phrasing content</a> is expected.
+
<dt>Content model:
<dd><a href="#transparent0">Transparent</a>.
@@ -44726,11 +44637,6 @@
it is used on a page lacking the <a href="#wysiwyg2">WYSIWYG
signature</a>.
- <p>A <code><a href="#font">font</a></code> element can only contain content
- that would still be conformant if all elements with <a
- href="#transparent0">transparent</a> content models were replaced by their
- contents.
-
<div class=example>
<p>The following would be syntactically legal (as the output from a
WYSIWYG editor, though not anywhere else):</p>
@@ -45738,7 +45644,6 @@
need a summary of the differences between the HTML and XML serialisations.
-e.g. how <p><ul> is allowed in one but not the other
@@ -46445,7 +46350,7 @@
<p>Authors should put <code>command</code> elements inside the
<code>head</code> element, inside any element that may contain
- <span>block-level elements</span> or <span>inline-level
+ ...
content</span>, or inside <code>commandset</code> elements.</p> <!-+-
should, because hey, if they want to put them elsewhere, why not.
XXX -+->
@@ -46536,9 +46441,6 @@
XXX publish a "Valid HTML5!" button with a kitten on it. Made by an artist. (Doodle?)
-XXX rename "Block-level" and "inline-level" to something else to
-prevent terminology clash with CSS.
-
Interaction with document.open/write/close is undefined
How to determine the character encoding
Integration with quirks mode problems
@@ -46575,7 +46477,6 @@
> them to paragraphs to be saved or are they going to come up with an even
> more crufty work-around to comply with the machine-checkable
> requirements of the spec?
-(i agree, i think we should drop "significant inline content". -ian)
bjoern:
Modified: source
===================================================================
--- source 2007-12-19 02:23:15 UTC (rev 1151)
+++ source 2007-12-20 03:47:13 UTC (rev 1152)
@@ -880,8 +880,8 @@
<p>Elements in the DOM represent things; that is, they have
intrinsic <em>meaning</em>, also known as semantics.</p>
- <p class="example">For example, a <code>p</code> element represents
- a paragraph.</p>
+ <p class="example">For example, an <code>ol</code> element represents
+ an ordered list.</p>
<p>In addition, documents and elements in the DOM host APIs that
extend the DOM Core APIs, providing new features to application
@@ -3946,6 +3946,9 @@
title="">month</var>, and <var title="">day</var> to the <var
title="">results</var>.</p></li>
+ <!-- XXX we should allow the algorithm to abort here without
+ error, with just a date. -->
+
<!-- WHITESPACE -->
<li><p>For the "in content" variant: <span>skip Zs
characters</span>; for the "in attributes" variant: <span>skip
@@ -4545,212 +4548,143 @@
- <h4>Kinds of elements</h4>
+ <h4>Kinds of content</h4>
<p>Each element in HTML falls into zero or more categories that
- group elements with similar characteristics together. This
- specification uses the following categories:</p>
+ group elements with similar characteristics together. The following
+ categories are used in this specification:</p>
<ul class="brief">
- <li><span>Metadata elements</span></li>
- <li><span>Sectioning elements</span></li>
- <li><span>Block-level elements</span></li>
- <li><span>Strictly inline-level content</span></li>
- <li><span>Structured inline-level elements</span></li>
- <li><span>Interactive elements</span></li>
- <li><span>Form control elements</span></li>
+ <li><span>Metadata content</span></li>
+ <li><span>Prose content</span></li>
+ <li><span>Sectioning content</span></li>
+ <li><span>Heading content</span></li>
+ <li><span>Phrasing content</span></li>
+ <li><span>Embedded content</span></li>
+ <li><span>Form control content</span></li>
+ <li><span>Interactive content</span></li>
+<!--
+ <li><span>Form content</span></li> XXX "Form control elements"
+-->
</ul>
- <!-- XXX check that all the above got a section defining them,
+ <!-- XXX xref check that all the above got a section defining them,
however briefly -->
<!-- XXX check that the element definitions also link to those
sections -->
+ <!-- XXX list all the elements for each kind of element in the
+ sections below. -->
+
<p>Some elements have unique requirements and do not fit into any
particular category.</p>
- <p>In addition, some elements represent various common concepts; for
- example, some elements represent <span>paragraphs</span>.</p>
+ <h5>Metadata content</h5>
- <h5><dfn>Block-level elements</dfn></h5>
+ <p><dfn>Metadata content</dfn> is content that sets up the
+ presentation or behaviour of the rest of the content, or that sets
+ up the relationship of the document with other documents, or that
+ conveys other "out of band" information.</p>
- <p>Block-level elements are used for structural grouping of page
- content.</p>
+ <p>Elements from other namespaces whose semantics are primarily
+ metadata-related (e.g. RDF) are also <span>metadata
+ content</span>.</p>
- <p>There are several kinds of block-level elements:</p>
- <ul>
+ <h5>Prose content</h5>
- <li>Some can only contain other block-level elements:
- <code>blockquote</code>, <code>section</code>,
- <code>article</code>, <code>header</code>.</li>
+ <p>Most elements that are used in the body of documents and
+ applications are categorised as <dfn>prose content</dfn>.</p>
- <li>Some can only contain <span>inline-level content</span>:
- <code>p</code>, <code>h1</code>-<code>h6</code>,
- <code>address</code>.</li>
+ <p>As a general rule, elements whose content model allows any
+ <span>prose content</span> should have either at least one
+ descendant text node that is not <span>inter-element
+ whitespace</span>, or at least one descendant element node that is
+ <span>embedded content</span>. For the purposes of this requirement,
+ <code>del</code> elements and their descendants must not be
+ counted as contributing to the ancestors of the <code>del</code>
+ element.</p>
- <li>Some can contain either block-level elements or
- <span>inline-level content</span> (but not both):
- <code>nav</code>, <code>aside</code>, <code>footer</code>,
- <code>div</code>.</li>
+ <p>This requirement is not a hard requirement, however, as there are
+ many cases where an element can be empty legitimately, for example
+ when it is used as a placeholder which will later be filled in by a
+ script, or when the element is part of a template and would on most
+ pages be filled in but on some pages is not relevant.</p>
- <li>Finally, some have very specific content models:
- <code>ul</code>, <code>ol</code>, <code>dl</code>,
- <code>table</code>, <code>script</code>.
- </li>
+ <h5>Sectioning content</h5>
- </ul>
+ <p><dfn>Sectioning content</dfn> is content that defines the scope
+ of <span title="heading content">headers</span>, <span
+ title="footer">footers</span>, and <span title="address">contact
+ information</span>.</p>
- <p>There are also elements that seem to be block-level but aren't,
- such as <code>body</code>, <code>li</code>, <code>dt</code>,
- <code>dd</code>, and <code>td</code>. These elements are allowed
- only in specific places, not simply anywhere that block-level
- elements are allowed.</p>
+ <p>Each <span>sectioning content</span> element potentially has a
+ heading. See the section on <span>headings and sections</span> for
+ further details.</p>
- <p>Some block-level elements play multiple roles. For instance, the
- <code>script</code> elements is allowed inside <code>head</code>
- elements and can also be used as <span>inline-level content</span>.
- Similarly, the <code>ul</code>, <code>ol</code>, <code>dl</code>,
- <code>table</code>, and <code>blockquote</code> elements play dual
- roles as both block-level and inline-level elements.</p>
+ <h5>Heading content</h5>
- <h5><dfn>Inline-level content</dfn></h5>
+ <p><dfn>Heading content</dfn> defines the header of a section
+ (whether explicitly marked up using <span>sectioning content</span>
+ elements, or implied by the heading content itself).</p>
- <p>Inline-level content consists of text and various elements to
- annotate the text, as well as some <span>embedded content</span>
- (such as images or sound clips).</p>
- <p>Inline-level content comes in various types:</p>
+ <h5>Phrasing content</h5>
- <dl>
+ <p><dfn>Phrasing content</dfn> is the text of the document, as well
+ as elements that mark up that text at the intra-paragraph
+ level. Runs of <span>phrasing content</span> form <span
+ title="paragraph">paragraphs</span>.</p>
- <dt><dfn>Strictly inline-level content</dfn></dt>
- <dd>Text, <span>embedded content</span>, and elements that annotate
- the text without introducing structural grouping. For example:
- <code>a</code>, <code>meter</code>, <code>img</code>. Elements used
- in contexts allowing only strictly inline-level content must not
- have any descendants that are anything other than strictly
- inline-level content.</dd>
+ <p>All <span>phrasing content</span> is also <span>prose
+ content</span>. Any content model that expects <span>prose
+ content</span> also expects <span>phrasing content</span>.</p>
- <dt><dfn>Structured inline-level elements</dfn></dt>
- <dd>Block-level elements that can also be used as inline-level
- content. For example: <code>ol</code>, <code>blockquote</code>,
- <code>table</code>.</dd>
-
- </dl>
-
- <p><dfn>Embedded content</dfn> consists of elements that introduce
- content from other resources into the document, for example
- <code>img</code>. Embedded content elements can have <dfn>fallback
- content</dfn>: content that is to be used when the external resource
- cannot be used (e.g. because it is of an unsupported format). The
- element definitions state what the fallback is, if any.</p>
-
<p>As a general rule, elements whose content model allows any
- <span>block-level elements</span>, or allows any <span>inline-level
- content</span>, should have either at least one descendant text node
- that is not <span>inter-element whitespace</span>, or at least one
- descendant element node that is <span>embedded content</span>. For
- the purposes of this requirement, nodes that are descendants of
- <code>del</code> elements must not be counted as contributing to the
- ancestors of the <code>del</code> element.</p>
+ <span>phrasing content</span> should have either at least one
+ descendant text node that is not <span>inter-element
+ whitespace</span>, or at least one descendant element node that is
+ <span>embedded content</span>. For the purposes of this requirement,
+ nodes that are descendants of <code>del</code> elements must not be
+ counted as contributing to the ancestors of the <code>del</code>
+ element.</p>
- <p>This requirement is not a hard requirement, however, as there are
- many cases where an element can be empty legitimately, for example
- when it is used as a placeholder which will later be filled in by a
- script, or when the element is part of a template and would on most
- pages be filled in but on some pages is not relevant.</p>
+ <p class="note">Most elements that are categorised as phrasing
+ content can only contain elements that are themselves categorised as
+ phrasing content, not any prose content.</p>
+ <p>Text nodes that are not <span>inter-element whitespace</span> are
+ <span>phrasing content</span>.</p>
- <h5>Transparent content models</h5>
- <p>Some elements are described as <dfn>transparent</dfn>; they have
- "transparent" as their content model. Some elements are described as
- <dfn>semi-transparent</dfn>; this means that part of their content
- model is "transparent" but that is not the only part of the content
- model that must be satisfied.</p>
+ <h5>Embedded content</h5>
- <p>When a content model includes a part that is "transparent", those
- parts must only contain content that would still be conformant if
- all transparent and semi-transparent elements in the tree were
- replaced, in their parent element, by the children in the
- "transparent" part of their content model, retaining order.</p>
+ <p><dfn>Embedded content</dfn> is content that imports another
+ resource into the document, or content from another vocabulary that
+ is inserted into the document.</p>
- <p>When a transparent or semi-transparent element has no parent,
- then the part of its content model that is "transparent" must
- instead be treated as zero or more <span>block-level
- elements</span>, or <span>inline-level content</span> (but not
- both).</p>
+ <p>All <span>embedded content</span> is also <span>phrasing
+ content</span> (and <span>prose content</span>). Any content model
+ that expects <span>phrasing content</span> (or <span>prose
+ content</span>) also expects <span>embedded content</span>.</p>
+ <p>Elements that are from namespaces other than the <span>HTML
+ namespace</span> and that convey content but not metadata, are
+ <span>embedded content</span> for the purposes of the content models
+ defined in this specification. (For example, MathML, or SVG.)</p>
- <h5><dfn>Determining if a particular element contains block-level
- elements or inline-level content</dfn></h5>
+ <p>Some embedded content elements can have <dfn>fallback
+ content</dfn>: content that is to be used when the external resource
+ cannot be used (e.g. because it is of an unsupported format). The
+ element definitions state what the fallback is, if any.</p>
- <p>Some elements are defined to have content models that allow
- either <span>block-level elements</span> or <span>inline-level
- content</span>, but not both. For example, the <code>aside</code>
- and <code>li</code> elements.</p>
- <p>To establish whether such an element is being used as a
- block-level container or as an inline-level container, for example
- in order to determine if a document conforms to these requirements,
- user agents must look at the element's child nodes. If any of the
- child nodes are not allowed in block-level contexts, then the
- element is being used for <span>inline-level content</span>. If all
- the child nodes are allowed in a block-level context, then the
- element is being used for <span>block-level elements</span>.</p>
+ <h5>Interactive content</h5>
- <p>Whenever this search would examine a <span>transparent</span>
- element, the element's own child nodes must be examined instead,
- potentially recursing further if any of those are themselves
- transparent.</p>
-
- <div class="example">
- <p>For instance, in the following (non-conforming) XML fragment,
- the <code>li</code> element is being used as an inline-level
- element container, because the <code>meta</code> element is not
- allowed in a block-level context. (It doesn't matter, for the
- purposes of determining whether it is an inline-level or
- block-level context, that the <code>meta</code> element is not
- allowed in inline-level contexts either.)</p>
- <pre><ol>
- <li>
- <p> Hello World </p>
- <meta title="this is an invalid example"/>
- </li>
-</ol>
-</pre>
- <p>In the following fragment, the <code>aside</code> element is
- being used as a block-level container, because even though all the
- elements it contains could be considered inline-level elements,
- there are no nodes that can only be considered inline-level.</p>
- <pre><aside>
- <ol>
- <li> ... </li>
- </ol>
- <ul>
- <li> ... </li>
- </ul>
-</aside></pre>
- <p>On the other hand, in the following similar fragment, the
- <code>aside</code> element is an inline-level container, because
- the text ("Foo") can only be considered inline-level.</p>
- <pre><aside>
- <ol>
- <li> ... </li>
- </ol>
- Foo
-</aside></pre>
- </div>
-
-
-
- <h5><dfn>Interactive elements</dfn></h5>
-
<!-- Don't change the above <dfn> or the text below without checking
all cross-references. Some of them refer specifically to the
activation behavior stuff. -->
@@ -4766,6 +4700,9 @@
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20HTML%3E%0A%3Cform%20action%3D%22http%3A//google.com/%22%3EX%3C/form%3E%0A%3Cscript%3E%0Avar%20evt%20%3D%20document.createEvent%28%22Events%22%29%3B%0Aevt.initEvent%28%22submit%22%2C%20true%2C%20true%29%3B%0Adocument.getElementsByTagName%28%27form%27%29%5B0%5D.dispatchEvent%28evt%29%3B%0A%3C/script%3E
-->
+ <p><dfn>Interactive content</dfn> is content that is specifically
+ intended for user interaction.</p>
+
<p>Certain elements in HTML can be activated, for instance
<code>a</code> elements, <code>button</code> elements, or
<code>input</code> elements when their <code>type</code> attribute
@@ -4806,33 +4743,88 @@
<p class="note">Most interactive elements have content models that
disallow nesting interactive elements.</p>
-<!--
- <li><span>Form control elements</span></li> XXX
--->
+ <h4>Transparent content models</h4>
- <h5>Paragraphs</h5>
+ <p>Some elements are described as <dfn>transparent</dfn>; they have
+ "transparent" as their content model. Some elements are described as
+ <dfn>semi-transparent</dfn>; this means that part of their content
+ model is "transparent" but that is not the only part of the content
+ model that must be satisfied.</p>
- <p>A <dfn>paragraph</dfn> is typically a block of text with one or
- more sentences that discuss a particular topic, as in typography,
- but can also be used for more general thematic grouping. For
- instance, an address is also a paragraph, as is a part of a form, a
- byline, or a stanza in a poem.</p>
+ <p>When a content model includes a part that is "transparent", those
+ parts must only contain content that would still be conformant if
+ all transparent and semi-transparent elements in the tree were
+ replaced, in their parent element, by the children in the
+ "transparent" part of their content model, retaining order.</p>
- <p>Paragraphs can be represented by several elements. The
- <code>address</code> element always represents a paragraph of
- contact information for its section, the <code>aside</code>,
- <code>nav</code>, <code>footer</code>, <code>li</code>, and
- <code>dd</code> elements represent paragraphs with various specific
- semantics when they are <span title="Determining if a particular
- element contains block-level elements or inline-level content">used
- as inline-level content containers</span>, the <code>figure</code>
- element represents a paragraph in the form of <span>embedded
- content</span>, and the <code>p</code> element represents all the
- other kinds of paragraphs, for which there are no dedicated
+ <p>When a transparent or semi-transparent element has no parent,
+ then the part of its content model that is "transparent" must
+ instead be treated as accepting any <span>prose content</span>.</p>
+
+
+ <h4>Paragraphs</h4>
+
+ <p>A <dfn>paragraph</dfn> is typically a block of text with one or more
+ sentences that discuss a particular topic, as in typography, but can
+ also be used for more general thematic grouping. For instance, an
+ address is also a paragraph, as is a part of a form, a byline, or a
+ stanza in a poem.</p>
+
+ <p>Paragraphs in <span>prose content</span> are defined relative to
+ what the document looks like without the <code>ins</code> and
+ <code>del</code> elements complicating matters. Let <var
+ title="">view</var> be a view of the DOM that replaces all
+ <code>ins</code> and <code>del</code> elements in the document with
+ their contents. Then, in <var title="">view</var>, for each run of
+ <span>phrasing content</span> uninterrupted by other types of
+ content, in an element that accepts content other than
+ <span>phrasing content</span>, let <var title="">first</var> be the
+ first node of the run, and let <var title="">last</var> be the last
+ node of the run. For each run, a paragraph exists in the original
+ DOM from immediately before <var title="">first</var> to immediately
+ after <var title="">last</var>. (Paragraphs can thus span across
+ <code>ins</code> and <code>del</code> elements.)</p>
+
+ <p>A <span>paragraph</span> is also formed by <code>p</code>
elements.</p>
+ <p class="note">The <code>p</code> element can be used to wrap
+ individual paragraphs when there would otherwise not be any content
+ other than phrasing content to separate the paragraphs from each
+ other.</p>
+ <div class="example">
+
+ <p>In the following example, there are two paragraphs in a
+ section. There is also a header, which contains phrasing content
+ that is not a paragraph. Note how the comments and
+ <span>intra-element whitespace</span> do not form paragraphs.</p>
+
+ <pre><section>
+ <h1>Example of paragraphs</h1>
+ This is the <em>first</em> paragraph in this example.
+ <p>This is the second.</p>
+ <!-- This is not a paragraph. -->
+</section></pre>
+
+ <p>The following example takes that markup and puts
+ <code>ins</code> and <code>del</code> elements around some of the
+ markup to show that the text was changed (though in this case, the
+ changes don't really make much sense, admittedly). Notice how this
+ example has exactly the same paragraphs as the previous one,
+ despite the <code>ins</code> and <code>del</code> elements.</p>
+
+ <pre><section>
+ <ins><h1>Example of paragraphs</h1>
+ This is the <em>first</em> paragraph in</ins> this example<del>.
+ <p>This is the second.</p></del>
+ <!-- This is not a paragraph. -->
+</section></pre>
+
+ </div>
+
+
<h3>Global attributes</h3>
<p>The following attributes are common to and may be specified on
@@ -5371,9 +5363,9 @@
<h4>The <dfn><code>html</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As the root element of a document.</dd>
<dd>Wherever a subdocument fragment is allowed in a compound document.</dd>
@@ -5394,6 +5386,7 @@
contents; you all have written a blog template with a <div
class="main"> or <div class="content">. Why do we also need a body?
- http://www.glazman.org/weblog/dotclear/index.php?2005/05/27/1055-adam-2
+ - http://www.glazman.org/weblog/dotclear/index.php?post/2005/05/27/1055-adam-2
-->
<dt>Element-specific attributes:</dt>
<dd><code title="attr-html-manifest">manifest</code></dd>
@@ -5448,24 +5441,15 @@
<h3>Document metadata</h3>
- <p>Document metadata is represented by <dfn>metadata elements</dfn>
- in the document's <code>head</code> element.</p>
-
<h4>The <dfn><code>head</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As the first element in an <code>html</code> element.</dd>
<dt>Content model:</dt>
- <dd>In any order unless otherwise specified: optionally one
- <code>meta</code> element with a <code
- title="attr-meta-charset">charset</code> attribute, exactly one
- <code>title</code> element, optionally one <code>base</code>
- element, and zero or more other <span>metadata elements</span> (in
- particular, <code>link</code>, <code>meta</code>,
- <code>style</code>, and <code>script</code>).</dd>
+ <dd>Zero or more elements of <span>metadata content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -5478,13 +5462,13 @@
<h4>The <dfn><code>title</code></dfn> element</h4>
- <p><span title="metadata elements">Metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>In a <code>head</code> element containing no other <code>title</code> elements.</dd>
<dt>Content model:</dt>
- <dd>Text (for details, see prose).</dd>
+ <dd>Text.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -5498,6 +5482,12 @@
different from its first header, since the first header does not
have to stand alone when taken out of context.</p>
+ <p>There must be no more than one <code>title</code> element per
+ document.</p>
+
+ <p>The <code>title</code> element must not contain any
+ elements.</p>
+
<div class="example">
<p>Here are some examples of appropriate titles, contrasted with
@@ -5521,9 +5511,6 @@
</div>
- <p>The <code>title</code> element must not contain any
- elements.</p>
-
<p>The string to use as the document's title is given by the <code
title="dom-document-title">document.title</code> DOM attribute. User
agents should use the document's title when referring to the
@@ -5532,13 +5519,11 @@
<h4>The <dfn><code>base</code></dfn> element</h4>
- <p><span title="metadata elements">Metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>In a <code>head</code> element, after the <code>meta</code>
- element with the <code title="attr-meta-charset">charset</code>
- attribute, if any, but before any other elements.</dd>
+ <dd>In a <code>head</code> element containing no other <code>base</code> elements.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -5616,11 +5601,11 @@
<h4>The <dfn><code>link</code></dfn> element</h4>
- <p><span title="metadata elements">Metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>metadata elements</span> are expected.</dd>
+ <dd>Where <span>metadata content</span> is expected.</dd>
<dd>In a <code>noscript</code> element that is a child of a <code>head</code> element.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
@@ -5855,14 +5840,14 @@
<h4 id="meta">The <dfn><code>meta</code></dfn> element</h4>
- <p><span title="metadata elements">Metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>If the <code title="attr-meta-charset">charset</code> attribute is present: as the first element in a <code>head</code> element.</dd>
<dd>If the <code title="attr-meta-http-equiv">http-equiv</code> attribute is present: in a <code>head</code> element.</dd>
<dd>If the <code title="attr-meta-http-equiv">http-equiv</code> attribute is present: in a <code>noscript</code> element that is a child of a <code>head</code> element.</dd>
- <dd>If the <code title="attr-meta-name">name</code> attribute is present: where <span>metadata elements</span> are expected.</dd>
+ <dd>If the <code title="attr-meta-name">name</code> attribute is present: where <span>metadata content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -6107,7 +6092,7 @@
<tr>
<td><span title="attr-meta-http-equiv-content-type">Content-Type</span>
<td><code title="">Content-Type</code>
- <td>Non-conforming
+ <td>Non-conforming [ XXX though maybe we should allow it for migration? ]
<tr>
<td><span title="attr-meta-http-equiv-content-script-type">Content-Script-Type</span>
<td><code title="">Content-Script-Type</code>
@@ -6334,13 +6319,14 @@
<h4>The <dfn><code>style</code></dfn> element</h4>
- <p><span title="metadata elements">Metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
+ <dd>If the <code title="attr-style-scoped">scoped</code> attribute is present: <span>prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>If the <code title="attr-style-scoped">scoped</code> attribute is absent: where <span>metadata</span> elements are expected.</dd>
+ <dd>If the <code title="attr-style-scoped">scoped</code> attribute is absent: where <span>metadata content</span> is expected.</dd>
<dd>If the <code title="attr-style-scoped">scoped</code> attribute is absent: in a <code>noscript</code> element that is a child of a <code>head</code> element.</dd>
- <dd>If the <code title="attr-style-scoped">scoped</code> attribute is present: at the start of <code>article</code>, <code>aside</code>, <code>div</code>, and <code>section</code> elements.</dd>
+ <dd>If the <code title="attr-style-scoped">scoped</code> attribute is present: where <span>prose content</span> is expected, but before any <span>phrasing content</span> and before any sibling elements that are not <code>style</code> elements.</dd>
<dt>Content model:</dt>
<dd>Depends on the value of the <code title="attr-style-type">type</code> attribute.</dd>
<dt>Element-specific attributes:</dt>
@@ -6404,8 +6390,7 @@
<p>If the <code title="attr-style-scoped">scoped</code> attribute
<em>is</em> specified, then the <code>style</code> element must be
- the child of an <code>article</code>, <code>aside</code>,
- <code>div</code>, or <code>section</code> element, before any text
+ the child of a <span>prose content</span> element, before any text
nodes other than <span>inter-element whitespace</span>, and before
any elements other than other <code>style</code> elements.</dd>
@@ -6537,27 +6522,24 @@
<h3>Sections</h3>
- <p><dfn>Sectioning elements</dfn> are elements that divide the page
- into, for lack of a better word, sections. This section describes
- HTML's sectioning elements and elements that support them.</p>
-
- <p id="applyToSection">Some elements are scoped to their nearest
- ancestor sectioning element. For example, <code>address</code>
- elements apply just to their section. For such elements <var
- title="">x</var>, the elements that apply to a sectioning element
+ <p id="applyToSection">Some elements, for example
+ <code>address</code> elements, are scoped to their nearest ancestor
+ sectioning content. For such elements <var title="">x</var>, the
+ elements that apply to a <span>sectioning content</span> element
<var title="">e</var> are all the <var title="">x</var> elements
- whose nearest sectioning element is <var title="">e</var>.</p>
+ whose nearest <span>sectioning content</span> ancestor is <var
+ title="">e</var>.</p>
<h4>The <dfn><code>body</code></dfn> element</h4>
- <p><span title="sectioning elements">Sectioning element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Sectioning content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As the second element in an <code>html</code> element.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>.</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6567,10 +6549,6 @@
<p>The <code>body</code> element represents the main content of the
document.</p>
- <p>The <code>body</code> element potentially has a heading. See the
- section on <span>headings and sections</span> for further
- details.</p>
-
<p>In conforming documents, there is only one <code>body</code>
element. The <code title="dom-document-body">document.body</code>
DOM attribute provides scripts with easy access to a document's
@@ -6585,14 +6563,14 @@
<h4>The <dfn><code>section</code></dfn> element</h4>
- <p><span title="sectioning elements">Sectioning</span> <span
- title="block-level elements">block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Sectioning content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <code>style</code> elements, followed by zero or more <span>block-level elements</span>.</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6609,21 +6587,17 @@
sections of a thesis. A Web site's home page could be split into
sections for an introduction, news items, contact information.</p>
- <p>Each <code>section</code> element potentially has a heading. See
- the section on <span>headings and sections</span> for
- further details.</p>
-
<h4>The <dfn><code>nav</code></dfn> element</h4>
- <p><span title="sectioning elements">Sectioning</span> <span
- title="block-level elements">block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Sectioning content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>, or <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6634,26 +6608,17 @@
links to other pages or to parts within the page: a section with
navigation links.</p>
- <p>When <span title="Determining if a particular element contains
- block-level elements or inline-level content">used as an
- inline-level content</span> container, the element represents a
- <span>paragraph</span>.</p>
- <p>Each <code>nav</code> element potentially has a heading.
- See the section on <span>headings and sections</span> for
- further details.</p>
-
-
<h4>The <dfn><code>article</code></dfn> element</h4>
- <p><span title="sectioning elements">Sectioning</span> <span
- title="block-level elements">block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Sectioning content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <code>style</code> elements, followed by zero or more <span>block-level elements</span>.</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<!--
@@ -6674,7 +6639,9 @@
However, the element is still associated with its ancestors; for
instance, contact information that <a
href="#applyToSection">applies</a> to a parent <code>body</code>
- element still covers the <code>article</code> as well.</p>
+ element still covers the <code>article</code> as well.</p> <!-- XXX
+ or should we apply the rules in the last paragraph to all articles?
+ -->
<p>When <code>article</code> elements are nested, the inner
<code>article</code> elements represent articles that are in
@@ -6688,24 +6655,17 @@
element (q.v. the <code>address</code> element) does not apply to
nested <code>article</code> elements.</p>
- <p>Each <code>article</code> element potentially has a heading. See
- the section on <span>headings and sections</span> for
- further details.</p>
-
<h4>The <dfn><code>blockquote</code></dfn> element</h4>
- <p><span title="sectioning elements">Sectioning</span> <span
- title="block-level elements">block-level element</span>, and <span
- title="structured inline-level elements">structured inline-level
- element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Sectioning content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>.</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-blockquote-cite">cite</code></dd>
<dt>DOM interface:</dt>
@@ -6731,17 +6691,13 @@
users to follow such citation links.</p>
<p>If a <code>blockquote</code> element is <span>preceeded or
- followed</span> by a <code>p</code> element that contains a single
+ followed</span> by a <span>paragraph</span> that contains a single
<code>cite</code> element and is itself not <span>preceeded or
followed</span> by another <code>blockquote</code> element and does
not itself have a <code>q</code> element descendant, then, the
citation given by that <code>cite</code> element gives the source of
the quotation contained in the <code>blockquote</code> element.</p>
- <p>Each <code>blockquote</code> element potentially has a heading.
- See the section on <span>headings and sections</span> for
- further details.</p>
-
<p>The <dfn title="dom-quote-cite"><code>cite</code></dfn> DOM
attribute <code>reflects</code> the element's <code
title="">cite</code> content attribte.
@@ -6753,16 +6709,14 @@
<h4>The <dfn><code>aside</code></dfn> element</h4>
- <p><span title="sectioning elements">Sectioning</span> <span
- title="block-level elements">block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Sectioning content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <code>style</code> elements, followed by either
- zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6775,28 +6729,20 @@
separate from that content. Such sections are often represented as
sidebars in printed typography.</p>
- <p>When <span title="Determining if a particular element contains
- block-level elements or inline-level content">used as an
- inline-level content</span> container, the element represents a
- <span>paragraph</span>.</p>
- <p>Each <code>aside</code> element potentially has a heading. See
- the section on <span>headings and sections</span> for
- further details.</p>
-
-
<h4>The <dfn><code>h1</code></dfn>, <dfn><code>h2</code></dfn>,
<dfn><code>h3</code></dfn>, <dfn><code>h4</code></dfn>,
<dfn><code>h5</code></dfn>, and <dfn><code>h6</code></dfn>
elements</h4>
- <p><span>Block-level elements</span>.</p>
-
<dl class="element">
- <dt>Contexts in which these elements may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Heading content</span>.</dd>
+ <dt>Contexts in which this element may be used:</dt>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6816,19 +6762,17 @@
<h4>The <dfn><code>header</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
+ <dd><span>Heading content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected and there
- are no <code>header</code> ancestors.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>, including at
- least one descendant <code>h1</code>, <code>h2</code>,
- <code>h3</code>, <code>h4</code>, <code>h5</code>, or
- <code>h6</code> element, but no <span>sectioning element</span>
- descendants, no <code>header</code> element descendants, and no
- <code>footer</code> element descendants.</dd>
+ <dd><span>Prose content</span>, including at least one descendant
+ that is <span>heading content</span>, but no <span>sectioning
+ content</span> descendants, no <code>header</code> element
+ descendants, and no <code>footer</code> element descendants.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6840,22 +6784,15 @@
— for example it would be reasonable for the header to include
version history information.</p>
- <p><code>header</code> elements must not contain any
- <code>header</code> elements, <code>footer</code> elements, or any
- sectioning elements (such as <code>section</code>) as
- descendants.</p>
-
- <p><code>header</code> elements must have at least one
- <code>h1</code>, <code>h2</code>, <code>h3</code>, <code>h4</code>,
- <code>h5</code>, or <code>h6</code> element as a descendant.</p>
-
<p>For the purposes of document summaries, outlines, and the like,
<code>header</code> elements are equivalent to the highest <span
title="rank">ranked</span> <code>h1</code>-<code>h6</code> element
- descendant (the first such element if there are multiple elements
- with that <span>rank</span>).</p>
+ descendant of the <code>header</code> element (the first such
+ element if there are multiple elements with that
+ <span>rank</span>).</p>
- <p>Other heading elements indicate subheadings or subtitles.</p>
+ <p>Other heading elements in the <code>header</code> element
+ indicate subheadings or subtitles.</p>
<div class="example">
@@ -6905,20 +6842,15 @@
<h4>The <dfn><code>footer</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level
- element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Either zero or more <span>block-level elements</span>, but with
- no <code>h1</code>, <code>h2</code>, <code>h3</code>,
- <code>h4</code>, <code>h5</code>, <code>h6</code>,
- <code>header</code>, or <code>footer</code> elements as
- descendants, and with no <span title="sectioning
- elements">sectioning elements</span> as descendants; or,
- <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Prose content</span>, but with no <span>heading
+ content</span> descendants, no <span>sectioning content</span>
+ descendants, and no <code>footer</code> element descendants.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -6930,17 +6862,6 @@
typically contains information about its section such as who wrote
it, links to related documents, copyright data, and the like.</p>
- <p><code>footer</code> elements must not contain any
- <code>footer</code>, <code>header</code>, <code>h1</code>,
- <code>h2</code>, <code>h3</code>, <code>h4</code>, <code>h5</code>,
- or <code>h6</code> elements, or any of the sectioning elements (such
- as <code>section</code>), as descendants.</p>
-
- <p>When <span title="Determining if a particular element contains
- block-level elements or inline-level content">used as an
- inline-level content</span> container, the element represents a
- <span>paragraph</span>.</p>
-
<p>Contact information for the section given in a
<code>footer</code> should be marked up using the
<code>address</code> element.</p>
@@ -6950,23 +6871,25 @@
<h4>The <dfn><code>address</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level
- element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Inline-level content</span>.</dd>
+ <dd><span>Prose content</span>, but with no <span>heading
+ content</span> descendants, no <span>sectioning content</span>
+ descendants, no <code>footer</code> element descendants, and no
+ <code>address</code> element descendants.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
<dd>No difference from <code>HTMLElement</code>.</dd>
</dl>
- <p>The <code>address</code> element represents a
- <span>paragraph</span> of contact information for the section it <a
- href="#applyToSection">applies</a> to.</p>
+ <p>The <code>address</code> element represents the contact
+ information for the section it <a href="#applyToSection">applies</a>
+ to.</p>
<div class="example">
<p>For example, a page at the W3C Web site related to HTML might
@@ -6996,12 +6919,13 @@
with other information in a <code>footer</code> element.</p>
<p>To determine the contact information for a sectioning element
- (such as a document's <code>body</code> element, which would give the
- contact information for the page), UAs must collect all the
+ (such as a document's <code>body</code> element, which would give
+ the contact information for the page), UAs must collect all the
<code>address</code> elements that <a
href="#applyToSection">apply</a> to that sectioning element and its
ancestor sectioning elements. The contact information is the
- collection of all the information given by those elements.</p>
+ collection of all the information given by those elements.</p> <!--
+ XXX exception for nested article elements? -->
<p class="note">Contact information for one sectioning element, e.g.
an <code>aside</code> element, does not apply to its ancestor
@@ -7014,19 +6938,19 @@
<p>The <code>h1</code>-<code>h6</code> elements and the
<code>header</code> element are headings.</p>
- <p>The first heading in a sectioning element gives the header for
- that section. Subsequent headers of equal or higher
- <span>rank</span> start new (implied) sections, headers of lower
- <span>rank</span> start subsections that are part of the previous
- one.</p>
+ <p>The first element of <span>heading content</span> in an element
+ of <span>sectioning content</span> gives the header for that
+ section. Subsequent headers of equal or higher <span>rank</span>
+ start new (implied) sections, headers of lower <span>rank</span>
+ start subsections that are part of the previous one.</p>
<p>Sectioning elements other than <code>blockquote</code> are always
- considered subsections of their nearest ancestor sectioning element,
- regardless of what implied sections other headings may have created.
- However, <code>blockquote</code> elements <em>are</em> associated
- with implied sections. Effectively, <code>blockquote</code> elements
- act like sections on the inside, and act opaquely on the
- outside.</p>
+ considered subsections of their nearest ancestor element of
+ <span>sectioning content,</span> regardless of what implied sections
+ other headings may have created. However, <code>blockquote</code>
+ elements <em>are</em> associated with implied sections. Effectively,
+ <code>blockquote</code> elements act like sections on the inside,
+ and act opaquely on the outside.</p>
<div class="example">
@@ -7080,8 +7004,8 @@
for the section's nesting level.</p>
<p>Authors are also encouraged to explictly wrap sections in
- sectioning elements, instead of relying on the implicit sections
- generated by having multiple heading in one sectioning element.</p>
+ elements of <span>sectioning content</span>, instead of relying on the implicit sections
+ generated by having multiple heading in one element of <span>sectioning content</span>.</p>
<div class="example">
<p>For example, the following is correct:</p>
@@ -7127,6 +7051,10 @@
<h5 id="outlines">Creating an outline</h5>
+ <p class="big-issue">This section will be rewritten at some
+ point. The algorithm likely won't change, but its description will
+ be dramatically simplified.</p>
+
<p>Documents can be viewed as a tree of sections, which defines how
each element in the tree is semantically related to the others, in
terms of the overall section structure. This tree is related to the
@@ -7138,52 +7066,58 @@
<p>To derive the tree of sections from the document tree, a
hypothetical tree is used, consisting of a view of the document tree
- containing only the <code>h1</code>-<code>h6</code> and
- <code>header</code> elements, and the sectioning elements other than
+ containing only the elements of <span>heading content</span> and the
+ elements of <span>sectioning content</span> other than
<code>blockquote</code>. Descendants of
<code>h1</code>-<code>h6</code>, <code>header</code>, and
<code>blockquote</code> elements must be removed from this view.</p>
<p>The hypothetical tree must be rooted at the <span>root
- element</span> or at a sectioning element. In particular, while the
- sections inside <code>blockquote</code>s do not contribute to the
- document's tree of sections, <code>blockquote</code>s can have
- outlines of their own.</p>
+ element</span> or at an element of <span>sectioning
+ content</span>. In particular, while the sections inside
+ <code>blockquote</code>s do not contribute to the document's tree of
+ sections, <code>blockquote</code>s can have outlines of their
+ own.</p>
<p>UAs must take this hypothetical tree (which will become the
- outline) and mutate it by walking it depth first in <span>tree order</span> and,
- for each <code>h1</code>-<code>h6</code> or <code>header</code>
- element that is not the first element of its parent sectioning
- element, inserting a new sectioning element, as follows:</p>
+ outline) and mutate it by walking it depth first in <span>tree
+ order</span> and, for each element of <span>heading content</span>
+ that is not the first element of its parent <span>sectioning
+ content</span> element, inserting a new element of <span>sectioning
+ content</span>, as follows:</p>
<dl class="switch">
<dt>If the element is a <code>header</code> element, or if it is an
<code>h1</code>-<code>h6</code> node of <span>rank</span> equal to
- or higher than the first element in the parent sectioning element
- (assuming that is also an <code>h1</code>-<code>h6</code> node), or
- if the first element of the parent sectioning element is a
- sectioning element:</dt>
+ or higher than the first element in the parent element of
+ <span>sectioning content</span> (assuming that is also an
+ <code>h1</code>-<code>h6</code> node), or if the first element of
+ the parent element of <span>sectioning content</span> is an element
+ of <span>sectioning content</span>:</dt>
- <dd>Insert the new sectioning element as the immediately following
- sibling of the parent sectioning element, and move all the elements
- from the current heading element up to the end of the parent
- sectioning element into the new sectioning element.</dd>
+ <dd>Insert the new element of <span>sectioning content</span> as
+ the immediately following sibling of the parent element of
+ <span>sectioning content</span>, and move all the elements from the
+ current element of <span>heading content</span> up to the end of
+ the parent element of <span>sectioning content</span> into the new
+ element of <span>sectioning content</span>.</dd>
<dt>Otherwise:</dt>
<dd>Move the current heading element, and all subsequent siblings
- up to but excluding the next sectioning element,
- <code>header</code> element, or <code>h1</code>-<code>h6</code> of
- equal or higher <span>rank</span>, whichever comes first, into the
- new sectioning element, then insert the new sectioning element
- where the current header was.</dd>
+ up to but excluding the next element of <span>sectioning
+ content</span>, <code>header</code> element, or
+ <code>h1</code>-<code>h6</code> of equal or higher
+ <span>rank</span>, whichever comes first, into the new element of
+ <span>sectioning content</span>, then insert the new element of
+ <span>sectioning content</span> where the current header was.</dd>
</dl>
<p>The outline is then the resulting hypothetical tree. The <span
title="rank">ranks</span> of the headers become irrelevant at this
- point: each sectioning element in the hypothetical tree contains
+ point: each element of <span>sectioning content</span> in the hypothetical tree contains
either no or one heading element child. If there is one, then it
gives the section's heading, of there isn't, the section has no
heading.</p>
@@ -7253,6 +7187,10 @@
<h5 id="associatedSection">Determining which heading and section
applies to a particular node</h5>
+ <p class="big-issue">This section will be rewritten at some
+ point. The algorithm likely won't change, but its description will
+ be dramatically simplified.</p>
+
<p>Given a particular node, user agents must use the following
algorithm, <em>in the given order</em>, to determine which heading
and section the node is most closely associated with. The processing
@@ -7284,10 +7222,10 @@
the real document tree, then that element is the associated
section. Otherwise, there is no associated section element.</li>
- <li>If the node is a sectioning element, then the associated
- section is itself. The UA must then generate the <a
- href="#outlines">hypothetical section tree</a> described in the
- previous section, rooted at the section itself. If the section
+ <li>If the node is an element of <span>sectioning content</span>,
+ then the associated section is itself. The UA must then generate
+ the <a href="#outlines">hypothetical section tree</a> described in
+ the previous section, rooted at the section itself. If the section
element, in that hypothetical tree, has a child element that is an
<code>h1</code>-<code>h6</code> element or a <code>header</code>
element, then that element is the associated heading. Otherwise,
@@ -7295,45 +7233,50 @@
<li>If the node is a <code>footer</code> or <code>address</code>
element, then the associated section is the nearest ancestor
- sectioning element, if there is one. The node's associated heading
- is the same as that sectioning element's associated heading (i.e.
- repeat this algorithm for that sectioning element). If there is no
- ancestor sectioning element, the element has no associated section
- nor an associated heading.</li>
+ element of <span>sectioning content</span>, if there is one. The
+ node's associated heading is the same as that element of
+ <span>sectioning content</span>'s associated heading (i.e. repeat
+ this algorithm for that element of <span>sectioning
+ content</span>). If there is no ancestor element of
+ <span>sectioning content</span>, the element has no associated
+ section nor an associated heading.</li>
<li>Otherwise, the node is just a normal node, and the document has
to be examined more closely to determine its section and heading.
- Create a view rooted at the nearest ancestor sectioning element (or
- the <span>root element</span> if there is none) that has just
- <code>h1</code>-<code>h6</code> elements, <code>header</code>
- elements, the node itself, and sectioning elements other than
+ Create a view rooted at the nearest ancestor element of
+ <span>sectioning content</span> (or the <span>root element</span>
+ if there is none) that has just <code>h1</code>-<code>h6</code>
+ elements, <code>header</code> elements, the node itself, and
+ elements of <span>sectioning content</span> other than
<code>blockquote</code> elements. (Descendants of any of the nodes
in this view can be ignored, as can any node later in the tree than
the node in question, as the algorithm below merely walks backwards
up this view.)</li>
- <li>Let <var title="">n</var> be an iterator for this view, initialised at
- the node in question.</li>
+ <li>Let <var title="">n</var> be an iterator for this view,
+ initialised at the node in question.</li>
- <li>Let <var title="">c</var> be the current best candidate heading,
- initially null, and initially not used. It is used when top-level
- heading candidates are to be searched for (see below).</li>
+ <li>Let <var title="">c</var> be the current best candidate
+ heading, initially null, and initially not used. It is used when
+ top-level heading candidates are to be searched for (see
+ below).</li>
<li>Repeat these steps (which effectively goes backwards through
the node's previous siblings) until an answer is found:
<ol>
- <li>If <var title="">n</var> points to a node with no previous sibling,
- and <var title="">c</var> is null, then return the node's parent node as
- the answer. If the node has no parent node, return null as the
- answer.</li>
+ <li>If <var title="">n</var> points to a node with no previous
+ sibling, and <var title="">c</var> is null, then return the
+ node's parent node as the answer. If the node has no parent node,
+ return null as the answer.</li>
<li>Otherwise, if <var title="">n</var> points to a node with no
- previous sibling, return <var title="">c</var> as the answer.</li>
+ previous sibling, return <var title="">c</var> as the
+ answer.</li>
- <li>Adjust <var title="">n</var> so that it points to the previous sibling
- of the current position.</li>
+ <li>Adjust <var title="">n</var> so that it points to the
+ previous sibling of the current position.</li>
<li>If <var title="">n</var> is pointing at an <code>h1</code> or
<code>header</code> element, then return that element as the
@@ -7345,17 +7288,18 @@
answer.</li>
<li>Otherwise, if <var title="">n</var> is pointing at an
- <code>h2</code>-<code>h6</code> element, and either <var title="">c</var>
- is still null, or <var title="">c</var> is a heading of lower
- <span>rank</span> than this one, then set <var title="">c</var> to be this
- element, and continue going backwards through the previous
- siblings.</li>
+ <code>h2</code>-<code>h6</code> element, and either <var
+ title="">c</var> is still null, or <var title="">c</var> is a
+ heading of lower <span>rank</span> than this one, then set <var
+ title="">c</var> to be this element, and continue going backwards
+ through the previous siblings.</li>
- <li>If <var title="">n</var> is pointing at a sectioning element, then
- from this point on top-level heading candidates are being
- searched for. (Specifically, we are looking for the nearest
- top-level header for the current section.) Continue going
- backwards through the previous siblings.</li>
+ <li>If <var title="">n</var> is pointing at an element of
+ <span>sectioning content</span>, then from this point on
+ top-level heading candidates are being searched
+ for. (Specifically, we are looking for the nearest top-level
+ header for the current section.) Continue going backwards through
+ the previous siblings.</li>
</ol>
@@ -7363,28 +7307,30 @@
<li>If the answer from the previous step (the loop) is null, which
can only happen if the node has no preceeding headings and is not
- contained in a sectioning element, then there is no associated
- heading and no associated section.</li>
+ contained in an element of <span>sectioning content</span>, then
+ there is no associated heading and no associated section.</li>
- <li>Otherwise, if the answer from the earlier loop step is a
- sectioning element, then the associated section is that element and
- the associated heading is that sectioning element's associated
- heading (i.e. repeat this algorithm for that section).</li>
+ <li>Otherwise, if the answer from the earlier loop step is an
+ element of <span>sectioning content</span>, then the associated
+ section is that element and the associated heading is that element
+ of <span>sectioning content</span>'s associated heading
+ (i.e. repeat this algorithm for that section).</li>
<li>Otherwise, if the answer from that same earlier step is an
<code>h1</code>-<code>h6</code> element or a <code>header</code>
element, then the associated heading is that element and the
- associated section is that heading element's associated
- section (i.e. repeat this algorithm for that heading).</li>
+ associated section is that heading element's associated section
+ (i.e. repeat this algorithm for that heading).</li>
</ol>
<p class="note">Not all nodes have an associated header or section.
For example, if a section is implied, as when multiple headers are
- found in one sectioning element, then a node in that section has an
- anonymous associated section (its section is not represented by a
- real element), and the algorithm above does not associate that node
- with any particular sectioning element.</p>
+ found in one element of <span>sectioning content</span>, then a node
+ in that section has an anonymous associated section (its section is
+ not represented by a real element), and the algorithm above does not
+ associate that node with any particular element of <span>sectioning
+ content</span>.</p>
<div class="example">
<p>For the following fragment:</p>
@@ -7465,14 +7411,13 @@
<h4>The <dfn><code>p</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level
- element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -7482,11 +7427,6 @@
<p>The <code>p</code> element represents a
<span>paragraph</span>.</p>
- <p><code>p</code> elements can contain a mixture of <span>strictly
- inline-level content</span>, such as text, images, hyperlinks, etc,
- and <span>structured inline-level elements</span>, such as lists,
- tables, and block quotes.</p>
-
<div class="example">
<p>The following examples are conforming HTML fragments:</p>
<pre><p>The little kitten gently seated himself on a piece of
@@ -7543,12 +7483,11 @@
<h4>The <dfn><code>hr</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level
- element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -7565,11 +7504,11 @@
<h4>The <dfn><code>br</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -7624,14 +7563,23 @@
</div>
+ <p>If a <span>paragraph</span> consists of nothing but a single
+ <code>br</code> element, it represents a placeholder blank line
+ (e.g. as in a template). Such blank lines must not be used for
+ presentation purposes.</p> <!-- XXX i'm uncomfortable about
+ this. The use case is editing, e.g. contentEditable, where a user
+ has created a new paragraph but not added any text to it yet. Such
+ content shouldn't go over the wire, though. We need to make it
+ illegal while still defining what it means. Maybe. -->
+
<h4>The <dfn><code>dialog</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Zero or more pairs of <code>dt</code> and <code>dd</code>
elements.</dd>
@@ -7673,7 +7621,7 @@
speaker. There is thus no need to include <code>cite</code>,
<code>q</code>, or <code>blockquote</code> elements in this
markup. Indeed, a <code>q</code> element inside a <code>dd</code>
- element in a conversation would actually imply the person talking
+ element in a conversation would actually imply the people talking
were themselves quoting someone else. See the <code>cite</code>,
<code>q</code>, and <code>blockquote</code> elements for other ways
to cite or quote.</p>
@@ -7683,16 +7631,13 @@
<h4>The <dfn><code>pre</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span title="structured inline-level elements">structured
- inline-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -7785,14 +7730,11 @@
<h4>The <dfn><code>ol</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span title="structured inline-level elements">structured
- inline-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Zero or more <code>li</code> elements.</dd>
<dt>Element-specific attributes:</dt>
@@ -7845,14 +7787,11 @@
<h4>The <dfn><code>ul</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span title="structured inline-level elements">structured
- inline-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Zero or more <code>li</code> elements.</dd>
<dt>Element-specific attributes:</dt>
@@ -7870,23 +7809,16 @@
<h4>The <dfn><code>li</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>Inside <code>ol</code> elements.</dd>
<dd>Inside <code>ul</code> elements.</dd>
<dd>Inside <code>menu</code> elements.</dd>
<dt>Content model:</dt>
- <dd>When the element is a child of an <code>ol</code> or
- <code>ul</code> element and the grandchild of an element that is
- <span title="Determining if a particular element contains
- block-level elements or inline-level content">being used as an
- inline-level content container</span>, or, when the element is a
- child of a <code>menu</code> element:
- <span>inline-level content</span>.</dd>
- <dd>Otherwise: zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd>When the element is a child of a <code>menu</code> element: <span>phrasing content</span>.</dd>
+ <dd>Otherwise: <span>prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>If the element is a child of an <code>ol</code> element: <code title="attr-li-value">value</code></dd>
<dd>If the element is not the child of an <code>ol</code> element: None.</dd>
@@ -7905,33 +7837,6 @@
defined list-related relationship to any other <code>li</code>
element.</p>
- <p>When the list item is the child of an <code>ol</code> or
- <code>ul</code> element, the content model of the item depends on
- the way that parent element was used. If it was used as structured
- inline content (i.e. if <em>that</em> element's parent was <span
- title="Determining if a particular element contains block-level
- elements or inline-level content">used as an inline-level
- content</span> container), then the <code>li</code> element must
- only contain <span>inline-level content</span>. Otherwise, the
- element may be used either for <span title="inline-level
- content">inline content</span> or <span>block-level
- elements</span>.</p>
-
- <p>When the list item is the child of a <code>menu</code> element,
- the <code>li</code> element must contain only <span>inline-level
- content</span>.</p>
-
- <p>When the list item is not the child of an <code>ol</code>,
- <code>ul</code>, or <code>menu</code> element, e.g. because it is an
- orphaned node not in the document, it may contain either for <span
- title="inline-level content">inline content</span> or
- <span>block-level elements</span>.
-
- <p>When <span title="Determining if a particular element contains
- block-level elements or inline-level content">used as an
- inline-level content</span> container, the list item represents a
- single <span>paragraph</span>.</p>
-
<p>The <dfn title="attr-li-value"><code>value</code></dfn>
attribute, if present, must be a <span>valid integer</span> giving
the ordinal value of the first list item.</p>
@@ -7955,14 +7860,11 @@
<h4>The <dfn><code>dl</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span title="structured inline-level elements">structured
- inline-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Zero or more groups each consisting of one or more
<code>dt</code> elements followed by one or mode <code>dd</code>
@@ -8043,14 +7945,14 @@
<h4>The <dfn><code>dt</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>Before <code>dd</code> or <code>dt</code> elements inside <code>dl</code> elements.</dd>
<dd>Before a <code>dd</code> element inside a <code>dialog</code> element.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8070,20 +7972,14 @@
<h4>The <dfn><code>dd</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>After <code>dt</code> or <code>dd</code> elements inside <code>dl</code> elements.</dd>
<dd>After a <code>dt</code> element inside a <code>dialog</code> element.</dd>
<dt>Content model:</dt>
- <dd>When the element is a child of a <code>dl</code> element and
- the grandchild of an element that is <span title="Determining if a
- particular element contains block-level elements or inline-level
- content">being used as an inline-level content container</span>:
- <span>inline-level content</span>.</dd>
- <dd>Otherwise: zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8095,41 +7991,21 @@
description list (<code>dl</code> element), and the discourse, or
quote, part in a conversation (<code>dialog</code> element).</p>
- <p>The content model of a <code>dd</code> element depends on the way
- its parent element is being used. If the parent element is a
- <code>dl</code> element that is being used as structured inline
- content (i.e. if the <code>dl</code> element's parent element is
- being <span title="Determining if a particular element contains
- block-level elements or inline-level content">used as an
- inline-level content</span> container), then the <code>dd</code>
- element must only contain <span>inline-level content</span>.</p>
- <p>Otherwise, the element may be used either for <span
- title="inline-level content">inline content</span> or
- <span>block-level elements</span>.</p>
-
-
<h3>Phrase elements</h3>
<!-- XXX ruby (delayed until someone can define it with error handling rules) -->
<h4>The <dfn><code>a</code></dfn> element</h4>
- <p><span title="interactive elements">Interactive</span>,
- <span>strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
+ <dd><span>Interactive content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed, if
- there are no ancestor <span>interactive elements</span>.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>, but there must be no <span
- title="interactive elements">interactive</span> descendants.</dd>
- <dd>Otherwise: any <span>inline-level content</span>, but
- there must be no <span title="interactive
- elements">interactive</span> descendants.</dd>
+ <dd><span>Phrasing content</span>, but there must be no <span>interactive content</span> descendant.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-hyperlink-href">href</code></dd>
<dd><code title="attr-hyperlink-target">target</code></dd>
@@ -8281,16 +8157,13 @@
<h4>The <dfn><code>q</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-q-cite">cite</code></dd>
<dt>DOM interface:</dt>
@@ -8321,13 +8194,13 @@
<h4>The <dfn><code>cite</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8372,16 +8245,13 @@
<h4>The <dfn><code>em</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8452,16 +8322,13 @@
<h4>The <dfn><code>strong</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8491,18 +8358,16 @@
ten meters.</strong></strong> You have been warned.</p></pre>
</div>
+
<h4>The <dfn><code>small</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8546,18 +8411,16 @@
</div>
+
<h4>The <dfn><code>m</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -8593,18 +8456,15 @@
</div>
-
<h4>The <dfn><code>dfn</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed, if
- there are no ancestor <code>dfn</code> elements.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>, but there must be
- no descendant <code>dfn</code> elements.</dd>
+ <dd><span>Phrasing content</span>, but there must be no descendant <code>dfn</code> elements.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-dfn-title">title</code> attribute has special semantics on this element.</dd>
<dt>DOM interface:</dt>
@@ -8618,8 +8478,6 @@
contains the definition for the term given by the contents of the
<code>dfn</code> element.</p>
- <p><code>dfn</code> elements must not be nested.</p>
-
<p><dfn>Defining term</dfn>: If the <code>dfn</code> element has a
<dfn title="attr-dfn-title"><code>title</code></dfn> attribute, then
the exact value of that attribute is the term being defined.
@@ -8691,13 +8549,13 @@
<h4>The <dfn><code>abbr</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-abbr-title">title</code> attribute has special semantics on this element.</dd>
<dt>DOM interface:</dt>
@@ -8743,13 +8601,13 @@
<h4>The <dfn><code>time</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-time-datetime">datetime</code></dd>
<dt>DOM interface:</dt>
@@ -8887,13 +8745,13 @@
<h4>The <dfn><code>progress</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-progress-value">value</code></dd>
<dd><code title="attr-progress-max">max</code></dd>
@@ -9064,13 +8922,13 @@
<h4>The <dfn><code>meter</code></dfn> element</h4>
<!-- Keep this after <progress> and NOT close to <time> -->
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-meter-value">value</code></dd>
<dd><code title="attr-meter-min">min</code></dd>
@@ -9448,16 +9306,13 @@
<h4>The <dfn><code>code</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-title">title</code> attribute has special semantics on this element when used with the <code>dfn</code> element.</dd>
<dt>DOM interface:</dt>
@@ -9492,15 +9347,16 @@
<p class="note">See the <code>pre</code> element for more detais.</p>
+
<h4>The <dfn><code>var</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-title">title</code> attribute has special semantics on this element when used with the <code>dfn</code> element.</dd>
<dt>DOM interface:</dt>
@@ -9520,18 +9376,16 @@
flavours of ice cream to be available for purchase!</p></pre>
</div>
+
<h4>The <dfn><code>samp</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-title">title</code> attribute has special semantics on this element when used with the <code>dfn</code> element.</dd>
<dt>DOM interface:</dt>
@@ -9563,15 +9417,16 @@
<samp class="prompt">jdoe at demo:~$</samp> <samp class="cursor">_</samp></samp></pre></pre>
</div>
+
<h4>The <dfn><code>kbd</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -9610,15 +9465,16 @@
</p></pre>
</div>
+
<h4>The <dfn><code>sub</code></dfn> and <dfn><code>sup</code></dfn> elements</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which these elements may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -9671,16 +9527,13 @@
<h4>The <dfn><code>span</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used in an element whose content model is only
- <span>strictly inline-level content</span>: only <span>strictly
- inline-level content</span>.</dd>
- <dd>Otherwise: any <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-title">title</code> attribute has special semantics on this element when used with the <code>dfn</code> element.</dd>
<dt>DOM interface:</dt>
@@ -9698,13 +9551,13 @@
<h4>The <dfn><code>i</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-title">title</code> attribute has special semantics on this element when used with the <code>dfn</code> element.</dd>
<dt>DOM interface:</dt>
@@ -9724,7 +9577,7 @@
<div class="example">
<p>The examples below show uses of the <code>i</code> element:</p>
<pre><p>The <i>felis silvestris catus</i> is cute.</p>
-<p>The <i>block-level elements</i> are defined above.</p>
+<p>The term <i>prose content</i> is defined above.</p>
<p>There is a certain <i lang="fr">je ne sais quoi</i> in the air.</p></pre>
<p>In the following example, a dream sequence is marked up using
<code>i</code> elements.</p>
@@ -9755,13 +9608,13 @@
<h4>The <dfn><code>b</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -9826,13 +9679,13 @@
<h4>The <dfn><code>bdo</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-dir">dir</code> global attribute has special requirements on this element.</dd>
<dt>DOM interface:</dt>
@@ -9878,16 +9731,77 @@
<p>The <code>ins</code> and <code>del</code> elements represent
edits to the document.</p>
- <h4>The <dfn><code>ins</code></dfn> element</h4>
+ <div class="note">
- <p><span>Transparent</span> <span title="block-level
- elements">block-level element</span>, and <span>transparent</span>
- <span>strictly inline-level content</span>.</p>
+ <p>Since the <code>ins</code> and <code>del</code> elements do not
+ affect <span title="paragraph">paragraphing</span>, it is possible,
+ in some cases where paragraphs are <span
+ title="paragraph">implied</span> (without explicit <code>p</code>
+ elements), for an <code>ins</code> or <code>del</code> element to
+ span both an entire paragraph or other non-<span>phrasing
+ content</span> elements and part of another paragraph.</p>
+ <p>For example:</p>
+
+ <pre><section>
+ <ins>
+ <p>
+ This is a paragraph that was inserted.
+ </p>
+ This is another paragraph whose first sentence was inserted
+ at the same time as the paragraph above.
+ </ins>
+ This is a second sentence, which was there all along.
+</section></pre>
+
+ <p>By only wrapping some paragraphs in <code>p</code> elements, one
+ can even get the end of one paragraph, a whole second paragraph,
+ and the start of a third paragraph to be covered by the same
+ <code>ins</code> or <code>del</code> element (though this is very
+ confusing, and not considered good practice):</p>
+
+ <pre><section>
+ This is the first paragraph. <ins>This sentence was
+ inserted.
+ <p>This second paragraph was inserted.</p>
+ This sentence was inserted too.</ins> This is the
+ third paragraph in this example.</p>
+</section></pre>
+
+ <p>However, due to the way <span title="paragraph">implied
+ paragraphs</span> are defined, it is not possible to mark up the
+ end of one paragraph and the start of the very next one using the
+ same <code>ins</code> or <code>del</code> element. You instead have
+ to use one (or two) <code>p</code> element(s) and two
+ <code>ins</code> or <code>del</code> elements:
+
+ <p>For example:</p>
+
+ <pre><section>
+ <p>This is the first paragraph. <del>This sentence was
+ deleted.</p>
+ <p><del>This sentence was deleted too.</del> That
+ sentence needed a separate <del> element.</p>
+</section></pre>
+
+ <p>Partly because of the confusion described above, authors are
+ strongly recommended to always mark up all paragraphs with the
+ <code>p</code> element, and to not have any <code>ins</code> or
+ <code>del</code> elements that cross across any <span
+ title="paragraph">implied paragraphs</span>.</p>
+
+ </div>
+
+
+ <h4>The <dfn><code>ins</code></dfn> element</h4>
+
<dl class="element">
+ <dt>Categories</dt>
+ <dd>When the element only contains <span>phrasing content</span>: <span>phrasing content</span>.</dd>
+ <dd>Otherwise: <span>prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> is expected.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>When the element only contains <span>phrasing content</span>: where <span>phrasing content</span> is expected.</dd>
+ <dd>Otherwise: where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd><span>Transparent</span>.</dd>
<dt>Element-specific attributes:</dt>
@@ -9900,62 +9814,84 @@
<p>The <code>ins</code> element represents an addition to the
document.</p>
- <p>The <code>ins</code> element must be used only where
- <span>block-level elements</span> or <span>strictly inline-level
- content</span> can be used.</p>
-
- <p>An <code>ins</code> element can only contain content that would
- still be conformant if all elements with <span>transparent</span>
- content models were replaced by their contents.</p>
-
<div class="example">
- <p>The following would be syntactically legal:</p>
+ <p>The following represents the addition of a single paragraph:</p>
<pre><aside>
<ins>
- <p>...</p>
+ <p> I like fruit. </p>
</ins>
</aside></pre>
- <p>As would this:</p>
+ <p>As does this, because everything in the <code>aside</code>
+ element here counts as <span>phrasing content</span> and therefore
+ there is just one <span>paragraph</span>:</p>
<pre><aside>
<ins>
- <em>...</em>
+ Apples are <em>tasty</em>.
</ins>
+ <ins>
+ So are pears.
+ </ins>
</aside></pre>
- <p>However, this last example would be illegal, as <code>em</code>
- and <code>p</code> cannot both be used inside an <code>aside</code>
- element at the same time:</p>
+ </div>
+ <p><code>ins</code> elements should not cross <span
+ title="paragraph">implied paragraph</span> boundaries.</p>
+
+ <div class="example">
+
+ <p>The following example represents the addition of two paragraphs,
+ the second of which was inserted in two parts. The first
+ <code>ins</code> element in this example thus crosses a paragraph
+ boundary, which is considered poor form.</p>
+
<pre><aside>
- <ins>
- <p>...</p>
+ <ins datetime="2005-03-16T00:00Z">
+ <p> I like fruit. </p>
+ Apples are <em>tasty</em>.
</ins>
- <ins>
- <em>...</em>
+ <ins datetime="2007-12-19T00:00Z">
+ So are pears.
</ins>
</aside></pre>
+ <p>Here is a better way of marking this up. It uses more elements,
+ but none of the elements cross implied paragraph boundaries.</p>
+
+ <pre><aside>
+ <ins datetime="2005-03-16T00:00Z">
+ <p> I like fruit. </p>
+ </ins>
+ <ins datetime="2005-03-16T00:00Z">
+ Apples are <em>tasty</em>.
+ </ins>
+ <ins datetime="2007-12-19T00:00Z">
+ So are pears.
+ </ins>
+</aside></pre>
+
+ <!-- Those date's aren't random. They're the start and end of
+ something. Can you guess what? -->
+
</div>
+
<h4>The <dfn><code>del</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span>strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>When the element only contains <span>phrasing content</span>: <span>phrasing content</span>.</dd>
+ <dd>Otherwise: <span>prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> is expected.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>When the element only contains <span>phrasing content</span>: where <span>phrasing content</span> is expected.</dd>
+ <dd>Otherwise: where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When the element has a parent: same content model as the parent
- element (without taking into account the other children of the
- parent element).</dd>
- <dd>Otherwise: zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd>When the element has a parent: same content model as the parent element.</dd>
+ <dd>Otherwise: <span>prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-mod-cite">cite</code></dd>
<dd><code title="attr-mod-datetime">datetime</code></dd>
@@ -9966,32 +9902,10 @@
<p>The <code>del</code> element represents a removal from the
document.</p>
- <p>The <code>del</code> element must only contain content that would
- be allowed inside the parent element (regardless of what the parent
- element actually contains).</p>
+ <p><code>del</code> elements should not cross <span
+ title="paragraph">implied paragraph</span> boundaries.</p>
- <div class="example">
- <p>The following would be syntactically legal:</p>
-
- <pre><aside>
- <del>
- <p>...</p>
- </del>
- <ins>
- <em>...</em>
- </ins>
-</aside></pre>
-
- <p>...even though the <code>p</code> and <code>em</code> elements
- would never be allowed side by side in the <code>aside</code>
- element. This is allowed because the <code>del</code> element
- represents content that was removed, and it is quite possible that
- an edit could cause an element to go from being an inline-level
- container to a block-level container, or vice-versa.</p>
-
- </div>
-
<h4>Attributes common to <code>ins</code> and <code>del</code> elements</h4>
<p>The <dfn title="attr-mod-cite"><code>cite</code></dfn> attribute
@@ -10041,69 +9955,38 @@
<h4>The <dfn><code>figure</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>In any order, exactly one <code>legend</code> element, and exactly one <span>embedded content</span> element.</dd>
+ <dd>Either one <code>legend</code> element followed by <span>prose content</span>.</dd>
+ <dd>Or: <span>Prose content</span> followed by one <code>legend</code> element.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
<dd>No difference from <code>HTMLElement</code>.</dd>
</dl>
- <p>The <code>figure</code> element represents a
- <span>paragraph</span> consisting of embedded content and a
- caption.</p>
+ <p>The <code>figure</code> element represents some <span>prose
+ content</span> with a caption.</p>
- <p>The first <span>embedded content</span> element child of the
- <code>figure</code> element, if any, is the paragraph's content.</p>
-
<p>The first <code>legend</code> element child of the element, if
any, represents the caption of the embedded content. If there is no
child <code>legend</code> element, then there is no caption.</p>
- <p>If the embedded content cannot be used, then, for the purposes of
- establishing what the <code>figure</code> element represents:</p>
+ <p>The remainder of the element's contents, if any, represents the
+ captioned content.</p>
- <dl class="switch">
- <dt>If the embedded content's <span>fallback content</span> is a single
- <span>embedded content</span> element</dt>
- <dd>The <code>figure</code> element must be treated as if that
- <span>embedded content</span> element was the <code>figure</code>
- element's embedded content. (If that embedded content can't be used
- either, then this processing must be done again, with the new
- embedded content's <span>fallback content</span>.)</dd>
-
- <dt>If the embedded content's fallback is nothing</dt>
- <dd>The entire <code>figure</code> element (including the caption,
- if any) must be ignored.</dd>
-
- <dt>If the embedded content's fallback is <span>inline-level
- content</span></dt>
- <dd>The entire <code>figure</code> element (including the caption,
- if any) must be treated as being a single <span>paragraph</span>
- with that <span>inline-level content</span> as its content.</dd>
-
- <dt>Otherwise</dt>
- <dd>The entire <code>figure</code> element (including the caption,
- if any) must be treated as being replaced by that fallback
- content.</dd>
-
- </dl>
-
-
<h4>The <dfn><code>img</code></dfn> element</h4>
- <p><span title="Strictly inline-level content">Strictly inline-level</span> <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -10649,9 +10532,8 @@
<p>The <code>img</code> element supports <span>dimension
attributes</span>.</p>
- <p>The <code>img</code> element must be empty.</p><!-- contents
- should be ignored for rendering but not for semantics,
- e.g. <script>, <input>, etc. -->
+ <!-- XXX contents of <img> should be ignored for rendering but not
+ for semantics, e.g. <script>, <input>, etc. -->
<p>The DOM attributes <dfn
title="dom-img-alt"><code>alt</code></dfn>, <dfn
@@ -10677,14 +10559,13 @@
<h4>The <dfn><code>iframe</code></dfn> element</h4>
- <p><span title="Strictly inline-level content">Strictly inline-level</span> <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Text (for details, see prose).</dd>
+ <dd>Text that conforms to the requirements given in the prose.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-iframe-src">src</code></dd>
<dt>DOM interface:</dt>
@@ -10750,14 +10631,19 @@
context</span>, regardless of whether the specified initial contents
are successfully used.</p>
- <p><code>iframe</code> elements may contain any
- text. <code>iframe</code> elements must not contain element nodes.
- Descendants of <code>iframe</code> elements represent nothing. (In
- legacy user agents that do not support <code>iframe</code> elements,
- the contents would be parsed as markup that could act as fallback
- content.)</p>
+ <p>Descendants of <code>iframe</code> elements represent
+ nothing. (In legacy user agents that do not support
+ <code>iframe</code> elements, the contents would be parsed as markup
+ that could act as fallback content.)</p>
- <p class="big-issue">restrictions for what that text must be?</p>
+ <p>The content model of <code>iframe</code> elements is text, except
+ that the text must be such that <span title="big-issue">... anyone
+ have any bright ideas?</span></p>
+ <!--XXX
+ Gotta handle <script> elements inside <iframe>s that screw around with the DOM on the fly, or that use document.write().
+ Gotta handle <iframe> elements created from script with text contents.
+ Gotta handle the XML case.
+ -->
<p class="note">The <span>HTML parser</span> treats markup inside
<code>iframe</code> elements as text.</p>
@@ -10769,12 +10655,11 @@
<h4>The <dfn><code>embed</code></dfn> element</h4>
- <p><span title="Strictly inline-level content">Strictly inline-level</span> <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -10891,22 +10776,13 @@
<h4>The <dfn><code>object</code></dfn> element</h4>
- <p><span title="Strictly inline-level content">Strictly inline-level</span> <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>When used as the child of a <code>figure</code> element, or,
- when used as a <em><code>figure</code> fallback
- <code>object</code></em>: Zero or more <code>param</code> elements,
- followed by either zero or more <span>block-level elements</span>
- or a single <code>object</code> element, which is then considered
- to be a <em><code>figure</code> fallback
- <code>object</code></em>.</dd>
- <dd>Otherwise: Zero or more <code>param</code> elements, followed
- by <span>inline-level content</span>.</dd>
+ <dd>Zero or more <code>param</code> elements, then, <span>transparent</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-object-data">data</code></dd>
<dd><code title="attr-object-type">type</code></dd>
@@ -10934,10 +10810,6 @@
</dd>
</dl>
- <p class="big-issue">Shouldn't allow inline-level content to be the
- content model when the parent's content model is strictly inline
- only.</p>
-
<p>The <code>object</code> element can represent an external
resource, which, depending on the type of the resource, will either
be treated as an image, as a nested <span>browsing context</span>,
@@ -11178,12 +11050,11 @@
<h4>The <dfn><code>param</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As a child of an <code>object</code> element, before any
- content other than <code>param</code> elements.</dd>
+ <dd>As a child of an <code>object</code> element, before any <span>prose content</span>.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -11225,14 +11096,11 @@
<h4 id="video">The <dfn><code>video</code></dfn> element</h4>
- <p><span>Semi-transparent</span>
- <span title="Strictly inline-level content">strictly inline-level</span>
- <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>If the element has a <code title="attr-media-src">src</code> attribute: <span>transparent</span>.</dd>
<dd>If the element does not have a <code title="attr-media-src">src</code> attribute: one or more <code>source</code> elements, then, <span>transparent</span>.</dd>
@@ -11263,18 +11131,18 @@
<p>A <code>video</code> element represents a video or movie.</p>
<p>Content may be provided inside the <code>video</code>
- element. User agents should not show this fallback content to the
- user; it is intended for older Web browsers which do not support
+ element. User agents should not show this content to the user; it is
+ intended for older Web browsers which do not support
<code>video</code>, so that legacy video plugins can be tried, or to
show text to the users of these older browser informing them of how
to access the video contents.</p>
- <p class="note">In particular, the fallback content isn't intended
- to address accessibility concerns. To make video content accessible
- to the blind, deaf, and those with other physical or cognitive
- disabilities, authors are expected to provide alternative media
- streams and/or to embed accessibility aids (such as caption or
- subtitle tracks) into their media streams.</p>
+ <p class="note">In particular, this content is not <i>fallback
+ content</i> intended to address accessibility concerns. To make
+ video content accessible to the blind, deaf, and those with other
+ physical or cognitive disabilities, authors are expected to provide
+ alternative media streams and/or to embed accessibility aids (such
+ as caption or subtitle tracks) into their media streams.</p>
<p>The <code>video</code> element is a <span>media element</span>
whose <span>media data</span> is ostensibly video data, possibly
@@ -11441,14 +11309,11 @@
<h4 id="audio">The <dfn><code>audio</code></dfn> element</h4>
- <p><span>Semi-transparent</span>
- <span title="Strictly inline-level content">strictly inline-level</span>
- <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>If the element has a <code title="attr-media-src">src</code> attribute: <span>transparent</span>.</dd>
<dd>If the element does not have a <code title="attr-media-src">src</code> attribute: one or more <code>source</code> elements, then, <span>transparent</span>.</dd>
@@ -11473,18 +11338,18 @@
stream.</p>
<p>Content may be provided inside the <code>audio</code>
- element. User agents should not show this fallback content to the
- user; it is intended for older Web browsers which do not support
+ element. User agents should not show this content to the user; it is
+ intended for older Web browsers which do not support
<code>audio</code>, so that legacy audio plugins can be tried, or to
show text to the users of these older browser informing them of how
to access the audio contents.</p>
- <p class="note">In particular, the fallback content isn't intended
- to address accessibility concerns. To make audio content accessible
- to the deaf or to those with other physical or cognitive
- disabilities, authors are expected to provide alternative media
- streams and/or to embed accessibility aids (such as transcriptions)
- into their media streams.</p>
+ <p class="note">In particular, this content is not <i>fallback
+ content</i> intended to address accessibility concerns. To make
+ audio content accessible to the deaf or to those with other physical
+ or cognitive disabilities, authors are expected to provide
+ alternative media streams and/or to embed accessibility aids (such
+ as transcriptions) into their media streams.</p>
<p>The <code>audio</code> element is a <span>media element</span>
whose <span>media data</span> is ostensibly audio data.</p>
@@ -13378,12 +13243,11 @@
<h4>The <dfn><code>source</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As a child of a <span>media element</span>, before any
- content other than <code>source</code> elements.</dd>
+ <dd>As a child of a <span>media element</span>, before any <span>prose content</span>.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -13546,14 +13410,13 @@
<h4>The <dfn id="canvas"><code>canvas</code></dfn> element</h4>
- <p><span title="Strictly inline-level content">Strictly inline-level</span> <span>embedded content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Embedded content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As the only <span>embedded content</span> child of a <code>figure</code> element.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>embedded content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd><span>Inline-level content</span>.</dd>
+ <dd><span>Transparent</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-canvas-width">width</code></dd>
<dd><code title="attr-canvas-height">height</code></dd>
@@ -13571,10 +13434,6 @@
</dd>
</dl>
- <p class="big-issue">Shouldn't allow inline-level content to be the
- content model when the parent's content model is strictly inline
- only.</p>
-
<p>The <code>canvas</code> element represents a resolution-dependent
bitmap canvas, which can be used for rendering graphs, game
graphics, or other visual images on the fly.</p>
@@ -13603,13 +13462,13 @@
the page was viewed in an interactive visual medium and is now being
printed, or if some script that ran during the page layout process
painted on the element), then the <code>canvas</code> element must
- be treated as embedded content with the current image and
- size. Otherwise, the element's fallback content must be used
- instead.</p>
+ be treated as <span>embedded content</span> with the current image
+ and size. Otherwise, the element's <span>fallback content</span>
+ must be used instead.</p>
<p>In non-visual media, and in visual media with <span>scripting
- disabled</span>, the <code>canvas</code> element's fallback content
- must be used instead.</p>
+ disabled</span>, the <code>canvas</code> element's <span>fallback
+ content</span> must be used instead.</p>
<p>The <code>canvas</code> element has two attributes to control the
size of the coordinate space: <dfn
@@ -15100,13 +14959,13 @@
<h4>The <dfn><code>map</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>.</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None, but the <code title="attr-id">id</code> global attribute has special requirements on this element.</dd>
<dt>DOM interface:</dt>
@@ -15141,12 +15000,11 @@
<h4>The <dfn><code>area</code></dfn> element</h4>
- <p><span>Strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>strictly inline-level content</span> is allowed,
- but only as a descendant of a <code>map</code> element.</dd>
+ <dd>Where <span>phrasing content</span> is expected, but only if there is a <code>map</code> element ancestor.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -15404,9 +15262,9 @@
<p class="note">In user agents that do not support images, or that
have images disabled, <code>object</code> elements cannot represent
- images, and thus this section never applies (the fallback content is
- shown instead). The following steps therefore only apply to
- <code>img</code> elements.</p>
+ images, and thus this section never applies (the <span>fallback
+ content</span> is shown instead). The following steps therefore only
+ apply to <code>img</code> elements.</p>
<ol>
@@ -15679,14 +15537,11 @@
<h4>The <dfn><code>table</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span title="structured inline-level elements">structured
- inline-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>In this order: optionally a <code>caption</code> element,
followed by either zero or more <code>colgroup</code> elements,
@@ -15725,7 +15580,7 @@
tables are bad practice and non-conforming</p>
<p>The children of a <code>table</code> element must be, in
- order:</p>
+ order:</p><!-- XXX do we need this? it's already up there... -->
<ol>
@@ -15923,13 +15778,13 @@
<h4>The <dfn><code>caption</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As the first element child of a <code>table</code> element.</dd>
<dt>Content model:</dt>
- <dd><span>Strictly inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -15946,9 +15801,9 @@
<h4>The <dfn><code>colgroup</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>table</code> element, after any
<code>caption</code> elements and before any <code>thead</code>,
@@ -15993,9 +15848,9 @@
<h4>The <dfn><code>col</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>colgroup</code> element that doesn't have
a <code title="attr-col-span">span</code> attribute.</dd>
@@ -16038,9 +15893,9 @@
<h4>The <dfn><code>tbody</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>table</code> element, after any
<code>caption</code>, <code>colgroup</code>, and
@@ -16112,9 +15967,9 @@
<h4>The <dfn><code>thead</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>table</code> element, after any
<code>caption</code>, and <code>colgroup</code>
@@ -16144,9 +15999,9 @@
<h4>The <dfn><code>tfoot</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>table</code> element, after any
<code>caption</code>, <code>colgroup</code>, and <code>thead</code>
@@ -16180,9 +16035,9 @@
<h4>The <dfn><code>tr</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>thead</code> element.</dd>
<dd>As a child of a <code>tbody</code> element.</dd>
@@ -16274,14 +16129,13 @@
<h4>The <dfn><code>td</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>tr</code> element.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-td-colspan">colspan</code></dd>
<dd><code title="attr-td-rowspan">rowspan</code></dd>
@@ -16343,14 +16197,13 @@
<h4>The <dfn><code>th</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>tr</code> element.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Prose content</span>.</dd> <!-- XXX should we make that phrasing content? -->
<dt>Element-specific attributes:</dt>
<dd><code title="attr-th-colspan">colspan</code></dd>
<dd><code title="attr-th-rowspan">rowspan</code></dd>
@@ -17430,15 +17283,13 @@
<h4 id="script">The <dfn><code>script</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- <span>strictly inline-level content</span>, and <span
- title="metadata elements">metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>metadata elements</span> are expected.</dd>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>inline-level content</span> is expected.</dd>
+ <dd>Where <span>metadata content</span> is expected.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>If there is no <code title="attr-script-src">src</code>
attribute, depends on the value of the <code
@@ -17913,22 +17764,13 @@
<h4>The <dfn><code>noscript</code></dfn> element</h4>
- <p>When <span>scripting is disabled</span>: <span title="metadata
- elements">metadata element</span>, <span>transparent</span> <span
- title="block-level elements">block-level element</span>, and
- <span>transparent</span> <span>strictly inline-level
- content</span>.</p>
-
- <p>When <span>scripting is enabled</span>: <span title="metadata
- elements">metadata element</span>, <span title="block-level
- elements">block-level element</span>, and <span>strictly
- inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>In a <code>head</code> element of an <span title=">HTML documents">HTML document</span>, if there are no ancestor <code>noscript</code> elements.</dd>
- <dd>Where <span>block-level elements</span> are expected in <span>HTML documents</span>, if there are no ancestor <code>noscript</code> elements.</dd>
- <dd>Where <span>inline-level content</span> is expected in <span>HTML documents</span>, if there are no ancestor <code>noscript</code> elements.</dd>
+ <dd>Where <span>phrasing content</span> is expected in <span>HTML documents</span>, if there are no ancestor <code>noscript</code> elements.</dd>
<dt>Content model:</dt>
<dd>When <span>scripting is disabled</span>, in a <code>head</code> element: in any order, zero or more <code>link</code> elements, zero or more <code>style</code> elements, and zero or more <code>meta</code> elements.</dd>
<dd>When <span>scripting is disabled</span>, not in a <code>head</code> element: <span>transparent</span>, but there must be no <code>noscript</code> element descendants.</dd>
@@ -18039,15 +17881,13 @@
<h4>The <dfn><code>event-source</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- <span>strictly inline-level content</span>, and <span
- title="metadata elements">metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>metadata elements</span> are expected.</dd>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>inline-level content</span> is expected.</dd>
+ <dd>Where <span>metadata content</span> is expected.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -18119,16 +17959,13 @@
<h4>The <dfn><code>details</code></dfn> element</h4>
- <p><span title="interactive elements">Interactive</span>,
- <span title="block-level elements">block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose element</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>One <code>legend</code> element followed by either one or more
- <span>block-level elements</span> or <span>inline-level
- content</span> (but not both).</dd>
+ <dd>One <code>legend</code> element followed by <span>prose content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-details-open">open</code></dd>
<dt>DOM interface:</dt>
@@ -18191,16 +18028,15 @@
<h4 id="datagrid">The <dfn><code>datagrid</code></dfn> element</h4>
- <p><span title="interactive elements">Interactive</span>,
- <span title="block-level elements">block-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose element</span>.</dd>
+ <dd><span>Interactive element</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected, if
- there are no ancestor <span>interactive elements</span>.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Either: Nothing.</dd>
- <dd>Or: One or more <span>block-level elements</span>, the first of which is not a <code>table</code> element.</dd>
+ <dd>Or: <span>Prose content</span>, but where the first element child node, if any, is not a <code>table</code> element.</dd>
<dd>Or: A single <code>table</code> element.</dd>
<dd>Or: A single <code>select</code> element.</dd>
<dd>Or: A single <code>datalist</code> element.</dd>
@@ -20143,14 +19979,13 @@
<h4 id="the-command">The <dfn><code>command</code></dfn> element</h4>
- <p><span title="metadata elements">Metadata element</span>, and
- <span>strictly inline-level content</span>.</p> <!-- XXX we sure we
- want it to be metadata? -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>metadata elements</span> are expected.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>metadata content</span> is expected.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -20333,17 +20168,14 @@
<h4 id="menus">The <dfn><code>menu</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span>,
- and <span title="structured inline-level elements">structured
- inline-level element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Prose element</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
- <dd>Where <span>structured inline-level elements</span> are allowed.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <code>li</code> elements, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd>Either: Zero or more <code>li</code> elements.</dd>
+ <dd>Or: <span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd><code title="attr-menu-type">type</code></dd>
<dd><code title="attr-menu-label">label</code></dd>
@@ -20392,7 +20224,7 @@
represents an unordered list of items (each represented by an
<code>li</code> element), each of which represents a command that
the user may perform or activate, or, if the element has no
- <code>li</code> element children, a <span>paragraph</span>
+ <code>li</code> element children, <span>prose content</span>
describing available commands.</p>
<p>The <dfn title="attr-menu-label"><code>label</code></dfn>
@@ -20680,9 +20512,9 @@
title="attr-contextmenu">contextmenu</code> content attribute.</p>
- <h5><dfn>Toolbars</dfn></h5>
+ <h5>Toolbars</h5>
- <p>Toolbars are a kind of menu that is always visible.</p>
+ <p><dfn>Toolbars</dfn> are a kind of menu that is always visible.</p>
<p>When a <code>menu</code> element has a <code
title="attr-menu-type">type</code> attribute with the value <code
@@ -21192,14 +21024,14 @@
<h4>The <dfn><code>datatemplate</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level element</span> and
- <span title="metadata elements">metadata element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Metadata content</span>.</dd>
+ <dd><span>Prose content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As the root element of an <span title="xml documents">XML document</span>.</dd>
- <dd>Where <span>metadata elements</span> are expected.</dd>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>metadata content</span> is expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
<dd>Zero or more <code>rule</code> elements.</dd>
<dt>Element-specific attributes:</dt>
@@ -21215,9 +21047,9 @@
<h4>The <dfn><code>rule</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As a child of a <code>datatemplate</code> element.</dd>
<dt>Content model:</dt>
@@ -21277,11 +21109,11 @@
<h4>The <dfn><code>nest</code></dfn> element</h4>
- <!-- element has no special category -->
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>As a descendant of a <code>rule</code> element, regardless of the parent element's content model.</dd>
+ <dd>As a child of a descendant of a <code>rule</code> element, regardless of the element's content model.</dd>
<dt>Content model:</dt>
<dd>Empty.</dd>
<dt>Element-specific attributes:</dt>
@@ -22055,13 +21887,14 @@
<h4>The <dfn><code>legend</code></dfn> element</h4>
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
<dd>As the first child of a <code>fieldset</code> element.</dd>
<dd>As the first child of a <code>details</code> element.</dd>
<dd>As a child of a <code>figure</code> element, if there are no other <code>legend</code> element children of that element.</dd>
<dt>Content model:</dt>
- <dd>If used as a child of a <code>fieldset</code> or <code>details</code> element: <span>strictly inline-level content</span></dd>
- <dd>If used as a child of a <code>figure</code> element: <span>inline-level content</span>.</dd>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -22075,16 +21908,13 @@
<h4>The <dfn><code>div</code></dfn> element</h4>
- <p><span title="block-level elements">Block-level
- element</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd>None.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level elements</span> are expected.</dd>
+ <dd>Where <span>prose content</span> is expected.</dd>
<dt>Content model:</dt>
- <dd>Zero or more <code>style</code> elements, followed by either
- zero or more <span>block-level elements</span>, or
- <span>inline-level content</span> (but not both).</dd>
+ <dd><span>Transparent</span>.</dd>
<dt>Element-specific attributes:</dt>
<dd>None.</dd>
<dt>DOM interface:</dt>
@@ -22100,14 +21930,14 @@
<p class="big-issue">Allowing <code>div</code> elements to contain
- inline elements makes it easy for authors to abuse <code>div</code>,
- using it with the <code>class=""</code> attribute to the point of
- not having any other elements in the markup. This is a disaster from
- an accessibility point of view, and it would be nice if we could
- somehow make such pages non-compliant without preventing people from
- using <code>div</code>s as the extension mechanism that they are, to
- handle things the spec can't otherwise do (like making new
- widgets).</p>
+ phrasing content makes it easy for authors to abuse
+ <code>div</code>, using it with the <code>class=""</code> attribute
+ to the point of not having any other elements in the markup. This is
+ a disaster from an accessibility point of view, and it would be nice
+ if we could somehow make such pages non-compliant without preventing
+ people from using <code>div</code>s as the extension mechanism that
+ they are, to handle things the spec can't otherwise do (like making
+ new widgets).</p>
@@ -29779,17 +29609,16 @@
title="">data</code> attribute in the case of the <code
title="event-textInput">textInput</code> event) at the caret.</p>
- <p>If the caret is positioned somewhere where <span>inline-level
- content</span> is not allowed (e.g. because the element accepts
- "both block-level and inline-level content but not both", and the
- element already contains block-level content), then the user agent
- must not insert the text directly at the caret position. In such
- cases the behaviour is UA-dependent, but user agents must not, in
- response to a request to insert text, generate a DOM that is less
- conformant than the DOM prior to the request.</p>
+ <p>If the caret is positioned somewhere where <span>phrasing
+ content</span> is not allowed (e.g. inside an empty <code>ol</code>
+ element), then the user agent must not insert the text directly at
+ the caret position. In such cases the behaviour is UA-dependent,
+ but user agents must not, in response to a request to insert text,
+ generate a DOM that is less conformant than the DOM prior to the
+ request.</p>
<p>User agents should allow users to insert new paragraphs into
- elements that only contain block-level content.</p>
+ elements that contains only content other than paragraphs.</p>
<div class="example">
<p>For example, given the markup:</p>
@@ -29810,34 +29639,32 @@
<dt id="contenteditable-breakBlock">Break block</dt>
<dd><p>UAs should offer a way for the user to request that the
- current block be broken at the caret, e.g. as the default action of
- a <code title="event-keydown">keydown</code> event whose identifier
- is the "Enter" key and that has no modifiers set.</p>
+ current paragraph be broken at the caret, e.g. as the default
+ action of a <code title="event-keydown">keydown</code> event whose
+ identifier is the "Enter" key and that has no modifiers set.</p>
<p>The exact behaviour is UA-dependent, but user agents must not,
- in response to a request to break a block, generate a DOM that is
- less conformant than the DOM prior to the request.</p></dd>
+ in response to a request to break a paragraph, generate a DOM that
+ is less conformant than the DOM prior to the request.</p></dd>
<dt id="contenteditable-br">Insert a line separator</dt>
<dd><p>UAs should offer a way for the user to request an explicit
- line break at the caret position without breaking the block,
+ line break at the caret position without breaking the paragraph,
e.g. as the default action of a <code
title="event-keydown">keydown</code> event whose identifier is the
"Enter" key and that has a shift modifier set. Line separators are
typically found within a poem verse or an address. To insert a line
break, the user agent must insert a <code>br</code> element.</p>
- <p>If the caret is positioned somewhere where <span>inline-level
- content</span> is not allowed (e.g. because the element accepts
- "both block-level and inline-level content but not both", and the
- element already contains block-level content), then the user agent
- must not insert the <code>br</code> element directly at the caret
- position. In such cases the behaviour is UA-dependent, but user
- agents must not, in response to a request to insert a line
- separator, generate a DOM that is less conformant than the DOM
- prior to the request.</p></dd>
+ <p>If the caret is positioned somewhere where <span>phrasing
+ content</span> is not allowed (e.g. in an empty <code>ol</code>
+ element), then the user agent must not insert the <code>br</code>
+ element directly at the caret position. In such cases the behaviour
+ is UA-dependent, but user agents must not, in response to a request
+ to insert a line separator, generate a DOM that is less conformant
+ than the DOM prior to the request.</p></dd>
<dt id="contenteditable-delete">Delete</dt>
@@ -29867,7 +29694,7 @@
<dd><p>UAs should offer a way for the user to mark text as having
<span title="em">stress emphasis</span> and as being <span
title="strong">important</span>, and may offer the user the ability
- to mark text and blocks with other semantics.</p>
+ to mark text and paragraphs with other semantics.</p>
<p>UAs should similarly offer a way for the user to insert empty
semantic elements (such as, again, <code>em</code>,
@@ -29923,7 +29750,7 @@
example if the user selects a block of text and hits
<kbd><kbd>Enter</kbd></kbd>, the UA might interpret that as a
request to delete the content of <span>the selection</span> followed
- by a request to break the block at that position.</p>
+ by a request to break the paragraph at that position.</p>
<h4>Making entire documents editable</h4>
@@ -31428,21 +31255,20 @@
<li><code title=""><nav></code></li>
<li><code title=""><p></code></li>
<li><code title=""><pre></code></li>
+ <!-- XXX this list is incomplete -->
</ul>
<p>...then the user agent must do nothing.</p>
<p>Otherwise, the user agent must, for every position in the
- selection, take the furthest <span title="block-level
- elements">block-level element</span> ancestor of that position that
- contains only <span>inline-level content</span> and is not being
- used as a <span title="structured inline-level elements">structured
- inline-level element</span>, and, if that element is a descendant
- of the editing host, rename it (as if the <code
+ selection, take the furthest <span>prose content</span> ancestor
+ element of that position that contains only <span>phrasing
+ content</span>, and, if that element is a descendant of the editing
+ host, rename it (as if the <code
title="">Element.renameNode()</code> method had been used)
according to the <var title="">value</var>, by stripping the
leading <code><</code> character and the trailing
- <code>></code> character and using the rest as the new tag
- name, using the HTML namespace.</p></dd>
+ <code>></code> character and using the rest as the new tag name,
+ using the HTML namespace.</p></dd>
<dt>If the <var title="">commandId</var> is <dfn title="command-delete"><code>delete</code></dfn></dt>
@@ -40529,14 +40355,11 @@
<h4>The <dfn><code>font</code></dfn> element</h4>
- <p><span>Transparent</span> <span title="block-level
- elements">block-level element</span>, and <span>transparent</span>
- <span>strictly inline-level content</span>.</p>
-
<dl class="element">
+ <dt>Categories</dt>
+ <dd><span>Phrasing content</span>.</dd>
<dt>Contexts in which this element may be used:</dt>
- <dd>Where <span>block-level content</span> is allowed.</dd>
- <dd>Where <span>strictly inline-level content</span> is allowed.</dd>
+ <dd>Where <span>phrasing content</span> is expected.</dd>
<dt>Content model:</dt>
<dd><span>Transparent</span>.</dd>
<dt>Element-specific attributes:</dt><!--
@@ -40574,10 +40397,6 @@
non-conforming if it is used on a page lacking the <span>WYSIWYG
signature</span>.</p>
- <p>A <code>font</code> element can only contain content that would
- still be conformant if all elements with <span>transparent</span>
- content models were replaced by their contents.</p>
-
<div class="example">
<p>The following would be syntactically legal (as the output from a
@@ -41612,7 +41431,6 @@
need a summary of the differences between the HTML and XML serialisations.
-e.g. how <p><ul> is allowed in one but not the other
@@ -42319,7 +42137,7 @@
<p>Authors should put <code>command</code> elements inside the
<code>head</code> element, inside any element that may contain
- <span>block-level elements</span> or <span>inline-level
+ ...
content</span>, or inside <code>commandset</code> elements.</p> <!-+-
should, because hey, if they want to put them elsewhere, why not.
XXX -+->
@@ -42410,9 +42228,6 @@
XXX publish a "Valid HTML5!" button with a kitten on it. Made by an artist. (Doodle?)
-XXX rename "Block-level" and "inline-level" to something else to
-prevent terminology clash with CSS.
-
Interaction with document.open/write/close is undefined
How to determine the character encoding
Integration with quirks mode problems
@@ -42449,7 +42264,6 @@
> them to paragraphs to be saved or are they going to come up with an even
> more crufty work-around to comply with the machine-checkable
> requirements of the spec?
-(i agree, i think we should drop "significant inline content". -ian)
bjoern:
More information about the Commit-Watchers
mailing list