0
xsltを使用して、下のxmlから重複を削除する方法以下は、コードを使用しています。これは、重複を除去するために正常に動作しますが、対応する値xsltを使用してxmlから重複を削除
<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コードを追加することはできませんよ:
ExpectedOutputは上記のコードでROW|Add|ATL|Atlanta Airport|
ROW|Add|JFK||
ROW|Add|LGA||
ROW|Add|LCY|LCYAirport|LCY
ROW|Add|DXB||
出力
でなければなりません <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>
ROW|Add|ATL||
ROW|Add|JFK||
ROW|Add|LGA||
ROW|Add|LCY||
ROW|Add|DXB||
あなたが "対応する値" が何であるかを説明する必要があります。 - P.S. [あなたの前の質問](http://stackoverflow.com/questions/38362143/how-to-remove-duplicates-when-using-xslt)を閉じるべきであると提案したとき、私はそれを削除すべきではありませんでした。 –
申し訳ありませんが私はそれを閉じるためのオプションが表示されませんでした。対応する値は、その目的地の国、町および説明です。 – user3067170
回答を受け入れることによって質問を閉じます。 –