xsl-list
[Top] [All Lists]

Re: [xsl] Keeping track of processed nodes, to avoid redundant output.

2007-09-11 03:51:54
Hi John,

You can define a key that matches enElement and use the name attribute. Then you can process only the first element that matches a given value:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
  <xsl:key name="name" match="anElement" use="@name"/>
  <xsl:template match="/">
    <out><xsl:apply-templates/></out>
  </xsl:template>
  <xsl:template match="anElement">
    <xsl:if test="generate-id(.)=generate-id(key('name', @name)[1])">
      <name><xsl:value-of select="@name"/></name>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>


Regards,
George
---------------------------------------------------------------------
George Cristian Bina - http://aboutxml.blogspot.com/
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


John Smith wrote:
Hello,

This is a simplified description of what I am trying to do, I have an
xml document like this:

<main>
  <someElement>
    <anElement name="John" />
  </someElement>
  <someElement>
    <anElement name="Jane" />
  </someElement>
  <someElement>
    <anElement name="John" />
  </someElement>
  <someElement>
    <anElement name="Jane" />
  </someElement>
</main>


and I like to retrieve each 'name' attribute from 'anElement', but I
only want to process the name once. So if the 'John' attribute is
repeated I want to somehow keep track that I have already processed
it, hence there is no need to process it again.

So for the given example I like to output something like:

<out>
  <name>John</name>
  <name>Jane</name>
</out>


Thanks,
John

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


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