Это преобразование :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="name">
<brlName><xsl:apply-templates select="node()|@*"/></brlName>
</xsl:template>
<xsl:template match="/*/*[last()]">
<xsl:call-template name="identity"/>
<drlName>86_1.0</drlName>
</xsl:template>
</xsl:stylesheet>
при применении к предоставленному XML-документу :
<rule>
<name>86</name>
<ruleId>100</ruleId>
<ruleVersion>1.0</ruleVersion>
<brlVersion>1.0</brlVersion>
</rule>
создает искомое, правильный результат:
<rule>
<brlName>86</brlName>
<ruleId>100</ruleId>
<ruleVersion>1.0</ruleVersion>
<brlVersion>1.0</brlVersion>
<drlName>86_1.0</drlName>
</rule>
Пояснение :
Использование и переопределение правила / шаблона идентификации - наиболее фундаментальное имощный шаблон проектирования XSLT.
Переопределить для любого элемента с именем name
и создать элемент с именем brlName
(переименовать).
Переопределитьна последнем последнем элементе дочернего элемента верхнего элемента.Вызов правила идентификации по имени для этого узла (копирование), а затем создание элемента с именем drlName
с определенным дочерним узлом текстового узла в соответствии с требованиями.
Использование ипереопределение правила / шаблона идентификации является наиболее фундаментальным и мощным шаблоном проектирования XSLT.Вы можете узнать больше об этом здесь .