1。)目标XML是:
<Node1>
<Node2>
<Node3 attx="1" attry="2" attrz="3">
<child1 att1="1" attr2="2" attr3="3"/>
<child1 att1="1" attr2="2" attr3="3"/>
<child1 att1="1" attr2="2" attr3="3"/>
</Node3>
</Node2>
</Node1>
2。)XSLT代码:
<xsl:template match="Node1/Node2/Node3">
<xsl:copy>
<xsl:apply-templates/>
<BasicDouble attr1="104" attr2="12312" attr3="0" />
<BasicEnum attr1="104" attr2="12312" attr3="0" />
<Pair Key="0" Value="First"/>
<Pair Key="1" Value="Last"/>
</BasicEnum>
</xsl:copy>
</xsl:template>
3.)获得结果
<Node1>
<Node2>
<Node3>
<child1 att1="1" attr2="2" attr3="3"/>
<child1 att1="1" attr2="2" attr3="3"/>
<child1 att1="1" attr2="2" attr3="3"/>
<BasicDouble attr1="104" attr2="12312" attr3="0" />
<BasicEnum attr1="104" attr2="12312" attr3="0" />
<Pair Key="0" Value="First"/>
<Pair Key="1" Value="Last"/>
</Node3>
</Node2>
</Node1>
问题是,使用此代码,Node3的属性将被删除。 我应该如何更改脚本以便复制Node3的属性? 在此先感谢您的帮助!
答案 0 :(得分:0)
添加<xsl:copy-of select="@*" />
作为<xsl:copy>
元素的第一个子元素,以复制Node3
的所有属性。
我还在一个元素上删除了一个结束/
,以使XSLT格式良好。
<xsl:template match="Node1/Node2/Node3">
<xsl:copy>
<xsl:copy-of select="@*" /> <!-- copy attributes -->
<xsl:apply-templates />
<BasicDouble attr1="104" attr2="12312" attr3="0" />
<BasicEnum attr1="104" attr2="12312" attr3="0"> <!-- no closed element -->
<Pair Key="0" Value="First"/>
<Pair Key="1" Value="Last"/>
</BasicEnum>
</xsl:copy>
</xsl:template>