如果子节点值包含特定文本,我想删除父节点:
<SHOP>
<SHOPITEM>
<NAME>TEST 1 </NAME>
<MANUFACTURER>
<![CDATA[Apple]]>
</MANUFACTURER>
</SHOPITEM>
<SHOPITEM>
<NAME>TEST 2 </NAME>
<MANUFACTURER>
<![CDATA[Samsung]]>
</MANUFACTURER>
</SHOPITEM>
</SHOP>
我正在使用以下XSLT代码:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="SHOPITEM[MANUFACTURER = 'Samsung']"/>
</xsl:stylesheet>
如果匹配的输入不在CDATA中,则此代码有效,但在上面的示例代码中,由于制造商位于CDATA中,因此该代码不起作用。有什么技巧可以使它起作用吗?
答案 0 :(得分:0)
尝试:
<xsl:template match="SHOPITEM[normalize-space(MANUFACTURER) = 'Samsung']"/>
P.S。这与CDATA无关。输入将是相同的问题:
<SHOP>
<SHOPITEM>
<NAME>TEST 1 </NAME>
<MANUFACTURER>
Apple
</MANUFACTURER>
</SHOPITEM>
<SHOPITEM>
<NAME>TEST 2 </NAME>
<MANUFACTURER>
Samsung
</MANUFACTURER>
</SHOPITEM>
</SHOP>