- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Wed, 25 Nov 2009 14:29:14 +0100
- To: Toby Inkster <tai@g5n.co.uk>
- Cc: "public-html@w3.org" <public-html@w3.org>
On Wed, 25 Nov 2009 09:33:02 +0000, Toby Inkster wrote:
> How about this - I think it allows people wanting to use namespaced
> content in HTML a great deal of flexibility, yet without making things
> too complicated for parsers.
>
> 1. In the HTML serialisation, xmlns:* attributes may be used to declare
> any namespaces. The default xmlns attribute cannot be bound to anything
> other than the HTML namespace.
Do you mean the last sentence as a syntactic rule only? Or or are you
talking about the single instance when it has any effect declaring a
default namespace?
In the latter case, are you saying that, inside foreign content, one
may declare the default HTML namespace and expect that it takes effect?
If so, then I think we instead we could consider using a default prefix
for HTML - such as "htm:" - see further down below.
If you meant the former, the syntax, then you forgot to express why/how
it is permitted to declare the default namespace inside the
out-of-the-box foreign-namespaces such as <svg>.
> 2. The namespace URIs which HTML supports "out of the box" (e.g. SVG,
> XML, HTML itself) do not have to be declared, and may not be declared
> using any prefix other than their standard prefix as specified by the
> HTML syntax spec.
"Do not have to be declared". But may be declared, I suppose. See above.
> Those standard prefixes cannot be used with other
> namespace URIs. There is precedent for such a rule - in XML, the prefix
> 'xml' and namespace URI 'http://www.w3.org/XML/1998/namespace' may only
> be bound to each other. Such non-conformant namespace declarations would
> be ignored.
Likewise: the very "xmlns:" prefix itself can only be bound to the
namespace "http://www.w3.org/2000/xmlns/". (Further more, the xmlns
"must not be declared".) [1]
> 3. Namespaced attributes (foo:bar="baz") are conformant, but validators
> *may* issue warnings about them.
>
> 4. Within so-called foreign content (e.g. SVG), namespaced elements are
> conformant, but validators *may* issue warnings about them. Elsewhere,
> namespaced elements are non-conformant. Namespaced elements are parsed
> the same way any other unknown elements are.
How does one place HTML content "within socalled foreign content"?
By declaring a default HTML namespace? Or by using a predefined HTML
namespace prefix? Or both ways? Should there not be a default prefix -
such as "html:" or "htm:" - for HTML itself? E.g. so that one could do
for example <html:table> or <htm:table> within foreign content?
And what about the use of the HTML prefix inside "native" content?
(Both on attributes and on elements.)
One reason I ask is that e.g for the <caption> element, if it was
permitted to do <htm:caption>, then it would actually work outside
<table> ... Thus, inside native HTML, one option could be to permit the
"HTM:" prefix only on certain elements, specifically for the purpose of
dealing with legacy parsing of the un-prefixed version.
Hence, text/HTML Web user agents would be required to support selecting
<htm:caption> via the CSS rule caption{} (but also required to not
apply _all_ the legacy parsing to to the prefixed canvas element).
While legacy user agents would - in CSS - select <htm:caption> using
htm\:caption{}.
This means that "htm" as a prefix would be reserved, which has a
precedent in the XML namespace specification: [2]
]]
All other prefixes beginning with the three-letter sequence x, m, l, in
any case combination, are reserved. This means that:
* users should not use them except as defined by later specifications
* processors must not treat them as fatal errors.
[[
> 5. People wishing to use namespaced elements outside foreign content are
> instead advised to use CURIE values within @role. It may be useful for
> browsers to expose the contents of @role as an array in the DOM with
> CURIE prefixes already expanded out.
Intriguing.
> 6. Namespace-aware DOM functions (getAttributeNS, etc) should work.
>
> I can't imagine there's very much existing content in the wild that
> would break under these rules. The aforementioned example of Creative
> Commons licenses within SVG would work and be considered conformant; the
> Google Jotspot example would work but be considered non-conformant.
Thanks for a very clear proposal. I have to say that this compromise is
what appeals to me the most, so far. I hope, after some debate of
course, you will file it as a proposal in the Bugzilla.
[1] http://www.w3.org/TR/REC-xml-names/#xmlReserved
[2] http://www.w3.org/TR/REC-xml-names/#xmlReserved
--
leif halvard silli
Received on Wednesday, 25 November 2009 13:29:49 UTC