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