1

マーケティング プラットフォームを使用して、航空会社の確認メッセージを実装しています。このプラットフォームでは、データベースから返された値をループする xsl を記述できます。私ができるようにしたいのは、このパス全体をチェックすることです

/Msg/Props/bookingcontact_to_booking/passenger_to_bookings/passenger_to_booking/passseg_to_passengers/passseg_to_passenger/passsegfee_to_passengersegments/passsegfee_to_passengersegment/

最終テーブル「passsegfee」の要素に特定の値を持つノードがあるかどうかを確認します。何もない場合は、「なし」と表示したいだけです。その値を持つものがあれば、それらの要素だけをループして表示します。見るべき xml 構造がないことをお詫びしますが、このセクションの xsl を以下に示します。

    <xsl:for-each select="/Msg/Props/bookingcontact_to_booking/passenger_to_bookings/passenger_to_booking">
        <tr id="Pax-DataRow">
            <td height="22" width="200">
                <xsl:value-of select="Prop[@prop_name = 'firstname']/@val" />&#160;<xsl:value-of select="Prop[@prop_name = 'lastname']/@val" />
            </td>
            <td>
                <xsl:choose>
                    <xsl:when test="passseg_to_passengers/passseg_to_passenger/passsegfee_to_passengersegments/passsegfee_to_passengersegment/Prop[@prop_name = 'feetype']/@val != 'SSR'">
                        None
                    </xsl:when>
                    <xsl:otherwise>                     
                        <table style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; color: rgb(51, 51, 51);" >
                            <xsl:for-each select="passseg_to_passengers/passseg_to_passenger">
                                <xsl:for-each select="passsegfee_to_passengersegments/passsegfee_to_passengersegment">                          
                                    <xsl:if test="Prop[@prop_name = 'feetype']/@val = 'SSR'">
                                        <tr>
                                            <td align="left">
                                                <xsl:value-of select="Prop[@prop_name = 'feedescription']/@val" /><br/>
                                            </td>
                                        </tr>
                                    </xsl:if>
                                </xsl:for-each>
                            </xsl:for-each>
                        </table>
                    </xsl:otherwise>
                </xsl:choose>
            </td>
            <td>
                <xsl:value-of select="Prop[@prop_name = 'fsnumber']/@val" />
            </td>
        </tr>
        <xsl:if test="Prop[@prop_name = 'infantname']/@val != ''">
            <tr id="Pax-DataRow">
                <td height="22">                    
                    <xsl:value-of select="Prop[@prop_name = 'infantname']/@val" />
                </td>
                <td>
                    Infant
                </td>
                <td></td>
            </tr>
        </xsl:if>
    </xsl:for-each>

</xsl:template>

子孫や祖先などの xpath 軸を使用して同様のことを達成できるかどうかはわかりませんが、これをマーケティング プラットフォームで実行すると、そうでない場合でも「なし」と表示されます。

4

1 に答える 1

1

これで問題が解決するかどうかはわかりませんが、次のパスに問題があります。

passseg_to_passengers/passseg_to_passenger/passsegfee_to_passengersegments
      /passsegfee_to_passengersegment/Prop[@prop_name = 'feetype']/@val != 'SSR'

いずれかの料金タイプが「SSR」と等しくない場合、これは true を生成します。値がないことを確認するには、次のようにします。

not(passseg_to_passengers/passseg_to_passenger/passsegfee_to_passengersegments
      /passsegfee_to_passengersegment/Prop[@prop_name = 'feetype']/@val = 'SSR')
于 2013-08-07T03:26:07.130 に答える