XSL: как скопировать дерево, но удалив некоторые узлы?
Я хочу использовать XSL для удаления некоторых элементов из дерева.
Предположим, у меня есть следующее дерево XML:
<?xml version="1.0" ?>
<mydoc>
<file>
<colors>
<blue />
<red />
<green />
</colors>
<secret>
<username />
<password />
</secret>
</file>
</mydoc>
Я хочу удалить из него узлы имени пользователя и пароля. Как мне поступить с XSL?
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>