Далее выполняется удаление ненужных элементов и атрибутов по имени ( "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"/>
Желаемый результат - это способность удалять один или несколько элементов и/или один или несколько атрибутов , сохраняя при этом различия между элементами и атрибутами (другими словами, должно быть возможно удалить все "временные" элементы без, также удалив все атрибуты "время" ).
Пока мне нужен XSLT 1.0 в этом раунде, решения XSLT 2.0 в принятых и других ответах могут быть полезны для других.