不能 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
我只想 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