You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Jonathan Blake <jo...@addr12.addr.com> on 2003/01/17 20:27:54 UTC
Bug??
I was spinning in circles for a while on this one. I get a Null pointer
error using the following files and command line. Is this a bug or am I
doing unnatural things with XSLT? I can work around this by removing the
"|" operation in the XSL and creating separate, identical templates, but
it would be cleaner the other way.
java org.apache.xalan.xslt.Process -IN 01fftd.xml -XSL xhtml-single.xsl
-OUT foo.html -V -EDUMP
-- XML file --
<?xml version="1.0" encoding="ISO-8859-1"?>
<gamebook>
<section id="title" />
<data>
<section class="frontmatter">
<data />
</section>
</data>
</gamebook>
-- XSL file --
<?xml version="1.0"?>
<xsl:transform version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="section" />
<xsl:template match="*[@id='title']">
<html>
<body>
<div>
<xsl:apply-templates select="data/section[@class='frontmatter']" />
</div>
</body>
</html>
</xsl:template>
<xsl:template
match="/gamebook/section/data/section/data/section[@class='frontmatter' |
@class='frontmatter-separate']" />
</xsl:transform>
Produces:
>>>>>>> Xalan Version Xalan Java 2.4.1, <<<<<<<
; SystemID:
file:///usr7/nscee/jblake/public_html/aon/data/xml/xhtml-single.xsl
javax.xml.transform.TransformerException: java.lang.NullPointerException
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2344)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107)
at org.apache.xalan.xslt.Process.main(Process.java:1041)
---------
java.lang.NullPointerException
at
org.apache.xpath.axes.UnionChildIterator.acceptNode(UnionChildIterator.java:134)
at
org.apache.xpath.axes.BasicTestIterator.nextNode(BasicTestIterator.java:154)
at
org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:321)
at org.apache.xpath.objects.XNodeSet.compare(XNodeSet.java:538)
at org.apache.xpath.objects.XNodeSet.equals(XNodeSet.java:736)
at org.apache.xpath.operations.Equals.operate(Equals.java:84)
at
org.apache.xpath.operations.Operation.execute(Operation.java:150)
at org.apache.xpath.Expression.execute(Expression.java:199)
at
org.apache.xpath.operations.Operation.execute(Operation.java:147)
at
org.apache.xpath.patterns.StepPattern.executePredicates(StepPattern.java:765)
at
org.apache.xpath.patterns.StepPattern.execute(StepPattern.java:443)
at
org.apache.xalan.templates.TemplateList.getTemplateFast(TemplateList.java:593)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:326)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:216)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:425)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:216)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:425)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:216)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107)
at org.apache.xalan.xslt.Process.main(Process.java:1041)
--
Jon Blake
Re: Bug??
Posted by David N Bertoni/Cambridge/IBM <da...@us.ibm.com>.
Hi Jon,
You should not get a null pointer exception, but you are doing something
unnatural. '|' is a node-set union operator, not a logical "or" operator.
You cannot union two boolean expressions, which is what your expression is
trying to do.
Instead, you probably want this:
/gamebook/section/data/section/data/section[@class='frontmatter' or @class
='frontmatter-separate']
By the way, that's a very long path for a pattern. Are you sure you can't
shorten it a bit and not match all the way up to the root?
Dave
Jonathan Blake
<jonblake@addr12 To: xalan-j-users@xml.apache.org
.addr.com> cc: (bcc: David N Bertoni/Cambridge/IBM)
Subject: Bug??
01/17/2003 11:27
AM
Please respond
to jonblake
I was spinning in circles for a while on this one. I get a Null pointer
error using the following files and command line. Is this a bug or am I
doing unnatural things with XSLT? I can work around this by removing the
"|" operation in the XSL and creating separate, identical templates, but
it would be cleaner the other way.
java org.apache.xalan.xslt.Process -IN 01fftd.xml -XSL xhtml-single.xsl
-OUT foo.html -V -EDUMP
-- XML file --
<?xml version="1.0" encoding="ISO-8859-1"?>
<gamebook>
<section id="title" />
<data>
<section class="frontmatter">
<data />
</section>
</data>
</gamebook>
-- XSL file --
<?xml version="1.0"?>
<xsl:transform version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="section" />
<xsl:template match="*[@id='title']">
<html>
<body>
<div>
<xsl:apply-templates select="data/section[@class='frontmatter']" />
</div>
</body>
</html>
</xsl:template>
<xsl:template
match="/gamebook/section/data/section/data/section[@class='frontmatter' |
@class='frontmatter-separate']" />
</xsl:transform>
Produces:
>>>>>>> Xalan Version Xalan Java 2.4.1, <<<<<<<
; SystemID:
file:///usr7/nscee/jblake/public_html/aon/data/xml/xhtml-single.xsl
javax.xml.transform.TransformerException: java.lang.NullPointerException
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2344)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107)
at org.apache.xalan.xslt.Process.main(Process.java:1041)
---------
java.lang.NullPointerException
at
org.apache.xpath.axes.UnionChildIterator.acceptNode(UnionChildIterator.java:134)
at
org.apache.xpath.axes.BasicTestIterator.nextNode(BasicTestIterator.java:154)
at
org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:321)
at org.apache.xpath.objects.XNodeSet.compare(XNodeSet.java:538)
at org.apache.xpath.objects.XNodeSet.equals(XNodeSet.java:736)
at org.apache.xpath.operations.Equals.operate(Equals.java:84)
at
org.apache.xpath.operations.Operation.execute(Operation.java:150)
at org.apache.xpath.Expression.execute(Expression.java:199)
at
org.apache.xpath.operations.Operation.execute(Operation.java:147)
at
org.apache.xpath.patterns.StepPattern.executePredicates(StepPattern.java:765)
at
org.apache.xpath.patterns.StepPattern.execute(StepPattern.java:443)
at
org.apache.xalan.templates.TemplateList.getTemplateFast(TemplateList.java:593)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:326)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:216)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:425)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:216)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:425)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:216)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107)
at org.apache.xalan.xslt.Process.main(Process.java:1041)
--
Jon Blake