Hello

I am looking at using Jaxen to process some XML in java for which I have some XPATH statements working in XSLT.

I am hoping that someone will be able to give me some advice on how to proceed - I have spent quite a few hours trying things out but it is only guess work as the documentation is a bit light (sorry).

I have appended an example XML fragment to the bottom of this message.
This respresents flight data from a mainframe and is not well structured, hence the need for XPATH.
The XPATH statements work well in an XSLT transformation for locating the data, but almost the raw values then need to be decoded and formatted, hence the need to do this in java.

What I want to do in words is :

loop on  <segment id="CPA000">
get the fight segment number from a child element 001N <element id="001N" value="0002" />
and getting other data values from various other child elements, eg departure time <element id="003G" value="0600" />

then lookup preceeding AIR segments <segment id="AIR000">
matching the flight segment number with the child element <element id="001N" value="0002" />
and getting data values from various other child elements

similarly need to lookup following PRS segments  <segment id="PRS000">
matching the flight segment number with the child element <element id="001N" value="0002" />
getting data values from various other child elements

What I want to do in XPATH is :

<xsl:template match="segment[@id='CPA000']">
<xsl:variable name="segment"        select="element[@id='001N']/@value"/>
 

<xsl:variable name="departTime"   select="preceding-sibling::*[@id='AIR000']/element[@id='001N'][@value=$segment]/following-sibling::*[@id='003G']/@value"/>
 

<xsl:variable name="seats">
  <xsl:for-each select="following-sibling::*[@id='PRS000']">
    <xsl:if test="element[@id='001N']/@value=$segment and element[@id='00G3']/@value=$departCity">
      <xsl:value-of select="element[@id='004W']/@value"/>,&#160;
    </xsl:if>
  </xsl:for-each>
</xsl:variable>

The XML snippet :

<segment id="AIR000">
<element id="001N" value="0002" />
<element id="00SJ" value="HK" />
<element id="0182" value="02" />
<element id="000B" value="AA" />
<element id="007V" value="T" />
<element id="000I" value="0090" />
<element id="004E" value="01" />
<element id="00SN" value="DCAA*IAUJNX" />
<element id="01K5" value="N" />
<element id="003G" value="0600" />
<element id="003H" value="2235" />
<element id="023G" value="E" />
<element id="00VB" value="I" />
<element id="00YZ" value="I" />
</segment>
<segment id="CPA000">
<element id="001N" value="0002" />
<element id="000B" value="AA" />
<element id="0020" value="S80" />
<element id="00G3" value="DFW" />
<element id="00CA" value="11AUG" />
<element id="00GJ" value="ORD" />
<element id="00CB" value="11AUG" />
<element id="007X" value="0600" />
<element id="007Z" value="0815" />
<element id="00CR" value="V" />
<element id="015N" value="6" />
<element id="00TI" value="6" />
<element id="01J9" value="02.15" />
<element id="000F" value="0801" />
<element id="00PO" value="N" />
<element id="029J" value="TERMINAL 3" />
<element id="02C7" value="TERMINAL B" />
</segment>
<segment id="CPA000">
<element id="001N" value="0002" />
<element id="000B" value="AA" />
<element id="0020" value="763" />
<element id="00G3" value="ORD" />
<element id="00CA" value="11AUG" />
<element id="00GJ" value="LHR" />
<element id="00CB" value="11AUG" />
<element id="007X" value="0850" />
<element id="007Z" value="2235" />
<element id="00CR" value="L" />
<element id="00CS" value="S" />
<element id="015N" value="6" />
<element id="00TI" value="6" />
<element id="01J9" value="07.45" />
<element id="000F" value="3950" />
<element id="00PO" value="N" />
<element id="029J" value="TERMINAL 3" />
<element id="02C7" value="TERMINAL 3" />
</segment>
<segment id="PRS000">
<element id="00TF" value="01.01" />
<element id="001N" value="0002" />
<element id="00G3" value="DFW" />
<element id="00GJ" value="ORD" />
<element id="004W" value="19F" />
<element id="00PO" value="N" />
<element id="00CQ" value="WRMU" />
<element id="005S" value="N" />
<element id="00YU" value="HRS" />
<element id="0198" value="HK" />
</segment>
<segment id="PRS000">
<element id="00TF" value="01.01" />
<element id="001N" value="0002" />
<element id="00G3" value="ORD" />
<element id="00GJ" value="LHR" />
<element id="004W" value="34J" />
<element id="00PO" value="N" />
<element id="00CQ" value="WRMI" />
<element id="005S" value="N" />
<element id="00YU" value="HRS" />
<element id="0198" value="HK" />
</segment>
<segment id="PRS000">
<element id="00TF" value="02.01" />
<element id="001N" value="0002" />
<element id="00G3" value="DFW" />
<element id="00GJ" value="ORD" />
<element id="004W" value="19E" />
<element id="00PO" value="N" />
<element id="00CQ" value="RMOI" />
<element id="005S" value="N" />
<element id="00YU" value="HRS" />
<element id="0198" value="HK" />
</segment>
 

Thanks in advance

Stephen

Reply via email to