ich eine große XML-Datei und ich möchte angegebenen Elemente herauszufiltern basierend auf mehreren Bedingungen, insbesondere:XSLT auszufiltern Element mit mehreren Bedingungen
<title> contains 'K17' AND <category> contains 'APPLE'
Also begann ich mit so etwas wie folgt aus:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g="http://base.google.com/ns/1.0">
<xsl:output omit-xml-declaration="no" indent="yes" method="xml"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item[not(title/contains(text(),'K17')) and not(category/contains(text(),'APPLE'))]" />
</xsl:stylesheet>
Test-XML:
<channel>
<item>
<title>K170001 Test 1</title>
<category><![CDATA[APPLE > MOBILE > IPHONE]]></category>
</item>
<item>
<title>K170002 Test 2</title>
<category><![CDATA[APPLE > MOBILE > IPHONE]]></category>
</item>
<item>
<title>K1x70003 Test 3</title>
<category><![CDATA[APPLE > MOBILE > IPHONE]]></category>
</item>
<item>
<title>K170004 Test 4</title>
<category><![CDATA[APxPLE > MOBILE > IPHONE]]></category>
</item>
</channel>
die letzten beiden Elemente sollen nicht in dem endgültigen XML, beca sein verwende 'K1x70003' und 'APxPLE'.
Und das ist, wo meine XSLT fehlschlägt, sieht aus wie AND-Operator als OR-Operator funktioniert.