我是XSLT的初學者。使用XSLT數組的XSLT篩選結果
下面是我收到的源XML。 Request
標記固定用於過濾Result
標記的FlightId
。
源XML:
<Response>
<Request>
<RequestedFlights>
<FlightId>2121</FlightId>
<FlightId>2584</FlightId>
</RequestedFlights>
</Request>
<Result>
<Flights>
<Flight>
<Segments>
<Segment>
<Id>1</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>2</Id>
<FlightNumber>1121</FlightNumber>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Id>3</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>4</Id>
<FlightNumber>2584</FlightNumber>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Id>5</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>6</Id>
<FlightNumber>2584</FlightNumber>
</Segment>
<Segment>
<Id>7</Id>
<FlightNumber>2023</FlightNumber>
</Segment>
</Segments>
</Flight>
</Flights>
</Result>
</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:variable name="ReqFlights" select="//Request/RequestedFlights/FlightId" />
<xsl:variable name="FilterFlights" select="//Result/Flights/Flight[Segments/Segment/FlightNumber=$ReqFlights]"/>
<xsl:template match="Response">
<FilterResult>
<ResultCount>
<xsl:value-of select="count($FilterFlights)"/>
</ResultCount>
<xsl:copy>
<xsl:copy-of select="$FilterFlights"/>
</xsl:copy>
</FilterResult>
</xsl:template>
</xsl:stylesheet>
我使用上述接收到的XSLT下面輸出。
輸出:
<FilterResult>
<ResultCount>3</ResultCount>
<Response>
<Flight>
<Segments>
<Segment>
<Id>1</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>2</Id>
<FlightNumber>1121</FlightNumber>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Id>3</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>4</Id>
<FlightNumber>2584</FlightNumber>
</Segment>
</Segments>
</Flight>
<Flight>
<Segments>
<Segment>
<Id>5</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>6</Id>
<FlightNumber>2584</FlightNumber>
</Segment>
<Segment>
<Id>7</Id>
<FlightNumber>2023</FlightNumber>
</Segment>
</Segments>
</Flight>
</Response>
</FilterResult>
我想接收下面輸出。
預期輸出:
<FilterResult>
<ResultCount>1</ResultCount>
<Response>
<Flight>
<Segments>
<Segment>
<Id>3</Id>
<FlightNumber>2121</FlightNumber>
</Segment>
<Segment>
<Id>4</Id>
<FlightNumber>2584</FlightNumber>
</Segment>
</Segments>
</Flight>
</Response>
</FilterResult>
請幫助我。我應該如何使用數組來過濾響應並獲得預期的輸出。 謝謝。
很好地構建的問題。 +1。 –
當有兩個FlightNumbers時,爲什麼是ResultCount 1? –
@ SeanB.Durkin ResultCount 1,因爲「FilterFlights」變量應該只有一個'Flight'節點。 –