I'm writing a Nuget Package (which I'll post as Open Source to Github once it's done) that implements xml canonicalization using the Canonical XML Version 2.0 (c14n2) spec. I've also been using Test cases for Canonical XML 2.0 test data to write unit tests for my application.
I found what I believe to be an error in one of the test cases for the scenario of re-writing prefixes during canonicalization. The expected value results in invalid xml. The test case is for 3.2 Default namespace declarations.
Here is the original xml to be canonicalized:
<foo xmlns:a="http://a" xmlns:b="http://b">
<b:bar b:att1="val" att2="val"/>
</foo>
After applying prefix rewriting, the expected xml for the "After c14n with PrefixRewrite" test case is the xml below (which is invalid xml since you cannot have a qualified namespace with an empty uri):
<n0:foo xmlns:n0="">
<n1:bar xmlns:n1="http://b" att2="val" n1:att1="val"></n1:bar>
</n0:foo>
I sent an email to the W3C public-xmlsec mailing list ([email protected]), but haven't been able to reach anyone so far. Is anyone familiar with the spec or have any ideas on a technical solution?