xsl-list
[Top] [All Lists]

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

2006-12-08 18:06:08
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(_at_)nag(_dot_)co(_dot_)uk>
To: a5sk4s(_at_)yahoo(_dot_)com
Cc: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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>
    
tem>
         <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

--~------------------------------------------------------------------
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>
--~--