У меня есть XML, такие какГруппировка ссылки на функцию XPath в пределах произвольного множества элементов
<doc>
<Object id="x">
<Attributes>
<MATERIAL>PLA</MATERIAL>
<METHOD>Inserted</METHOD>
<PRESSURE>HP</PRESSURE>
</Attributes>
</Object>
<Object id="y">
<Attributes>
<MATERIAL>P</MATERIAL>
<METHOD>Unknown</METHOD>
<PRESSURE>HP</PRESSURE>
</Attributes>
</Object>
.
.
.
</doc>
где элемент объекта появляется априорным неизвестное число раз, и я хочу, чтобы иметь выражение XPath, который возвращает 0 или 1, если условие выполняется в любом (по крайней мере 1) объектов.
Делать что-то вроде
number(boolean(//Object/Attributes[(MATERIAL="PLA")])) * number(boolean(//Object/Attributes[(METHOD="Unknown")]))
возвращает 1, потому что оба они истинны где-то, но я хочу 0, потому что нигде в любом одном объекте являются они оба истинны.
Я ограничен XML 1.0.
Я надеялся на гладкое решение, возможно, связанное с каким-то предикатом объекта, который я не смог обнаружить.
Каждый атрибут объекта уникален, если его можно использовать.
Опираясь на параллель с SQL, я хочу как-то группировать объект при применении условия интереса.
Хотя я могу программно извлекать объекты и обрабатывать их индивидуально, я бы действительно не хотел!
ТИА, Дэйв