<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:d="http://suika.fam.cx/~wakaba/archive/2007/wdcc-desc/"
    id="error-description">
<head>
<title xml:lang="en">Description of Errors &#x2014; 
Web Document Conformance Checker (BETA)</title>
<link rel="stylesheet" href="cc-style"/>
<link rel="license" href="#license"/>
</head>
<body>
<h1>Description of Errors</h1>

<section id="html5-character-encoding">
<h2>HTML5 Character Encoding Errors</h2>

<d:item name="character encoding" class="format-charset must" level="m">
  <d:message xml:lang="en">Character encoding <code><var>$0</var></code>
  is not allowed for <abbr>HTML</abbr> document.</d:message>
  <d:desc xml:lang="en">
    <p>The character encoding used for the document is not allowed
    for <abbr>HTML</abbr> document.  The document is non‐conforming.</p>
  </d:desc>
</d:item>

<d:item name="character encoding" class="format-charset should"
    level="s">
  <d:message xml:lang="en">Character encoding <code><var>$0</var></code>
  should not be used for <abbr>HTML</abbr> document.</d:message>
  <d:desc xml:lang="en">
    <p>The character encoding used for the document is not recommended
    for <abbr>HTML</abbr> document.  The document is non‐conforming
    unless there is any good reason to use that encoding.</p>
  </d:desc>
</d:item>

<d:item name="character encoding" class="format-charset warning"
    level="w">
  <d:message xml:lang="en">Use of UTF-8 is encouraged.</d:message>
  <d:desc xml:lang="en">
    <p>Use of UTF-8 as the character encoding of the document is encouraged,
    though the use of another character encoding is still conforming.</p>
  </d:desc>
</d:item>

<d:item name="character encoding" class="format-charset unsupported"
    level="unsupported">
  <d:message xml:lang="en">Conformance for character encoding requirements
  cannot be checked.</d:message>
  <d:desc xml:lang="en">
    <p>The conformance checker cannot detect whether the input document
    met the requirements on character encoding, since the document
    is not inputed as a serialized byte sequence.  The document is
    not conforming if it is not encoded in an appropriate character
    encoding with appropriate labeling.</p>
  </d:desc>
</d:item>

<d:item name="no character encoding declaration" class="format-charset error"
    level="m">
  <d:message xml:lang="en">There is no character encoding
  declaration.</d:message>
  <d:desc xml:lang="en">
    <p>The document does not contain a character encoding 
    declaration.  Unless the character encoding is explicitly 
    specified in lower‐level protocol, e.g. in <abbr>HTTP</abbr>,
    or is implied by <abbr>BOM</abbr>, there must be a character
    encoding declaration.  The document is non‐conforming.</p>

    <p>The long character encoding declaration syntax
    <code class="html bad example">&lt;meta http-equiv="Content-Type" content="text/html; charset=<var>charset-name</var>"></code>
    is obsolete.  The new syntax is:</p>
    <pre class="html example"><code>&lt;meta charset="<var>charset-name</var>"></code></pre>

    <p>Note that the <code>encoding</code> declaration in <abbr>XML</abbr> 
    declaration has no effect for <abbr>HTML</abbr> document.</p>
  </d:desc>
</d:item>

<d:item name="non ascii superset" class="format-charset error"
    level="m">
  <d:message xml:lang="en">No character encoding metadata is found
  in lower‐level protocol nor is there <abbr>BOM</abbr>, while
  character encoding <code><var>$0</var></code>
  is not a superset of <abbr>ASCII</abbr>.</d:message>
  <d:desc xml:lang="en">
    <p>The document is not labeled with character encoding name
    in lower‐level protocol, e.g. in <abbr>HTTP</abbr>, and
    the document is not begin with <abbr>BOM</abbr>.  In addition,
    the character encoding of the document is not a superset of
    <abbr>ASCII</abbr>.  The document is non‐conforming.</p>

    <p>Unless there is a <abbr>BOM</abbr>, the character encoding
    for the document must be specified in e.g. <abbr>HTTP</abbr>‐level,
    as:</p>
    <pre class="http example"><code>Content-Type: text/html; charset=<var>charset-name</var></code></pre>

    <p>Existence of <abbr>HTML</abbr> character encoding declaration, i.e.
    <code class="html example">&lt;meta charset="<var>charset-name</var>"></code>,
    does not allow to omit <code>charset</code> parameter
    for <abbr>HTML</abbr> document encoded in non‐<abbr>ASCII</abbr>
    compatible encoding.</p>

    <p>Character encodings <code>Shift_JIS</code>, <code>Windows-31J</code>,
    and <code>ISO-2022-JP</code> are <em>not</em> a superset of
    <abbr>ASCII</abbr> for the purpose of <abbr>HTML</abbr> conformance.</p>
  </d:desc>
</d:item>

<d:item name="charset label detected" class="format-charset warning"
    level="w">
  <d:message xml:lang="en">While parsing the document as
  <code><var>$0</var></code>, a character encoding declaration specifying
  character encoding as <code><var>$1</var></code> is found.  The document
  is reparsed.</d:message>
  <d:desc xml:lang="en">
    <p>While parsing a document in a character encoding,
    a character encoding declaration which declares the character
    encoding of the document as another character encoding is found.
    The occurence of this warning itself does not make the document
    non‐conforming.  However, the failure of the first attempt to
    to detect the character encoding might be a result of non‐conformance 
    of the document.</p>

    <p>The document will be reparsed from the beginning.  Some error
    or warning might be reported again.</p>

    <p>These are suggestions to avoid this warning:</p>
    <ul>
    <li>Specify <code>charset</code> parameter in the <code>Content-Type</code>
    field in the <abbr>HTTP</abbr> header, as:
    <pre class="HTTP example"><code>Content-Type: text/html; charset="<var>charset-name</var>"</code></pre></li>
    <li>Put the character encoding declaration
    (<code class="html example">&lt;meta charset="<var>charset-name</var>"></code>)
    just after <code class="html example">&lt;head></code> start tag.</li>
    <li>Use <code>UTF-8</code>.</li>
    </ul>
  </d:desc>
</d:item>
</section>

<section id="html5-tokenize-error">
<h2>HTML5 Parse Errors in Tokenization Stage</h2>

<d:item name="after html"
    class="parse-error">
  <d:message xml:lang="en">Tag <code>&lt;<var>$0</var>&gt;</code>
  is not allowed after the end tag <code>&lt;/html></code>.</d:message>
  <d:desc xml:lang="en">
    <p>The start or end tag of an element appears after the
    <code>html</code> element has been closed.  The document is
    non-conforming.</p>

    <p>Any content of the document other than comments
    must be put into the <code>html</code> element.</p>
  </d:desc>
</d:item>

<d:item name="after body"
    class="parse-error">
  <d:message xml:lang="en">Tag <code>&lt;<var>$0</var>&gt;</code>
  is not allowed after the end tag <code>&lt;/body></code>.</d:message>
  <d:desc xml:lang="en">
    <p>The start or end tag of an element appears after the
    <code>body</code> element has been closed.  The document is
    non-conforming.</p>

    <p>Any content of the document other than <code>head</code>
    contents and comments must be put into the <code>body</code>
    element.</p>
  </d:desc>
</d:item>

