迭代XSLT字符串参数并为每个参数执行某些操作

时间:2011-12-24 22:15:17

标签: xslt xslt-2.0

我试图基于XSLT字符串参数构建一些XML元素。这个想法很简单。

用户指定参数,该参数是以逗号分隔的名称列表。对于每个名称,我想将以下内容写入XML文件:

<category>{$string}</category>

其中{$string}是逗号分隔值之一。因此,如果用户提供此参数:category1, category2, cat3,那么我应该在XML文件中获取此信息:

<category>category1</category>
<category>category2</category>
<category>cat3</category>

还应该可以提供一个空字符串,在这种情况下不会打印任何XML元素。

请注意,我使用的是XSLT 2.0,因此请随意添加基于2.0的XPath和XSLT构造。

1 个答案:

答案 0 :(得分:3)

此转换(XSLT 2.0):

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:param name="pCategories"
 select="'category1, category2, cat3'"/>

 <xsl:template match="/">
  <xsl:for-each select="tokenize($pCategories, ',')[.]">
   <category>
    <xsl:value-of select="normalize-space()"/>
    </category>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

应用于任何XML文档(未使用)时,会生成所需的正确结果

<category>category1</category>
<category>category2</category>
<category>cat3</category>