Bry*_*yan 7 sorting xslt alphanumeric
我有一组字符串,即g:lines ='9,1,306,LUCY,G,38,12'
我需要输出在XSLT 1.0中:
1,9,12,38,306,G,LUCY
这是我目前的代码:
<xsl:for-each select="$all_alerts[g:problem!='normal_service'][g:service='bus']">
<xsl:sort select="g:line"/>
<xsl:sort select="number(g:line)" data-type="number"/>
<xsl:value-of select="normalize-space(g:line)" /><xsl:text/>
<xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
我可以让它只显示'1,12,306,38,9,G,LUCY',因为第二种类型没有被提取.
有人能帮帮我吗?
Tim*_*m C 12
要使用一个xsl:foreach语句实现此目的,请尝试以下操作:
<xsl:for-each select="$all_alerts[g:problem!='normal_service'][g:service='bus']">
<xsl:sort select="not(number(g:line))"/>
<xsl:sort select="number(g:line)" data-type="number"/>
<xsl:sort select="g:line"/>
<xsl:value-of select="normalize-space(g:line)" /><xsl:text/>
<xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
第一个xsl:sort对行是否为数字进行排序.在不()如果该行是一个数字,而真正的如果不是返回false.false在true之前排序,因此数字首先出现.如果省略此类,则首先显示字母.
下一个xsl:sort以数字方式排序,因此会正确排序数字,但不会影响字母(当应用number()时,它们都会返回NaN).
最终的xsl:sort将按字母顺序对字母进行排序.
| 归档时间: |
|
| 查看次数: |
7774 次 |
| 最近记录: |