Использование выражения Xpath для проверки элементов xml, которые ссылаются на другие элементы

Представьте, что у меня есть структура 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.

Это возможно?


person rghome    schedule 14.12.2015    source источник


Ответы (1)


Конечно можно:

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

or :

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

xpathtester demo

вывод:

<invoice number="1"> 
  <product>myproduct 1</product> 
</invoice>
person har07    schedule 14.12.2015
comment
Спасибо - позвольте мне проверить это. - person rghome; 14.12.2015
comment
Здорово. Он также работал с условием not для удаления недопустимых записей. - person rghome; 14.12.2015