Raul Benito wrote:
Here it is the patch that I think fix your problem(if you don't know or is difficult to you to apply the patch ask me privately and I can provide you a compiled jar). It is not the deffenitive one(the attr casting are redundant for the HEAD tree) as I'm currently working with a different thing but it will work for you.
Shouldn't the xmlns="" mapping only be added if this mapping is in scope and the ancestor element declaring the mapping is not visible (and since NameSpaceSymbolTable always adds that mapping...). Also I'm not quite sure that I understand the "else if": CanonicalizerBase:canonicalizeXPathNodeSet seems to throw a exception if it finds a attribute node in the _xpathNodeSet which would lead me to assume that the node set would never contain the xmlns node?
Might also be that I am completely misunderstanding things. Canonicalization makes my brain hurt...
Regards,
Raul http://r-bg.com
Index: Canonicalizer20010315Excl.java
===================================================================
RCS file: /home/cvs/xml-security/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315Excl.java,v
retrieving revision 1.17
diff -u -r1.17 Canonicalizer20010315Excl.java
--- Canonicalizer20010315Excl.java 24 Sep 2004 20:54:29 -0000 1.17
+++ Canonicalizer20010315Excl.java 15 Nov 2004 20:22:50 -0000
@@ -165,7 +165,7 @@
Iterator it=visiblyUtilized.iterator();
while (it.hasNext()) {
String s=(String)it.next(); - Attr key=ns.getMapping(s);
+ Attr key=(Attr)ns.getMapping(s);
if (key==null) {
continue;
}
@@ -262,7 +262,7 @@
} }
}
- if (!xmlnsDef ) {
+ if (isOutputElement && !xmlnsDef ) {
ns.addMapping(XMLNS,"",nullNode);
}
@@ -282,7 +282,7 @@
Iterator it=visiblyUtilized.iterator();
while (it.hasNext()) {
String s=(String)it.next(); - Attr key=ns.getMapping(s);
+ Attr key=(Attr)ns.getMapping(s);
if (key==null) {
continue;
}
@@ -292,7 +292,7 @@
Iterator it=this._inclusiveNSSet.iterator();
while (it.hasNext()) {
String s=(String)it.next(); - Attr key=ns.getMappingWithoutRendered(s);
+ Attr key=(Attr)ns.getMappingWithoutRendered(s);
if (key==null) {
continue;
}
