You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2001/03/16 20:35:30 UTC
[Bug 997] New - for-each causes a NullPointerException when used with document() extension
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=997
*** shadow/997 Fri Mar 16 11:35:30 2001
--- shadow/997.tmp.24706 Fri Mar 16 11:35:30 2001
***************
*** 0 ****
--- 1,159 ----
+ +============================================================================+
+ | for-each causes a NullPointerException when used with document() extension |
+ +----------------------------------------------------------------------------+
+ | Bug #: 997 Product: XalanJ2 |
+ | Status: NEW Version: 2.0.0 |
+ | Resolution: Platform: PC |
+ | Severity: Major OS/Version: Windows NT/2K |
+ | Priority: Component: Xalan |
+ +----------------------------------------------------------------------------+
+ | Assigned To: xalan-dev@xml.apache.org |
+ | Reported By: acslocum@thoughtworks.com |
+ | CC list: Cc: |
+ +----------------------------------------------------------------------------+
+ | URL: |
+ +============================================================================+
+ | DESCRIPTION |
+ When traversing the nodes of a document() call with for-each, getting the
+ value-of a missing node in the original document causes a NullPointerException
+ in ChildWalkerMultiStep.
+
+ Given the template listed below, the desired output (Xalan 1 output) would look
+ something like
+ <document>
+ <foo id="1"/>
+ <foo id="2"/>
+ <foo id="3"/>
+ </document>
+
+ This exception does not occur if the value-of tag is not there, and it does not
+ occur if the value-of tag refers to some value in $iteratorId.
+
+ Full files:
+ -------bar.xsl----------
+ <?xml version = '1.0'?>
+
+ <xsl:stylesheet version="1.0" xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:template match="names" name="names">
+ <document>
+ <xsl:variable name="iteratorId" select="document('iteratorList.xml')"/>
+ <xsl:variable name="value" select="/names/element"/>
+ <xsl:for-each select="$iteratorId//num">
+ <xsl:element name="foo">
+ <xsl:attribute name="id">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:value-of select="$value"/>
+ </xsl:element>
+ </xsl:for-each>
+ </document>
+ </xsl:template>
+
+ </xsl:stylesheet>
+ ----------iteratorList.xml-------------
+ <list>
+ <num>1</num>
+ <num>2</num>
+ <num>3</num>
+ </list>
+ ---------foo.xml-----------
+ <names>
+ <baz>a</baz>
+ <baz>b</baz>
+ </names>
+ ---------java function to cause error----------
+ public void testDirect() {
+ try{
+ TransformerFactory tFactory =
+ TransformerFactory.newInstance();
+ Transformer transformer = tFactory.newTransformer(new
+ StreamSource("bar.xsl"));
+ transformer.transform(new StreamSource("foo.xml"), new
+ StreamResult( new java.io.FileOutputStream("foo.out")));
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ --------the big ugly stack trace that results----------
+ .javax.xml.transform.TransformerException
+ at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
+ rImpl.java:1212)
+ at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java
+ :2894)
+ at java.lang.Thread.run(Thread.java:484)
+ ---------
+ java.lang.NullPointerException
+ at org.apache.xpath.axes.ChildWalkerMultiStep.nextNode(ChildWalkerMultiS
+ tep.java:140)
+ at org.apache.xpath.axes.LocPathIterator.nextNode(LocPathIterator.java:6
+ 89)
+ at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:255)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2154)
+ at org.apache.xalan.templates.ElemElement.execute(ElemElement.java:328)
+ at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemFor
+ Each.java:495)
+ at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:228)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2154)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2097)
+ at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResul
+ t.java:739)
+ at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemFor
+ Each.java:495)
+ at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTempla
+ tes.java:193)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2154)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2097)
+ at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Tran
+ sformerImpl.java:2029)
+ at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
+ rImpl.java:1189)
+ at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java
+ :2894)
+ at java.lang.Thread.run(Thread.java:484)
+ javax.xml.transform.TransformerException
+ at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
+ rImpl.java:1212)
+ at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java
+ :2894)
+ at java.lang.Thread.run(Thread.java:484)
+ ---------
+ java.lang.NullPointerException
+ at org.apache.xpath.axes.ChildWalkerMultiStep.nextNode(ChildWalkerMultiS
+ tep.java:140)
+ at org.apache.xpath.axes.LocPathIterator.nextNode(LocPathIterator.java:6
+ 89)
+ at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:255)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2154)
+ at org.apache.xalan.templates.ElemElement.execute(ElemElement.java:328)
+ at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemFor
+ Each.java:495)
+ at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:228)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2154)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2097)
+ at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResul
+ t.java:739)
+ at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemFor
+ Each.java:495)
+ at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTempla
+ tes.java:193)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2154)
+ at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Tr
+ ansformerImpl.java:2097)
+ at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Tran
+ sformerImpl.java:2029)
+ at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
+ rImpl.java:1189)
+ at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java
+ :2894)
+ at java.lang.Thread.run(Thread.java:484)