XSLT Перемещение элемента в другой узел

У меня возникла следующая проблема.

У меня есть этот XML

<!--?xml version="1.0"?-->
<root>
 <first>a</first>
 <third>
 <goal>b</goal>
 </third>
</root>

И мне это нужно в этом макете

<!--?xml version="1.0"?-->
<root>
 <first>a</first>
 <second>
 <goal>b</goal>
 </second>
</root>

Поэтому я подумал, что XSLT станет для меня подходящим инструментом, но я не работаю.

Это мой XSLT

<!--?xml version="1.0"?-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1">

 <xsl:template match="@* | node()">
 <xsl:copy>
 <xsl:apply-templates select="@* | node()">
 </xsl:apply-templates></xsl:copy>
 </xsl:template>



 <xsl:template match="/root/third/goal">
 
 </xsl:template> 
</xsl:output></xsl:stylesheet>

Любая помощь будет приветствоваться :-)

1 ответ

Если вы хотите изменить third элемент, вам нужно написать шаблон:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1">

 <xsl:template match="@* | node()">
 <xsl:copy>
 <xsl:apply-templates select="@* | node()">
 </xsl:apply-templates></xsl:copy>
 </xsl:template>



 <xsl:template match="root/third[goal]">
 <second>
 <xsl:apply-templates>
 </xsl:apply-templates></second>
 </xsl:template>

</xsl:output></xsl:stylesheet>

licensed under cc by-sa 3.0 with attribution.