Polyglot markup

Polyglot markup is HTML that has been written to conform to both the HTML and XHTML specifications.[1] A polyglot document can therefore be parsed as either HTML (which is SGML-compatible) or XML, and will produce the same DOM structure either way. For example, in order for an HTML5 document to meet these criteria, the two requirements are that it must have an HTML5 doctype, and be written in well-formed XHTML.[2] The same document can then be served as either HTML or XHTML, depending on browser support and MIME type.

The required elements of a polyglot markup document are html, head, title, and body. The most basic possible polyglot markup document would therefore look like this:[1]

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
  <head>
    <title>The title element must not be empty.</title>
  </head>
  <body>
  </body>
</html>

In a polyglot markup document non-void elements (such as script, p, div) cannot be self-closing even if they are empty, as this is not valid XML.[3] For example, to add an empty textarea to a page, one can not use <textarea/>, but has to use <textarea></textarea> instead.

Key points for creating polyglot documents

References

External links