【问题标题】:How to remove duplicate elements from an xml file?如何从 xml 文件中删除重复元素?
【发布时间】:2010-09-12 04:06:17
【问题描述】:

我有一个类似的 XML 文件

<ns0:Employees xmlns:ns0="http://TestIndexMap.Employees">
  <Employee FirstName="FirstName_0" LastName="LastName_1" dept="dept_2" empNumber="1">
    <Schedules>
      <Schedule Date_join="2008-01-20" Date_end="2008-01-30" />
    </Schedules>
  </Employee>
  <Employee FirstName="FirstName_0" LastName="LastName_1" dept="dept_2" empNumber="2">
    <Schedules>
      <Schedule Date_join="2008-01-20" Date_end="2008-01-30" />
    </Schedules>
  </Employee>
  <Employee FirstName="FirstName_2" LastName="LastName_1" dept="dept_2" empNumber="2">
    <Schedules>
      <Schedule Date_join="2007-01-21" Date_end="2007-12-30" />

    </Schedules>
  </Employee>
  <Employee FirstName="FirstName_2" LastName="LastName_1" dept="dept_2" empNumber="2">
    <Schedules>
      <Schedule Date_join="2007-01-21" Date_end="2007-12-30" />
      <Schedule Date_join="2008-06-20" Date_end="2008-01-30" />

    </Schedules>
  </Employee>
</ns0:Employees>

我想根据 firstname、last name 和 date_join 和 data_end 删除重复项。

请问,有人可以解释如何使用 XSLT 实现这一目标吗?

【问题讨论】:

  • 请提供您的 XML 文件的结构 :)
  • 请去掉标题中的大写字母
  • 你喜欢什么语言?

标签: xml xslt xpath


【解决方案1】:

以下是how to remove duplicates based on element name and id field 的一些示例。将其扩展到任意字段应该不会太难。

问:扩展。我的 xml 的一部分看起来 像这样:

 <location>
   <state>xxxx</state>
 </location>

 <location>
    <state>yyyy</state>
 </location>

  <location>
    <state>xxxx</state>
 </location>

想要的输出是:

xxxx
yyyy

也就是说,不应该打印重复的状态值。 这可以做到吗?

   <xsl:variable name="unique-list"
     select="//state[not(.=following::state)]" />   

   <xsl:for-each select="$unique-list">
 <xsl:value-of select="." />
   </xsl:for-each>

【讨论】:

  • 感谢您的建议。我的案例第一步如果名字和姓氏匹配,那么我需要将计划合并到相同的数学计划中,下一步是根据第一个名字、姓氏、日期加入、日期结束来删除计划节点中的所有重复项。
猜你喜欢
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多