|
I have a large Xerces DOM +
Saxon XSL web application that is working smoothly. I'm considering
porting it to dom4j for the cleaner dom and xpath java API.
Several places in a few different xsl documents,
I'm getting null pointer exceptions during processing. I've narrowed
it down to the following statement:
<SELECT name="hearingStatus">
<OPTION/>
<xsl:element name="OPTION"> <xsl:attribute name="value">pass</xsl:attribute> <xsl:if test="$screen[@screeningID=$ID]/hearing/@status='pass'"><xsl:attribute name="selected"/></xsl:if> pass </xsl:element> </SELECT>
Its kind-a odd, but I think it has something to do
with a xsl:if inside an element when the xsl:if has a "" as part of the test
expression. The $screen/@screeningID attribute does exist
as a node, but its value is an empty string. I have tried it with the full
xpath instead of the global variable, and I get the same exception. I have
tried the same xsl:if statement outside the xsl:element and everything works as
expected.
Any ideas on where next to look for a
solution? Since this works fine with Saxon and Xerces, I figured it has
something to do with dom4j's Document implementation.
Stack trace below:
java.lang.NullPointerException
at com.icl.saxon.expr.NodeSetComparison.evaluateAsBoolean(NodeSetComparison.java:66) at com.icl.saxon.style.XSLIf.process(XSLIf.java:77) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.XSLElement.process(XSLElement.java:139) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.XSLTemplate.expand(XSLTemplate.java:225) at com.icl.saxon.style.XSLCallTemplate.process(XSLCallTemplate.java:187) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.LiteralResultElement.process(LiteralResultElement.java:288) at com.icl.saxon.style.StyleElement.processChildren(StyleElement.java:633) at com.icl.saxon.style.XSLTemplate.expand(XSLTemplate.java:225) at com.icl.saxon.style.XSLTemplate.start(XSLTemplate.java:198) at com.icl.saxon.Controller.applyTemplates(Controller.java:254) at com.icl.saxon.Controller.defaultAction(Controller.java:270) at com.icl.saxon.Controller.applyTemplates(Controller.java:235) at com.icl.saxon.Controller.run(Controller.java:177) at com.icl.saxon.Controller.transformDocument(Controller.java:1075) at com.icl.saxon.Controller.transform(Controller.java:945) at com.infinitecampus.prism.Prism.service(Prism.java:266) |
- Re: [dom4j-user] XSL Saxon, dom4j and NullpointerExceptions David Frankson
- Re: [dom4j-user] XSL Saxon, dom4j and NullpointerExcep... James Strachan
