在xslt中使用conditoning删除xml节点

时间:2016-01-12 13:19:15

标签: xslt

我有像这样的xml,

ex 1.

<books>
     <book type="ABA"></book>
     <book type="ABC"></book>
</books>

前2。

<books>
 <book type="ABA"</book>
</books>

如果xml中只有ABA,我想删除整个Books节点。如果还有aba其他值,那么我只想删除具有该ABA值的书,因此结果xml将在书籍中单独使用ABC。

<books>
 <book type="ABC"></book>
</books>

表示前2。书籍节点不应该来。请辅助

1 个答案:

答案 0 :(得分:1)

怎么样:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match="book[@type='ABA']"/>

<xsl:template match="books[not(book[not(@type='ABA')])]"/>

</xsl:stylesheet>