Reputation: 957
I am confused. A co-worker turned me on to the possibility that tags ending in />
, such as <br />
can still be used in HTML5. I thought that only <br>
-style could be used. All of the "talk" across the Internet is about using the latter.
Could someone please explain this to me? This seems very confusing and poorly documented.
And this brings up another question: Is HTML 5 considered to be well-formed XML?
Upvotes: 53
Views: 35859
Reputation: 382762
No. Counter-examples:
These are valid HTML5 but invalid XHTML5:
Some closing tags can be omitted:
<p>First
<p>Second
script
escape magic:
<script><a></script>
Attributes without values (boolean attributes):
<input type="text" disabled />
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?
Implicit open elements and multiple top level tags.
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>
Valid XHTML that is invalid HTML:
Void elements with explicit closing tag:
<hr></hr>
CDATA
constructs with invalid tags inside
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:
£
, ©
), XML has only 5 (quot
, amp
, apos
, lt
, gt
).Upvotes: 56
Reputation: 96577
You can markup your page as valid HTML5 and XHTML5: http://www.w3.org/TR/html-polyglot/
Polyglot markup that meets a well defined set of constraints is interpreted as compatible, regardless of whether they are processed as HTML or as XHTML, per the HTML5 specification.
The basic document could look like:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title></title>
</head>
<body>
</body>
</html>
Of course you'd have to follow some additional rules (like not to use the noscript
element, for example), outlined in the linked working draft.
Upvotes: 11
Reputation: 88054
Under no condition should you expect any html document (regardless of version) to be "well-formed xml"
html != xml.
It is a different spec with different suggestions (I'm purposely avoiding the word "rules" here) on how it should be interpreted.
The HTML 5 spec has enough "do it this way, but it's okay if you don't" wiggle statements that it's a wonder that any of the browsers show the same thing at all.
Upvotes: 6
Reputation: 10489
HTML5 can be written with or without self-closing slashes; it is meant to be backwards-compatible with both HTML 4.01 and XHTML 1.0 code, so that it is easy to convert code into valid HTML5. There is an XML serialization called XHTML5, but for backwards-compatibility purposes with IE browsers, it is not recommended to be used. So technically, HTML5 is not considered to be well-formed XML.
Upvotes: 3
Reputation: 284796
There is an XML serialization of it, called XHTML5. Basically, you're free to use either HTML5 (HTML serialization) or XHTML5 (XML serialization). The draft spec says HTML5 "is the format suggested for most authors," mainly for the same reasons people recommend text/html
for XHTML 1.1.
Upvotes: 12