I'm having problems finding out what the valid characters are for an HTML tag.
In this (Is the at-sign (@) a valid HTML/XML tag character?) answer it says:
After another look at the XML Specification:
A tag consists of:
'<' Name (S Attribute)* S? '>' A Name consists of:
NameStartChar (NameChar)* A NameStartChar consists of:
":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] A NameChar consists of:
NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] The @ sign is U+0040
So the @ sign is not valid in a NameChar or a NameStartChar, and thus not valid in a Name.
But on the HTML syntax page (http://www.w3.org/TR/html-markup/syntax.html#tag-name) it only says:
Tag names are used within element start tags and end tags to give the element’s name. HTML elements all have names that only use characters in the range 0–9, a–z, and A–Z.
What are the valids characters in an HTML tag name? And are there differences between HTML4, XHTML and HTML5?