[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] XSLT code for function fn:fold-right()
Hi all, Please look at following link, for description of XPath 3.1 function fn:fold-right(), https://www.w3.org/TR/xpath-functions-31/#func-fold-right Within this function's description, its mentioned The effect of the function is equivalent to the following implementation or its equivalent in XSLT: <xsl:function name="fn:fold-right" as="item()*"> <xsl:param name="seq" as="item()*"/> <xsl:param name="zero" as="item()*"/> <xsl:param name="f" as="function(item(), item()*) as item()*"/> <xsl:choose> <xsl:when test="fn:empty($seq)"> <xsl:sequence select="$zero"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="$f(fn:head($seq), fn:fold-right(fn:tail($seq), $zero, $f))"/> </xsl:otherwise> </xsl:choose> </xsl:function> I've a feeling, that above XSLT logic of this function may be wrong (particularly the line <xsl:sequence select="$f(fn:head($seq), fn:fold-right(fn:tail($seq), $zero, $f))"/>. But I'll appreciate if anyone may point me wrong). I propose the following new XSLT code for this function, <xsl:function name="fn:fold-right" as="item()*"> <xsl:param name="seq" as="item()*"/> <xsl:param name="zero" as="item()*"/> <xsl:param name="f" as="function(item(), item()*) as item()*"/> <xsl:choose> <xsl:when test="fn:empty($seq)"> <xsl:sequence select="$zero"/> </xsl:when> <xsl:otherwise> <xsl:sequence select="fn:fold-right(fn:subsequence($seq, 1, fn:count($seq)-1), $f($seq[fn:last()], $zero), $f)"/> </xsl:otherwise> </xsl:choose> </xsl:function> I wanted to raise this issue on this spec's bugzilla. But I wanted to make sure that I'm right, by asking the question here first. -- Regards, Mukul Gandhi
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|