You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Richard Opalka (JIRA)" <xa...@xml.apache.org> on 2010/02/26 11:18:28 UTC

[jira] Commented: (XALANJ-2382) Namespace declarations are lost on transformation to DOMResult

    [ https://issues.apache.org/jira/browse/XALANJ-2382?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12838801#action_12838801 ] 

Richard Opalka commented on XALANJ-2382:
----------------------------------------

To fix your problem with NAMESPACE_ERR you need to use namespace aware document builder.
IOW just replace

 private static final class DOMSourceProvider extends SourceProvider<DOMSource> {
    protected DOMSourceProvider(String xml) { super(xml); }
    @Override
    public  DOMSource newSource() throws Exception {
      return new DOMSource(
          DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
              new InputSource(new StringReader(xml))));
    }
  }

with 

   private static final class DOMSourceProvider extends SourceProvider<DOMSource> {
     protected DOMSourceProvider(String xml) { super(xml); }
     @Override
     public  DOMSource newSource() throws Exception {
        DocumentBuilderFactory.newInstance();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
       return new DOMSource(
           dbf.newDocumentBuilder().parse(
               new InputSource(new StringReader(xml))));
     }
   }


> Namespace declarations are lost on transformation to DOMResult
> --------------------------------------------------------------
>
>                 Key: XALANJ-2382
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2382
>             Project: XalanJ2
>          Issue Type: Bug
>          Components: DOM, JAXP, Xalan
>    Affects Versions: 2.7.1, 2.7
>         Environment: Intel Pentium 4
> Windows 2000 SP4
> Sun JDK 6 (build 1.6.0-b105)
>            Reporter: Christian Koppen
>         Attachments: output.txt, TransformerTest.java
>
>
> Have a look at the following snippet:
> <a:a1 xmlns:a="http://a"
>       xmlns:b="http://b"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>  <a:a2 xsi:type="b:B"/>
> </a:a1>
> As you can see, the value of the attribute 'xsi:type' contains a namespace prefix, which is declared in the root element.
> When I read this document as a StreamSource or SAXSource and transform it with Xalan into a DOMResult, the namespaces are invalid because the namespace declaration 'xmlns:b="http://b"' is lost:
> <a:a1 xmlns:a="http://a">
>   <a:a2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>         xsi:type="b:B"/>
> </a:a1>
> When I try to read the document as a DOMSource and try to transform it into a DOMResult, an exception occurs ('NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.').
> I attach the example code and output.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org