Subject: [xsl] A function that tokenizes a string, wrapping each token in start-tag , end-tag pairs? From: "Costello, Roger L. costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 21 Apr 2016 12:20:01 -0000 |
Hi Folks, I want a function that tokenizes a string and wraps each token in a start-tag, end-tag pair. I figure that I should pass into the function the string to be tokenized and a sequence of integers corresponding to the decimal value(s) of the token delimiter. Also, I figure that I should pass into the function a sequence of strings, corresponding to the tag names to be used for wrapping each token. I've implemented the function, see below. It works fine, but I want to know if it can be improved. Is there a way to write the function more idiomatic? Shorter? Generalized to be more widely useful? /Roger <!-- Create an element for each non-empty token in $line. $line is tokenized using the sequence of symbols denoted by $line-delimiter. For the token at position i, name the element using the string in headers[$i] --> <xsl:function name="f:line" as="element()*"> <xsl:param name="line" as="xs:string" /> <xsl:param name="line-delimiter" as="xs:integer+" /> <xsl:param name="headers" as="xs:string+" /> <xsl:variable name="tokens" select="tokenize($line, codepoints-to-string($line-delimiter))" as="xs:string*" /> <xsl:variable name="len" select="count($tokens)" as="xs:integer" /> <xsl:for-each select="1 to $len"> <xsl:variable name="index" select="xs:integer(.)" as="xs:integer" /> <xsl:variable name="value" select="$tokens[position() eq $index]" as="xs:string" /> <xsl:choose> <xsl:when test="$value eq ''"/> <xsl:otherwise> <xsl:element name="{$headers[position() eq $index]}"> <xsl:sequence select="$value"/> </xsl:element> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:function>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] performance benefits of X, Mailing Lists Mail d | Thread | Re: [xsl] A function that tokenizes, Martin Honnen martin |
Re: [xsl] performance benefits of X, Mailing Lists Mail d | Date | Re: [xsl] A function that tokenizes, Martin Honnen martin |
Month |