2017-09-26 9 views
0

を持っている場合、私は私が私の最終的な出力が見えるはずですだけは子供がいくつかの特定の文字列

<Sales_Channel ID=123> 
<Name>Online</Name> 
</Sales_Channel> 

でタグ付けされたそれらのパッケージを除外したいと思い、次のXML

<root> 
<Package1> 
<Name> Test </Name> 
<Sales_Channel ID=123> 
<Name>Online</Name> 
</Sales_Channel> 
<Sales_Channel ID=234> 
<Name>Direct</Name> 
</Sales_Channel> 
</Package1> 
<Package2> 
<Name> Test </Name> 
<Sales_Channel ID=234> 
<Name>Direct</Name> 
</Sales_Channel> 
</Package2> 
<Package3> 
<Name> Test </Name> 
<Sales_Channel ID=123> 
<Name>Online</Name> 
</Sales_Channel> 
</Package3> 
</root> 

を持つ親ノード全体を除外する下記のように:

<root> 
<Package1> 
<Name> Test </Name> 
<Sales_Channel ID=123> 
<Name>Online</Name> 
</Sales_Channel> 
<Sales_Channel ID=234> 
<Name>Direct</Name> 
</Sales_Channel> 
</Package1> 
<Package2> 
<Name> Test </Name> 
<Sales_Channel ID=234> 
<Name>Direct</Name> 
</Sales_Channel> 
</Package2> 
</root> 

答えて

0

これはあなたのために働くかもしれません。 Microsoft 1.0で動作します。 ID値の周りに引用符を追加してそこで動作させる必要がありました。

<!-- Suppress. --> 
    <xsl:template match="*[contains(local-name(), 'Package') and .//Sales_Channel[@ID='123'] and not(.//Sales_Channel[@ID!='123'])]"/> 

    <!-- Identity template --> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
+0

ありがとう、それはうまくいきました。 –

関連する問題