<d:item name="bare ero"
    class="tokenize-error">
  <d:message xml:lang="en">The <code>&amp;</code> character must
  introduce a reference.</d:message>
  <d:desc xml:lang="en">
    <p>An <code>&amp;</code> character which
    is not part of any reference appears in the input stream.
    The document is non‐conforming.</p>

    <p><em>Any <code>&amp;</code> character in URI (or IRI)
    must be escaped as <code class="example">&amp;amp;</code>.</em></p>

    <p>The <code>&amp;</code> character must
    be the first character of a reference:
      <dl class="switch">
      <dt>Named entity reference</dt>
          <dd><pre class="html example"><code>&amp;<var>entity-name</var>;</code></pre>
          where <var>entity-name</var> is the name of the
          character entity to be referenced.</dd>
      <dt>Numeric character reference</dt>
          <dd><pre class="html example"><code>&amp;#<var>d</var>;</code></pre>
          where <var>d</var> is the decimal representation of
          the code position of the character to be referenced.</dd>
      <dt>Hexadecimal character reference</dt>
          <dd><pre class="html example"><code>&amp;#x<var>h</var>;</code></pre>
          where <var>h</var> is the hexadecimal representation
          of the code position of the character to be referenced.</dd>
      </dl>
    </p>

    <p>To represent <code>&amp;</code> as a data character, use
    named entity reference:
      <pre class="html example"><code>&amp;amp;</code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="bare etago"
    class="tokenize-error">
  <d:message xml:lang="en">A <code>&lt;/</code> string is not followed
  by a tag name.</d:message><!-- </ EOF -->
  <d:desc xml:lang="en">
    <p>There is a <code>&lt;</code> (<code>U+003C</code> 
    <code class="charname">LESS-THAN SIGN</code>) character
    immediately followed by a <code>/</code> (<code>U+005F</code>
    <code>SOLIDUS</code>) character, which is not part
    of any end tag, in the input stream.  The document
    is non-conforming.</p>

    <p>The <code>&lt;/</code> sequence immediately followed
    by an <abbr title="End of file pseudo-character">EOF</abbr> is
    interpreted as a string data of <code>&lt;/</code>.</p>

    <p>The <code>&lt;/</code> sequence as string data must
    be escaped as:
    <pre class="html example"><code>&amp;lt;/</code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="bare stago"
    class="tokenize-error">
  <d:message xml:lang="en">A <code>&lt;</code> character is not followed
  by tag name or by a <code>!</code> character.</d:message>
  <d:desc xml:lang="en">
    <p>A <code>&lt;</code> (<code>U+003C</code> 
    <code class="charname">LESS-THAN SIGN</code>) character which is not part
    of any markup appears in the input stream.</p>

    <p>The <code>&lt;</code> character as a data character must
    be escaped as:
    <pre class="html example"><code>&amp;lt;</code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="bare nero"
    class="tokenize-error">
  <d:message xml:lang="en">The decimal representation of the code position
  of a character must be specified after <code>&amp;#</code>.</d:message>
  <d:desc xml:lang="en">
    <p>An <code>&amp;</code> (<code>U+0026</code>
    <code class="charname">AMPERSAND</code>) character immediately
    followed by a <code>#</code> (<code>U+0023</code>
    <code>NUMBER SIGN</code>) character which
    is not part of any reference appears in the input stream.
    The document is non-conforming.</p>

    <p>The string <code>&amp;#</code> must be the first two characters
    of a reference:
      <dl class="switch">
      <dt>Numeric character reference</dt>
          <dd><pre class="html example"><code>&amp;#<var>d</var>;</code></pre>
          where <var>d</var> is the decimal representation of
          the code point of the character to be referenced.</dd>
      <dt>Hexadecimal character reference</dt>
          <dd><pre class="html example"><code>&amp;#x<var>h</var>;</code></pre>
          where <var>h</var> is the hexadecimal representation
          of the code point of the character to be referenced.</dd>
      </dl>
    </p>

    <p>To represent <code>&amp;#</code> as data characters, use
    a named entity reference for the <code>&amp;</code> character:
      <pre class="html example"><code>&amp;amp;#</code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="bare hcro"
    class="tokenize-error">
  <d:message xml:lang="en">The hexadecimal representation of the code position
  of a character must be specified after <code>&amp;#x</code>.</d:message>
  <d:desc xml:lang="en">
   <p>The string <code>&amp;#x</code> or <code>&amp;#X</code> which
   is not part of any reference appears in the input stream.
    The document is non-conforming.</p>

    <p>The string <code>&amp;#x</code> or <code>&amp;#X</code> must
    be the first three characters of a hexadecimal reference:
      <pre class="html example"><code>&amp;#x<var>h</var>;</code></pre>
    where <var>h</var> is the hexadecimal representation
    of the code point of the character to be referenced.</p>

    <p>To represent <code>&amp;#x</code> as data characters, use
    a named entity reference for the <code>&amp;</code> character:
      <pre class="html example"><code>&amp;amp;#x</code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="bogus comment"
    class="tokenize-error">
  <d:message xml:lang="en">String <code>&lt;!</code> is not followed
  by <code>--</code>.</d:message>
  <d:desc xml:lang="en">
    <p>There is a <code>&lt;</code> (<code>U+003C</code> 
    <code class="charname">LESS-THAN SIGN</code>) character
    followed by a <code>!</code> (<code>U+0021</code>
    <code class="charname">EXCLAMATION MARK</code>) character,
    which is not followed by a <code>--</code> or
    <code>!DOCTYPE</code>.  The document is non-conforming.</p>

    <dl class="switch">
    <dt>Comments</dt>
      <dd>In HTML document, comments must be introduced by
      <code class="example">&lt;!--</code> (<code>&lt;!</code>
      <em>immediately</em> followed
      by <em>two</em> <code>-</code>s) and must be terminated by
      <code class="example">--></code>.
      Strings <code>&lt;!</code> not followed
      by <code>--</code> and <code>&lt;!-</code> not followed by
      <code>-</code> are not valid open delimiters for comments.</dd>
    <dt>Marked sections, including <code>CDATA</code> sections</dt>
      <dd>Marked sections are not allowed in HTML document.</dd>
    <dt>Markup declarations</dt>
      <dd>Markup declarations, except for <code>DOCTYPE</code>
      and comment declarations, are not allowed in HTML document.</dd>
    <dt>String <code>&lt;!</code></dt>
      <dd>String <code>&lt;!</code> must be escaped as
      <code class="example">&amp;lt;!</code>.</dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="bogus end tag"
    class="tokenize-error">
  <d:message xml:lang="en">String <code>&lt;/</code> is not followed
  by tag name.</d:message><!-- </ non-name-start-char-non-EOF -->
  <d:desc xml:lang="en">
    <p>There is a <code>&lt;</code> (<code>U+003C</code> 
    <code class="charname">LESS-THAN SIGN</code>) character
    immediately followed by a <code>/</code> (<code>U+005F</code>
    <code>SOLIDUS</code>) character, which is not part
    of any end tag, in the input stream.  The document
    is non-conforming.</p>

    <p>The <code>&lt;/</code> sequence not followed by a
    tag name is parsed as an opening of bogus comment.</p>

    <p>The <code>&lt;/</code> sequence as string data must
    be escaped as:
    <pre class="html example"><code>&amp;lt;/</code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="dash in comment"
    class="tokenize-error">
  <d:message xml:lang="en">There is a <code>--</code> sequence
  in a comment.</d:message>
  <d:desc xml:lang="en">
    <p>There is a <code>-</code> (<code>U+002D</code>
    <code class="charname">HYPHEN-MINUS</code>) character 
    at the end of the comment or a <code>--</code> sequence
    in the comment.  The document is non-conforming.</p>

    <p>Comments cannot contain a string <code>--</code>, as in XML.
    Unlike SGML, there cannot be more than one comments
    (where <i>comment</i> is an SGML term) in the comment
    declaration.</p>
  </d:desc>
</d:item>

<d:item name="duplicate attribute"
    class="tokenize-error">
  <d:message xml:lang="en">There are two attributes with name
      <code><var>$0</var></code>.</d:message>
  <d:desc xml:lang="en">
    <p>There are more than one attributes with the same
    name in a tag.  The document is non-conforming.</p>

    <p>The <code>motion</code> attribute is not part of the HTML standard.
    Use <code>img</code> element with animation GIF instead.</p>
  </d:desc>
</d:item>

