|
Subject: RE: [xsl] favor certain elements From: Emmanuel Bégué <eb@xxxxxxxxxx> Date: Tue, 20 Oct 2009 06:57:11 +0200 |
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.szabo@xxxxxxxxxxxxx]
> Sent: Monday, October 19, 2009 4:08 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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.Szabo@xxxxxxxxxxxxx
>
> LexisNexis Verlag ARD Orac GmbH & Co KG
> Marxergasse 25, 1030 Wien
> FN 8333f, Handelsgericht Wien
> http://www.lexisnexis.at/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] favor certain elements, Michael Kay | Thread | [xsl] use xsl to generate statistic, John Carlson |
| Re: [xsl] Grouping by attribute, Jostein Austvik Jaco | Date | [xsl] server side xalan / struts ha, bryan rasmussen |
| Month |