xml – 用于解析属性中所有IDREFS的XPath查询(可能包含许多ID)
发布时间:2020-12-16 22:58:36 所属栏目:百科 来源:网络整理
导读:我需要提出一个查询,提供没有销售商品的类型的产品.如果商品属于服装类型,并且交易列表中没有服装商品,我需要显示它. 这是我的XML文件(对超级加拿大人的道歉): ?xml version="1.0" encoding="utf-8"?!DOCTYPE store [!ELEMENT store (product*,transaction*
我需要提出一个查询,提供没有销售商品的类型的产品.如果商品属于服装类型,并且交易列表中没有服装商品,我需要显示它.
这是我的XML文件(对超级加拿大人的道歉): <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE store [ <!ELEMENT store (product*,transaction*)> <!ATTLIST store name CDATA #REQUIRED > <!ELEMENT product EMPTY> <!ATTLIST product name ID #REQUIRED type CDATA #REQUIRED price CDATA #REQUIRED > <!ELEMENT transaction EMPTY> <!ATTLIST transaction products IDREFS #REQUIRED sumPrice CDATA #REQUIRED > ]> <store name="Gordons"> <product name="beaverCoat" type="clothing" price="100"/> <product name="hockeyStick" type="equipment" price="30"/> <product name="hockeyPuck" type="equipment" price="5"/> <product name="icePick" type="equipment" price="40"/> <product name="mooseMeat" type="food" price="350"/> <product name="salmon" type="food" price="15"/> <transaction products="hockeyPuck hockeyStick" sumPrice="35"/> <transaction products="hockeyStick mooseMeat" sumPrice="380"/> <transaction products="salmon mooseMeat" sumPrice="365"/> <transaction products="hockeyStick hockeyStick hockeyStick" sumPrice="30"/> </store> 期望的输出 < product name =“beaverCoat”type =“clothing”/> 我的尝试 //产品[@type!= // transactions / @ products / @ type] 看起来这应该工作 – 找到所有类型不等于所有事务中的任何类型的产品,但是我遇到了很多错误. 如果有人能为解决方案提供一些解释,我将非常感激. 解决方法
您可以使用
id() 函数获取已售出的所有项目的节点集,并在事务元素的产品属性节点集上使用它:
id(//transaction/@products) 并且您可以轻松扩展它以获得已售出的物品类型: id(//transaction/@products)/@type 你想要的是所有类型不在这个集合中的产品,由下式给出: //product[not(@type = id(//transaction/@products)/@type)] 在示例XML上使用此选项仅选择beaverCoat产品节点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |