You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/11/05 01:39:28 UTC
DO NOT REPLY [Bug 14244] New: -
EXSLT function returning twice(?) and crashing.
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=14244>.
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=14244
EXSLT function returning twice(?) and crashing.
Summary: EXSLT function returning twice(?) and crashing.
Product: XalanJ2
Version: 2.4
Platform: PC
OS/Version: Windows NT/2K
Status: NEW
Severity: Normal
Priority: Other
Component: org.apache.xalan.extensions
AssignedTo: xalan-dev@xml.apache.org
ReportedBy: foxyshadis@hotmail.com
Xalan 2.4.1. Calling a function within a variable assignment crashes, but
calling it on the variable later works fine. As far as I know, directly
assigning a string to a variable this way should pose no problems. padnum()
works fine for any call on a variable or any call on a valid xpath in other
tested situations; it only crashes when used for a variable.
Called Function:
<func:function name="foxy:padnum">
<xsl:param name="num"/>
<xsl:param name="padding"/>
<func:result
select="string:align(string($num),string:padding($padding,'0'),'right')"/>
</func:function>
Working Function:
<func:function name="foxy:foxtime">
<xsl:param name="text"/>
<xsl:variable name="hour"><xsl:if test="$text>=3600"><xsl:value-of
select="concat(floor($text div 3600),':')"/></xsl:if></xsl:variable>
<xsl:variable name="min" select="floor(($text mod 3600) div 60)"/>
<xsl:variable name="sec" select="$text mod 60"/>
<func:result select="concat($hour,foxy:padnum($min,2),':',foxy:padnum($sec,2))"/>
</func:function>
This also works fine:
<func:result select="concat($hour,foxy:padnum(floor(($text mod 3600) div
60),2),':',foxy:padnum($text mod 60,2))"/>
Crashing Function:
(Either of them alone will also crash it.)
<func:function name="foxy:foxtime">
<xsl:param name="text"/>
<xsl:variable name="hour"><xsl:if test="$text>=3600"><xsl:value-of
select="concat(floor($text div 3600),':')"/></xsl:if></xsl:variable>
<xsl:variable name="min" select="foxy:padnum(floor(($text mod 3600) div 60),2)"/>
<xsl:variable name="sec" select="foxy:padnum($text mod 60,2)"/>
<func:result select="concat($hour,$min,':',$sec)"/>
</func:function>
Stack Dump:
First line/col is top-level redirect call; actual problem is several layers below.
; SystemID: file:///c:/fox/text/database/music_multi.xsl; Line#: 34; Column#: 38
javax.xml.transform.TransformerException:
javax.xml.transform.TransformerException: An EXSLT function cannot set more than
one result!
at
org.apache.xalan.extensions.ExtensionHandlerExsltFunction.callFunction(ExtensionHandlerExsltFunction.java:233)
at
org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:227)
at
org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:461)
at
org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:233)
at org.apache.xpath.functions.FuncConcat.execute(FuncConcat.java:92)
at
org.apache.xpath.Expression.executeCharsToContentHandler(Expression.java:357)
at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339)
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339)
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:710)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339)
at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:435)
at
org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:273)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339)
at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:435)