2011-12-24 8 views
1

XSLT文字列パラメータに基づいていくつかのXML要素を作成しようとしています。アイデアはとてもシンプルです。XSLT文字列パラメータの繰り返しと各パラメータの処理

ユーザはカンマで区切られた名前のリストであるパラメータを指定します。

<category>{$string}</category> 

{$string}は、カンマで区切られた値のいずれかです。それぞれの名前のために、私は、XMLファイルに次のことを書きたいです。ユーザーはこのパラメータを提供する場合ので: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):

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

<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文書に適用され、所望の、正しい結果を生成

関連する問題