如何编写XPath / xslt查询以匹配两个属性

时间:2016-07-30 13:09:38

标签: xslt xpath

我想从XML下面匹配属性(lb = prodbind和s = false):

< testResults version="1.2">

< sample na="2" ng="2" by="346" dt="text" tn="Thread Group 1-2" rm="javax.naming.CommunicationException: defaulthost:30 [Root exception is java.net.UnknownHostException: defaulthost]" rc="800" lb="ProdBind" s="false" ts="1468674969351" lt="0" t="2123"/>

尝试了这些选项,但没有运气:

< xsl:variable name="prod1fail" select="count(/testResults/*[@lb = 'prodBind' and @s='false'])"/>

< xsl:variable name="prod1fail" select="count(//testResults/sample[@lb = 'prodBind' and @s='false'])"/>

感谢您的任何指示。

2 个答案:

答案 0 :(得分:1)

XML区分大小写:"ProdBind""prodBind"

不同

如果(并且您的问题没有明确说明)您试图计算有多少sample元素符合给定条件,那么您应该使用:

count(/testResults/sample[@lb='ProdBind' and @s='false'])

另请注意,元素名称不能以空格开头 - 因此,如果您的输入确实包含:

< testResults version="1.2">

那么它不是XML文档,完全不能由XSLT处理。

答案 1 :(得分:0)

请注意,对于某些处理器,将and分解为一系列过滤器会更快:

count(/testResults/sample[@lb='ProdBind'][@s='false'])