[
http://issues.apache.org/jira/browse/XALANJ-2223?page=comments#action_12370858
]
Andrea Mattioli commented on XALANJ-2223:
-----------------------------------------
I think this problem could be related with the fact that XALAN returns "true"
testing "function-available('exsl:nodeSet')" and "false" testing
"function-available('exsl:node-set)" and the same for
"function-available('date:date-time')"and "function-available('date:dateTime')"
and so on.
By
http://www.exslt.org/exsl/functions/node-set/
I think should be better return true testing "exsl:node-set" and
"date:date-time()"
> XSLT that calls "function-available" on parsed values fails with NPE
> --------------------------------------------------------------------
>
> Key: XALANJ-2223
> URL: http://issues.apache.org/jira/browse/XALANJ-2223
> Project: XalanJ2
> Type: Bug
> Components: Xalan
> Versions: 2.4
> Environment: Windows XP; JDK 1.4.2_05;
> Reporter: David M. Karr
>
> I wrote a stylesheet whose only purpose is to call "function-available" on
> the EXSLT functions specified in an XML file. I first tested this in Stylus
> Studio, using the Xalan 2.5.2 engine. When I run it, I get:
> functionAvailable.xsl (19, 48): java.lang.RuntimeException: Unknown error in
> XPath.
> I then built a standalone test case, using raw JDK 1.4.2 (which uses Xalan
> 2.4.1), and I got a similar error, with the stack trace that follows this. I
> also include inline the stylesheet, and a sample of the data. Although I
> only tested this with 2.4.1 and 2.5.2, Henry Zongaro said that he tested my
> stylesheet on all releases of Xalan-J from 2.4.0 through to 2.7.0, and got
> the same error.
> I extracted the code for the function that reports the exception, which is
> the following:
> ------------
> public boolean functionAvailable(String ns, String funcName)
> throws javax.xml.transform.TransformerException
> {
> return getExtensionsTable().functionAvailable(ns, funcName); // 448
> }
> ------------
> The "getExtensionTable()" method is just an accessor. This means that the
> "m_extensionsTable" is null, which is only set in the "setExtensionsTable()"
> method, which is only called from the "transformNode()" function. It seems
> plausible to guess that "transformNode()" is never called (or perhaps
> "sroot.getExtensions()" is null). Is there something about my stylesheet
> that is making it not call "transformNode()" before it gets to
> "functionAvailable()"?
> Stack trace:
> ---------------------------
> ; SystemID:
> file:///C:/cygwin/home/u166705/work/mfxslt/etc/functionAvailable.xsl; Line#:
> 20; Column#: 47
> javax.xml.transform.TransformerException: Unknown error in XPath.
> at org.apache.xpath.XPath.bool(XPath.java:412)
> at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:170)
> 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 com.wamu.mfxslt.XSLTTool.transform(XSLTTool.java:105)
> at com.wamu.mfxslt.XSLTTool.transform(XSLTTool.java:97)
> at com.wamu.mfxslt.XSLTTool.main(XSLTTool.java:58)
> Caused by: java.lang.NullPointerException
> at
> org.apache.xalan.transformer.TransformerImpl.functionAvailable(TransformerImpl.java:448)
> at
> org.apache.xpath.functions.FuncExtFunctionAvailable.execute(FuncExtFunctionAvailable.java:130)
> at org.apache.xpath.Expression.bool(Expression.java:230)
> at org.apache.xpath.XPath.bool(XPath.java:383)
> ... 14 more
> ---------
> java.lang.NullPointerException
> at
> org.apache.xalan.transformer.TransformerImpl.functionAvailable(TransformerImpl.java:448)
> at
> org.apache.xpath.functions.FuncExtFunctionAvailable.execute(FuncExtFunctionAvailable.java:130)
> at org.apache.xpath.Expression.bool(Expression.java:230)
> at org.apache.xpath.XPath.bool(XPath.java:383)
> at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:170)
> 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 com.wamu.mfxslt.XSLTTool.transform(XSLTTool.java:105)
> at com.wamu.mfxslt.XSLTTool.transform(XSLTTool.java:97)
> at com.wamu.mfxslt.XSLTTool.main(XSLTTool.java:58)
> ---------------------------
> The stylesheet is just:
> ---------------
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:exsl="http://exslt.org/common"
>
> xmlns:date="http://exslt.org/dates-and-times"
> xmlns:dyn="http://exslt.org/dynamic"
> xmlns:func="http://exslt.org/functions"
> xmlns:math="http://exslt.org/math"
> xmlns:random="http://exslt.org/random"
>
> xmlns:regexp="http://exslt.org/regular-expressions"
> xmlns:set="http://exslt.org/sets"
> xmlns:str="http://exslt.org/strings"
> extension-element-prefixes="exsl str
> date dyn func math random regexp set str"
> exclude-result-prefixes="exsl str date
> dyn func math random regexp set str"
> >
> <xsl:output method="xml"/>
> <xsl:template match="function">
> <xsl:choose>
> <xsl:when test="function-available(text())">
> <xsl:value-of select="text()"/> present
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="text()"/> not present
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> </xsl:stylesheet>
> ---------------
> The data looks like:
> ---------------
> <?xml version="1.0"?>
> <functions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="file:///c:/cygwin/home/u166705/work/mfxsl
> t/etc/Functions.xsd">
> <function>date:add</function> <function>date:add-duration</function>
> <function>date:date</function>
> [deleted]
> </functions>
> ---------------
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]