DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16990>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16990 Nested EXSLT functions generate error Summary: Nested EXSLT functions generate error Product: XalanJ2 Version: 2.4 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Blocker Priority: Other Component: org.apache.xalan.lib AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The bug appears when several EXSLT functions (func:function) are defined in a template and one function makes a call to another function to include the return value of that function into the calculation. In this case, Xalan generates the following error message: (Location of error unknown)XSLT Error (javax.xml.transform.TransformerException): javax.xml.transform.TransformerException: An EXSLT function cannot set more than one result! Probably, there have to be several objects holding the results of each function call as long as the whole call stack is not completely processed. I used Xalan-J version 2.4.1 in conjunction with the Xerces 2.2.0 that was in the Xalan-J binary distribution. The exception occurred while testing the transformation by calling Xalan on the command line, using the org.apache.xalan.xslt.Process class. Following is a XSL stylesheet to demonstrate the described behavior. You can use any XML source document to reproduce the error, since no specific element of the source document is addressed. <code> <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:func="http://exslt.org/functions" xmlns:my="blabla"> <!-- This is just a dummy function. --> <func:function name="my:firstfunction"> <xsl:param name="arg1" select="0"/> <func:result select="$arg1 + 1"/> </func:function> <!-- When this function is called, it generates output without error. --> <func:function name="my:secondfunction"> <xsl:param name="arg" select="0"/> <func:result select="my:firstfunction($arg) + 2"/> </func:function> <!-- When this function is called, it generates the following error: --> <!-- javax.xml.transform.TransformerException: --> <!-- An EXSLT function cannot set more than one result! --> <func:function name="my:thirdfunction"> <xsl:param name="arg" select="0"/> <xsl:variable name="result" select="my:firstfunction($arg) + 2"/> <func:result select="$result"/> </func:function> <!-- The template. --> <xsl:template match="/"> <!-- Comment out one of the next lines, run Xalan and see what happens. --> This function works: <xsl:value-of select="my:secondfunction(3)"/> That function fails: <xsl:value-of select="my:thirdfunction(3)"/> </xsl:template> </xsl:stylesheet> </code>
