[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: grouping probs

Subject: Re: grouping probs
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Mon, 16 Sep 2002 10:40:46 +0100
Re:  grouping probs
Hi Laura,

> Essentially it should eleminate the duplicates out of "any" element
> it comes across.i cant give conditions based on a fixed element. so
> if the xsl comes across elements with same "id" and "text()".. then
> it should eleminate the duplicating element "where ever found in the
> document"

Set up a key that matches all elements that doesn't hold any child
elements and assigns them a value based on their id (presumably an id
attribute? Or did you mean the name of the element?) and string value:

<xsl:key name="duplicates" match="*[not(*)]"
         use="concat(@id, '+', string())" />

Use an identity template to do a recursive copy of the whole document:

<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()" />
  </xsl:copy>
</xsl:template>

and override this template for elements that don't have element
children:

<xsl:template match="*[not(*)]">
  ...
</xsl:template>

You only want to copy these elements if they are the first element in
the document with that id and value. Use the classic Muenchian test to
see whether they're the first element in the document with that id and
string value:

<xsl:template match="*[not(*)]">
  <xsl:if test="generate-id() =
                generate-id(key('duplicates',
                                concat(@id, '+', string()))[1])">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
  </xsl:if>
</xsl:template>

And there you go.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.