我需要声明一个固定的数字序列。我该怎么做?
例如,是吗(我在这里猜测):
<xsl:element name="xsl:param">
<xsl:attribute name="name">MySequence</xsl:attribute>
<xsl:sequence>(1,2,3,4)</xsl:sequence>
</xsl:element>
或
<xsl:element name="xsl:param">
<xsl:attribute name="name">MySequence</xsl:attribute>
<xsl:sequence>1,2,3,4</xsl:sequence>
</xsl:element>
或者什么?
由于
答案 0 :(得分:5)
如果你正在使用XSLT 2.0,你可以直接在select
中创建序列,如:
<xsl:param name="MySequence" select="('1','2','3','4')"/>
基于XSLT的验证......
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:param name="seq" select="('23453','74365','98','653')"/>
<xsl:template match="/">
<xsl:for-each select="$seq">
<xsl:value-of select="concat('Item ',position(),': ',.,'
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
应用于任何XML输入产生:
Item 1: 23453
Item 2: 74365
Item 3: 98
Item 4: 653
答案 1 :(得分:1)
要在XSLT 2.0意义上构建序列,请使用select
例如
<xsl:sequence select="1 to 4" />
但是,如果您要将值添加到元素中,您可能更喜欢value-of
<xsl:value-of select="1 to 4" separator="," />
考虑到问题中的片段,这将生成
的输出XML<xsl:param name="MySequence">1,2,3,4</xsl:param>
这使得生成的参数的值成为逗号分隔的字符串。如果您确实希望param
值成为生成的XSLT中的序列,那么您需要生成select
属性而不是使用元素内容
<xsl:element name="xsl:param">
<xsl:attribute name="name" select="'MySequence'"/>
<xsl:attribute name="select">
<xsl:text>(</xsl:text>
<xsl:value-of select="1 to 4" separator=","/>
<xsl:text>)</xsl:text>
</xsl:attribute>
</xsl:element>
提供
的输出<xsl:param name="MySequence" select="(1,2,3,4)" />