[whatwg] Custom elements and attributes

Henri Sivonen hsivonen at iki.fi
Mon Oct 23 04:43:40 PDT 2006

On Oct 18, 2006, at 01:27, Øistein E. Andersen wrote:

> I just tried to check out how custom element and attribute names  
> work in current browsers and how they are supposed to work in  
> HTML5, and some issues seem unclear to me.
> 4) Sivonen's HTML5 validator (http://hsivonen.iki.fi/validator/ 
> html5/ as opposed to http://hsivonen.iki.fi/validator/) says:
>> Attribute name must not start with “xml”.
> I fail to find any mention of this in the HTML5 draft. Has it been  
> borrowed from X(HT)ML?
> Such a limitation would make it more difficult to create conformant  
> legacy-comptaible documents.

Any attribute or element not specifically allowed in the spec is non- 
conforming. Therefore, all "custom attributes" and "custom elements"  
are non-conforming. Some non-conforming attributes are caught in the  
parser. Others are caught on the RELAX NG level. This is an  
implementation detail.

The implementation detail becomes an issue only if you want to use  
the conformance checker machinery with a custom schema. Using custom  
schemas with the HTML parser is for experts only and produces very  
wrong results unless the schema is suitable. Hence, I have not  
optimized for that use case.

Please note that the parser is not a conforming HTML5 parser but a  
special-purpose parser that is designed to work together with  
particular RELAX NG schemas for the specific purpose of conformance  

> 5) The same validator does not allow : or ô in either element or  
> attribute names, whereas the current HTML5 draft seems to allow all  
> Unicode characters except whitespace, <, >, = and /. Would someone  
> please clarify this?

*Conforming* element names and attributes happen to consist of ASCII- 
only name tokens without a colon. As an implementation detail, names  
that do not have such a form are caught early by the special-purpose  

This is done in order to
  1) prevent colonified names from entering into the namespace-aware  
SAX pipeline
  2) deal with case folding efficiently and in a way that prevents  
accidentally folding e.g. İNPUT to input
  3) prevent names that are not well-formed XML names from entering  
into the SAX pipeline

> 6) According to the current draft, authors seem to have the  
> possibility to use custom element and attribute names of their choice.

Could you please cite the part of the spec that says so?

Such usage wasn't *conforming* when I last checked (a few months  
ago). Has the spec changed in a dramatic way when I wasn't looking?  
Note that not everything that results in a DOM according to the  
parsing algorithm is conforming.

The conformance checker is foremost for checking conformance.  
Supporting custom schemas for privately extended HTML5-like languages  
is a nice feature to have, but personally I am not at all sympathetic  
to extending HTML5 with names that contain non-ASCII (due to case  
folding issues), non-XML characters (due to XML serializability  
issues) or the colon (due to Namespaces in XML compatibility issues).

Henri Sivonen
hsivonen at iki.fi

More information about the whatwg mailing list