如何通过使用xslt匹配内容值从xml文档中删除内容?

时间:2016-06-07 05:03:47

标签: xml xslt xml-parsing

XML如下所示

<document><content name="State">Tripura</content><content name="District">West Tripura</content><content name="Year">2005</content><content name="January">N.A.</content><content name="February">5.8</content><content name="March">199.4</content><content name="April">99.8</content><content name="May">317.1</content><content name="June">166.5</content><content name="July">317.7</content><content name="August">403.3</content><content name="September">286.8</content><content name="October">200.9</content><content name="November">0</content><content name="December">0.6</content><content name="Annual_Total">N.A.</content></document>

我想忽略文档中内容=“N.A”的内容。使用xsl。有谁知道如何做到这一点,我是XSL的新手。

我希望以下列格式输出。

<document><content name="State">Tripura</content><content name="District">West Tripura</content><content name="Year">2005</content><content name="February">5.8</content><content name="March">199.4</content><content name="April">99.8</content><content name="May">317.1</content><content name="June">166.5</content><content name="July">317.7</content><content name="August">403.3</content><content name="September">286.8</content><content name="October">200.9</content><content name="November">0</content><content name="December">0.6</content></document>

1 个答案:

答案 0 :(得分:1)

你需要的是一个&#34;递归副本&#34;使用额外的模板来排除您不想要的内容

<xsl:transform version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="xml"/>

<xsl:template match="@*|*">
    <xsl:copy>
        <xsl:apply-templates select="@*|*"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="*[. = 'N.A.']"/>
</xsl:transform>