  | |  | Bug?? | Bug?? 2003-01-17 - By David N Bertoni/Cambridge/IBM
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[@(protected)='frontmatter' or @(protected) ='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@(protected) To: xalan-j-users@(protected) .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="*[@(protected)='title']"> <html> <body> <div> <xsl:apply-templates select="data/section[@(protected)='frontmatter']" /> </div> </body> </html> </xsl:template>
<xsl:template match="/gamebook/section/data/section/data/section[@(protected)='frontmatter' | @(protected)='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
|
|
 |