logo       

[jira] Updated: (XERCESJ-1147) Parsed document is not fully initialized unt: msg#00007

Subject: [jira] Updated: (XERCESJ-1147) Parsed document is not fully initialized until getFirstChild() is called
     [ http://issues.apache.org/jira/browse/XERCESJ-1147?page=all ]

Michael Glavassevich updated XERCESJ-1147:
------------------------------------------

    Component: DOM (Level 3 Core)

> Parsed document is not fully initialized until getFirstChild() is called
> ------------------------------------------------------------------------
>
>          Key: XERCESJ-1147
>          URL: http://issues.apache.org/jira/browse/XERCESJ-1147
>      Project: Xerces2-J
>         Type: Bug

>   Components: DOM (Level 3 Core)
>     Versions: 2.8.0
>  Environment: java version "1.5.0_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
> Saxon: saxonb8-7j
>     Reporter: Libor Valenta

>
> I have problems with Xerces bundled with JDK 1.5 as well as Xerces-J 2.8.0, I 
> was usin XSLT 2.0 transformer Saxon 8.7 to access document produced by java 
> extension. Problems go away when I call document.getFirstChild(); before 
> returning document for the transformation, the side-effect of getFirstChild() 
> makes me believe that there is something wrong with implementation of the 
> Document. 
> Here is simple code to demostrate the problem Test .java:
> import org.w3c.dom.Document;
> import org.xml.sax.InputSource;
> import javax.xml.parsers.DocumentBuilder;
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.transform.Transformer;
> import javax.xml.transform.TransformerException;
> import javax.xml.transform.TransformerFactory;
> import javax.xml.transform.stream.StreamResult;
> import javax.xml.transform.stream.StreamSource;
> import java.io.StringReader;
> import java.io.StringWriter;
> public class Test {
>   // this will call test1() which DOES call getFirstChild() before document 
> is returned
>   static String XSL1 = "<?xml version=\"1.0\"?>\n" +
>           "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"; 
> version=\"2.0\" xmlns:test=\"Test\">\n" +
>           "  <xsl:template match=\"/\">\n" +
>           "    <xsl:copy-of select=\"test:test1()\"/>\n" +
>           "  </xsl:template>\n" +
>           "</xsl:stylesheet>";
>   // this will call test2() which DOES NOT call getFirstChild() before 
> document is returned
>   static String XSL2 = "<?xml version=\"1.0\"?>\n" +
>           "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"; 
> version=\"2.0\" xmlns:test=\"Test\">\n" +
>           "  <xsl:template match=\"/\">\n" +
>           "    <xsl:copy-of select=\"test:test2()\"/>\n" +
>           "  </xsl:template>\n" +
>           "</xsl:stylesheet>";
>   public static void main(String[] args) throws Exception {
>     transform(XSL1);  // Result is: <?xml version="1.0" encoding="UTF-8"?><y/>
>     transform(XSL2);  // Result is: 
>   }
>   private static void transform(String xsl) throws TransformerException {
>     Transformer transformer = 
> TransformerFactory.newInstance().newTransformer(new StreamSource(new 
> StringReader(xsl)));
>     StringWriter out = new StringWriter();
>     transformer.transform(new StreamSource(new StringReader("<x/>")), new 
> StreamResult(out));
>     System.out.println("Result is: " + out);
>   }
>   public static Document test1() throws Exception {
>     DocumentBuilder documentBuilder = 
> DocumentBuilderFactory.newInstance().newDocumentBuilder();
>     Document document = documentBuilder.parse(new InputSource(new 
> StringReader("<y/>")));
>     // next call has some side-effect that make things work, 
> synchronizeChildren() ?
>     // likely bug in 
> com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl
>     document.getFirstChild();
>     return document;
>   }
>   public static Document test2() throws Exception {
>     DocumentBuilder documentBuilder = 
> DocumentBuilderFactory.newInstance().newDocumentBuilder();
>     Document document = documentBuilder.parse(new InputSource(new 
> StringReader("<y/>")));
>     return document;
>   }
> }
> I do not know how Saxon is using the document, but whatever it does, it 
> should behave same way for test1() and test2()

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
boot-loaders.gr...    php.pear.genera...    debugging.valgr...    kde.redhat.user...    text.xml.xsl.ge...    culture.languag...    hardware.microc...    java.servicemix...    redhat.release....    web.zope.plone....    user-groups.lin...    opendarwin.webk...    video.mjpeg.use...    sysutils.bcfg2....    encryption.gpg....    lx-office.devel...    xfree86.forum/2...    mail.mutt.devel...    acpi.devel/2003...    qnx.openqnx.dev...    network.irc.irs...    freebsd.devel.m...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe