Re: [xsl] Referencing unique values by their order number.

Subject: Re: [xsl] Referencing unique values by their order number.
From: Andreas Kemkes <a5sk4s@xxxxxxxxx>
Date: Fri, 8 Dec 2006 17:05:46 -0800 (PST)
David:

Thank you.  Works like a charm.

I was trying to solve the problem
without keys first and then see if I can apply keys in case I need to speed it
up.

Part of the reason was that I had not used keys before, but the other
issue was a concern that I could not use keys in my context, which might have
been lost in the simplification of the example.

The real input example has
various sections of the original example - aside from being also more
convoluted in other aspects. All sections need to use their own unique value
set and reference it appropriately.  My concern was that the top-level (i.e.,
somewhat global) key feature wouldn't be appropriate.

Is there a way to do
the same without keys?

I will also study keys and the example expression a
bit more to understand how to make it work.

Thanks again,

Andreas

-----
Original Message ----
From: David Carlisle <davidc@xxxxxxxxx>
To:
a5sk4s@xxxxxxxxx
Cc: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Sent: Friday, December 8,
2006 4:20:24 PM
Subject: Re: [xsl] Referencing unique values by their order
number.


> I do not have a separate file - and I'd rather avoid it.

ah ok,
time to bring out keys then (google for muenchian grouping)


<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";;>
<xsl:output
indent="yes"/>
<xsl:key name="i" match="item" use="."/>

<xsl:template
match="x">
  <a>
    <items>
      <xsl:copy-of
select="item[generate-id()=generate-id(key('i',.))]"/>
    </items>
<elements>
      <xsl:for-each select="text">
      <element>
        <item>
<xsl:value-of
select="count(key('i',preceding-sibling::item[1])[1]/preceding-sibling::item[
generate-id()=generate-id(key('i',.))])"/>
    </item>
      <xsl:copy-of
select="."/>
      </element>
      </xsl:for-each>
    </elements>
  </a>
</xsl:template>

</xsl:stylesheet>


<a>
   <items>
      <item>V1</item>
<item>V2</item>
      <item>V3</item>
   </items>
   <elements>
<element>
         <item>0</item>
         <text>(content)</text>
</element>
      <element>
         <item>0</item>
<text>(content)</text>
      </element>
      <element>
<item>1</item>
         <text>(content)</text>
      </element>
<element>
         <item>0</item>
         <text>(content)</text>
</element>
      <element>
         <item>2</item>
<text>(content)</text>
      </element>
      <element>
<item>2</item>
         <text>(content)</text>
      </element>
   </elements>
</a>
_____________________________________________________________________________
_______
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com

Current Thread