Is HTML5 valid XML?

No. Counter-examples:

These are valid HTML5 but invalid XHTML5:

  1. Some closing tags can be omitted:

    <p>First
    <p>Second
    

    See: P-end-tag (</p>) is not needed in HTML

  2. script escape magic:

    <script><a></script>
    

    See: What is CDATA in HTML?

  3. Attributes without values (boolean attributes):

    <input type="text" disabled />
    

    See: Correct value for disabled attribute

  4. Attributes without quotes, e.g.:

    <div data-a=b></div>
    

    See: In XHTML 1.0 Strict do attribute values need to be surrounded with quotes?

  5. Implicit open elements and multiple top level elements.

    Some HTML elements are created implicitly. E.g. html. This allows the HTML to have “multiple top level elements”:

    <!doctype html><title>a</title><p>a</p>
    

    See: Is it necessary to write HEAD, BODY and HTML tags?

Valid XHTML that is invalid HTML:

  1. CDATA constructs with invalid tags inside

  2. ENTITY and other exclamation mark constructs, which allow for billion laughs: How does the billion laughs XML DoS attack work?

Valid HTML and XHTML but with different meanings:

  1. HTML has hundreds of named character references (e.g. &pound;, &copy;), XML has only 5 (quot, amp, apos, lt, gt).

Leave a Comment