Я хочу удалить узел из файла XML (используя SaxonHE9-8-0-11J):
<project name="Build">
<property name="src" value="src/main/resources" />
<property name="target" value="target/classes" />
<condition property="target.exists">
<available file="target" />
</condition>
</project>
Очевидно, есть 2 способа, которыми я могу сделать это .
XPath1: использование не функции
XPath2: использование условия исключения. Но оба просто возвращают весь набор узлов.
Без функции:
saxonb-xquery -s:test.xml -qs:'*[not(local-name()="condition")]'
С исключающим предложением:
saxonb-xquery -s:test.xml -qs:'* except condition'
С ключом -explain запросы:
<query>
<body>
<filterExpression>
<axis name="child" nodeTest="element()"/>
<operator op="ne (on empty return true())">
<functionCall name="local-name">
<dot/>
</functionCall>
<literal value="condition" type="xs:string"/>
</operator>
</filterExpression>
</body>
</query>
и
<query>
<body>
<operator op="except">
<axis name="child" nodeTest="element()"/>
<path>
<root/>
<axis name="descendant" nodeTest="element(condition, xs:anyType)"/>
</path>
</operator>
</body>
</query>