[ https://issues.apache.org/jira/browse/AXIOM-28?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Veithen updated AXIOM-28: --------------------------------- Fix Version/s: (was: 1.2.13) 1.2.14 > OMElement.declareDefaultNamespace() declares empty namespace for child > element. > ------------------------------------------------------------------------------- > > Key: AXIOM-28 > URL: https://issues.apache.org/jira/browse/AXIOM-28 > Project: Axiom > Issue Type: Bug > Components: LLOM > Affects Versions: 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: 1.2.14 > > > 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. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ws.apache.org For additional commands, e-mail: dev-h...@ws.apache.org