Следующее выполняет работу по удалению нежелательных элементов и атрибутов по имени (в данном примере «removeMe») из файла XML:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node() | @*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="removeMe"/>
</xsl:stylesheet>
Проблема заключается в том, что он не различает элементы и атрибуты, имя жестко запрограммировано и он может принимать только одно имя. Как это можно переписать, чтобы использовать пару входных параметров, как показано ниже, для удаления одного или нескольких конкретных элементов и / или атрибутов?
<xsl:param name="removeElementsNamed"/>
<xsl:param name="removeAttributesNamed"/>
Желаемый результат - возможность удалить один или более элементов и / или одного или нескольких атрибутов, при этом различая элементы и атрибуты (другими словами, должна быть возможность удалить все "t ime " элементы без , также удаляющие все атрибуты" time " ).
Хотя в этом раунде мне требовался XSLT 1.0, принятые решения XSLT 2.0 и другие ответы могут быть полезны другим.