Subject: [xsl] Filtering on a tokenized list From: "Rick Quatro rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 23 Feb 2017 12:48:55 -0000 |
Hi All, I have an attribute value that I want to convert to a sequence of decimals: @colwidth="0.439in 1.845in" I am using tokenize to drop the measurement units before I convert each member to decimal: tokenize($widths,'[^\.\d]') This works, except I get a empty string as the last item in the list. I saw in Michael's book that I can filter out the empty member with a predicate: tokenize($widths,'[^\.\d]')[.] I can't quite understand how the predicate [.] works. Is it like saying "non-empty strings"? Would it be equivalent to [not(.="")] Thank you in advance. -Rick By the way, here is my complete function. Any suggestions for improvements are appreciated. I am going from absolute widths: 0.439in 1.845in to a sequence of percentages: 19, 81 <!-- Function for converting absolute table column widths to proportional (percentage) widths. --> <xsl:function name="rq:getProportionalWidths"> <!-- widths parameter is @colwidth in the form of absolute dimensions. --> <xsl:param name="widths"/> <!-- Drop the measurement units and convert the strings to decimals. --> <xsl:variable name="tokens" select="tokenize($widths,'[^\.\d]')[.]"/> <xsl:variable name="decimals" select="for $i in $tokens return xs:decimal($i)"/> <!-- Divide each number by the total of all numbers and multiply by 100. --> <xsl:sequence select="for $i in $decimals return round($i div sum($decimals) * 100)"/> </xsl:function>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath Expressions: Separa, Michael Kay mike@xxx | Thread | Re: [xsl] Filtering on a tokenized , Martin Honnen martin |
Re: [xsl] XPath Expressions: Separa, Michael Kay mike@xxx | Date | Re: [xsl] Filtering on a tokenized , Martin Honnen martin |
Month |