XSL: как скопировать дерево, но удалив некоторые узлы? - PullRequest
13 голосов
/ 16 июля 2009

Я хочу использовать XSL для удаления некоторых элементов из дерева.

Предположим, у меня есть следующее дерево XML:

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

Я хочу удалить из него узлы имени пользователя и пароля. Как мне поступить с XSL?

1 Ответ

24 голосов
/ 16 июля 2009

Вы хотите преобразование личности . Общий шаблон проектирования в 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...