2011-11-03 40 views
0

可能重複:
Does xslt have split() function?如何在XSL中標記字符串並使用for-each遍歷標記?

欲標記化以逗號分隔的變量在我的XSL樣式表,則用比所述令牌迭代的for-each打印每個的值令牌,做這件事的最好方法是什麼?

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

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

XSLT 1.0或2.0? –

+0

我想我使用的是1.0,XSLT編譯器抱怨str:tokenize() – raffian

+0

如果您使用的是XSLT 1.0,那麼下一個問題將是「哪個XSLT引擎?」 –

回答

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> 
+0

我試過使用它,但它不是編譯。說select =「tokenize($ columns,',')」不是有效的Xpath表達式,select =「str:tokenize($ columns,',')」也不起作用。 – raffian

0

如果使用XSLT 1.0和XPath 1.0,那麼你可以不寫

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

(甚至允許虛假的單引號:)

您只需編寫一個遞歸模板,將XPath調用的字符串拆分爲string-before和string-after。

如果您更詳細地描述了您需要做的事情,包括真實數據,那麼也許我們可以幫助您。