Hello Geert Josten,
Thanks for help.
This index is not need for all id's.. only for the repeated element i have to
add the index.
count(preceding-sibling::*[name() = name(current())]).
this is working..
thanks
raj
----- Original Message ----
From: Geert Josten <geert(_dot_)josten(_at_)daidalos(_dot_)nl>
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Sent: Wednesday, October 4, 2006 8:23:47 PM
Subject: RE: [xsl] Count occurence and add the index in xsl
Hi,
Why not use apply-templates instead of call-templates. It is perfectly
legal to pass parameters to apply-templates as wel.
About the index number, you might want to try:
count(preceding-sibling::*[name() = name(current())]).
Though, if it is an option to add an index number to ALL id's, you could
use position() instead. Probably a lot quicker as well..
Kind regards,
Geert
Drs. G.P.H. Josten
Consultant
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
www.daidalos.nl
KvK 27164984
De informatie - verzonden in of met dit emailbericht - is afkomstig van
Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit
bericht kunnen geen rechten worden ontleend.
Van: Arulraj [mailto:p_arulraj(_at_)yahoo(_dot_)com]
Verzonden: woensdag 4 oktober 2006 15:53
Aan: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Onderwerp: [xsl] Count occurence and add the index in xsl
Hello all,
i want to get the index in the output.
Input XML looks like the following
----------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<Zeitraum>
<Years format="yyyy">2005</Years>
<Days>21</Days>
<Weeks>22</Weeks>
<Date>
<Day>10</Day>
<Month>02</Month>
<Year>2006</Year>
</Date>
<test> </test>
<test></test>
<Date>
<Day>10</Day>
<Month>02</Month>
<Year>2006</Year>
</Date>
<test></test>
</
the following xsl
---------------------------------
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/*">
<tree id="0">
<xsl:call-template name="TreeXML">
<xsl:with-param name="nameTmp" select="name()"/>
</xsl:call-template>
</tree>
</xsl:template>
<xsl:template name="TreeXML">
<xsl:param name="nameTmp"/>
<item id="{$nameTmp}" text="{name()}">
<xsl:for-each select="*">
<xsl:call-template name="TreeXML">
<xsl:with-param name="nameTmp"
select="concat($nameTmp,'_',name())"/>
</xsl:call-template>
</xsl:for-each>
</item>
</xsl:template>
</xsl:stylesheet>
I got the following output
------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<tree id="0"><item id="Zeitraum" text="Zeitraum"><item
id="Zeitraum_Years" text="Years"/>
<item id="Zeitraum_Days" text="Days"/>
<item id="Zeitraum_Weeks" text="Weeks"/>
<item id="Zeitraum_Date" text="Date"><item
id="Zeitraum_Date_Day" text="Day"/>
<item id="Zeitraum_Date_Month" text="Month"/>
<item id="Zeitraum_Date_Year" text="Year"/>
</item>
<item id="Zeitraum_test" text="test"/>
<item id="Zeitraum_test" text="test"/>
<item id="Zeitraum_Date" text="Date"><item
id="Zeitraum_Date_Day" text="Day"/>
<item id="Zeitraum_Date_Month" text="Month"/>
<item id="Zeitraum_Date_Year" text="Year"/>
</item>
<item id="Zeitraum_test" text="test"/>
</item>
</tree>
My Expected output is
-----------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<tree id="0">
<item id="Zeitraum" text="Zeitraum">
<item id="Zeitraum_Years" text="Years"/>
<item id="Zeitraum_Days" text="Days"/>
<item id="Zeitraum_Weeks" text="Weeks"/>
<item id="Zeitraum_Date
tem id="Zeitraum_Date_0_Day" text="Day"/>
<item id="Zeitraum_Date_0_Month" text="Month"/>
<item id="Zeitraum_Date_0_Year" text="Year"/>
</item>
<item id="Zeitraum_test_0" text="test"/>
<item id="Zeitraum_test_1" text="test"/>
<item id="Zeitraum_Date_1" text="Date">
<item id="Zeitraum_Date_1_Day" text="Day"/>
<item id="Zeitraum_Date_1_Month" text="Month"/>
<item id="Zeitraum_Date_1_Year" text="Year"/>
</item>
<item id="Zeitraum_test_2" text="test"/>
</item>
</tree>
Question:
I want to add the index in the id attribute. suppose if the
element is repeated i want to add that count index. Only for
the repeated element i want to get the index How to do this?
Any help
regards,
raj
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--