2012-06-28 20 views
0

我有一個循環像這樣在模板:xslt如何生成無類型原子序列?

<xsl:variable name="seq"> 
     <xsl:sequence select="1"/> 
     <xsl:sequence select="2"/> 
     <xsl:sequence select="3"/> 
     <xsl:sequence select="4"/> 
     <xsl:sequence select="5"/> 
    </xsl:variable> 

    <xsl:for-each select="$seq"> 
     <xsl:text>(</xsl:text> 
     <xsl:value-of select="."/> 
     <xsl:text>)</xsl:text> 
    </xsl:for-each> 

欲超過$ SEQ中的每個元素進行迭代一次,產生: (1) (2) (3) (4) (5)

代替該代碼產生(1 2 3 4 5)

如何可以創建一個適當的序列?

謝謝!

回答

0

<xsl:variable name="seq" select="1,2,3,4,5"/> 

<xsl:value-of select="for $i in $seq return concat('(', $i, ')')" separator=" "/> 

應該做的。或者你想達到什麼目的?對於你的做法

<xsl:variable name="seq" as="item()*"> 
     <xsl:sequence select="1"/> 
     <xsl:sequence select="2"/> 
     <xsl:sequence select="3"/> 
     <xsl:sequence select="4"/> 
     <xsl:sequence select="5"/> 
    </xsl:variable> 

可能會改善的事情,但看起來相當複雜,如果你想要的只是一個序列。

0

與包含指令的變量和沒有作爲屬性,像這樣:

<xsl:variable name="seq"> 
    <xsl:sequence select="1"/> 
    <xsl:sequence select="2"/> 
    <xsl:sequence select="3"/> 
    <xsl:sequence select="4"/> 
    <xsl:sequence select="5"/> 
</xsl:variable> 

表示文檔節點,在這種情況下,包含其字符串的內容爲「1 2 3 4 5單個文本節點的文檔節點」。如果您想要五個整數的序列,請使用select屬性,或者寫入

<xsl:variable name="seq" as="xs:integer*"> 
    <xsl:sequence select="1"/> 
    <xsl:sequence select="2"/> 
    <xsl:sequence select="3"/> 
    <xsl:sequence select="4"/> 
    <xsl:sequence select="5"/> 
</xsl:variable>