У меня есть простой XML, к которому я хочу добавить новый корень. Текущий корень - <myFields>, и я хочу добавить <myTable>, чтобы он выглядел так.
<myFields>
<myTable>
<myTable> <myFields> . . </myFields> </myTable>
Нечто подобное должно работать для вас ...
<xsl:template match="/"> <myTable> <xsl:apply-templates/> </myTable> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template>
Эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/*"> <myTable> <xsl:call-template name="identity"/> </myTable> </xsl:template> <xsl:template match="@*|node()" name="identity"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Примечание : скопировать все ( также PI перед корневым элементом ) и добавить myTable befere корневой элемент.
myTable
Это, вероятно, самое короткое решение :):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <myTable> <xsl:copy-of select="node()" /> </myTable> </xsl:template> </xsl:stylesheet>
вы помогли мне подойти достаточно близко
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:element name="myTable"> <xsl:copy-of select="*" /> </xsl:element> </xsl:template> </xsl:stylesheet>