我在模板中有这样的循环:
<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 :(得分: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>
如果您想要的只是一个序列,可能会改善一些事情,但看起来相当复杂。
答案 1 :(得分: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>