Comment supprimer les éléments en double d'un fichier XML?
Question
J'ai un fichier XML comme
<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>
Je voudrais supprimer les doublons en fonction du nom de famille, du nom de famille, des dates_join et data_end.
S'il vous plaît, quelqu'un peut-il expliquer comment y parvenir avec XSLT?
La solution
Voici quelques exemples de comment supprimer les doublons en fonction du nom de l'élément et du champ id . Il ne devrait pas être trop difficile d’étendre cela à des champs arbitraires.
Q: Expansion. Une partie de mes looks xml comme ceci:
<location>
<state>xxxx</state>
</location>
<location>
<state>yyyy</state>
</location>
<location>
<state>xxxx</state>
</location>
La sortie souhaitée est:
xxxx
yyyy
C'est-à-dire que les valeurs d'état en double ne doivent pas être imprimées. Cela peut-il être fait?
<xsl:variable name="unique-list"
select="//state[not(.=following::state)]" />
<xsl:for-each select="$unique-list">
<xsl:value-of select="." />
</xsl:for-each>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow