不能 return xsl:choose 中的整数值序列

Cannot return a sequence of integer values in a xsl:choose

我只想 return 一个 xsl 整数序列,但是如果我们有 $value = '2' 的情况,那么它就不是 return 一个整数序列而是一个 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。

提前致谢!

序列返回 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