【问题标题】:XSL: how to copy a tree, but removing some nodes?XSL:如何复制树,但删除一些节点?
【发布时间】:2009-07-16 13:24:59
【问题描述】:

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

假设我有以下 XML 树:

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

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

【问题讨论】:

    标签: xslt


    【解决方案1】:

    你想要一个身份转换。 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>
    

    【讨论】:

    • 很棒,而且插图非常简单! +1
    • 如何调用这个模板?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多