xsl:choose 表达式必须评估为节点集

xsl:choose Expression must evaluate to a node-set

我正在与 C#XSLT 2.0 合作。我在使用其中一个模板时遇到问题,它似乎在 <xsl:choose> 语句中失败了。传递的值是 Key - Value 对,除了两个值之外的所有值都是小数。目的是用 2 位小数和 , 来格式化小数,而整数应该没有小数位。

<xsl:choose>
      <xsl:when test="Key='Seller count' || Key='Buyer count'">
        <td>
          <xsl:value-of select="format-number(Value, '0')"/>
        </td>
      </xsl:when>
      <xsl:otherwise>
        <td>
          <xsl:value-of select="format-number(Value, '#,##0.00')"/>
        </td>
      </xsl:otherwise>
    </xsl:choose>` 

给我

An exception of type 'System.Xml.Xsl.XslTransformException' occurred in     System.Data.SqlXml.dll but was not handled in user code

Additional information: Expression must evaluate to a node-set.

这有点令人惊讶,因为它在 whenotherwise 中打开和关闭 <td> </td>

我假设这是我没有看到的显而易见的事情。

XSLT 1.0 具有用于节点集的联合运算符 | 和用于布尔值的布尔运算符 or。 XSLT 中没有 || 运算符,1.0 和 2.0 中都没有。如果你想写一个布尔 or 表达式使用 <xsl:when test="Key='Seller count' or Key='Buyer count'"> .