xsl:如果有多次检查?

时间:2018-02-28 13:02:25

标签: asp.net xslt

使用以下代码我收到错误,我需要能够将变量与四个或更多值进行比较。

<xsl:if test="normalize-space(@Contract_x0020_Type) = ('Fixed Price Level of Effort','Fixed Unit Price','Firmed Fixed Price','Hybrid')">

我需要能够检查多个值

2 个答案:

答案 0 :(得分:2)

在XSLT / XPath 2.0及更高版本中允许使用该语法,因此您需要确保使用XSLT 2或3处理器,如Saxon 9,XmlPrime或Exselt。如果您使用的是XSLT 1处理器,则需要编写or个表达式,例如normalize-space(@Contract_x0020_Type) = 'Fixed Price Level of Effort' or normalize-space(@Contract_x0020_Type) = 'Fixed Unit Price' ...

答案 1 :(得分:0)

另外一种在有数十个值时很有用的方法是

<xsl:variable name="values">
  <value>one</value>
  <value>two</value>
  ...
</xsl:variable>

然后

<xsl:if test="normalize-space(@xxxx) = exslt:node-set($values/value)">...

XSLT 1.0允许与一组节点进行比较,但不能与一组字符串进行比较(因为在1.0中没有像一组字符串那样的东西)。唯一的问题是讨厌的exslt:node-set()扩展函数,如果你想要解决变量的内容 - 如果你需要,你可以通过使用document()读取外部文件来避免这种情况。