You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Gary L Peskin <ga...@firstech.com> on 2001/01/04 08:15:24 UTC
Re: problem with calling extension function in XalanJ 2.0D05. Please
take a look. Thanks.
Guoliang Cao wrote:
>
> I'm calling extension method (in a java class), but got very weird
> problem.
>
> If I pass values directly like:
> ...
> <apply-templates select="test:createNode('node_name', 'node_value')" />
> ...
> It's OK.
>
> But if I pass by a variable like:
> ...
> <xsl:variable name="$node_name">name</xsl:variable>
> <xsl:variable name="node_value">value</xsl:variable>
> ...
> <apply-templates select="test:createNode($node_name, $node_value)"/>
> ...
>
> It reports error.
>
> I guess it's because xalan can treat a variable as a node or a nodeList.
> Then it goes to find a function with that parameter list, but it fails
> and complains.
> Can anybody help me with this problem? Thanks a lot
Try declaring your variables like this:
<xsl:variable name="node_name" select="'name'"/>
<xsl:variable name="node_value" select="'value'"/>
Then they will be treated as strings rather than result tree fragments.
Or, change your invocation to:
<xsl:apply-templates select="test:createNode(string($node_name),
string($node_value)" />
HTH,
Gary
>
> javax.xml.transform.TransformerException: TRaX Transform Throwable
> at
> org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:394)
>
> at
> org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:254)
>
> at
> org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:137)
>
> at
> org.apache.xpath.axes.FilterExprWalker.setRoot(FilterExprWalker.java:155)
>
> at
> org.apache.xpath.axes.LocPathIterator.nextNode(LocPathIterator.java:766)
>
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:426)
>
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:191)
>
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:515)
>
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:191)
>
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:515)
>
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:191)
>
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2019)
>
> at
> org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:680)
>
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2019)
>
> at
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1917)
>
> at
> org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1105)
>
> at
> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:2723)
>
> at java.lang.Thread.run(Unknown Source)
> ---------
> java.lang.NoSuchMethodException: For extension function, could not find
> method org.apache.xpath.NodeSet.
> getServiceInstanceAsFrag([ExpressionContext,] #RTREEFRAG, #RTREEFRAG,
> #RTREEFRAG). --- this is generated from my real xsl file.
> at
> org.apache.xalan.extensions.MethodResolver.getMethod(MethodResolver.java:307)
>
> at
> org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:373)
>
> at
> org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:254)
>
> at
> org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:137)
>
> at
> org.apache.xpath.axes.FilterExprWalker.setRoot(FilterExprWalker.java:155)
>
> at
> org.apache.xpath.axes.LocPathIterator.nextNode(LocPathIterator.java:766)
>
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:426)
>
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:191)
>
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:515)
>
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:191)
>
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:515)
>
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:191)
>
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2019)
>
> at
> org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:680)
>
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2019)
>
> at
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1917)
>
> at
> org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1105)
>
> at
> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:2723)
>
> at java.lang.Thread.run(Unknown Source)
--
Gary L Peskin
The Firstech Corporation
+1.323.658.1146
http://www.simdate.com