/product[dim1[1] = "1" and stock_indicator[1] > 3 and group[1] = "1" or group/category/id[1] = "4"]
首先,您的XPath假定所有product
元素都位于根级别,这不会构成格式良好的XML文档;全部都应该包裹在某个元素中。
如果这在您的环境中没有问题(因为我们不知道您所提出的问题的全部设置),那么XPath中最突出的问题可能是您尝试将stock_indicator
的值与{{ 1}},但实际上您的数据样本将其编码为xs:integer
。
因此
xs:string
将始终返回stock_indicator[1] > 3
…
尝试
false
或
stock_indicator[1]/number() > 3
相反。
尽管如此,根据数据结构(例如,一个number(stock_indicator[1]) > 3
中的多个stock_indicator
元素[可能意味着什么]),这可能会返回误报。
,
您可以使用以下XPath过滤产品:
//product[availability="1"][stock_indicator>3][group/id=1 or group/id=4]
-
//
开头,如@Benjamin W. Bohl所述,以捕获所有产品
-
availability
代替了“暗淡”
- 用于谓词的更清洁的语法
- 不使用位置索引(
[1]
),前提是每个availability
中每个stock_indicator
只有1个id
,1个group
,1个product
}
XML用于测试。
XPath:
已过滤XML(4个产品中的2个满足条件):
本文链接:https://www.f2er.com/2036383.html