Subject: RE: [xsl] Count occurence and add the index in xsl From: "Geert Josten" <geert.josten@xxxxxxxxxxx> Date: Wed, 4 Oct 2006 16:53:47 +0200 |
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@xxxxxxxxx] > Verzonden: woensdag 4 oktober 2006 15:53 > Aan: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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> > </Zeitraum> > > I have 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_0" text="Date"> > <item 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
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Count occurence and add the i, Arulraj | Thread | Re: [xsl] Count occurence and add t, Arulraj |
[xsl] problems around →, Frank Marent | Date | Re: [xsl] problems around →, andrew welch |
Month |