Я ищу способ отфильтровать некоторые узлы в XML. В выводе я хотел бы оставить все узлы , если :
<year>
это 2020
и
<year>
2019 И <available>
- ДА.
необработанный xml:
<root>
<item>
<code>1</code>
<available>YES</available>
<year>2020</year>
</item>
<item>
<code>2</code>
<available>NO</available>
<year>2020</year>
</item>
<item>
<code>3</code>
<available>NO</available>
<year>2019</year>
</item>
<item>
<code>3</code>
<available>YES</available>
<year>2019</year>
</item>
</root>
Результаты теста:
<root>
<item>
<code>1</code>
<available>YES</available>
<year>2020</year>
</item>
<item>
<code>2</code>
<available>NO</available>
<year>2020</year>
</item>
<item>
<code>3</code>
<available>YES</available>
<year>2019</year>
</item>
</root>
Я могу отфильтровать узлы 2020, 2019 с:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item[not(YEAR = 2020) and not(YEAR = 2019)]" />
</xsl:stylesheet>
Я просто не могу уточнить второе условие <year> is 2019 AND <available> is YES.