[jdom-interest] bug in Element.getCopy ?

Jochen Strunk strunk at signal7.de
Fri Mar 2 07:55:09 PST 2001


>
>By your definition above, a default namespace is required for it to apply to
>child elements with matching prefixes or no prefixes so...
>
><element xmlns="http://foo">
>         <child1 />
>         <child2 />
><element>
>
>would fit your scenario but in the defaul case with the NO_NAMESPACE
>namespace
><element>
>         <child1 />
>         <child2 />
><element>
>
>has no default namespace so changing the namespace of <element> would not
>imply a change to the children, correct?
>
>What I would like is concrete examples so I can write tests to confirm what
>is supposed to be happening.

Hi Philip,

try the following example:

Element element = new Element("element", Namespace.getNamespace("http://foo"));
Element child1 = new Element("child1");
Element child2 = new Element("child2");

element.addContent(child1);
element.addContent(child2);

XMLOutputter op = new XMLOutputter("     ", true);
op.output(element, System.err);

It outputs:
<element xmlns="http://foo">
      <child1 xmlns="" />
      <child2 xmlns="" />
</element>

In my opinion this is incorrect, the correct output would be:
<element xmlns="http://foo">
      <child1 />
      <child2 />
</element>

child1 and child2 should be created in no namespace, as stated by the jdom 
api docs: "This will create an Element in no Namespace.". In that case, the 
default namespace applied to element (which is "http://foo") would 
automatically be applied to child1 and child2.
But child1 and child2 are created with a default namespace that is set to 
the empty string which is something completely different because it 
eliminates the default namespace of the parent and leads to the false output.

The namespace spec says:
The default namespace can be set to the empty string. This has the same 
effect, within the scope of the declaration, of there being no default 
namespace.

My suspicion is you are using "the default namespace set to the empty 
string" where you should be using "no namespace".

hope this helps,
jochen
















(-) Jochen Strunk
(-) SIGNAL 7 Gesellschaft für Informationstechnologie mbH
(-) Brüder-Knauß-Str. 79 - 64285 Darmstadt,
(-) Tel: 06151 665402, Fax: 06151 665373
(-) strunk at signal7.de, www.signal7.de




More information about the jdom-interest mailing list