Ich muss in der Lage sein, einen bestimmten übergeordneten Knoten (und seine untergeordneten) in Abhängigkeit von den Attributen innerhalb des untergeordneten Elements <version>
des Absatzes zu entfernen. Im folgenden Beispiel brauche ich XSLT, um die Instanz <version version="ABCD">
zu finden und alles aus dem übergeordneten Element <para0>
zu entfernen. Mit anderen Worten versuche ich, bedingte Textfilterung zu erreichen. Das Element, das ich zuordnen muss (und entfernen) wird IMMER das übergeordnete Element von <applic>
sein, aber möglicherweise nicht immer ein <para0>
wie in dem Beispiel, so dass ich irgendwie angeben muss, dass es dem übergeordneten Element des Elements 'applic' entsprechen muss explizit angeben para0.C# XSLT entfernen Elternknoten basierend auf Attribut von Childnode
Es sollte klarer aus dem Beispiel sein. Ich muss alle para0 Daten mit einem Versionsattribut von ABCD entfernen.
So ist dies eine XML-Beispiel
<root>
<para0>
<applic>
<model>
<version version="ABCD"></version>
</model>
</applic>
<subpara1><title>First Title</title>
<para>Some text relating to ABCD configuration</para>
</subpara1>
<subpara1><title>Second Title</title>
<para>Some other text and stuff relating to ABCD configuration</para>
</subpara1>
</para0>
<para0>
<applic>
<model>
<version version="TRAINING"></version>
</model>
</applic>
<subpara1><title>First Title</title>
<para>Some text relating to TRAINING configuration</para>
</subpara1>
<subpara1><title>Second Title</title>
<para>Some other text and stuff relating to TRAINING configuration</para>
</subpara1>
</para0>
</root>
Hier wird die XSLT-i so weit, aber ich brauche es, einmal zu ABCD abgestimmt, um im Grunde zu wählen und die Eltern von ‚applic‘ löschen und alle Kindknoten.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml" indent="yes"/>
<xsl:strip-space elements = "*" />
<xsl:template match = "@*|node()" >
<xsl:copy>
<xsl:apply-templates select = "@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match = "//applic/model[@*]/version[@version='ABCD']" />
</xsl:stylesheet>
Mögliche Duplikat [How to use "und nicht" in XPath?] (Http://stackoverflow.com/questions/1550981/how-to -use-not-in-xpath) –