Я работаю с маркетинговой платформой, чтобы отобразить Сумки, которые человек заказал для полета. Один пассажир может иметь несколько сегментов как часть общего путешествия. Поэтому, если у нас есть записи, как показано ниже (каждая запись имеет уникальное значение, а также, так как это все вставлено в базу данных до вытаскивания, xml здесь представляет собой макет того, с чем работает im).Как использовать предыдущий брат для проверки предыдущего элемента xpath
Редактировать 8/9 - Фактический XML и пересмотренный XSLT ниже. Также, если вы посмотрите на эту ссылку (http://f.spiritairlines.com/ats/msg.aspx?sg1=2e4a4d00cb00be84c598b618d6556e3e) в разделе «Сумка». Я хочу, чтобы это выглядело как вторая строка (Педро Смит), а не первая строка (Сандра Смит). Кстати, это все тестовые данные, поэтому нет никаких проблем с конфиденциальностью, показывая вам, а также нет личной информации о них.
<bookingcontact_to_booking>
<passenger_to_bookings>
<passenger_to_booking>
<Prop pk_id="4147" entity_id="126" val="SMITH" type_id="20" prop_name="lastname" prop_id="10208"/>
<Prop pk_id="4147" entity_id="126" val="PEDRO" type_id="20" prop_name="firstname" prop_id="10206"/>
<passseg_to_passengers>
<passseg_to_passenger>
<Prop pk_id="9432" entity_id="122" val="2013-08-27 17:45:00.000" type_id="30" prop_name="arrivaltime" prop_id="10216"/>
<Prop pk_id="9432" entity_id="122" val="188" type_id="20" prop_name="flightnumber" prop_id="10217"/>
<Prop pk_id="9432" entity_id="122" val="5" type_id="10" prop_name="checkedbagcount" prop_id="10220"/>
<Prop pk_id="9432" entity_id="122" val="1" type_id="10" prop_name="carryonbagcount" prop_id="10221"/>
<Prop pk_id="9432" entity_id="122" val="1" type_id="10" prop_name="journeynumber" prop_id="10222"/>
<Prop pk_id="9432" entity_id="122" val="0" type_id="10" prop_name="segmentnumber" prop_id="10223"/>
<Prop pk_id="9432" entity_id="122" val="2013-08-27 08:12:00.000" type_id="30" prop_name="departuretime" prop_id="10296"/>
<Prop pk_id="9432" entity_id="122" val="Las Vegas, NV" type_id="20" prop_name="departureairport" prop_id="10297"/>
<Prop pk_id="9432" entity_id="122" val="New York, NY - LaGuardia " type_id="20" prop_name="arrivalairport" prop_id="10298"/>
<Prop pk_id="9432" entity_id="122" val="10B,20B" type_id="20" prop_name="seatassignment" prop_id="10299"/>
</passseg_to_passenger>
<passseg_to_passenger>
<Prop pk_id="9433" entity_id="122" val="10B,20B" type_id="20" prop_name="seatassignment" prop_id="10299"/>
<Prop pk_id="9433" entity_id="122" val="Fort Lauderdale, FL" type_id="20" prop_name="arrivalairport" prop_id="10298"/>
<Prop pk_id="9433" entity_id="122" val="New York, NY - LaGuardia " type_id="20" prop_name="departureairport" prop_id="10297"/>
<Prop pk_id="9433" entity_id="122" val="2013-08-27 19:45:00.000" type_id="30" prop_name="departuretime" prop_id="10296"/>
<Prop pk_id="9433" entity_id="122" val="1" type_id="10" prop_name="segmentnumber" prop_id="10223"/>
<Prop pk_id="9433" entity_id="122" val="1" type_id="10" prop_name="journeynumber" prop_id="10222"/>
<Prop pk_id="9433" entity_id="122" val="1" type_id="10" prop_name="carryonbagcount" prop_id="10221"/>
<Prop pk_id="9433" entity_id="122" val="5" type_id="10" prop_name="checkedbagcount" prop_id="10220"/>
<Prop pk_id="9433" entity_id="122" val="779" type_id="20" prop_name="flightnumber" prop_id="10217"/>
<Prop pk_id="9433" entity_id="122" val="2013-08-27 22:45:00.000" type_id="30" prop_name="arrivaltime" prop_id="10216"/>
</passseg_to_passenger>
</passseg_to_passengers>
</passenger_to_booking>
</passenger_to_bookings>
</bookingcontact_to_booking>
Я хочу показывать только данные CarryOnBagCount и CheckedBagCount один раз в пути. Я пробовал несколько разных методов, но я думаю, что я получаю дальнейшее решение. На данный момент выход - это все суммарные суммы, независимо от поездки и сегмента. XSLT ниже.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
<xsl:key name="journey" match="passengersegment" use="Prop[@prop_name = 'journeynumber']/@val"/>
<xsl:template match="/">
<xsl:for-each select="/Msg/Props/bookingcontact_to_booking/passenger_to_bookings/passenger_to_booking">
<tr>
<td colspan="3">
<table style="text-align: left; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; color:#333333;"
border="0" cellspacing="0" cellpadding="0" width="542" align="left">
<tbody>
<tr>
<td height="22" width="200">
<xsl:value-of select="Prop[@prop_name = 'firstname']/@val" /><xsl:text> </xsl:text><xsl:value-of select="Prop[@prop_name = 'lastname']/@val" />
</td>
<xsl:apply-templates select="passengersegment[generate-id() = generate-id(key('journey', journeynumber)[1])]"/>
</tr>
</tbody>
</table>
</td>
</tr>
</xsl:for-each>
</xsl:template>
<xsl:template match="passengersegment">
<td style="text-align: left;" width="100">
<table style="text-align: left; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; color:#333333;" width="100">
<tr>
<xsl:for-each select="passseg_to_passengers/passseg_to_passenger">
<td width="50">
<xsl:value-of select="Prop[@prop_name = 'carryonbagcount']/@val" />
</td>
</xsl:for-each>
</tr>
</table>
</td>
<td style="text-align: left;" width="100">
<table style="text-align: left; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; color:#333333;" width="100">
<tr>
<xsl:for-each select="passseg_to_passengers/passseg_to_passenger">
<td width="50">
<xsl:value-of select="Prop[@prop_name = 'checkedbagcount']/@val" />
</td>
</xsl:for-each>
</tr>
</table>
</td>
</xsl:template>
</xsl:stylesheet>
Это очень помогло бы, если бы вы могли показать нам результат, который вы ожидаете. Кроме того, здесь используются XSLT 1.0 или XSLT 2.0, так как это очень похоже на проблему группировки, а группировка по-разному обрабатывается в версии 2.0. –
@TimC Я использую XSLT 1.0, и вы можете увидеть версию того, над чем я сейчас работаю. http://f.spiritairlines.com/ats/msg.aspx?sg1=d2e6dc6863a21c17a7a6c4f861e16ae4. Если вы прокрутите страницу вниз до раздела «Сумки», раздел «Перенос и проверка мешков» должен иметь 1 пробел 1. – Src1988
может быть не в тему, но надежды, на которые ссылаются данные, являются только тестовыми данными, в противном случае я не уверен, разрешено ли вам показывать это нам :) –