This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Sort list based on matching equal to another element
- To: Linda Zammit <binky_35 at yahoo dot ca>
- Subject: Re: [xsl] Sort list based on matching equal to another element
- From: Jeni Tennison <jeni at jenitennison dot com>
- Date: Thu, 27 Sep 2001 17:12:28 +0100
- CC: xsl-list at lists dot mulberrytech dot com
- Organization: Jeni Tennison Consulting Ltd
- References: <20010927123600.43591.qmail@web13704.mail.yahoo.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Linda,
> The list I have displays the LOCATION_NAME sorted by
> LOCATION_NAME & START_TIME.
>
> I need the COST to display in the next table cell, by
> matching the SHIPMENT_GID from the REPORT_CUSTOMER
> element to the REPORT_COST element.
>
> This is what I have for the list of the SHIPMENT_GID
> from the REPORT_CUSTOMER - which works great but I
> can't figure out how to display the associated cost
> for the matching SHIPMENT_GID.
I think from what you've described you want to take the SHIPMENT_GID
from the current REPORT_CUSTOMER and use that to access the
COST element that has that particular value for its sibling
SHIPMENT_GID.
Whenever you want to repeatedly access a set of elements by their
value on a particular child (or attribute), you should use a key to
make the search more efficient. So you should set up a key that
indexes the COST elements by their SHIPMENT_GID like so:
<xsl:key name="costs-by-gid"
match="COST"
use="parent::ROW/parent::REPORT_COST/ROW/SHIPMENT_GID" />
Now if you have a GID of '123' you could get the COST for that
shipment with:
key('costs-by-gid', '123')
If the GID is held in the SHIPMENT_GID child element of the current
ROW then you can display the value with:
<xsl:value-of select="key('costs-by-gid', SHIPMENT_GID)" />
or if you're iterating over elements that have the SHIPMENT_GID
elements as their children then you can sort on that value with:
<xsl:value-of select="key('costs-by-gid', SHIPMENT_GID)" />
Note that you need something a little bit more complicated given the
XML that you describe because the ROW elements that you're iterating
over are not the ROW elements that contain the SHIPMENT_GID for a
particular REPORT_CUSTOMER.
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list