【问题标题】:In XSLT, how to copy all attributes from all child nodes to root node of xml?在 XSLT 中,如何将所有子节点的所有属性复制到 xml 的根节点?
【发布时间】:2017-08-25 13:19:33
【问题描述】:

我想要一个 XSLT 程序,该程序将转换 XMl 文件,以从根节点的所有子节点(直到深层)读取/提取所有属性并复制到父节点。然后删除所有子节点。 输入xml

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

输出的xml会是这样的:

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

【问题讨论】:

  • 你想如何处理具有相同属性的子节点? (例如,如果 a、b 和 c 都具有属性“id”,例如,您将在生成的根元素中使用哪个值?
  • 谢谢。是的,初始步骤。这对我来说不是问题。可以使用相同的属性名称。

标签: xml xslt-1.0 xslt-2.0


【解决方案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>

但是,一个元素不能有两个同名的属性。如果您的 XML 具有多个相同属性的实例,它们将相互覆盖,并且只有最后一个会出现在输出中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多