[jdom-interest] Namespace Collision exception when adding an additional namespace

Bradley S. Huffman hip at a.cs.okstate.edu
Mon May 16 09:19:48 PDT 2005


"PJ Fanning" writes:

> I got an exception when I executed code along the lines of the following:
> 
> 	Namespace ns1 = Namespace.getNamespace("aaa", "http://acme.com/aaa");
> 	Element e = new Element("aaa", ns1);
> 	e.setAttribute("att1", "att1");
> 	Namespace defns = Namespace.getNamespace("http://acme.com/default");
> 	e.addNamespaceDeclaration(defns);
> 
> I want to declare an element that is in the 'aaa' namespace but that also dec
> lares a default namespace that is inherited by other elements. However, I get
>  this exception:

Child elements don't inherit namespaces from their parents in JDOM.
You have to explicitly place them in the desired namespace (as in 
new Element("bbb", defns)).

> org.jdom.IllegalAddException: The namespace xmlns="http://acme.com/default" c
> ould not be added as a namespace to "aaa:aaa": The namespace prefix "" collid
> es with an attribute namespace prefix on the element
> 
> I think that the code in the Verifier is incorrect. It seems to assume that a
> ttributes that have no explicit namespace are in the default namespace. This 
> is not my understanding of the XML spec.
> The code above works if I add the attribute after the additional namespace de
> claration.

Yep, it looks like a bug.

Brad


More information about the jdom-interest mailing list