[xsl] problem with keys and Meunchian method

Subject: [xsl] problem with keys and Meunchian method
From: mark_fletcher@xxxxxxxxxxxxxx
Date: Wed, 17 Nov 2004 12:10:10 -0800
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@xxxxxxxxxxxxxx

Current Thread