OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   C14n namespaces

[ Lists Home | Date Index | Thread Index ]

So, I'm trying to fix up Genx to do the right thing with namespace 
declarations with respect to C14n.  The summary says "Superfluous 
namespace declarations are removed from each element" which I had 
naively taken to mean that if you saw

<a xmlns:foo="a:b" xmlns:bar="c:d"><foo:x/><y/></a>

You'd rewrite that as

<a> <foo:x xmlns:foo="a:b"></foo:x> <y></y> </a>

Removing the declaration of foo: from the root because it's 
*superfluous* there, and removing the declaration of bar: entirely 
because it's superfluous in the whole document.  This is what Genx 
currently does.  Sigh.

I leapt to this conclusion because, since non-editor applications don't 
care about namespace declarations, the two forms above are effectively 
identical for the purposes of nearly all applications, and the second 
form is easily computed stream-wise given any XML as input.

On closer reading, I now think that you'd rewrite that as

<a xmlns:foo="a:b" xmlns:bar="c:d"><foo:x></foo:x><y></y></a>, i.e. 
just putting in the end-tags.

Per this understanding, per Canonical XML, the following two XML docs 
are distinct:

<x xmlns:foo="a:b"/>
<x xmlns:bar="c:d"/>

Which seems like complete craziness to me... except for I guess you 
have to do this because there may be some qnames lurking in the 
content; precisely the problem that Simon Fell ran across.

Unless someone tells me I'm wrong, I'm off to significantly simplify 
Genx. -Tim


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS