[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] A function that tokenizes a string, wrapping each token in start-tag , end-tag pairs?


Subject: Re: [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:52:12 -0000

You rock Martin!

Fantastic!

Okay, I changed the implementation as you suggested, see below. The new
implementation is much shorter and much clearer. Can it be improved even
further?

    <!--
    	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="delimiter" as="xs:integer+" />
        	<xsl:param name="headers" as="xs:string+" />

    	<xsl:for-each select="tokenize($line,
codepoints-to-string($delimiter))">
    		<xsl:if test=". ne ''">
    			<xsl:variable name="pos" select="position()" />
    			<xsl:element name="{$headers[$pos]}">
    				<xsl:sequence select="."/>
    			</xsl:element>
    		</xsl:if>
    	</xsl:for-each>

    </xsl:function>


Current Thread