Hi,
How about a key that is defined as follows:
<xsl:key name="books-in-last-prodline-by-name" match="prodline[code='PL1'][last()]/product/book"
use="name" />
Then you do a for-each on all books in the last prodline and test for each whether it is the last
occurrence in document order:
<xsl:for-each select="//prodline[code='PL1'][last()]/product/book">
<xsl:if test="generate-id(.) = generate-id(key('books-in-last-prodline-by-name',
name)[last()])">
<!-- found the last one! -->
<xsl:if>
</xsl:for-each>
Does this help?
Grtz,
Geert
mark_fletcher(_at_)peoplesoft(_dot_)com wrote:
Hi all,
I'm having a problem pulling distinct nodes out of some xml with duplicate
values at multiple levels. In all cases, I want to get the data from the
last node of a set that shares duplicate values. (This xml will be in a
file that gets appended to multiple times. So I can assume that the last
tags are the most current.)
In the xml below, what I'm trying to do is get a list of distinct book/code
values from the last prodline where name=PL1. I can successfully get the
prodline using this select statement:
<xsl:for-each select="prodline[code='PL1'][last()]">
But I'm having no luck getting a list of distinct book/code values from
this particular prodline. I've tried creating keys and using the Meunchian
method of comparing generate-id() values, but to no avail. Any help would
be greatly appreciated!
Here's the xml:
<prodlines>
<prodline>
<name>Product Line 1</name>
<code>PL1</code>
<product>
<name>Product 1</name>
<code>P1</code>
<book>
<name>Book 1</name>
<code>B1</code>
</book>
<book>
<name>Book 2</name>
<code>B2</code>
</book>
</product>
<product>
<name>Product 2</name>
<code>P2</code>
<book>
<name>Book 1</name>
<code>B1</code>
</book>
<book>
<name>Book 3</name>
<code>B3</code>
</book>
<book>
<name>Book 4</name>
<code>B4</code>
</book>
</product>
</prodline>
<prodline>
<name>Product Line 2</name>
<code>PL2</code>
<product>
<name>Product 1</name>
<code>P1</code>
<book>
<name>Book 1</name>
<code>B1</code>
</book>
</product>
</prodline>
<prodline>
<name>Product Line 1 (ver 2)</name>
<code>PL1</code>
<product>
<name>Product 1</name>
<code>P1</code>
<book>
<name>Book 1</name>
<code>B1</code>
</book>
<book>
<name>Book 2</name>
<code>B2</code>
</book>
<book>
<name>Book 5</name>
<code>B5</code>
</book>
</product>
<product>
<name>Product 2</name>
<code>P2</code>
<book>
<name>Book 1</name>
<code>B1</code>
</book>
<book>
<name>Book 2</name>
<code>B2</code>
</book>
<book>
<name>Book 3</name>
<code>B3</code>
</book>
<book>
<name>Book 4</name>
<code>B4</code>
</book>
</product>
</prodline>
</prodlines>
Mark Fletcher
PeopleSoft Language Engineering
925.694.3753
mark_fletcher(_at_)peoplesoft(_dot_)com
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--
Geert(_dot_)Josten(_at_)Daidalos(_dot_)nl
IT-consultant at Daidalos BV, Zoetermeer (NL)
http://www.daidalos.nl/
tel:+31-(0)79-3316961
fax:+31-(0)79-3316464
GPG: 1024D/12DEBB50
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--