我有以下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>
我想排除那些仅用
标记的包<Sales_Channel ID=123>
<Name>Online</Name>
</Sales_Channel>
所以我的最终输出应如下所示:
<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 :(得分: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>