Re: ISSUE-41/ACTION-97 decentralized-extensibility

Maciej Stachowiak wrote:
>> I'm referring to the algorithm that ways mentioned multiple times in 
>> RDFa threads: visit all parents, and check for all attributes where 
>> the local name is "xmlns", or starts with "xmlns:". Figure out 
>> namespace declarations from those.
> That algorithm is incorrect. Prefix bindings apply at parse time, not 
> lookup time.

Really? Pointer, please?

Personally, I really don't care. I'm interested in processing content as 
sent over the wire (you know, documents, not web applications), where 
scripts never execute.

> Here's a test case, using XML. What's the namespace of the <bar> element?
> <foo xmlns:bar="">
> <baz id="baz" />
> <xhtml:script xmlns:xhtml="">
> var newElement = document.createElement("bar:bar", 
> "");
> document.getElemebtById("baz").appendChild(newElement);
> </xhtml:script>
> </foo>

It depends on which API you use.

I'll be happy to answer this for a *document*, not a DOM tree after 
script execution.

> Your algorithm says "" but the correct answer is 
> "". This is not just "an edge case" - it will 
> apply any time the DOM has been mutated after parsing. It affects not 
> just element or attribute creation, but also moving chunks of the DOM 
> from one place to another with different namespace declarations in scope 
> (the namespace URIs shouldn't change for the moved content!) or to 
> adding or removing namespace declaration attributes.

Yes, that's a problem when you're stuck with a non-namespace aware API.

The best way to fix this is to make sure that UAs all implement 
namespace-aware APIs, and that they behave the same for XML and HTML 
content. I believe that's something this WG should do, instead of 
claiming that compatibility with broken web content prevents us from 
doing that.

> Thus, your algorithm for finding the namespace URI of an element using 
> DOM Level 1 APIs may be well-defined but it is incorrect.

See above.

BR, Julian

Received on Thursday, 1 October 2009 21:47:34 UTC