[ http://issues.apache.org/jira/browse/XERCESJ-1147?page=comments#action_12434270 ] Michael Glavassevich commented on XERCESJ-1147: -----------------------------------------------
Your guess is as good as mine. The JDK development/maintenance operates independently of this project. If you're looking for a fix there you'll need to pursue it with Sun. > 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 > Issue Type: Bug > Components: DOM (Level 3 Core) > Affects 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 > Assigned To: Michael Glavassevich > Fix For: 2.8.1 > > > 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
