C14N: default namespace local name and sorting order

Hello All!

I would like to clarfiy the question with the default namespace local 
name in
C14N specificaion. The section 2.2 says (third bullet) that default 
namespace
node xmlns="..." has an no (empty?) local name:

    An element's namespace nodes are sorted lexicographically by local name
    (the default namespace node, if one exists, has no local name and is 
therefore
    lexicographically least).

And in the same time, section 3.2 ("Namespace Nodes" bullet) states that 
default
namespace has local name "xmlns":

    Otherwise, process the namespace node */N/* in the same way as an 
attribute node,
    except assign the local name |xmlns| to the default namespace node 
if it exists (in
    XPath, the default namespace node has an empty URI and local name).

Since the local names are used for namespace nodes sorting, this creates 
an interop
issue because the namespaces nodes order would be different if default 
namespace
node has empty or "xmlns" local name. And actually this issue was raised 
as an
interop problem between XML Security Library and Python:

    http://mail.python.org/pipermail/xml-sig/2003-September/009879.html

Please note, that all examples in C14N specification (see element <e5/> 
in example 3.3
and element <e1/> in exmaple 3.7) and all interop tests for C14N itself 
and XMLDSig
assume that default namespace node has an empty local name. Thus I also 
assume that
this is the correct reading of the spec. Probably it would be a good 
idea to make a note
about this issue in errata and may be clarify section 3.2.


With best regards,

Aleksey Sanin
XML Security Library    http://www.aleksey.com/xmlsec

Received on Wednesday, 1 October 2003 00:15:51 UTC