[ https://issues.apache.org/jira/browse/WSCOMMONS-517?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Veithen updated WSCOMMONS-517: -------------------------------------- Fix Version/s: (was: Axiom 1.2.10) Axiom 1.2.11 > OMElement.declareDefaultNamespace() declares empty namespace for child > element. > ------------------------------------------------------------------------------- > > Key: WSCOMMONS-517 > URL: https://issues.apache.org/jira/browse/WSCOMMONS-517 > Project: WS-Commons > Issue Type: Bug > Components: AXIOM > Affects Versions: Axiom 1.2.8 > Environment: Microsoft Windows 2003 Server, Java 1.5.0_11. Axis2 > version 1.3 (uses AXIOM version 1.2.5). > Reporter: Yechiel Mondrowitz > Assignee: Andreas Veithen > Fix For: Axiom 1.2.11 > > > When calling declareDefaultNamespace() on a parent node, AXIOM assignes a > blank namespace on the first level's child element. So if XML is passed to > AXIOM that looks like this: > <outerTag> > <innerTag> > <node1>Hello</node1> > <node2>Hello</node2> > </innerTag> > </outerTag> > And then declareDefaultNamespace() of "http://someNamespace" is called on the > <outerTag>, the resulting XML will be this: > <outerTag xmlns="http://someNamespace"> > <innerTag xmlns=""> > <node1>Hello</node1> > <node2>Hello</node2> > </innerTag> > </outerTag> > Notice the xmlns="" declared in the <innerTag>. According to my > understanding of XML namespaces, the <innerTag> and its child nodes will no > longer belong to the parent namespace of "http://someNamespace", since it > explicitly overrides it with an empty namespace. So <innerTag> and its child > nodes will in fact not belong to any namespace! Here is a small program to > illustrate: > import org.apache.axiom.om.*; > import org.apache.axiom.om.impl.llom.util.*; > public class Test2 { > public static void main(String [] args) { > try { > String xmlString = > "<outerTag>" + > "<innerTag>" + > "<node1>Hello</node1>" + > "<node2>Hello</node2>" + > "</innerTag>" + > "</outerTag>"; > OMElement elem = AXIOMUtil.stringToOM(xmlString); > elem.declareDefaultNamespace("http://someNamespace"); > System.out.println(elem.toString()); > } > catch(Exception e) { > e.printStackTrace(); > } > } > } > The output of this program is this (I added line breaks in the XML for easier > readability): > <outerTag xmlns="http://someNamespace"> > <innerTag xmlns=""> > <node1>Hello</node1> > <node2>Hello</node2> > </innerTag> > </outerTag> > As you can see, the <innerTag> was assigned xmlns="" by AXIOM. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.