Hello,
Have you tried grouping? Using this template:
<xsl:template match="/root">
<root>
<elementx>
<xsl:for-each-group select="*/*" group-by="local-name()">
<xsl:choose>
<xsl:when test="local-name()='a'">
<xsl:copy-of select="current-group()[1]"/>
</xsl:when>
<xsl:when test="local-name()='b'">
<xsl:copy-of select="current-group()[last()]"/>
</xsl:when>
<xsl:otherwise>
<!-- some default rule should go here -->
<xsl:copy-of select="current-group()[1]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</elementx>
</root>
</xsl:template>
this source:
<root>
<element1>
<a>first a (from 1)</a>
<b>first b (from 1)</b>
</element1>
<element2>
<a>second a (from 2)</a>
<b>second b (from 2)</b>
<c>first c (from 2)</c>
</element2>
<element3>
<a>third a (from 3)</a>
<b>third b (from 3)</b>
<c>second c (from 3)</c>
</element3>
</root>
gives this result:
<root>
<elementx>
<a>first a (from 1)</a>
<b>third b (from 3)</b>
<c>first c (from 2)</c>
</elementx>
</root>
Regards,
EB
-----Original Message-----
From: Szabo, Patrick (LNG-VIE)
[mailto:patrick(_dot_)szabo(_at_)lexisnexis(_dot_)at]
Sent: Monday, October 19, 2009 4:08 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] favor certain elements
Hi,
Im using Saxon 9, and XSLT 2.0.
Source:
<root>
<element1>
<a>...</a>
<b>...</b>
</element1>
<element2>
<a>...</a>
<b>...</b>
<c>...</c>
</element2>
</root>
desired output:
<root>
<elementx>
<a>...</a>
<b>...</b>
<c>...</c>
</elementx>
</root>
What i want do do is to apply templates to the elements a, b, c.
The problem is that there is an element a in element1 and another
in element2. (same thing with element b)
Is there a way to favor certain elements ?!
If there is an element a in element1 and element2 i want to use
the a from element2 - if there isnt i want to use the a from element1.
I want to to the same thing with b but contrariwisely.
What i want is something like.
<xsl:apply-templates select="//a" fav="parent::element2"/>
I hope i explained the question sufficiently !
regards
Patrick Szabo
XSLT-Entwickler
Tel.: +43 (1) 534 52 - 1573
Fax: +43 (1) 534 52 - 146
Patrick(_dot_)Szabo(_at_)lexisnexis(_dot_)at
LexisNexis Verlag ARD Orac GmbH & Co KG
Marxergasse 25, 1030 Wien
FN 8333f, Handelsgericht Wien
http://www.lexisnexis.at/
--~------------------------------------------------------------------
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>
--~--