A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.

To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).

Validator.nu Useful Warning Requests: Difference between revisions

From WHATWG Wiki
Jump to navigation Jump to search
(Described more polyglot document requirements)
(→‎Polyglot Document Checking: Merged case sensitivity issues, mentioned legacy-compat DOCTYPE.)
Line 93: Line 93:
|  XHTML-compatible (and SVG+MathML)
|  XHTML-compatible (and SVG+MathML)
|-
|-
DOCTYPE Declaration
Case sensitivity
|  The DOCTYPE declaration is case sensitive in XHTML. Must be <code>&lt;!DOCTYPE html&gt;</code>
| All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications. The DOCTYPE declaration is case sensitive in XHTML. Must be <code>&lt;!DOCTYPE html&gt;</code> (or the legacy-compat version).
|
|
|  XHTML-compatible
|  XHTML-Compatible (and SVG+MathML)
|-
|-
!  Default Character Encoding
!  Default Character Encoding
Line 142: Line 142:
|  Explicitly include the <code>tbody</code> element.
|  Explicitly include the <code>tbody</code> element.
|  Strict Polyglot
|  Strict Polyglot
|-
!  Case sensitivity
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.
|
|  XHTML-Compatible (and SVG+MathML)
|-
|-
!  Character Entity References
!  Character Entity References

Revision as of 17:19, 4 September 2009

This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu. This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.

The following tables describe issues that a QA tool might provide options to warn about. None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.

Syntactic Issues

Title Description Notes
Quoted attributes Boolean option to require quoted attribute values for all attributes. XHTML-like syntactic convention commonly requested by authors. (request)
Minimised attributes Boolean option to require all boolean attributes to use the non minimised form. e.g. <input disabled="disabled"> instead of <input disabled> XHTML-like syntactic convention commonly requested by authors.
Trailing Slashes Options to either:
  1. Warn about unnecessary trailing slashes in void elements
  2. Require trailing slashes for in void elements
  3. None (default)
Some authors like to follow the XML convention, others prefer to always omit them, and others don't care that much. (request)
Optional </p> ahead of new structural element Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer
Optional End Tags Boolean option to require end tags for all non-void elements, which normally have optional end tags (request)
Optional Start Tags Options to require start tags for the elements 'html', 'head', 'body' and 'tbody'. XHTML-like convention, mostly applies to html, head and body. Some authors still choose to omit tbody, but like to always include the others.
Case sensitivity Boolean option to check tag names and attribute names for case sensitivity. HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.
Character Entity References Options to allow:
  1. The 5 predefined named entity references only (lt, gt, amp, quot, apos)
  2. HTML 4.01 entity references only
  3. XHTML 1.0 entity references only (request)
  4. All named entity references
Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don't support the additional entity references imported from MathML yet. Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.

Other Warnings

Title Description Notes
Untitled document Warn about the use of meaningless or empty titles. e.g. <title>Untitled document<title> (or similar) This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document. (request)
Unnecessary whitespace Warn about long stretches of unnecessary whitespace (request)

Polyglot Document Checking

There are 3 levels of polyglot documents that can be created.

Talismans Only
An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML. (This is not really a true polyglot document, but is included here for completeness)
XHTML Compatible
A valid HTML document that is also fully conforming XHTML. However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.
Strict Polyglot
A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.

Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.

The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.

Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements. In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.

Title Description Notes Polyglot Level Requirement
xmlns and xmlns:prefix attributes. The html root element needs to have an xmlns="http://www.w3.org/1999/xhtml" attribute. The svg and math elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink. In DOM implementations for XHTML, these attributes are in the http://www.w3.org/2000/xmlns/ namespace. In HTML, these are in no namespace. This issue is unavoidable. XHTML-compatible (and SVG+MathML)
Case sensitivity All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications. The DOCTYPE declaration is case sensitive in XHTML. Must be <!DOCTYPE html> (or the legacy-compat version). XHTML-Compatible (and SVG+MathML)
Default Character Encoding The default character encoding for text/html is UTF-8. For application/xhtml+xml (and other XML types), it is UTF-8. Use UTF-8 and declare this using: <meta charset="UTF-8">, or otherwise ensure the encoding is declared in the transport layer (HTTP Content-Type header). XHTML-compatible
The characters "]]>" in content The use of this sequence of characters is a well-formedness error in XHTML. XHTML-compatible
script and style element Content In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters < or & must be escaped as &lt; and &amp;, respectively. Scripts and stylesheets containing these characters should be linked externally instead. XHTML-compatible
Line feeds after start tags A line feed (LF) after the start tags for <pre> or <textarea> (or the non-conforming <listing> element) is ignored in HTML. Avoid using line feeds after these start tags Strict Polyglot
Quoted attributes Unquoted attributes are not allowed in XHTML. XHTML-compatible
Minimised attributes Minimised attributes (attributes without a value) cannot be used in XML. Used expanded form. e.g. disabled="" or disabled="disabled" XHTML-compatible
Trailing Slashes Void elements require explicit closing with trailing slashes. XHTML-compatible
Optional start- and end-tags Neither start- nor end-tags may be omitted. XHTML-compatible
The tbody Element In HTML, the tbody element will be implied automatically, but in XHTML, it is optional. Explicitly include the tbody element. Strict Polyglot
Character Entity References Without a DTD, only the 5 predefined entity references in XML may be used. The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.