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"/>, 
</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