<d:item name="nestc"
    class="tokenize-error">
  <d:message xml:lang="en">Polytheistic slash (<code>/></code>) cannot be
  used for this element.</d:message>
  <d:desc xml:lang="en">
    <p>Polytheistic slash (<code>/></code>) must not be used
    for the element.  The document is non-conforming.</p>

    <p>The polytheistic slash can only be
    used for <code>base</code>, <code>link</code>, <code>meta</code>,
    <code>hr</code>, <code>br</code>, <code>img</code>, 
    <code>embed</code>, <code>param</code>, <code>area</code>,
    <code>col</code>, and <code>input</code> elements.</p>

    <dl class="switch">
    <dt><code>&lt;script/></code></dt>
        <dd><p>The polytheistic slash cannot be used for <code>script</code>
        element.  Even for an empty <code>script</code> element,
        there must be an explicit end tag
        <code class="html example">&lt;/script></code>.</p>

        <p><strong>NOTE</strong>: Though some user agents interpret
        polytheistic slash for <code>script</code> element as the 
        closing of the element, such usage is not allowed under
        the current standard.</p></dd>
    <dt><code>&lt;basefont/></code>, <code>&lt;bgsound/></code>,
    <code>&lt;frame/></code>, <code>&lt;keygen/></code>,
    <code>&lt;spacer/></code>, <code>&lt;wbr/></code></dt>
        <dd>These elements are themselves non-conforming.</dd>
    <!-- isindex, image -->
    <dt><code>&lt;command/></code>, <code>&lt;event-source/></code>,
    <code>&lt;nest/></code>, or <code>&lt;source/></code></dt>
        <dd>Future revision of HTML5 parsing algorithm is expected
        to allow polytheistic slash for these elements.</dd>
    <dt><code>&lt;a/></code>, <code>&lt;p/></code></dt>
        <dd>These elements are not always empty and therefore
        polytheistic slash is not allowed.  Use explicit end tag
        to represent empty element as:
          <pre class="example html"><code>&lt;p>&lt;/p></code></pre>
        </dd>
    </dl>

    <p>Note that, unlike in XML, the polytheistic slash has
    no effect in HTML.</p>
  </d:desc>
</d:item>


<d:item name="pio"
    class="tokenize-error">
  <d:message xml:lang="en">Processing instruction 
  (<code>&lt;?<var>...</var>></code>) cannot be used.</d:message>
  <d:desc xml:lang="en">
    <p>Processing instructions (<code>&lt;?<var>...</var>?></code>),
    including XML declaration (<code>&lt;?xml <var>...</var>?></code>)
    and XML style sheet <abbr title="processing instruction">PI</abbr>
    (<code>&lt;?xml-stylesheet <var>...</var>?></code>), are not allowed 
    in the HTML syntax.  The document is non-conforming.</p>

    <dl class="switch">
    <dt><code>&lt;?xbl?></code> (<abbr>XBL</abbr> Association)</dt>
      <dd>An <abbr>XBL</abbr> binding cannot be associated by 
      <abbr title="processing instruction">PI</abbr> in <abbr>HTML</abbr>
      document.  Use <code>binding</code> property in <abbr>CSS</abbr>
      style sheet as:
        <pre class="html example"><code>&lt;style>
p {
  binding: url(binding.xbl);
}
&lt;/style></code></pre>
      </dd>
    <dt><code>&lt;?xml?&gt;</code> (XML declaration)</dt>
        <dd>XML declaration is unnecessary for HTML documents.</dd>
    <dt><code>&lt;?xml-stylesheet?></code> (XML style sheet
    <abbr title="processing instruction">PI</abbr>)</dt>
        <dd>Use HTML <code>link</code> element with <code>rel</code>
        attribute set to <code>stylesheet</code> (or,
        <code>alternate stylesheet</code> for an alternate style 
        sheet).
          <pre class="example html"><code>&lt;link rel=stylesheet href="path/to/stylesheet.css"></code></pre>
        </dd>
    <dt><code>&lt;?php?&gt;</code> or 
    <code>&lt;? <var>... <abbr>PHP</abbr> code ...</var> ?&gt;</code> 
    (<abbr>PHP</abbr> code)</dt>
        <dd>The conformance checker does <em>not</em> support
        checking for PHP source documents.</dd>
    <dt>Other processing instructions</dt>
        <dd>Processing instructions cannot be inserted in an HTML
        document.  Use XML document or insert 
        <code>ProcessingInstruction</code> node by scripting.</dd>
    </dl>

    <p>Web browsers will parse processing instructions as bogus
    comments.  Some legacy Web browsers, such as IE:mac and
    some mobile Web browsers, will display processing instructions
    as string.</p>
  </d:desc>
</d:item>

</section>

<section id="html5-parse-errors">
<h2>HTML5 Parse Errors in Tree Construction Stage</h2>

<d:item name="after head"
    class="parse-error">
  <d:message xml:lang="en">The <code><var>$0</var></code> element cannot be
  inserted between <code>head</code> and <code>body</code> elements.</d:message>
  <d:desc xml:lang="en">
    <p>A start tag appears after the <code>head</code> element is closed
    but before the <code>body</code> element is opened.
    The document is non-conforming.</p>
  </d:desc>
</d:item>

<d:item name="DOCTYPE in the middle"
    class="parse-error">
  <d:message xml:lang="en">A <code>DOCTYPE</code> appears after any
  element or data character has been seen.</d:message>
  <d:desc xml:lang="en">
    <p>A <code>DOCTYPE</code> appears after any element or data character
    has been seen.  The document is non-conforming.</p>
    
    <p>The <code>DOCTYPE</code> must be placed before any
    tag, reference, or data character.  Only white space characters
    and comments can be inserted before the <code>DOCTYPE</code>.</p>
  </d:desc>
</d:item>

<d:item name="in a:a"
    class="parse-error">
  <d:message xml:lang="en">Anchor cannot be nested.</d:message>
  <d:desc xml:lang="en">
    <p>HTML <code>a</code> elements cannot be nested.
    The document is non-conforming.</p>

    <p>In the HTML syntax, a start tag of the <code>a</code>
    implies the end tag of any opening <code>a</code> element.</p>
  </d:desc>
</d:item>

<d:item name="in body"
    class="parse-error">
  <d:message xml:lang="en">Tag <code>&lt;<var>$0</var>&gt;</code>
  is not allowed in the <code>body</code> element.</d:message>
  <d:desc xml:lang="en">
    <p>The start or end tag of an element, which 
    cannot be a descendant of <code>body</code> element, appears
    in the input stream while the <code>body</code> element has been opened.
    The document is non-conforming.</p>
  </d:desc>
</d:item>

<d:item name="in head:head"
    class="parse-error">
  <d:message xml:lang="en">Start tag <code>&lt;head&gt;</code>
  is not allowed in the <code>head</code> element.</d:message>
  <d:desc xml:lang="en">
    <p>There is a start tag <code>&lt;head></code> in the
    <code>&lt;head></code> element.  The document is non-conforming.</p>

    <p>In an HTML document there must not be more than
    one <code>head</code> element, therefore no more than one
    start tag <code>&lt;head></code> can appear in the input stream.</p>
  </d:desc>
</d:item>

<d:item name="in table"
    class="parse-error">
  <d:message xml:lang="en">Tag <code>&lt;<var>$0</var>&gt;</code>
  is not allowed in a <code>table</code> element.</d:message>
  <d:desc xml:lang="en">
    <p>The start or end tag of an element, which
    cannot be a child of <code>table</code> element, appears
    in the input stream while the <code>table</code> element has been opened
    but no other element has been opened.  The document is non-conforming.</p>

    <p>In <code>table</code>, only table related elements
    are allowed; any other element must be contained in
    <code>td</code> or <code>th</code> element to form 
    a part of the table, or <code>caption</code> element to create
    a table caption.</p>
  </d:desc>
</d:item>

<d:item name="in table:#character"
    class="parse-error">
  <d:message xml:lang="en">Data character is not allowed in 
  <code>table</code>.</d:message>
  <d:desc xml:lang="en">
    <p>A data character appears in <code>table</code>.  The document
    is non-conforming.</p>

    <p>In <code>table</code>, only table related elements
    are allowed; any other element and data character must be contained in
    <code>td</code> or <code>th</code> element to form 
    a part of the table, or <code>caption</code> element to create
    a table caption.</p>
  </d:desc>
