Wie doppelte Elemente aus einer XML-Datei entfernen?
Frage
Ich habe eine XML-Datei wie
<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>
Ich mag die Duplikate auf der fistname, Nachnamen und date_join und data_end Basis entfernen.
Bitte, kann jemand erklären, wie dies mit XSLT achive?
Lösung
Hier sind einige Beispiele von wie Duplikate zu entfernen, basierend auf Elementnamen und ID-Feld . Es sollte nicht zu hart sein, um beliebige Felder zu erweitern.
Q: Expansion. Ein Teil meines xml Aussehen wie folgt aus:
<location>
<state>xxxx</state>
</location>
<location>
<state>yyyy</state>
</location>
<location>
<state>xxxx</state>
</location>
Die gewünschte Ausgabe ist:
xxxx
yyyy
Das heißt, doppelte Werte von Staat sollte nicht gedruckt werden. Kann dies geschehen?
<xsl:variable name="unique-list"
select="//state[not(.=following::state)]" />
<xsl:for-each select="$unique-list">
<xsl:value-of select="." />
</xsl:for-each>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow