我有一个分隔字符串(以下示例中由空格分隔),我需要对其进行标记化、排序,然后重新连接起来,并且我需要使用 XSLT 1.0 来完成所有这些操作。我应该如何做呢?我知道我需要以某种方式使用
例如,如果我运行本帖底部的代码,我会得到这个:
草莓 蓝莓 橙子 覆盆子 青柠 柠檬
如果我想要得到这个结果,我该怎么办呢?
蓝莓 柠檬 青柠 橙子 覆盆子 草莓
请注意,我在使用 XSLT 1.0。
下面是基于 Jeni Tennison 的代码。
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>
node-set()
函数的访问。如果由于某种原因您没有机会使用它,那么您就完全束手无策了。 - Tomalak