如何在XSL中标记字符串并使用for-each迭代标记?

时间:2011-11-03 14:59:51

标签: xslt foreach tokenize

  

可能重复:
  Does xslt have split() function?

我想在我的XSL样式表中对逗号分隔的变量进行标记,然后使用for-each遍历标记以打印每个标记的值,这是最好的方法吗?

<xsl:variable name="columns" select="'EMPID,NAME,DEPT"/>

<xsl:for-each select=???/>
   <!-- print name of token -->
</xsl:for-each>

2 个答案:

答案 0 :(得分:2)

使用XSLT 2.0,您只需使用for-each select="tokenize($columns, ',')"即可。使用XSLT 1.0,您需要检查是否支持类似的EXSLT或其他扩展功能:

<xsl:for-each select="str:tokenize($columns, ',')" xmlns:str="http://exslt.org/strings">...</xsl:for-each>

答案 1 :(得分:0)

如果您使用的是XSLT 1.0和XPath 1.0,则无法编写

<xsl:variable name="columns" select="'EMPID,NAME,DEPT"/>

(甚至允许虚假的单引号:)

您所能做的就是编写一个递归模板,使用XPath调用将字符串拆分为string-before和string-after。

如果您更详细地描述了您需要做的事情,包括真实数据,那么我们可以帮助您。