代码之家  ›  专栏  ›  技术社区  ›  Leonel

如何复制树,但删除一些节点?

  •  13
  • Leonel  · 技术社区  · 15 年前

    我想使用XSL从树中删除一些元素。

    假设我有以下XML树:

    <?xml version="1.0" ?>
    <mydoc>
        <file>
            <colors>
                <blue />
                <red />
                <green />
            </colors>
            <secret>
                <username />
                <password />
            </secret>
        </file>
    </mydoc>
    

    我想从中删除用户名和密码节点。如何继续使用XSL?

    1 回复  |  直到 13 年前
        1
  •  24
  •   lavinio    15 年前

    你想要一个 身份转换 . 在XSLT中,一个常见的设计模式是复制所有内容的转换。然后添加模板以删除或转换源和目标之间的差异。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="node() | @*">
            <xsl:copy>
                <xsl:apply-templates select="node() | @*"/>
            </xsl:copy>
        </xsl:template>
        <xsl:template match="username|password"/> <!-- this empty template will remove them -->
    </xsl:stylesheet>