-1
我有一个xml文件,我需要通过创建一个空的父节点将具有贸易项目标识的特定子节点(如childA)移动/复制到父节点。在条件下将子节点移动到父节点
像输入XML:
<root>
<Payload>
<TradeItemVersion>
<TradeItemID>A</TradeItemID>
<TradeItemTitle>B</TradeItemTitle>
<ProductID>C</ProductID>
<TradeItemVersion>
<Child>
<TradeItemID>ChildA</TradeItemID>
<TradeItemTitle>Child</TradeItemTitle>
<ProductID>Child</ProductID>
<Child>
<Child>
<TradeItemID>ChildB</TradeItemID>
<TradeItemTitle>Child</TradeItemTitle>
<ProductID>Child</ProductID>
<Child>
<Payload>
<root>
最终输出:
<root>
<Payload>
<TradeItemVersion>
<TradeItemID>ChildA</TradeItemID>
<TradeItemTitle>Child</TradeItemTitle>
<ProductID>Child</ProductID>
<TradeItemVersion>
<TradeItemVersion>
<TradeItemID>A</TradeItemID>
<TradeItemTitle>B</TradeItemTitle>
<ProductID>C</ProductID>
<TradeItemVersion>
<Child>
<TradeItemID>ChildB</TradeItemID>
<TradeItemTitle>Child</TradeItemTitle>
<ProductID>Child</ProductID>
<Child>
<Payload>
<root>
我能以最快的复制孩子,但所有孩子的越来越复制和我无法选择特定的孩子,我也无法创建新的空父母标签来将孩子放在里面。
我的代码如下:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="TradeItemVersion">
<xsl:apply-templates mode="search"/>
<xsl:call-template name="identity"/>
</xsl:template>
<xsl:template match="Child"/>
<xsl:template match="Child" mode="search">
<xsl:call-template name="identity"/>
</xsl:template>
<xsl:template match="text()" mode="search"/>
</xsl:stylesheet>
请建议。