</d:item>

<d:item name="missing start tag:tr"
    class="parse-error">
  <d:message xml:lang="en">Start tag of <code>tr</code>
  element is missing.</d:message>
  <d:desc>
    <p>Start tag of a <code>tr</code> element, which is <em>not</em>
    optional, is missing.  The document is non-conforming.</p>

    <p>In a table section, a <code>&lt;tr></code> start tag
    must occur before any <code>&lt;td></code> or
    <code>&lt;th></code> start tag.  Though the HTML5 parser
    implies the <code>&lt;tr></code> start tag before
    these start tags, it must be explicitly specified.</p>
  </d:desc>
</d:item>

<d:item name="no DOCTYPE"
    class="parse-error">
  <d:message xml:lang="en">This document does not start with a
  <code>DOCTYPE</code>.</d:message>
  <d:desc>
    <p>The document does not start with a <code>DOCTYPE</code>.
    The document is non-conforming.</p>

    <p>An HTML document must start by a <code>DOCTYPE</code>:
      <pre class="html example"><code>&lt;!DOCTYPE HTML></code></pre>
    </p>

    <p>Only white space characters and comments are allowed
    before the <code>DOCTYPE</code>.  XML declaration is <em>not</em>
    allowed in HTML document.</p>
  </d:desc>
</d:item>

<d:item name="not closed"
    class="parse-error">
  <d:message xml:lang="en">Element <code><var>$0</var></code> is not
  closed.</d:message>
  <d:desc>
    <p>End tag of an element is not found before, for example,
    an end tag of another element appears or
    the end of the document.  The document is non-conforming.</p>

    <p>Only <code>body</code>, <code>colgroup</code>, <code>dd</code>,
    <code>dt</code>, <code>head</code>, <code>html</code>, <code>li</code>,
    <code>ol</code>, <code>option</code>, <code>optgroup</code>, 
    <code>p</code>, <code>rb</code>, <code>rp</code>, <code>rt</code>,
    <code>tbody</code>, <code>td</code>, <code>tfoot</code>,
    <code>th</code>, <code>thead</code>, <code>tr</code>,
    <code>ul</code> end tag can be omitted in HTML documents.
    For any element except for void element, there must be an explicit
    end tag.</p>

    <dl class="switch">
    <dt>HTML <code>canvas</code> element</dt>
      <dd>Though the element is void in earlier versions of Safari,
      the <code>canvas</code> element is <em>no</em> longer
      defined as empty.  There must be an end tag
      <code class="html example">&lt;/canvas></code>.</dd>
    </dl>

    <p>Note that misnesting tags, such as 
    <code class="bad example">&lt;a>&lt;b>&lt;/a>&lt;/b></code>, are not
    allowed and they also cause this error.</p>
  </d:desc>
</d:item>

<d:item name="not first start tag"
    class="parse-error">
  <d:message xml:lang="en">This <code>&lt;html></code> tag is not
  the first start tag.</d:message>
  <d:desc>
    <p>There is a start tag of the <code>html</code> element
    that it not the first start tag in the input stream.
    The document is non-conforming.</p>

    <p>In an HTML document, there cannot be more than one
    <code>html</code> element and therefore there cannot be
    more than one <code>&lt;html></code> tag.  In addition,
    nothing can be placed before the <code>&lt;html></code> tag
    except a <code>DOCTYPE</code>, white space characters, 
    and comments.</p>
  </d:desc>
</d:item>

<d:item name="not HTML5"
    class="parse-error">
  <d:message xml:lang="en">This document is written in an old version of 
  HTML.</d:message>
  <d:desc xml:lang="en">
    <p>The document contains a <code>DOCTYPE</code> declaration
    that is different from HTML5 <code>DOCTYPE</code> (i.e. 
    <code class="example html">&lt;!DOCTYPE HTML&gt;</code>).
    The document is non‐conforming.</p>

    <p>The document might or might not be conformant to
    some version of HTML.  However, conformance to any HTML
    specification other than HTML5 provides for no practical
    convenience, since Web borwsers will parse any
    HTML document (roughly) as defined in HTML5.</p>
  </d:desc>
</d:item>

<d:item name="unmatched end tag"
    class="parse-error">
  <d:message xml:lang="en">Element <code><var>$0</var></code> is not
  opened.</d:message>
  <d:desc>
    <p>An end tag appears though no element with the same name
    has been opened.  The document is non-conforming.</p>

    <p>For any end tag in HTML document, there must be a
    corresponding start tag.</p>

    <dl class="switch">
    <dt>HTML <code>base</code>, <code>basefont</code>,
    <code>bgsound</code>, <code>br</code>, <code>col</code>,
    <code>embed</code>, <code>frame</code>, <code>hr</code>,
    <code>image</code>, <code>img</code>, <code>input</code>,
    <code>isindex</code>, <code>link</code>, <code>meta</code>,
    <code>param</code>, <code>spacer</code>, or <code>wbr</code> element</dt>
      <dd>End tag is not allowed for these elements, since
      those content must always be empty.  Remove end tag.</dd>
    <!-- keygen -->
    <!-- command, event-source, nest, source -->
    </dl>
  </d:desc>
</d:item>

</section>

<section id="element-content-model-errors">
<h2>Element Content Model Errors</h2>

<d:item name="character not allowed"
    class="content-model-error">
  <d:message xml:lang="en">Data character is not allowed in this
  context.</d:message>
  <d:desc xml:lang="en">
    <p>A data character appears where it is not allowed in this
    context.  The document is non-conforming.</p>

    <p>Possible causes:
      <ul>
      <li><p>A data character cannot be a child
      of certain sectioning elements such as <code>body</code>,
      <code>section</code>, and <code>blockquote</code>.</p>

      <p>Any inline-level content must be put
      in e.g. paragraph element such as <code>p</code>.</p></li>
      <li><p>Though some elements such as <code>div</code>,
      <code>li</code>, and <code>td</code> allow
      <em>either one</em> of block-level or inline-level content
      is allowed.  If there is a block-level content, 
      any inline-level content must be put
      in e.g. paragraph element such as <code>p</code>.</p></li>
      </ul>
    </p>
  </d:desc>
</d:item>

<d:item name="child element missing"
    class="content-model-error">
  <d:message xml:lang="en">There must be a <code><var>$0</var></code>
  element as a child of this element.</d:message>
  <d:desc xml:lang="en">
    <p>The content model of the element is so defined that it
    must contain a <code><var>$0</var></code> child element.
    The document is non-conforming.</p>

    <dl class="switch">
    <dt>HTML <code>head</code> element</dt>
      <dd>There must be a <code>title</code> child element.</dd>
    <dt>HTML <code>html</code> element</dt>
      <dd>There must be a <code>head</code> child element followed
      by a <code>body</code> element.</dd>
    <dt>HTML <code>tr</code> element</dt>
      <dd><a href="#child-element-missing:td%7Cth">There must be
      one or more <code>td</code> or <code>th</code> child element.</a></dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="child element missing:td|th"
    class="content-model-error">
  <d:message xml:lang="en">There must be a <code>td</code>
  or <code>th</code> element as a child of this element.</d:message>
  <d:desc xml:lang="en">
    <p>The <code>tr</code> element must contain at least one
    <code>td</code> or <code>th</code> child element.  The document
    is non-conforming.</p>
  </d:desc>
</d:item>

<d:item name="element not allowed"
    class="content-model-error">
  <d:message xml:lang="en">This element is not allowed in this 
  context.</d:message>
  <d:desc xml:lang="en">
    <p>An element appears where it is not allowed.  The document
    is non-conforming.</p>

    <p>Possible causes:
      <dl class="switch">
      <dt>If the element with the error is an inline-level element,
      such as <code>a</code>, <code>progress</code>, or <code>img</code></dt>
          <dd><p>An inline-level element cannot be a child
          of certain sectioning elements such as <code>body</code>,
          <code>section</code>, and <code>blockquote</code>.</p>

          <p>Any inline-level content must be put
          in e.g. paragraph element such as <code>p</code>.</p></dd>
      <dt>If it is a block-level elements, such as <code>aside</code>,
      <code>div</code>, <code>h<var>n</var></code>,
      <code>p</code>, or <code>section</code></dt>
          <dd><dl class="switch">
              <dt>If the parent element is <code>div</code>,
              <code>li</code>, <code>td</code>, or <code>th</code></dt>
              <!-- @@ TODO: more... -->
                  <!-- @@ TODO: <p><ul><li><p> -->
                  <dd><p>The parent element allows <em>either</em>
                  block-level or inline-level content.  If there is a
                  block-level content, any inline-level content must be
                  put in e.g. paragraph element such as <code>p</code>.</p>
                  <p>For example, an HTML document fragment
                  <code class="html bad example">&lt;div>&lt;p>Hello!&lt;/p> World!&lt;/div></code>
                  is non-conforming, since a word <q>World!</q> does not belong
                  to any paragraph.  (If not part of any paragraph, what is
                  it!?)  A conforming example would be:
                    <pre class="html example"><code>&lt;div>&lt;p>Hello!&lt;/p> &lt;p>World!&lt;/p>&lt;/div></code></pre>
                  </p></dd>
              <dt>If the parent element does <em>not</em> allow 
              block-level elements as content</dt>
                  <dd>The element is not allowed to be inserted here.
                  For example, a <code>div</code> element cannot be 
                  a child of an <code>h1</code> element.</dd>
          </dl></dd>
      <dt>If the element with the error is a <code>noscript</code> element</dt>
          <dd>The <code>noscript</code> element is allowed only in the context
          where a block-level or inline-level content is expected
          and in the <code>head</code> element.
          It cannot be used in e.g. <code>ul</code>, <code>table</code>,
          or <code>select</code>.</dd>
      <dt>If the element with the error is <code>blink</code>,
      <code>center</code>, or <code>marquee</code> element</dt>
          <dd>These elements are not part of the HTML standard.
          Use CSS for styling control.</dd>

      <dt><code>button</code>, <code>datalist</code>,
      <code>fieldset</code>, <code>form</code>,
      <code>input</code>, <code>label</code>,
      <code>optgroup</code>, <code>option</code>, <code>output</code>,
      <code>rb</code>, <code>rp</code>, <code>rt</code>, <code>ruby</code>,
      <code>textarea</code>, or <code>textarea</code> element</dt>
      <!-- rbc, rtc ? -->
          <dd>These elements are intentionally not supported by the conformance
          checker <em>yet</em>.</dd>
      </dl>
    </p>
  </d:desc>
</d:item>

<d:item name="element not allowed:root"
    class="content-model-error">
  <d:message xml:lang="en">This element is not allowed as a root
  element.</d:message>
  <d:desc xml:lang="en">
    <p>An element that is not allowed as the root element
    is used as the root element of the document.  The document is
    non-conforming, as far as the conformance checker can tell.</p>

    <dl class="switch">
    <dt><code>html</code> element in an XHTML document</dt>
        <dd><p>In <abbr>XHTML</abbr> document, the root <code>html</code>
        element must have an <code>xmlns</code> attribute as:
          <pre class="xml example"><code>&lt;html xmlns="http://www.w3.org/1999/xhtml"></code></pre></p></dd>
    <dt><code>rss</code> element</dt>
        <dd><p>The document is written in some version of RSS.</p>
        <p>The conformance checker does not support any version
        of RSS.  Use Atom 1.0 for feed documents.</p></dd>
    <dt><code>feed</code> element</dt>
        <dd><p>The Atom <code>feed</code> element must be
        in the <code>http://www.w3.org/2005/Atom</code>
        namespace as:
          <pre class="xml example"><code>&lt;feed xmlns="http://www.w3.org/2005/Atom"></code></pre>
        </p>
        <p>The conformance checker does not support Atom 0.3.
        Use Atom 1.0 for feed documents.</p></dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="ps element missing"
    class="content-model-error">
  <d:message xml:lang="en">There is no <code><var>$0</var></code>
  element before this element.</d:message>
  <d:desc xml:lang="en">
    <p>There must be an element before another element, but there
    is not.  The document is non-conforming.</p>

    <p>For example, there must be a <code>dt</code> element
    before any <code>dd</code> element.</p>
  </d:desc>
</d:item>

</section>

<section id="attribute-errors">
<h2>Attribute Errors</h2>

<d:item name="attribute missing"
    class="attribute-error">
  <d:message xml:lang="en">Required attribute <code><var>$0</var></code>
  is not specified.</d:message>
  <d:desc>
    <p>A required attribute is not specified.  The document
    is non-conforming.</p>

    <p>Some attribute is defined as <i>required</i>.
    Without required attributes specified, user agents 
    cannot provide full functionality of the element to the user.</p>

    <dl class="switch">
    <dt>HTML <code>img</code> element</dt>
        <dd>The <code>src</code> attribute must be specified.
        Additionally, the <code>alt</code> attribute must be specified
        in many cases.</dd>
    <dt>HTML <code>link</code> element</dt>
        <dd>The <code>rel</code> attribute must be specified.
        Note that the <code>rev</code> attribute is obsolete.</dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="attribute not allowed" class="attribute-error">
  <d:message xml:lang="en">Attribute
  <code><var>{local-name}</var></code> is not allowed for
  <code><var>{element-local-name}</var></code> element.</d:message>
  <d:desc xml:lang="en">
    <p>An attribute is specified where it is not allowed.
    The document is non-conforming.</p>

    <dl>
    <dt>HTML <code>meta</code> element</dt>
        <dd>For HTML <code>meta</code> element, <em>only one</em> of
        <code>name</code>, <code>http-equiv</code>, or <code>charset</code>
        attribute is allowed.</dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="in HTML:xml:lang"
    class="attribute-error">
  <d:message xml:lang="en">The <code>xml:lang</code> attribute is not 
  allowed in HTML document.</d:message>
  <d:desc xml:lang="en">
    <p>The <code>xml:lang</code> attribute is not allowed in
    HTML document.  The document is non-conforming.</p>

    <p>Use of the <code>xml:lang</code> attribute is conforming
    <em>only</em> in XML documents.</p>

    <p>To specify natural language information in HTML document,
    use <code>lang</code> attribute instead.</p>

    <p>XHTML 1.0 Appendix C was encouraged to specify both
    <code>lang</code> and <code>xml:lang</code> attributes with
    the same value.  Such a duplication has <em>no effect</em> in practice.
    Use only one of <code>lang</code> (in HTML) or <code>xml:lang</code> (in
    XML).</p>

    <!-- @@ ISSUE: xml:lang in non-HTML element in DOM5 HTML created
         from an HTML document? -->
  </d:desc>
</d:item>

<d:item name="in XML:charset"
    class="attribute-error">
  <d:message xml:lang="en">The <code>charset</code> attribute is not 
  allowed in XML document.</d:message>
  <d:desc>
    <p>The <code>charset</code> attribute of a
    <code>meta</code> element is not allowed in XML document.
    The document is non-conforming.</p>

    <p>To specify the character encoding used for serialization,
    if necessary, use XML declaration instead:
      <pre class="xml example"><code>&lt;?xml version="1.0" encoding="<var>encoding-name</var>"?></code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="in XML:lang"
    class="attribute-error">
  <d:message xml:lang="en">The <code>lang</code> attribute is not 
  allowed in XML document.</d:message>
  <d:desc>
    <p>The HTML <code>lang</code> attribute is not allowed in
    XML document.  The document is non-conforming.</p>

    <p>The <code>lang</code> attribute in <code>null</code>
    namespace for HTML elements is conforming <em>only</em> in
    HTML documents.</p>

    <p>To specify natural language information in XML document,
    use <code>xml:lang</code> attribute instead.</p>
  </d:desc>
</d:item>

