Я на самом деле выполняю преобразование с помощью XSL, и мне нужно создать шаблон, который сможет добавить узел в дерево узлов и вернуть все это дерево узлов с новым узлом.
В моем примере , Я хотел бы добавить узел <node3>HIJ</node3>
после </node2>
, он работает в какой-то момент, но я теряю верхний узел.
Дерево узлов:
<xsl:variable name="A">
<node>
<node1>ABC</node1>
<node2>DEF</node2>
<node4>KLM</node4>
</node>
</xsl:variable>
вызов шаблона
<xsl:apply-templates select="$A" mode="copy">
<xsl:with-param name="ValueOfTheNode" select="'HIJ"/>
</xsl:apply-templates>
Мой шаблон, который фактически не работает
<xsl:template match="node()/*" mode="copy">
<xsl:param name="ValueOfTheNode"/>
<xsl:copy-of select="."/>
<xsl:if test="./name() = 'node2'">
<node3>
<xsl:value-of select="$ValueOfTheNode"/>
</node3>
</xsl:if>
</xsl:template>
Текущий результат:
<node1>ABC</node1>
<node2>DEF</node2>
<node3>HIJ</node3>
<node4>KLM</node4>
Ожидаемый результат
<node>
<node1>ABC</node1>
<node2>DEF</node2>
<node3>HIJ</node3>
<node4>KLM</node4>
</node>
Я не знаю, как сказать коду сохранить верхний узел, или, может быть, я с самого начала ошибаюсь в том, как его лечить. Я использую xsl 2.0.
Спасибо