段落の子要素<version>
に含まれる属性に応じて、特定の親ノード(およびその子孫)を削除する必要があります。したがって、以下の例では、<version version="ABCD">
のインスタンスを見つけて、親の<para0>
要素からすべてを削除するためにXSLTが必要です。言い換えれば、私は条件付きテキストフィルタリングを達成しようとしています。私が一致させる必要がある要素(と削除する)は常に<applic>
の親になりますが、例のように常に<para0>
であるとは限りません。だから、何らかの方法で 'applic'要素の親要素と一致する必要があることを指定する必要があります明示的にpara0を指定します。C#XSLT子ノードの属性に基づいて親ノードを削除します
この例からはっきりしているはずです。バージョン属性がABCDのすべてのpara0データを削除する必要があります。
だから、これはいくつかのサンプルXMLここ
<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>
は私がこれまで持っていますが、私はそれを必要とし、一度ABCDにマッチした、基本的に「APPLIC」の親を選択して削除すると、すべてのXSLTです子ノード。
<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>
の可能性のある重複(http://stackoverflow.com/questions/1550981/how-to [XPathの中で "ない" を使用する方法?] -use-not-in-xpath) –