Вероятно, вы получаете ошибку, потому что элемент abc:set
имеет атрибуты, а ваш шаблон, соответствующий abc:set
, создает "голые" атрибуты, которые не прикреплены к элементу.
Поскольку вы не копируете элемент abc:set
(или не создаете элемент) в соответствии с шаблоном для abc:set
, когда apply-templates
внутри этого шаблона применяет шаблоны к выбранным abc:set/@*
и abc:set/node()
затем атрибуты соответствуют шаблону идентификации и будут скопированы вперед.
Вы можете проверить, является ли это проблемой, убрав @*
из оператора select для apply-templates
, например:
<xsl:template match="abc:set">
<xsl:apply-templates select="node()"/>
</xsl:template>
Приведенный выше шаблон будет обрабатывать только дочерние узлы abc:set
.
Если ваше намерение состояло в том, чтобы просто скопировать abc:set
, то вам не нужен конкретный шаблон, соответствующий этому элементу. Шаблон идентичности будет соответствовать ему и обрабатывать его для вас.