Я действительно просто хочу получить XML-фильтр (по имени узла, некоторые
атрибут и т. д.) и сгенерировать (отфильтрованную / уменьшенную) версию этого xml.
Как вы думаете, xslt подход самый простой?
XSLT - это язык, который был специально разработан для преобразования древовидного ввода. Вот почему это, вероятно, лучший и самый простой способ реализации таких задач.
Вот пример :
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
Мы хотим создать из этого документа XML другой документ, который имеет такую же структуру и имя / содержание элемента, но содержит только те элементы num
из исходного документа, значение которых кратно 3.
Вот преобразование, чтобы выполнить это :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="num[not(. mod 3) = 0]"/>
</xsl:stylesheet>