XSLT如果显示具有特定值的子标签,则删除整个标记

时间:2015-11-25 13:01:47

标签: xml xslt

我有以下xml:

<root>
    <product>
        <some-another-tag>45</some-another-tag>
        <provider>1</provider>
    </product>
    <product>
        <some-another-tag>45</some-another-tag>
        <provider>2</provider>
    </product>
    <product>
        <some-another-tag>45</some-another-tag>
        <provider>3</provider>
    </product>
    <product>
        <some-another-tag>45</some-another-tag>
        <provider>1</provider>
    </product>
    <product>
        <some-another-tag>45</some-another-tag>
        <provider>8</provider>
    </product>
</root>

使用xsl转换我想删除整个<product>标记,如果其中有<provider>1</provider>

我该如何构建这样的模板?

1 个答案:

答案 0 :(得分:1)

通常,如果要删除某些元素,则先从身份转换模板开始,然后添加与要删除的元素相匹配的空模板,请参阅http://xsltransform.net/pPzifpk

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

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

    <xsl:template match="product[provider = 1]"/>

</xsl:transform>