[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: First steps with high order functions
Thanks a lot, Martin, it's now perfectly clear !
Best regards,
Christophe
Le 19/06/2018 C 12:48, Martin Honnen martin.honnen@xxxxxx a C)critB :
On 19.06.2018 12:33, Christophe Marchand cmarchand@xxxxxxxxxx wrote:
I'm trying to learn high order functions, and I have some
difficulties. If someone could help...
I have a normal function :
B B <xsl:function name="nu:camelCase" as="xs:string?">
B B B B <xsl:param name="s" as="xs:string?"/>
B B B B ...
B B </xsl:function>
I want to apply it on each word of a sentence :
B B <xsl:function name="nu:clearUsername" as="xs:string?">
B B B B <xsl:param name="name" as="xs:string?"/>
B B B B <xsl:choose>
B B B B B B <xsl:when test="empty($name)"><xsl:sequence
select="()"/></xsl:when>
B B B B B B <xsl:when test="contains($name, ' ')">
B B B B B B B B <xsl:variable name="temp" select="tokenize($name, ' ')"/>
B B B B B B B B <xsl:sequence select="string-join(for-each($temp,
nu:camelCase#1), ' ')"/>
B B B B B B </xsl:when>
B B B B B B <xsl:otherwise>
B B B B B B B B <xsl:sequence select="$name"/>
B B B B B B </xsl:otherwise>
B B B B </xsl:choose>
B B </xsl:function>
Does the for-each is correct ?
I think it should work as long as the higher-order function feature is
supported.
Is there another syntax to make this work with Saxon-HE ?
Saxon 9.8 HE doesn't support the higher-order function feature so
using the "for-each" function with it is not possible.
https://www.w3.org/TR/xpath-functions/#func-for-each however explains
B for-each($SEQ, $F) is equivalent to the expression for $i in $SEQ
return $F($i), assuming that ordering mode is ordered.
so you can use
B for $i in $temp return nu:camelCase($i)
to avoid the use of the "for-each" function.
Is there a better way to do this ?
If you learn XPath 3.1 you could also try to get accustomed to be
arrow operator and use
B $name => tokenize(' ') => for-each(nu:camelCase#1) => string-join(' ')
in the long run that might be more readable then the nesting of
function calls.
|
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
RSS 2.0 |
|
Atom 0.3 |
|
|