This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Node Selection
- To: Jim dot Decarli at fishersci dot com
- Subject: [xsl] Re: Node Selection
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- Date: Thu, 14 Jun 2001 21:52:23 -0700 (PDT)
- Cc: xsl-list at lists dot mulberrytech dot com
- Reply-To: xsl-list at lists dot mulberrytech dot com
Decarli, Jim wrote:
>
> I am using Xalan for xsl transformations. I have some xml with multiple
> <Activity> nodes in it for each part that is processed. The activity nodes
> are not sorted in any way in the xml. I want to select only the latest
> activity (by Date, Time) to process in the transform for my output to show
> the last activity scan on this part and ignore all other activity scans.
> Here is an example of the xml.
> <Part>
> <PartNumber>978599</PartNumber>
> <Activity>
> <ActivityLocation>
> <DepartmentNumber>07</DepartmentNumber>
> <DepartmentName>Grinding</DepartmentName>
> </ActivityLocation>
> <Status>
> <Code>I</Code>
> <Description>In-Process</Description>
> </Status>
> <Date>20010521</Date>
> <Time>180800</Time>
> </Activity>
> <Activity>
> <ActivityLocation>
> <DepartmentNumber>07</DepartmentNumber>
> <DepartmentName>Grinding</DepartmentName>
> </ActivityLocation>
> <Status>
> <Code>R</Code>
> <Description>Received</Description>
> </Status>
> <Date>20010520</Date>
> <Time>081800</Time>
> </Activity>
> <Activity>
> <ActivityLocation>
> <DepartmentNumber>05</DepartmentNumber>
> <DepartmentName>Shipping</DepartmentName>
> </ActivityLocation>
> <Status>
> <Code>S</Code>
> <Description>Shipped</Description>
> </Status>
> <Date>20010523</Date>
> <Time>073300</Time>
> </Activity>
> <Activity>
> <ActivityLocation>
> <DepartmentNumber>05</DepartmentNumber>
> <DepartmentName>Shipping</DepartmentName>
> </ActivityLocation>
> <Status>
> <Code>R</Code>
> <Description>Received</Description>
> </Status>
> <Date>20010523</Date>
> <Time>060700</Time>
> </Activity>
> </Part>
Hi Jim,
This problem is solved best using a generic max() template. Or you can use my
generic sort() template, which allows only the highest k out of N nodes to be
produced -- in your case k=1.
The other alternatives -- xsl:sort on the full node-set and using only the
first/last node from the nodelist; using a custom-made max() template -- these are
wasting both space and time.
The code of the generic templates for:
generic max(),
generic min(),
generic binSearch(),
generic sort()
can be downloaded at
http://www.vbxml.com/downloads/default.asp?id=v2001611171627
Some more detailed explanation of the concept of generic templates and their
implementation using template references can be found at:
http://lists.fourthought.com/pipermail/exslt/2001-May/000169.html
Cheers,
Dimitre.
__________________________________________________
Do You Yahoo!?
Spot the hottest trends in music, movies, and more.
http://buzz.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list