使用以下代码我收到错误,我需要能够将变量与四个或更多值进行比较。
<xsl:if test="normalize-space(@Contract_x0020_Type) = ('Fixed Price Level of Effort','Fixed Unit Price','Firmed Fixed Price','Hybrid')">
我需要能够检查多个值
答案 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()读取外部文件来避免这种情况。