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>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Regards,
Mukul
--- Dusan Zatkovsky <zatkovsky(_at_)printsoft(_dot_)cz> 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