2017-08-25 118 views
0

我想要一个XSLT程序,它将以一种方式转换XMl文件,这种方式将从根节点的所有子节点(直到深层)读取/提取所有属性并将其复制到父节点。然后删除所有的子节点。 输入XML在XSLT中,如何将所有子节点的所有属性复制到xml的根节点?

enter code here 
<root> 
    <a key="1"/> 
    <b key1="2"> 
    <c key3="3"/> 
    </b> 
</root> 

和输出XML会是这样的:

<root key="1" key1="2" key3="3" /> 
+0

你想如何处理具有相同属性的子节点? (例如,如果a,b和c都有一个属性“id”,例如你将在得到的根元素中使用哪个值? – Rob

+0

谢谢。对于第一步,是的,对我来说不会有问题。相同的属性名称。 – user3656511

回答

1

你可以这样做很简单:

XSLT 1.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:template match="/root"> 
    <xsl:copy> 
     <xsl:copy-of select="//@*"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

然而,元件不能具有相同na的两个属性我。如果您的XML具有相同属性的多个实例,则它们将相互覆盖,并且只有最后一个将出现在输出中。

相关问题