Ich wünsche Element entfernen d
und <!-- d -->
Kommentar, wenn die Eltern c="string1"
XSLT: ein Kind entfernen, wenn ein Elternteil ein Attribut hat
Eingang Attribut haben:
<a>
<b c="string1">
<!-- d -->
<d>
<e/>
</d>
<f/>
</b>
<b c="string2">
<!-- d -->
<d>
<e/>
</d>
<f/>
</b>
</a>
gewünschte Ausgabe:
<a>
<b c="string1">
<f/>
</b>
<b c="string2">
<!-- d -->
<d>
<e/>
</d>
<f/>
</b>
</a>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<!-- Identity transform -->
<xsl:template match="@*|node()" name="identity">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Those templates do not work -->
<xsl:template match="d[???]" />
<xsl:template match="comment()="d" />
</xsl:stylesheet>
Der gewünschte Gleichheitsausdruck wäre '. = 'd' '. Übersehen Sie nicht die Räume auf beiden Seiten des 'd'. –
Außerdem wäre es konventioneller, anstelle von Prädikatausdrücken, die Knoten auf der Vorfahrachse testen, normale Pfadausdrücke zu verwenden. Zum Beispiel, 'match =" b [@ c = 'string1']/d "'. –