<d:item name="in XML:xmlns"
    class="attribute-error">
  <d:message xml:lang="en">The <code>xmlns</code> attribute 
  in the <code>null</code> namespace is not allowed in
  XHTML document.  The document is non-conforming.</d:message>
  <d:desc>
    <p>The <code>xmlns</code> attribute in the <code>null</code>
    namespace is not allowed in XHTML document.</p>

    <p>This error should not occur in conformance-checking of
    static documents.</p>
  </d:desc>
</d:item>

</section>

<section id="attribute-value-errors">
<h2>Attribute Value Errors</h2>

<d:item name="charset:not registered" class="attribute-value-warning warning"
    level="w">
  <d:message xml:lang="en">Character encoding name <code><var>$0</var></code>
  is not registered.</d:message>
  <d:desc xml:lang="en">
    <p>The specified character encoding name is not registered to
    <abbr>IANA</abbr>.  Use of registered character encoding name
    is a good practice to facilitate interoperability.</p>

    <dl class="switch">
    <dt><code>EUC-TW</code></dt>
      <dd><code>EUC-TW</code> is not registered.  Unfortunately, there
      is no registered name for that character encoding.  Use
      Big5 encoding with character encoding name <code>Big5</code> 
      if it is enough to represent the document.</dd>
    <dt><code>ISO-2022-JP-1</code></dt>
      <dd><code>ISO-2022-JP-1</code> is not registered, nevertheless
      this character encoding name is documented in 
      <a href="urn:ietf:rfc:2237"><abbr>RFC</abbr> 2237</a>.  Use
      <code>ISO-2022-JP-2</code> instead, since that character encoding
      is a superset of ISO-2022-JP-1.</dd>
    <dt><code>ISO-2022-JP-3</code>, <code>ISO-2022-JP-3-plane1</code></dt>
      <dd>These names are not registered and obsoleted in favor of
      <code>ISO-2022-JP-2004</code> and
      <code>ISO-2022-JP-2004-plane1</code>.</dd>
    <dt><code>ISO-2022-JP-2003</code>,
    <code>ISO-2022-JP-2003-plane1</code></dt>
      <dd>These names are not registered and corrected to
      <code>ISO-2022-JP-2004</code> and
      <code>ISO-2022-JP-2004-plane1</code>.</dd>
    <dt><code>ISO-2022-JP-2004</code>,
    <code>ISO-2022-JP-2004-plane1</code></dt>
      <dd>These names are not registered.  Unfortunately, there is 
      no registered name for these character encodings.</dd>
    <dt><code>UTF-8N</code></dt>
      <dd><code>UTF-8N</code> is not registered.  Character encoding
      name <code>UTF-8</code> represents UTF-8 encoding with or
      without <abbr>BOM</abbr>.</dd>
    </dl>

    <p><strong>WARNING</strong>: This error might be raised for
    a registered character encoding name, since the character encoding
    name database of the conformance checker is not complete yet.</p>
  </d:desc>
</d:item>

<d:item name="charset:private" class="attribute-value-warning warning"
    level="w">
  <d:message xml:lang="en"><code><var>$0</var></code> is a private
  character encoding name.</d:message>
  <d:desc xml:lang="en">
    <p>The specified character encoding name is a private name and
    not registered to <abbr>IANA</abbr>.  Use of registered character
    encoding name is a good practice to facilitate interoperability.</p>

    <dl class="switch">
    <dt><code>x-euc-jp</code></dt>
      <dd>Use <code>EUC-JP</code> for the Japanese <abbr>EUC</abbr>
      character encoding.</dd>
    <dt><code>x-sjis</code></dt>
      <dd>Use <code>Shift_JIS</code> for standard Shift encoding scheme of
      <abbr>JIS</abbr> coded character set, or <code>Windows-31J</code>
      for Microsoft standard character set as implemented by
      Microsoft Windows.</dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="charset:syntax error" class="attribute-value-error"
    level="m">
  <d:message xml:lang="en">The specified value is syntactically not a
  character encoding name.</d:message>
  <d:desc xml:lang="en">
    <p>The attribute value must be a character encoding name.  However,
    the specified value is not a character encoding name syntactically.
    The document is non‐conforming.</p>
    <p>Character encoding name is a string of <abbr>ASCII</abbr>
    printable characters, up to 40 characters.</p>
  </d:desc>
</d:item>

<d:item name="enumerated:invalid"
    class="attribute-value-error">
  <d:message xml:lang="en">This attribute only allow a limited set of 
  values and the specified value <code><var>{@}</var></code> is not one 
  of them.</d:message>
  <d:desc xml:lang="en">
    <p>For this attribute only several values are allowed and the
    value of the attribute is not one of them.  The document
    is non-conforming.</p>

    <dl>
    <dt>HTML <code>meta</code> element, <code>http-equiv</code> attribute</dt>
        <dd><p>Only values <code>Default-Style</code> and <code>Refresh</code>
        are allowed.</p>
        <p>Value <code>Content-Type</code> is obsolete; for charset
        declaration, the <code>charset</code> attribute can be used as:
        <pre class="html example"><code>&lt;meta charset="<var>charset-name</var>"></code></pre>
        ... where <var>charset-name</var> is a name of the character encoding
        of the document, such as <code>utf-8</code>.</p>
        <p>Values <code>Content-Style-Type</code> and
        <code>Content-Script-Type</code> are currently not allowed.</p>
        <p>Value <code>Keywords</code> is not allowed.  Use
        <code>name</code> attribute instead of <code>http-equiv</code>
        attribute.</p>
        <p>Values <code>Expires</code>, <code>Pragma</code>,
        and <code>Cache-Control</code> are not allowed;
        use <em>real</em> HTTP header fields for cache control.</p></dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="enumerated:invalid:http-equiv:content-type"
    class="attribute-value-error">
  <d:message xml:lang="en">Character encoding declaration syntax
  <code class="html bad example">&lt;meta http-equiv="Content-Type" content="text/html; charset=<var>charset-name</var>"></code>
  is obsolete.</d:message>
  <d:desc xml:lang="en">
    <p>Old long character encoding declaration syntax
    <code class="html bad example">&lt;meta http-equiv="Content-Type" content="text/html; charset=<var>charset-name</var>"></code>
    is in use.  The document is non‐conforming.</p>

    <p>The new character encoding declaration syntax is:
      <pre class="html example"><code>&lt;meta charset="<var>charset-name</var>"></code></pre>
    </p>
  </d:desc>
</d:item>

<d:item name="duplicate ID"
    class="attribute-value-error">
  <d:message xml:lang="en">This identifier has already been
  assigned to another element.</d:message>
  <!-- @@ <id=a xml:id=a>? -->
</d:item>

<d:item name="link type:bad context"
    class="attribute-value-error">
  <d:message xml:lang="en">The link type <code><var>$0</var></code>
  cannot be specified for this element.</d:message>
  <d:desc xml:lang="en">
    <p>The specified link type cannot be used for the element.
    The document is non-conforming.</p>

    <p>Link types are associated with limited set of elements.
    They cannot be used with other elements.</p>

    <p>For example, link type <code>bookmark</code>
    can be used with <code>a</code> or <code>area</code> element,
    while it cannot be used with <code>link</code> element.</p>
  </d:desc>
</d:item>

<d:item name="link type:non-conforming"
    class="attribute-value-error">
  <d:message xml:lang="en">The link type <code><var>$0</var></code>
  is non-conforming.</d:message>
  <d:desc xml:lang="en">
    <p>The specified link type is non-conforming, and therefore
    the document is non-conforming.</p>

    <dl class="switch">
    <dt>Link type <code>contents</code></dt>
      <dd>Use link type <code>index</code>.</dd>
    <dt>Link type <code>copyright</code></dt>
      <dd>Use link type <code>license</code>.</dd>
    <dt>Link type <code>home</code></dt>
      <dd>Use link type <code>index</code>.</dd>
    <dt>Link type <code>previous</code></dt>
      <dd>Use link type <code>prev</code>.</dd>
    <dt>Link type <code>start</code></dt>
      <dd>Use link type <code>first</code>.</dd>
    <dt>Link type <code>toc</code> or <code>top</code></dt>
      <dd>Use link type <code>index</code>.</dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="mismatched charset name" class="attribute-value-error"
    level="m">
  <d:message xml:lang="en">Character encoding name <code><var>$1</var></code>
  is different from document character encoding
  <code><var>$0</var></code>.</d:message>
  <d:desc xml:lang="en">
    <p>The specified character encoding name is different from
    the character encoding of the document.  The document
    is non‐conforming.</p>
  </d:desc>
