0

我想导入过滤这些他们应用所有 3 个标准的所有产品:

1)有现货 (DIM)

2)库存超过 3 件 ( stock_indicator)

3)并且它们属于这些组 1 或 4 中的一个(任何一个)

我想要所有 3 个标准,但在第三个选项中的任何一个

IE: /product[dim1[1] = "1" and stock_indicator[1] > 3 and group[1] = "1" or group/category/id[1] = "4"]

以上不退回任何产品,就像没有产品具有所有这些要求一样。

我究竟做错了什么?

暗淡 = 可用性

XML 示例: 在此处输入图像描述

4

2 回答 2

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与 a进行比较,xs:integer但实际上您的数据样本将它们编码为xs:string.

最后

stock_indicator[1] > 3

总会回来false的……</p>

尝试

stock_indicator[1]/number() > 3

或者

number(stock_indicator[1]) > 3

反而。

然而,根据数据结构(例如stock_indicator,多个元素合二为一product[无论这可能意味着什么]),这可能会返回误报。

于 2020-06-29T22:59:26.297 回答
1

您可以使用以下 XPath 过滤产品:

//product[availability="1"][stock_indicator>3][group/id=1 or group/id=4]
  • //正如@Benjamin W. Bohl 所说,在开始时捕获所有产品
  • availability用于代替“暗淡”
  • 用于谓词的更简洁的语法
  • 没有使用位置索引 ( ) 假设您每个中[1]只有 1 availability、 1 stock_indicator、 1 idpergroupproduct

用于测试的XML 。

XPath:

经验值

XML 被过滤(4 个产品中有 2 个满足条件):

过滤器XML

于 2020-06-30T01:44:43.137 回答