2011-12-24 87 views
1

我试图根据XSLT字符串参数构建一些XML元素。这个想法很简单。遍历XSLT字符串参数,并为每个参数做一些事情

用户指定一个参数,这是一个逗号分隔的名称列表。对于每一个名字,我想写以下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结构。

回答

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>