私は XSLT 1.0 の初心者です。XSLT を使用して XML を XML に変換しています。受信した XML から最初の 5 つの一意の航空会社を取得したいと考えています。
ソース XML:
<Response>
<Flights>
<Flight>
<Segments>
<Segment>
<Airline>AB</Airline>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Airline>CD</Airline>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Airline>EF</Airline>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Airline>EF</Airline>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Airline>EF</Airline>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Airline>EF</Airline>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Airline>SD</Airline>
</Segment>
</Segments>
</Flight>
</Flights>
<OtherRecommens>
<RecommFlight>
<Airline>XY</Airline>
</RecommFlight>
<RecommFlight>
<Airline>ZZ</Airline>
</RecommFlight>
<RecommFlight>
<Airline>XY</Airline>
</RecommFlight>
<RecommFlight>
<Airline>AB</Airline>
</RecommFlight>
</OtherRecommens>
</Response>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="Response">
<xsl:element name="Root">
<xsl:variable name="Airlines" select="//Airline"/>
<xsl:for-each select="$Airlines">
<xsl:if test="not(preceding::Airline[.=current()/text()])">
<xsl:element name="SpecificAirline">
<xsl:value-of select="text()"/>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
上記の XSLT を適用すると、以下の出力が得られます。
出力:
<Root>
<SpecificAirline>AB</SpecificAirline>
<SpecificAirline>CD</SpecificAirline>
<SpecificAirline>EF</SpecificAirline>
<SpecificAirline>SD</SpecificAirline>
<SpecificAirline>XY</SpecificAirline>
<SpecificAirline>ZZ</SpecificAirline>
</Root>
私の要件によれば、最初の5つの航空会社だけを取得する必要があります
期待される出力:
<Root>
<SpecificAirline>AB</SpecificAirline>
<SpecificAirline>CD</SpecificAirline>
<SpecificAirline>EF</SpecificAirline>
<SpecificAirline>SD</SpecificAirline>
<SpecificAirline>XY</SpecificAirline>
</Root>
助けてください。ありがとう。