【发布时间】:2013-08-08 06:11:43
【问题描述】:
我正在使用营销平台来实施航空公司确认消息。该平台允许我们编写 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" /> <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 轴来实现类似的东西,但是当我在营销平台上运行它时,即使它不应该显示“无”。
【问题讨论】: