Applying namespaces to unprefixed attribute names

I am confused about a particular aspect of XML namespaces as defined in 
the "Namespaces in XML" document and its errata.  Namely: I can't find 
anywhere in the spec (or errata) that explicitly explains how to treat 
unqualified attributes -- i.e., explaining how they get their namespace.

That is, given this:

   <Stuff  xmlns       ="urn:Pies"
           xmlns:cakes ="urn:Cakes"
   >
     <a       y="123/>
     <cakes:b z="123/>
   </Stuff>

I am looking for some part of the spec that explains what namespaces 
apply to "y" and "z".  I'm guessing that each of the two attributes gets 
its namespace from its element, so that y's namespace is a's namespace, 
which is "urn:Pies", and z's namespace is cakes:b's namespace, which is 
"urn:Cakes".  But this is just my guess.


The second example in section "A.3 Expanded Element Types and Attribute 
Names" seems, sort of, to hint that my guess is right, but it's unclear.

Section 5, "Applying Namespaces to Elements and Attributes" does clearly 
explain namespace application to elements of all kinds, but I see 
nothing comparable for attributes, specifically unqualified ones.

There is a sentence in section 5.2 saying "Note that default namespaces 
do not apply directly to attributes." -- but I see no statement as to 
what /does/ apply to attributes, and/or with what degree of indirection. 
  It's very apophatic.

Section "A.2 XML Namespace Partitions", insofar as I can even understand 
it, seems compatible with my guess, without actually confirming it in 
any terms I find intelligible.


Can you point me in the right direction?

Received on Wednesday, 2 November 2005 07:18:10 UTC