2015-11-27 46 views
0

我想简单地返回一个xsl整数序列,但如果我们有$ value ='2'的情况,那么它不会返回一个整数序列,而是一个整数String =“4 0”。为什么? Here's我的代码:使用撒克逊9.4 PE无法在xsl中返回一个整数值序列:选择

<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> 

I'm。

在此先感谢!

+0

@Julian,如果你希望你的代码更易读:选择/ XSL ,你可以删除括号 - 它们不是必需的。 –

+0

谢谢,朱利安。我不知道。 – Juan

回答

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:当

+0

非常感谢您的快速响应,Martin。它非常完美!我想我会使用选择替代方法来设置代码更具可读性。问候。 – Juan

相关问题