无法在xsl:choose中返回整数值序列

时间:2015-11-27 10:17:50

标签: xslt-2.0

我想简单地返回xsl整数序列,但是如果我们有$ value ='2'的情况,那么它不会返回整数序列,而是返回String =“4 0”。为什么?这是我的代码:

    <xsl:variable name="seq">
        <xsl:choose>
            <xsl:when test="$value = '0'"><xsl:value-of select="(4)"/></xsl:when>
            <xsl:when test="$value = '1'"><xsl:value-of select="(0)"/></xsl:when>
            <xsl:when test="$value = '2'"><xsl:value-of select="(4,0)"/></xsl:when>
        </xsl:choose>
    </xsl:variable>

我使用的是Saxon 9.4 PE。

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用xsl:sequence返回一个序列,另外您需要使用as属性,例如

<xsl:variable name="seq" as="xs:integer*">
    <xsl:choose>
        <xsl:when test="$value = '0'"><xsl:sequence select="(4)"/></xsl:when>
        <xsl:when test="$value = '1'"><xsl:sequence select="(0)"/></xsl:when>
        <xsl:when test="$value = '2'"><xsl:sequence select="(4,0)"/></xsl:when>
    </xsl:choose>
</xsl:variable>

请注意,XPath 2.0具有if表达式,因此您可以使用

<xsl:variable name="seq" select="if ($value = 0) then 4 else if ($value = 1) then 0 else if ($value = 2) then (4,0) else ()"/>

而不是使用xsl:choose / xsl:when