Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting XSLT在单个输出中连接来自多个节点的输入_Sorting_Xslt_Concatenation - Fatal编程技术网

Sorting XSLT在单个输出中连接来自多个节点的输入

Sorting XSLT在单个输出中连接来自多个节点的输入,sorting,xslt,concatenation,Sorting,Xslt,Concatenation,我正在尝试进行一种转换,将几个航班的起飞和到达的输入处理为一个航班完整路线的输出 输入如下: <FlightTrip> <flights> <departureAirport> <airportCode>LocB</airportCode> </departureAirport> <departureTime>2013-03-28T10:00:00.00

我正在尝试进行一种转换,将几个航班的起飞和到达的输入处理为一个航班完整路线的输出

输入如下:

<FlightTrip>
   <flights>
      <departureAirport>
         <airportCode>LocB</airportCode>
      </departureAirport>
      <departureTime>2013-03-28T10:00:00.000</departureTime>
      <arrivalAirport>
         <airportCode>LocC</airportCode>
      </arrivalAirport>
   </flights>
   <flights>
      <departureAirport>
         <airportCode>LocA</airportCode>
      </departureAirport>
      <departureTime>2013-03-27T15:00:00.000</departureTime>
      <arrivalAirport>
         <airportCode>LocB</airportCode>
      </arrivalAirport>
   </flights>
   <flights>
      <departureAirport>
         <airportCode>LocC</airportCode>
      </departureAirport>
      <departureTime>2013-03-30T14:00:00.000</departureTime>
      <arrivalAirport>
         <airportCode>LocD</airportCode>
      </arrivalAirport>
   </flights>
</FlightTrip>

LocB
2013-03-28 10:00:00.000
LocC
失水事故
2013-03-27T15:00:00.000
LocB
LocC
2013-03-30T14:00:00.000
LocD
所需的输出如下:

<FullTrip>LocA LocB LocC LocD</FullTrip>
LocA LocB LocC LocD
我曾尝试在输出变量中使用foreach,但无法正确使用它。我还需要根据起飞日期对输入进行排序,因为航班的顺序可能不同(根据示例输入)

有什么办法可以做到这一点吗

非常感谢

布鲁诺


将产生:

<FullTrip>LocA LocB LocC LocD</FullTrip>
LocA LocB LocC LocD

感谢乔皮的启蒙。为了让它在我的环境中工作,我不得不对其进行一些修改,最终使用foreach,如下所示:

  <xsl:template match="/">
      <xsl:variable name="locations">
        <xsl:for-each select="/FlightTrip/flights">
          <xsl:sort select="departureTime" order="ascending" data-type="text"/>
            <xsl:value-of select="concat(departureAirport/airportCode,' - ')"/>
            <xsl:if test="position() = last()">
                <xsl:value-of select="arrivalAirport/airportCode"/>
            </xsl:if>
         </xsl:for-each>
      </xsl:variable>

      <FullTrip>
          <xsl:value-of select="$locations"/>
      </FullTrip>

  </xsl:template>

应用于示例时,会产生以下输出:

<FullTrip>LocA - LocB - LocC - LocD</FullTrip>
LocA-LocB-LocC-LocD

再次感谢

谢谢你,乔皮。不过,在我的案例中,解决方案没有运行;我正在使用Oracle BPM,它说我只能使用或
<FullTrip>LocA - LocB - LocC - LocD</FullTrip>