Как удалить повторяющиеся элементы из XML-файла?

У меня есть файл 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>

Я хотел бы удалить дубликаты на основе имени кулака, фамилии и date_join и data_end .

Пожалуйста, может кто-нибудь объяснить, как добиться этого с помощью XSLT?


person Community    schedule 22.09.2008    source источник
comment
Пожалуйста, предоставьте структуру вашего XML-файла :)   -  person Swati    schedule 23.09.2008
comment
Пожалуйста, уберите заглавные буквы с заголовка   -  person Serafina Brocious    schedule 23.09.2008
comment
Какие языки вы предпочитаете?   -  person Xian    schedule 23.09.2008


Ответы (1)


Вот несколько примеров того, как удалить дубликаты на основе имени элемента и поля идентификатора. Не должно быть слишком сложно распространить это на произвольные поля.

В: Расширение. Часть моего 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>
person 1800 INFORMATION    schedule 23.09.2008
comment
Спасибо за совет. мой случай первый шаг Если имя и фамилия совпадают, мне нужно будет объединить расписания с одними и теми же математическими расписаниями, а на следующем шаге удалить все дубликаты в узле расписания на основе имени кулака, фамилии, даты_присоединения, даты_окончания. - person ; 23.09.2008