Menu

namespaces of attributes

nico_inria
2008-02-11
2012-10-08
  • nico_inria

    nico_inria - 2008-02-11

    Hi,
    It seems that is a well known and old problem : see http://xsd.stylusstudio.com/2000Nov/post01006.htm
    and I would like to have your opinions on it.
    I would like to create the simplest XML content : an element "root" with an attribute "rootAttribute", with the same namespace. Here is my code (I want to respect the JAXP specification) :

            //create the org.w3c.dom.Document object
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            documentBuilderFactory.setNamespaceAware(true);
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            Document document = documentBuilder.newDocument();
    
            //create the element root and its attribute rootAttribute            
            Element root = document.createElementNS("http://test","root");
            document.appendChild(root);
            Attr rootAttribute = document.createAttributeNS("http://test","attribute");
            rootAttribute.setValue("value");
            root.setAttributeNodeNS(rootAttribute);
    

    And here the Xml I get :

    <?xml version="1.0" encoding="UTF-8"?>
    <root xmlns="http://test" xmlns:NS1="http://test" NS1:attribute="value"/>

    !!??
    So why do I have the same namespace declared twice with two different prefixes ??
    Please tell me XML is not so complex.

     
    • nico_inria

      nico_inria - 2008-02-13

      You are right, it is not a problem with Saxon. Both serializers of Saxon or Xerces would give the same result.
      In my opinion, it is a problem with the DOM Level 3 specification itself, and I think that should be modified if the W3C really wants that we use namespaces in our XML. And if we don't, that will create lots of problems in the future, when we will try to combine XML from different sources.
      Are you involved in the W3C work ?

       
      • Michael Kay

        Michael Kay - 2008-02-13

        I haven't been involved with the DOM work, and in fact I don't think W3C is doing any more work on DOM.

        In my view DOM has become a monster and it's too late to fix it. My advice is to use one of the alternatives, such as XOM.

         
    • Michael Kay

      Michael Kay - 2008-02-11

      I don't quite see the relevance to Saxon? This seems to be a question about DOM processing. I'm no great fan of the DOM, and its handling of namespaces often seems fairly bizarre.