DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21998>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21998 java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents Summary: java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEven ts Product: XalanJ2 Version: 2.5 Platform: PC OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: org.apache.xpath AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I have found a combination of xml and xsl that creates a null pointer exception when the same transform is run twice in a row. Calling transformer.clerParameters() between the 2 calls solves the problem, even tho no parameter is used by the xsl. I have failed to narrow down the problem to a specific part of my xml/xsl, but I have 2 test files that I'll be happy to send to you. The stack trace looks like: javax.xml.transform.TransformerException: java.lang.NullPointerException at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1226) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:638) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1066) at test.main(test.java:99) Caused by: java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents (XNodeSet.java:262) at org.apache.xpath.Expression.executeCharsToContentHandler (Expression.java:303) at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute (ElemLiteralResult.java:678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute (ElemLiteralResult.java:678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute (ElemLiteralResult.java:678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2008) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1171) ... 4 more --------- java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents (XNodeSet.java:262) at org.apache.xpath.Expression.executeCharsToContentHandler (Expression.java:303) at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute (ElemLiteralResult.java:678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute (ElemLiteralResult.java:678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute (ElemLiteralResult.java:678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2182) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2008) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1171) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:638) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1066) at test.main(test.java:99) The test program is the bog standard: try { javax.xml.parsers.DocumentBuilderFactory dbf= javax.xml.parsers.DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); // See http://xml.apache.org/xerces-j/features.html // NB: The fact that you can set these throught the // DocumentBuilderFactory is not well documented... // Disable validation, to stop us from trying to access // the WML DTD everytime we test WAP. dbf.setAttribute( "http://xml.org/sax/features/validation", Boolean.FALSE); dbf.setAttribute( "http://apache.org/xml/features/nonvalidating/load-external- dtd", Boolean.FALSE); javax.xml.parsers.DocumentBuilder db= dbf.newDocumentBuilder(); // load xml java.io.InputStream is = new java.io.FileInputStream ("F:/XalanTest/test.xml"); org.w3c.dom.Document xml = db.parse(is); //load xsl is = new java.io.FileInputStream("F:/XalanTest/test.xsl"); org.w3c.dom.Document xsl = db.parse(is); //Create Transformer javax.xml.transform.TransformerFactory tf= javax.xml.transform.TransformerFactory.newInstance(); javax.xml.transform.Transformer xslt = tf.newTransformer( new javax.xml.transform.dom.DOMSource(xsl)); java.util.Properties oprops= new java.util.Properties(); oprops.put(javax.xml.transform.OutputKeys.METHOD, "xml"); xslt.setOutputProperties(oprops); //Apply transform once org.w3c.dom.Document xmlOne = db.newDocument(); try { xslt.transform( new javax.xml.transform.dom.DOMSource(xml), new javax.xml.transform.dom.DOMResult(xmlOne)); } catch (TransformerException e) { System.out.print("ONE Failed"); e.printStackTrace(); } // This call solves the problem //xslt.clearParameters(); //Apply transform twice org.w3c.dom.Document xmlTwo = db.newDocument(); try { xslt.transform( new javax.xml.transform.dom.DOMSource(xml), new javax.xml.transform.dom.DOMResult(xmlTwo)); System.out.print("No problem reported..."); } catch (TransformerException e1) { System.out.print("TWO Failed"); e1.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); }