</d:item> 

<d:item name="reserved browsing context name"
    class="attribute-value-error">
  <d:message xml:lang="en">Browsing context name 
  <code><var>{@}</var></code> is reserved.</d:message>
  <d:desc xml:lang="en">
    <p>The specified browsing context name is reserved.
    The document is non-conforming.</p>

    <p>Names of browsing contexts starting with <code>_</code>
    (<code>U+005F</code> <code class="charname">LOW LINE</code>)
    are reserved so that it must not be used.</p>

    <p>Old version of HTML, non-HTML markup languages, and
    Web browsers define or implements special reserved
    browsing context names <code>_blank</code>,
    <code>_main</code>, and <code>_replace</code>.
    However, they are <em>not</em> conforming attribute values.</p>
  </d:desc>
</d:item>

</section>

<section id="attribute-value-warnings">
<h2>Attribute Value Warnings</h2>

<d:item name="link type:proposed" level="s"
    class="attribute-value-warning should">
  <d:message xml:lang="en">Link type <code><var>$0</var></code>
  is proposed but not accepted yet; it <em>should not</em> be
  used until it has been accepted.</d:message>
  <d:desc>
    <p>The link type is in the <i>proposed</i> status; it
    <em>should not</em> be used until it has been
    accepted.</p>

    <p><strong>Warning</strong>: The data served to the
    conforming checker might be out of date; it might have already
    been accepted or rejected.  The document might or might not be
    conforming depending on the status.  See WHATWG Wiki
    for the latest information.</p>
  </d:desc>
</d:item>

</section>

<section id="table-model-errors">
<h2>Table Model Errors</h2>

<d:item name="table:colspan creates column with no anchored cell"
    class="table-model-error">
  <d:message xml:lang="en">This <code>colspan</code> attribute
  results in creating a table column that does not contain
  any cell anchored to it.</d:message>
</d:item>

<d:item name="table:no cell in last row"
    class="table-model-error">
  <d:message xml:lang="en">The table has no cell (<code>td</code> or
  <code>th</code>) in the last row.</d:message>
</d:item>

<d:item name="table:rowspan extends table"
    class="table-model-error">
  <d:message xml:lang="en">This <code>rowspan</code> attribute
  results in creating a table row that does not contain
  any cell anchored to it.</d:message>
  <d:desc xml:lang="en">
    <p>The <code>rowspan</code> attribute value of the cell
    is so specified that it extends a table in the row axis.
    However, the extended row does not contain any cell by itself.
    The document is non-conforming.</p>

    <p>For example, the table below is non-conforming:
      <pre class="html bad example"><code>&lt;table>
&lt;tbody>
&lt;tr>&lt;td rowspan=2>&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table></code></pre>
    ... since the second row contains only
    a cell that spans between first and second rows.</p>
  </d:desc>
</d:item>

</section>

<section id="imt-warnings">
<h2>Internet Media Type Warnings</h2>

<d:item name="IMT:obsolete subtype"
    class="should" level="s">
  <d:message xml:lang="en"><code><var>{@}</var></code>: An <em>obsolete</em>
  subtype is used.</d:message>
  <d:item xml:lang="en">
    <p>The specified Internet Media Type is registered with status
    of <i>OBSOLETE</i>.</p><!-- @@ SHOULD NOT? -->
    
    <dl class="swtich">
    <dt>Media type <code>text/ecmascript</code></dt>
      <dd>Media type <code>text/ecmascript</code> is obsoleted in
      favor of <code>application/ecmascript</code>.  Note that
      <code>text/javascript</code> would be better alternative
      for many cases.</dd>
    <dt>Media type <code>text/javascript</code></dt>
      <dd>Media type <code>text/javascript</code> is obsoleted by 
      <abbr>IETF</abbr> with backward incompatible alternate
      <code>application/javascript</code> for architectural 
      purity.<!-- @@ ref? -->  Realist may ignore this warning.</dd>
    </dl>
  </d:item>
</d:item>

<d:item name="IMT:private subtype"
    class="should" level="s">
  <d:message xml:lang="en"><code><var>{@}</var></code>: A private
  (<code>x-</code> or <code>x.</code>) subtype is used.</d:message>
</d:item>

<d:item name="IMT:unregistered subtype"
    class="should" level="s">
  <d:message xml:lang="en"><code><var>{@}</var></code>: The subtype is
  not registered to IANA.</d:message>
<!-- TODO: Unknown message?? -->
</d:item>

</section>

<section id="uri-errors">
<h2>URI (or IRI) Errors</h2>

<d:item name="URI::syntax error"
    class="must" level="m">
  <d:message xml:lang="en">The specified value is syntactically not an IRI
  reference.</d:message>
  <d:desc xml:lang="en">
    <p>The specified value does not satisfy the syntactical requirements
    for IRI references.  The document is non-conforming.</p>

    <p>Possible causes:
      <ul>
      <li>The string might contain one or more white space characters.
      Especially, the <code> </code> (<code>U+0020</code>
      <code class="charname">SPACE</code>) character cannot be
      used in IRI references.</li>
      </ul>
    </p>
  </d:desc>
</d:item>

</section>

<section id="uri-shoulds">
<h2>URI (or IRI) Should-level Errors</h2>

<d:item name="URI::dot-segment"
    class="should" level="s">
  <d:message xml:lang="en">A dot-segment (<code>.</code> or
  <code>..</code>) occurs in an absolute reference.</d:message>
  <d:desc>
    <p>Dot-segment (<code>.</code> or <code>..</code>) should
    not occur in an absolute reference.</p>

    <p>In relative references, dot-segments are used to represent
    the current (<code>.</code>) or the parent (<code>..</code>) 
    hierarchy of the path.  Though they are also allowed
    in absolute references, it should be resolved to the
    canonical form before it has been published.</p>
  </d:desc>
</d:item>

<d:item name="URI::empty path"
    class="should" level="s">
  <d:message xml:lang="en">This IRI does not end with
  a <code>/</code>.</d:message>
  <d:item xml:lang="en">
    <p>The IRI does not end with a <code>/</code>.  If there is an
    authority component in an IRI, a <code>/</code> should be present
    instead of empty path component.</p>

    <p>For example, <code>http://www.example.com<strong>/</strong></code>
    is preferred to <code>http://www.example.com</code>.</p>
  </d:item>
</d:item>

<d:item name="URI::lowercase hexadecimal digit"
    class="should" level="s">
  <d:message xml:lang="en">A lowercase hexadecimal digit is used
  in percent-encoding.</d:message>
  <d:desc xml:lang="en">
    <p>The hexadecimal digit in percent-encoding string in the IRI
    is in lowercase.  Though the IRI <em>is</em> conforming,
    it should be in uppercase.</p>
  </d:desc>
</d:item>

<d:item name="URI::percent-encoded unreserved"
    class="should" level="s">
  <d:message xml:lang="en">An unreserved character is 
  percent-encoded.</d:message>
  <d:desc xml:lang="en">
    <p>An unreserved character is percent-encoded in the IRI.
    Though it <em>is</em> conforming, it should be in the 
    decoded (or bare) form.</p>
  </d:desc>
</d:item>

<d:item name="URI::uppercase scheme name"
    class="should" level="s">
  <d:message xml:lang="en">URI scheme name is in uppercase.</d:message>
  <d:desc xml:lang="en">
    <p>The scheme part of the IRI is written in uppercase letter.</p>

    <p>Uppercase scheme names are not required to be processed
    correctly.</p>
<!-- @@
 RFC 3986 3.1.
 > Although schemes are case-
   insensitive, the canonical form is lowercase and documents that
   specify schemes must do so with lowercase letters.
 
 > An implementation ... should only produce lowercase scheme names for
   consistency.
-->
  </d:desc>
</d:item>

</section>

<section id="cache-manifest-errors">
<h2>Cache Manifest Errors</h2>

<d:item name="not manifest" class="must" level="m">
  <d:message xml:lang="en">This document is not a cache manifest.</d:message>
  <d:desc xml:lang="en">
    <p>The specified document is <em>not</em> a cache manifest.
    The document is non-conforming.</p>

    <p>An entity labeled as Internet media type 
    <code>text/cache-manifest</code> must contain a cache manifest.</p>

    <p>A cache manifest must start with a line whose content is 
    <code class="manifest example">CACHE MANIFEST</code>
    (exactly one space character between
    <code>CACHE</code> and <code>MANIFEST</code>).</p>
  </d:desc>
</d:item>
</section>

<section id="information">
<h2>Stability Information</h2>

<d:item name="status:cr:element" class="level-i" level="i">
  <d:message xml:lang="en">This element is in the
  <strong>call for implementation</strong> stage.</d:message>
  <d:desc xml:lang="en">
    <p>The element is in the call for implementation stage.</p>
    
    <p>Usually, using the element is safe.  However, it is a new feature
    so that it might not be implemented correctly.  If it is found that
    the feature is hard or impossible to implement, the feature
    might be revised, or in some case it might be dropped.</p>

    <p>Elements defined by Atom 1.0 (IETF Proposed Standard), and XBL 2.0
    (W3C Candidate Recommendation) belong to this class.</p>
  </d:desc>
</d:item>

<d:item name="status:lc:element" class="level-i" level="i">
  <d:message xml:lang="en">This element is in the <strong>last
  call for comments</strong> stage.</d:message>
  <d:desc xml:lang="en">
    <p>The element is in the last call for comments stage.</p>
    
    <p>The element is relatively mature, though the standardization
    is not done yet.  It may be used for experiments.  Since it is a new
    feature, it might not be implemented correctly or at all.  If it is
    found that the feature is hard or impossible to implement, the feature
    might be revised or might be dropped.</p>

    <p>Elements defined by Web Forms 2.0 as well as some elements
    defined by HTML5 belong to this class.</p>
  </d:desc>
</d:item>

<d:item name="status:wd:element" class="level-i" level="i">
  <d:message xml:lang="en">This element is documented in a <strong>working
  draft</strong>.</d:message>
  <d:desc xml:lang="en">
    <p>The element is documented in a working or editor's draft
    and not yet completed.</p>
    
    <p>The element should not be used for any practical purpose.
    The feature might be drastically changed later or might be
    entirely removed.</p>

    <p>Most of new elements defined by HTML5 belong to this class.</p>
  </d:desc>
</d:item>

<d:item name="status:non-standard:element" class="level-i" level="i">
  <d:message xml:lang="en">This element is <strong>not part of any
  standard</strong> the conformance checker knows.</d:message>
  <d:desc xml:lang="en">
    <p>The element is not part of any standard or draft the conformance
    checker is aware of.</p>
    
    <p>The element should not be used for any practical purpose unless
    there is really a standard that defines the element.</p>
  </d:desc>
</d:item>
</section>

<section id="unsupported-messages">
<h2><i>Unsupported</i> Messages</h2>

<d:item name="element"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Conformance checking for element
  <code><var>{local-name}</var></code> is not supported; <em>it might or
  might not be conforming</em>.</d:message>
  <d:desc xml:lang="en">
    <p>The conformant checker does not support the element.
    It cannot determine whether the document is conforming or not.</p>
  </d:desc>
</d:item>

<d:item name="attribute"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Conformance checking for attribute
  <code><var>{local-name}</var></code> of element 
  <code><var>{element-local-name}</var></code> is not supported;
  <em>it might or might not be conforming</em>.</d:message>
  <d:desc xml:lang="en">
    <p>The conformant checker does not support the attribute.
    It cannot determine whether the document is conforming or not.</p>
  </d:desc>
</d:item>

<d:item name="link type"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Link type <code><var>$0</var></code> is not
  standardized or registered at the time of the release of the conformance
  checker; <em>it is non-conforming unless it now has been
  registered</em>.</d:message>
  <d:desc xml:lang="en">
    <p>The <code>rel</code> attribute is defined as a list of link types.
    Some common link types are defined in the HTML5 specification.
    Additional link types can be registered to the WHATWG Wiki.
    use of any other link type is non-conforming.</p>

    <p>The specified link type is not part of the standard or registry
    when the database used by the conformance cheker is created.
    The link type might have been added to the registry since then.
    In such case it might be conforming.  Otherwise, the
    document is non-conforming.</p>

    <dl>
    <dt>Link types <code>shortcut icon</code></dt>
        <dd>Link type <code>shortcut</code> is not registered.
        Use only <code>icon</code> for linking to so-called favicon.</dd>
    </dl>
  </d:desc>
</d:item>

<d:item name="event handler"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Conformance checking for event handler attribute
  is not supported; <em>it might or might not be conforming.</em></d:message>
</d:item>

<d:item name="media query"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Conformance checking for media query
  is not supported; <em>it might or might not be conforming.</em></d:message>
</d:item>

<d:item name="script"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Conformance checking for script
  language <code><var>$0</var></code> is not supported;
  <em>it might or might not be conforming.</em></d:message>
</d:item>

<d:item name="style"
    class="unsupported" level="unsupported">
  <d:message xml:lang="en">Conformance checking for style
  language <code><var>$0</var></code> is not supported;
  <em>it might or might not be conforming.</em></d:message>
</d:item>

</section>

<d:catalog>
manakaiCompatMode:quirks;;Quirks Mode
manakaiCompatMode:limited quirks;;Limited Quirks Mode
manakaiCompatMode:no quirks;;No Quirks Mode

manakaiIsHTML:1;;HTML Document
manakaiIsHTML:0;;XML Document
</d:catalog>

<section id="levels">
<h2>Error Levels</h2>

<table id="levels-table">
<thead>
<tr><th scope="col">Level</th>
<th scope="col">Conforming?</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr id="level-m" class="level-m">
<th scope="row"><em class="rfc2119">MUST</em>‐level error</th>
<td>Non‐conforming.</td>
<td>A violation to a hard requirement of the specification.
The document is non‐conforming.</td>
</tr>
<tr id="level-s" class="level-s">
<th scope="row"><em class="rfc2119">SHOULD</em>‐level error</th>
<td>Non‐conforming, but <em>in some case</em>
conforming.</td>
<td>A violation to a requirement of the specification.
The violation might be legitimize in some case.  Otherwise,
the document is non‐conforming.</td>
</tr>
<tr id="level-w" class="level-w">
<th scope="row">Warning</th>
<td>Conforming.</td>
<td>A warning is an advice from the conformance checker to avoid
to solve a problem in a confusing or possibly wrong way.
It does not affect to the conformance of the document, and
may sometimes be inappropriate.</td>
</tr>
<tr id="level-i" class="level-i">
<th scope="row">Information</th>
<td>Conforming.</td>
<td>An informational message just provides an additional information
on the feature used in the document or the status of the retrieval
or so on.
It does not affect to the conformance of the document.</td>
</tr>
<tr id="level-u" class="level-u">
<th scope="row">Not supported</th>
<td><em>Unknown</em>.</td>
<td>Some feature that is not supported by the conformance checker
is used in the document.</td>
</tr>
</tbody>
</table>
</section>

<section id="license">
<h2>License of This Document</h2>

<p>Copyright <time>2007</time>‐<time>2008</time>
<a href="http://suika.fam.cx/~wakaba/who?" rel="author" xml:lang="ja">Wakaba</a>
<code class="mail">&lt;<a href="mailto:w@suika.fam.cx">w@suika.fam.cx</a>></code>.</p>

<p>This document is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.</p>
</section>

<!-- $Date: 2008/03/21 08:59:47 $ -->
</body>
</html>