Примечание: отредактировано с обновленным кодом, что создает новые проблемы с пространствами имен.
Используя XSLT 3.0 и Saxon HE, я копирую XML-документ, и при его копировании мне нужно увеличить значение атрибута @n
в элементе <div type="foo" n="0300">
. В этом случае я хочу увеличить @n
на 1. Это текущий код:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//tei:div[@type='foo']">
<div type="foo">
<xsl:attribute name="n">
<xsl:value-of select="format-number(@n + 1,'0000')"/>
</xsl:attribute>
</div type>
</xsl:template>
Он должен производить:
<div type="foo" n="0002"/>
Но скорее производит следующее:
<div xmlns="" xmlns:ntei="http://www.example.org/ns/nonTEI" type="foo" n="0301"/>
Я работаю с пространством имен TEI. Как предотвратить добавление этих атрибутов: xmlns="" xmlns:ntei="http://www.example.org/ns/nonTEI"
?