我要导入所有过滤的产品,它们应用了所有3条标准:
1),它们有库存(DIM)
2)库存超过3个(stock_indicator
)
3),它们属于这些1或4组中的一个(任何一个)
我想要所有3个条件,但是在这些选项中,第3个都是
即:
/product[dim1[1] = "1" and stock_indicator[1] > 3 and group[1] = "1" or group/category/id[1] = "4"]
上面没有返回任何产品,就像没有产品具有所有这些要求一样。
我在做什么错了?
Dim =可用性
答案 0 :(得分:1)
/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
元素[可能意味着什么]),这可能会返回误报。
答案 1 :(得分:1)
您可以使用以下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个满足条件):