Re: [xsl] condition problem

Subject: Re: [xsl] condition problem
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Wed, 6 Oct 2004 08:05:34 -0700 (PDT)
Hi Dusan,
  This problem requires eliminating duplicates, and
can be solved using Muenchian technique -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="text" />
	
<xsl:key name="by-ge" match="SI" use="concat(G,E)" />
	
<xsl:template match="/">
   <xsl:for-each select="//SI[generate-id(.) =
generate-id(key('by-ge', concat(G,E))[1])]">
     <xsl:value-of select="G" /><xsl:value-of
select="E" /><xsl:text>&#xA;</xsl:text>
   </xsl:for-each>
</xsl:template>
	
</xsl:stylesheet>

Regards,
Mukul

--- Dusan Zatkovsky <zatkovsky@xxxxxxxxxxxx> wrote:

> Hi.
> 
> I have this document:
> 
> <data>
> 	<A>
> 		<SI>
> 			<G>1</G>
> 			<E>1</E>
> 			<value>123</value>
> 		</SI>
> 		<SI>
> 			<G>1</G>
> 			<E>2</E>
> 			<value>456</value>
> 		</SI>
> 		<SI>
> 			<G>2</G>
> 			<E>2</E>
> 			<value>678</value>
> 		</SI>
> 	</A>
> 
> 	<B>
> 		<SI>
> 			<G>2</G>
> 			<E>1</E>
> 			<value>123</value>
> 		</SI>
> 		<SI>
> 			<G>1</G>
> 			<E>2</E>
> 			<value>123</value>
> 		</SI>
> 
> 	</B>
> </data>
> 
> 
> I want to create for-each cycle, merging SIs from A
> and B.
> 
> When I have test for-each select="data/A/SI |
> data/B/SI", result is 
> (G/E):
> 1 1
> 1 2
> 2 2
> 2 1
> 1 2
> and 1 2 are twice.
> 
> How to create cycle, which result will be:
> 1 1
> 1 2
> 2 2
> 2 1
> 
> I have tried condition (data/A/SI/G=data/B/SI/G and 
> data/A/SI/E=data/B/SI/E), but it returns true,
> because B/SI/G=1 was 
> found in A/SI[1], A/SI[2] and B/SI/E=2 was found in
> A/SI[2] and 
> A/SI[3].
> 
> I want to compare exactly G+E in one SI, not over
> all.
> 
> Thank you.
> 
> 
> -- 
> 
> Dusan Zatkovsky



		
__________________________________
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.
http://promotions.yahoo.com/new_mail 

Current Thread