如何合并具有“相同父亲”和具有精确“方法”序列的两个节点(使用 XSLT)?

Posted

技术标签:

【中文标题】如何合并具有“相同父亲”和具有精确“方法”序列的两个节点(使用 XSLT)?【英文标题】:how to merge two nodes having "the same father" and having a precise "method" sequence (using XSLT)? 【发布时间】:2012-07-11 05:17:53 【问题描述】:

我需要合并两个节点MANHATTAN:

因为我们的系统规则如下:

CREATE A + MODIFY A”仍然是“CREATE A with the combined attributes”

输入文件:

<?xml version="1.0" encoding="UTF-8"?>
<world>
<COUNTRY id="USA" >
  <STATE id="NEW JERSEY">
     <CITY id="NEW YORK" method="modify">


        <DISTRICT id="MANHATTAN" method="create">
           <attributes>
              <population>99 </population> 
              <income> 10000</income>
           </attributes>
        </DISTRICT>

        <DISTRICT id="MANHATTAN" method="modify">
           <attributes>
              <temperature>78</temperature>
              <income>15000</income>
              <information>suburb of newyork</information>
           </attributes>
        </DISTRICT>

     </CITY>

  </STATE>

预期输出:

 <?xml version="1.0" encoding="UTF-8"?>
 <world>
 <COUNTRY id="USA" >
  <STATE id="NEW JERSEY">
     <CITY id="NEW YORK" method="modify">

        <DISTRICT id="MANHATTAN" method="create">
           <attributes>
              <population>99 </population> 
              <temperature>78</temperature>
              <income>15000</income>
              <information>suburb of newyork</information>
           </attributes>
        </DISTRICT>

     </CITY>
 </STATE>
</COUNTRY>
</world>

请帮忙,我刚开始使用 XSLT,用 Perl 或 Python 做这件事需要几个小时。

【问题讨论】:

会一直有两个节点吗? 是的,你完全猜对了。规则是 1 CREATE + 1 MODIFY 转换成 1 CREATE 【参考方案1】:

根据how to merge two nodes having "the same father", the same method and the same id=0 (using XSLT)?的类似问题调整解决方案

阅读解决方案以了解分组的工作原理,然后相应地更改分组键。

【讨论】:

以上是关于如何合并具有“相同父亲”和具有精确“方法”序列的两个节点(使用 XSLT)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中表示和合并具有*日期范围*的时间序列数据帧?

将数据框中的两列或多列合并为具有新名称的新列

反序列化在不同 MailChimp 列表中具有不同名称的合并字段和兴趣

合并具有时间容差的 pandas 时间序列

熊猫合并具有不同名称的列并避免重复[重复]

如何合并来自上下文相关的两列的数据?