Xml 仅用不同的名称替换根元素-XSLT
我对XSLT做了一些小改动,因为我想用不同的名称替换顶部根节点。我尝试使用以下XSLT添加新根,但无法删除输入xml的初始根。有人能告诉我我错过了什么吗。多谢各位 下面是XSLT代码Xml 仅用不同的名称替换根元素-XSLT,xml,xslt,Xml,Xslt,我对XSLT做了一些小改动,因为我想用不同的名称替换顶部根节点。我尝试使用以下XSLT添加新根,但无法删除输入xml的初始根。有人能告诉我我错过了什么吗。多谢各位 下面是XSLT代码 <?xml version='1.0' encoding='utf-8'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/T
<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="root">
<ns:NewParent xmlns:ns="http://test.com/user">
<xsl:copy-of select="." />
</ns:NewParent>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
输入XML:
<root>
<root>
<a>TestA</a>
<b>Testb</b>
<c>Testc</c>
</root>
<root>
<a>TestA1</a>
<b>Testb1</b>
<l>Testl1</l>
</root>
<root>
<a>TestA12</a>
<b>Testb12</b>
<l>Testl2</l>
</root>
</root>
种皮
测试B
Testc
测试1
测试B1
测试1
测试12
测试B12
Testl2
输出/所需XML:
<ns:NewParent xmlns:ns="http://test.com/user">
<root>
<a>TestA</a>
<b>Testb</b>
<c>Testc</c>
</root>
<root>
<a>TestA1</a>
<b>Testb1</b>
<l>Testl1</l>
</root>
<root>
<a>TestA12</a>
<b>Testb12</b>
<l>Testl2</l>
</root>
</ns:NewParent>
种皮
测试B
Testc
测试1
测试B1
测试1
测试12
测试B12
Testl2
与根目录
匹配的模板会复制节点本身以及所有子节点。您应该改为执行
<xsl:template match="root">
<ns:NewParent xmlns:ns="http://test.com/user">
<xsl:copy-of select="node()" />
</ns:NewParent>
</xsl:template>
请注意模板现在如何匹配/root
,以便它只匹配顶级root
元素,而不匹配其子元素。非常感谢Tim:)收到了。谢谢你的帮助。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="/root">
<ns:NewParent xmlns:ns="http://test.com/user">
<xsl:apply-templates />
</ns:NewParent>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>