xsl:如果有多次检查?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xsl:如果有多次检查?相关的知识,希望对你有一定的参考价值。

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

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

我需要能够检查多个值

答案

在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' ...

另一答案

这样做的另一种方法是,当有数十个值时很有用

<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()读取外部文档来避免这种情况。

以上是关于xsl:如果有多次检查?的主要内容,如果未能解决你的问题,请参考以下文章

xsl:如果有多个检查或?

多次调用片段 onCreateView

使用 xsl 删除字符

c# XDocument:检查特定节点名称是不是存在,如果不添加

使用参数作为 XSL 选择语句的参数

在 XSLT 中检查字符串是不是为空或空