ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Veithen (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AXIOM-28) OMElement.declareDefaultNamespace() declares empty namespace for child element.
Date Sun, 13 Nov 2011 20:53:51 GMT

     [ https://issues.apache.org/jira/browse/AXIOM-28?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Andreas Veithen resolved AXIOM-28.
----------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 1.2.14)
                   1.2.13
    
> 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.13
>
>
> 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-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org


Mime
View raw message