我试图将一个节点复制到另一个父节点,并更改我将得到的xml输出的根。
XML输入:
<root version="2">
<address>
<id>300000001</id>
<name>Test</name>
<owner>
<code>NWE</code>
</owner>
<magazin>
<id>300000001</id>
<kind>
<code>JU</code>
</kind>
<storage>
<kinds>
<code>JUc</code>
</kinds>
<capacity>5800</capacity>
</storage>
<extra>
<extra name="nr">22</extra>
</extra>
</magazin>
</address>
</root>期望产出:
<tag>
<root version="2">
<address>
<id>300000001</id>
<name>Test</name>
<owner>
<code>NWE</code>
</owner>
</address>
</root>
<root version="2">
<magazin>
<id>300000001</id>
<kind>
<code>JU</code>
</kind>
<storage>
<kinds>
<code>JUc</code>
</kinds>
<capacity>5800</capacity>
</storage>
<extra>
<extra name="nr">22</extra>
</extra>
</magazin>
</root>
</tag>基本上,我希望将节点"magazin“复制到另一个"root”标记中,将其与第一个标记分开,并将所有这些输出放在称为" tag“的标记下面。我的XSL似乎只是复制,我希望你能帮我找出缺少什么,以及如何正确使用。
目前的XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="magazin">
<root version='2'>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</root>
</xsl:template>
谢谢你的帮助!
发布于 2017-01-24 19:16:02
这样试一试:
XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root">
<tag>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<xsl:copy>
<xsl:copy-of select="@* | address/magazin"/>
</xsl:copy>
</tag>
</xsl:template>
<xsl:template match="magazin"/>
</xsl:stylesheet>这会将magazin节点复制到root的第二个副本中,并禁止将其复制到第一个副本中。
https://stackoverflow.com/questions/41836245
复制相似问题