xsl-list
[Top] [All Lists]

Re: local grouping

2004-11-23 14:43:56
Hi Konrad,

For each <g> element I want to group the children into sub elements
based on the value of x, so like this:

You can use the Muenchian method with a key that uses a combination of
the identity (via generate-id()) of the <g> element and the value of
the x attribute. Try:

<xsl:key name="mykey" match="line" use="concat(generate-id(..), @x)"/>

<xsl:template match="g">
  <xsl:variable name="this" select="generate-id()" />
  <xsl:for-each select="*[count( . |
                                key('mykey',
                                    concat($this, @x))[1]) = 1]">
    <!-- build the inner g's -->
  </xsl:for-each>
</xsl:template>

This should be faster since you're getting to the child elements
directly via the key rather than having to use the intersection
extension function.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.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>
--~--



<Prev in Thread] Current Thread [Next in Thread>
  • local grouping, Konrad Rokicki
    • Re: local grouping, Jeni Tennison <=