[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
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>
John Smith wrote:
Re: [xsl] Keeping track of processed nodes, to avoid redundant output.
Subject: Re: [xsl] Keeping track of processed nodes, to avoid redundant output. From: George Cristian Bina <george@xxxxxxxxxxxxx> Date: Tue, 11 Sep 2007 13:48:35 +0300 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Keeping track of processe, Andrew Welch | Thread | [xsl] TabLayout in XSL, Karanam.Chowdary |
Re: [xsl] Keeping track of processe, Andrew Welch | Date | [xsl] TabLayout in XSL, Karanam.Chowdary |
Month |
Keywords