I found something interesting.  Doesn't look like w3c agrees with me 
about nodes inheriting namespace changes.

http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/namespaces-algorithms.html#conflicting

--Evan




Evan Kirkconnell wrote:
> I complete disagree and believe that there a big misinterpretations 
> here leading to poor implementation and massive confusion.
>
> The misinterpretation that I've seen stated in many places and by 
> Richard Eckart earlier in this thread is:
>
> XPath statement operates on the default namespace (xmlns="")
>
>
> From the XML 1.0 spec, I find this statement to be completely wrong.  
> There is no such thing as "The default namespace" in a global sense.  
> Default namespace as a term, is clearly a matter of inheritance, and I 
> don't see how anyone could argue otherwise after reading the bit about 
> default namespace from the XML 1.0 spec.( 
> http://www.w3.org/TR/REC-xml-names/#defaulting )  The simplest support 
> of my interpretation is the statement in the spec: "The attribute 
> value in a default namespace declaration /MAY/ be empty. This has the 
> same effect, within the scope of the declaration, of there being no 
> default namespace."
>
> I believe the implementation error is that elements that are using a 
> default namespace are being assigned a namespace rather than being 
> setup to inherit them.  From the spec, the example for setting the 
> empty namespace as the default namespace is:
>
> <?xml version='1.0'?>
> <Beers>
>  <!-- the default namespace inside tables is that of HTML -->
>  <table xmlns='http://www.w3.org/1999/xhtml'>
>   <th><td>Name</td><td>Origin</td><td>Description</td></th>
>   <tr>     <!-- no default namespace inside table cells -->
>     <td><brandName xmlns="">Huntsman</brandName></td>
>     <td><origin xmlns="">Bath, UK</origin></td>
>     <td>
>       <details xmlns=""><class>Bitter</class><hop>Fuggles</hop>
>         <pro>Wonderful hop, light alcohol, good summer beer</pro>
>         <con>Fragile; excessive variance pub to pub</con>
>         </details>
>        </td>
>      </tr>
>    </table>
>  </Beers>
>
> So, logically <details xmlns="" is applying the default namespace for 
> its children.  Therefore, its children should be dependent on it 
> supplying this default namespace.  If it were to no longer supply this 
> default namespace, then the children would logically default to the 
> xhtml namespace.  Also, if you were to take this XML document and 
> change <details xmlns=""> to <details xmlns="urn:blah.com:blah"> and 
> reparse the document then of course the children are now in the new 
> default namespace.  I am of the opinion that if you were to 
> programatically change the namespace on this nodes, that it's 
> completely logical that you'd have the same end result and that the 
> descendant nodes would inherit the new namespace.
>
> I also believe that the Jaxen has made the same misinterpretation 
> which led to the implementation assuming the empty namespace when no 
> namespace is specified.  As much as I wish the XPath docs stated what 
> the default namespace for XPath processing should be, I haven't found 
> anything.  I still believe, however, that there is more merit and 
> logic in using the context node's namespace rather than the empty 
> namespace, and that there is no specification backing for using the 
> empty namespace as the default namespace.
>
> In regard to me disagreeing with Edwin's statement that attributes 
> must be specifically declared in a namespace.  I'd quote the XML spec 
> in saying, "Default namespace declarations do not apply directly to 
> attribute names; the interpretation of unprefixed attributes is 
> determined by the element on which they appear."  My interpretation of 
> this is that default namespaces don't apply DIRECTLY to, but they can 
> apply indirectly to attributes.  The attribute has the same namespace 
> as the element unless specified otherwise, and there's no reason that 
> the element couldn't be using the default namespace in scope.  In 
> regard to the quote, I believe that "The namespace name for an 
> unprefixed attribute name always has no value."  does not imply that 
> the attribute has no namespace, but that it has no "namespace name" 
> which I believe must have different meaning.
>
> --Evan
>
>
>
> Edwin Dankert wrote:
>> Attributes always need to be specifically declared in a namespace.
>>
>> "If there is a default namespace declaration in scope, the expanded
>> name corresponding to an unprefixed element name has the URI of the
>> default namespace as its namespace name. If there is no default
>> namespace declaration in scope, the namespace name has no value. The
>> namespace name for an unprefixed attribute name always has no value.
>> In all cases, the local name is local part (which is of course the
>> same as the unprefixed name itself)."
>>
>> http://www.w3.org/TR/REC-xml-names/#defaulting
>>
>> Regards,
>> Edwin
>>   
>
>


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
dom4j-user mailing list
dom4j-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dom4j-user

Reply via email to