我试图基于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构造。
答案 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>