使用 Xpath 表达式检查引用其他元素的 xml 个元素

Using an Xpath expression to check xml elements that refer to other elements

假设我有一个 XML 结构:

<root>
    <products>
        <product>
            <name>myproduct 1</name>
        </product>
        <product>
            <name>myproduct 2</name>
        </product>
    </products>
    <invoices>
        <invoice number="1">
            <product>myproduct 1</product>
        </invoice>
        <invoice number="2">
            <product>myproduct 3</product>
        </invoice>
    </invoices>
</root>

我需要一个 XPath 表达式来仅定位存在产品元素的发票元素(因此发票中的产品与产品名称匹配)。所以在这种情况下,它会找到发票 1,但不会找到发票 2。

这可能吗?

当然可以:

//invoice[product = /root/products/product/name]

或:

//invoice[product = //products/product/name]

xpathtester demo

输出:

<invoice number="1"> 
  <product>myproduct 1</product> 
</invoice>