Pau*_*ers 5 sorting xslt tokenize xslt-1.0
我有一个分隔的字符串(在我下面的例子中用空格分隔),我需要对它进行标记,排序,然后重新连接在一起,我需要使用XSLT 1.0完成所有这些操作.我该怎么办?我知道我需要以xsl:sort某种方式使用,但到目前为止我所尝试的一切都给了我一些错误.
例如,如果我在此帖子的底部运行代码,我会得到:
草莓蓝莓橙色覆盆子石灰柠檬
如果我想要这样做,我该怎么办?:
蓝莓柠檬石灰橙色覆盆子草莓
请注意,我正在使用XSLT 1.0.
这是代码,它基于Jeni Tennison的代码.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="tokenize1.xsl"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="'strawberry blueberry orange raspberry lime lemon'" />
</xsl:call-template>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimiter" select="' '" />
<xsl:choose>
<xsl:when test="$delimiter and contains($string, $delimiter)">
<token>
<xsl:value-of select="substring-before($string, $delimiter)" />
</token>
<xsl:text> </xsl:text>
<xsl:call-template name="tokenize">
<xsl:with-param name="string"
select="substring-after($string, $delimiter)" />
<xsl:with-param name="delimiter" select="$delimiter" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<token><xsl:value-of select="$string" /></token>
<xsl:text> </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
如果你的处理器支持 EXSLT,你最好使用str:tokenize
\n\n对于排序,为什么不使用 xsl:sort?
\n\n<xsl:template match="/">\n <xsl:variable name="tokens">\n \xc2\xa0 <xsl:call-template name="tokenize">\n\xc2\xa0 \xc2\xa0 <xsl:with-param name="string" select="\'strawberry blueberry orange raspberry lime lemon\'" />\n \xc2\xa0 </xsl:call-template>\n </xsl:variable>\n\n <xsl:for-each select="$tokens">\n <xsl:sort select="text()" />\n <xsl:value-of select="." />\n <xsl:if test="not(last())">\n <xsl:text> </xsl:text>\n </xsl:if>\n </xsl:for-each>\n</xsl:template>\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,您可能需要 exsl:node-set 对迭代执行操作。
\n