微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml – XSLT – 使用嵌套for-each循环的内部循环访问外部元素

我是XSLT的新手,并且有一个问题需要我从内部循环中嵌套for-each的外部循环中的元素访问值.我的 XML看起来如下
<searchresults>
    <journeygroup>
        <journeygroupnum>1</journeygroupnum>
        <journeydetails>
            <flightsegments>1</flightsegments>
            <journeyid>1</journeyid>
            <currency>USD</currency>
            <fare>399.00</fare>
            <taxes>99.00</taxes>
            <flights>
                <segmentid>1</segmentid>
                <legid>1</legid>
                <marketingcarrier>DL</marketingcarrier>
                <operatingcarrier>DL</operatingcarrier>
                <flightnum>9695</flightnum> 
            </flights>
        </journeydetails>
        <journeydetails>
            <flightsegments>1</flightsegments>
            <journeyid>2</journeyid>
            <currency>USD</currency>
            <fare>459.00</fare>
            <taxes>129.00</taxes>
            <flights>
                <segmentid>1</segmentid>
                <legid>1</legid>
                <marketingcarrier>AA</marketingcarrier>
                <operatingcarrier>AA</operatingcarrier>
                <flightnum>5070</flightnum> 
            </flights>
        </journeydetails>
    </journeygroup>
</searchresults>

我的XSLT文档的摘录如下所示

<table>
<xsl:for-each select="searchresults/journeygroup/journeydetails">       
    <xsl:for-each select="flights[segmentid='1']">
    <tr>
        <td><xsl:value-of select="marketingcarrier"/></td>
        <td><xsl:value-of select="operatingcarrier"/></td>
        <td><xsl:value-of select="flightnum"/></td>

        <!-- Here I would like to add columns with the currency and fare from the outer loop -->
        <td>currency</td>
        <td>fare</td>
    </tr>
    </xsl:for-each>
</xsl:for-each>
<table>

如何从内部for-each循环访问外部循环中的货币和票价节点的值.

您可以相对访问父级:
<xsl:value-of select="../currency"/>

或者使用变量捕获外部循环当前节点,然后在其中访问它:

<table>
  <xsl:for-each select="searchresults/journeygroup/journeydetails">
    <xsl:variable name="journeyDetails" select="."/>
    <xsl:for-each select="flights[segmentid='1']">
      <tr>
        <td><xsl:value-of select="marketingcarrier"/></td>
        <td><xsl:value-of select="operatingcarrier"/></td>
        <td><xsl:value-of select="flightnum"/></td>

        <!-- Here I would like to add columns with the 
             currency and fare from the outer loop -->
        <td><xsl:value-of select="$journeyDetails/currency"/></td>
        <td><xsl:value-of select="$journeyDetails/fare"/></td>
      </tr>
    </xsl:for-each>
  </xsl:for-each>
</table>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。