Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XPath查询,用于解析属性中的所有IDREF(可能包含许多ID)_Xml_Xpath_Xpathquery - Fatal编程技术网

Xml XPath查询,用于解析属性中的所有IDREF(可能包含许多ID)

Xml XPath查询,用于解析属性中的所有IDREF(可能包含许多ID),xml,xpath,xpathquery,Xml,Xpath,Xpathquery,我需要提出一个查询,给出没有出售任何商品的类型的产品,这意味着如果某个商品属于服装类型,并且交易列表中没有出现任何服装商品,我需要显示它 这是我的XML文件(为超级加拿大式的错误道歉): ]> 所需输出 因为它是一个类别(服装)的产品,没有从中购买任何东西。i、 e.不包括服装在内的任何交易 我的尝试 我反复考虑了一些问题,但就是弄不好。这是我得到的最接近的结果: //产品[@type!=//交易/@products/@type] 看起来这应该行得通-在所有交易中查找类型不等于任何类型的所

我需要提出一个查询,给出没有出售任何商品的类型的产品,这意味着如果某个商品属于服装类型,并且交易列表中没有出现任何服装商品,我需要显示它

这是我的XML文件(为超级加拿大式的错误道歉):


]>
所需输出

因为它是一个类别(服装)的产品,没有从中购买任何东西。i、 e.不包括服装在内的任何交易

我的尝试 我反复考虑了一些问题,但就是弄不好。这是我得到的最接近的结果:

//产品[@type!=//交易/@products/@type]

看起来这应该行得通-在所有
交易中查找
类型
不等于任何
类型
的所有产品
,但是我收到了很多错误

如果有人能提供一点解释,我将不胜感激。

您可以在
交易
元素的
产品
属性的节点集上使用该功能来获取所有已售出商品的节点集:

id(//transaction/@products)
您可以轻松地扩展它,以获得已售出商品的
类型

id(//transaction/@products)/@type
您需要的是
类型
不在此集合中的所有产品,由以下公式给出:

//product[not(@type = id(//transaction/@products)/@type)] 

在示例XML中使用此选项只会选择beaverCoat产品节点。

您可以发布所需的输出吗?@Imray使用的是哪种编程语言?如果能够处理异常,那么可以使用以下xpath。这将抛出一个异常,您可以捕获它。如果抛出异常,则表示产品不存在//product[@type=“towning”]@Vinay我正在使用XPath 1.0在读取所需值之前,您是否允许/能够执行XSL转换?@Scoregraphic negative我不远,我正在尝试
//product[不是(@type=//事务/(id(@products)/@type)]iMay.我认为这是因为你不能用函数作为节点测试的一部分,如<代码> //Trase/(ID(@产品)< /COD> >。你可以扩展函数的结果,因为它返回一个节点集,但是你不能把它放在这样的查询中间。
//product[not(@type = id(//transaction/@products)/@type)]