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:如果有多次检查?的主要内容,如果未能解决你的问题,请参考以下文章