So entfernen Sie Duplikate aus dem folgenden xml mit xslt. Im Folgenden wird der Code verwendet. Es funktioniert gut für die Duplikate zu entfernen, aber ich bin nicht in der Lage, die entsprechenden WerteEntfernen von Duplikaten aus xml mit xslt
<schedules>
<flight>
<Flight>
<fno>122</fno>
<acode>aa</acode>
<Dest1IATA>ATL</Dest1IATA>
<Dest1desc>Atlanta Airport</Dest1desc>
<Dest1town>Atlanta </Dest1town>
<Dest2IATA>JFK</Dest2IATA>
<Dest2desc></Dest2desc>
<Dest2town></Dest2town>
<Dest2cntry></Dest2cntry>
<Dest3IATA>LGA</Dest3IATA>
<Dest3desc></Dest3desc>
<Dest3town></Dest3town>
<Dest3cntry></Dest3cntry>
</Flight>
<Flight>
<fno>124</fno>
<acode>aB</acode>
<Dest1IATA>LCY</Dest1IATA>
<Dest1desc>LCY Airport</Dest1desc>
<Dest1town>LCY</Dest1town>
<Dest2IATA>DXB</Dest2IATA>
<Dest2desc></Dest2desc>
<Dest2town></Dest2town>
<Dest2cntry></Dest2cntry>
<Dest3IATA>LGA</Dest3IATA>
<Dest3desc></Dest3desc>
<Dest3town></Dest3town>
<Dest3cntry></Dest3cntry>
</Flight>
</flight>
</schedules>
Xslt Code hinzufügen: sollte
<xsl:for-each select="(//schedules/flight/Flight/Dest1IATA | //schedules/flight/Flight/Dest2IATA | //schedules/flight/Flight/Dest3IATA)[generate-id(.) = generate-id(key('Keycity', .))]">
<xsl:sort select="//schedules/flight/Flight/Dest1IATA | //schedules/flight/Flight/Dest2IATA | //schedules/flight/Flight/Dest3IATA"/>
<!--<xsl:value-of select="." />-->
<xsl:if test="local-name() = 'Dest1IATA' and //schedules/flight/Flight/Dest1IATA != ''">
<Row Action="ADD">
<xsl:value-of select="." />|<xsl:value-of select="//schedules/flight/Flight/Dest1desc" />|<xsl:value-of select="//schedules/flight/Flight/Dest1town" />|<xsl:value-of select="//schedules/flight/Flight/Dest1cntry" />
</Row>
</xsl:if>
<xsl:if test="local-name() = 'Dest2IATA' and //schedules/flight/Flight/Dest2IATA != ''">
<Row Action="ADD">
<xsl:value-of select="." />|<xsl:value-of select="//schedules/flight/Flight/Dest2desc" />|<xsl:value-of select="//schedules/flight/Flight/Dest2town" />|<xsl:value-of select="//schedules/flight/Flight/Dest2cntry" />
</Row>
</xsl:if>
<xsl:if test="local-name() = 'Dest3IATA' and //schedules/flight/Flight/Dest3IATA != ''">
<Row Action="ADD">
<xsl:value-of select="." />|<xsl:value-of select="//schedules/flight/Flight/Dest3desc" />|<xsl:value-of select="//schedules/flight/Flight/Dest3town" />|<xsl:value-of select="//schedules/flight/Flight/Dest3cntry" />
</Row>
</xsl:if>
</xsl:for-each>
ExpectedOutput
seinROW|Add|ATL|Atlanta Airport|
ROW|Add|JFK||
ROW|Add|LGA||
ROW|Add|LCY|LCYAirport|LCY
ROW|Add|DXB||
Ausgang mit oben-Code
ROW|Add|ATL||
ROW|Add|JFK||
ROW|Add|LGA||
ROW|Add|LCY||
ROW|Add|DXB||
Sie müssen, was erklären sind "die entsprechenden Werte". - PS Als ich vorgeschlagen habe, dass du [deine vorherige Frage] schließen solltest (http://stackoverflow.com/questions/38362143/how-to-remove-duplicates-when-using-xslt), meinte ich nicht, du solltest es löschen. –
Entschuldigung, ich habe keine Option zum Schließen gesehen. Entsprechende Werte sind Land, Stadt und Beschreibung für dieses Ziel. – user3067170
Sie schließen eine Frage, indem Sie eine Antwort akzeptieren. –