Subject: RE: [xsl] Count preceeding sibling but in different element From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 8 Aug 2005 00:13:58 +0100 |
There is no function called preceeding. If there were one, it would be spelt "preceding". There are axes named "preceding" and "preceding-sibling", but axes are not functions. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Taco Fleur (@DataBroker) [mailto:taco@xxxxxxxxxxxxx] > Sent: 07 August 2005 23:45 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [xsl] Count preceeding sibling but in different element > > Thanks guys, > It appears there is a function called "preceeding" Which does > the trick > nicely. > thanks > > -----Original Message----- > From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx] > Sent: Friday, 5 August 2005 4:48 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] Count preceeding sibling but in different element > > Please try this XSL.. > > <?xml version="1.0"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > > <xsl:output method="xml" indent="yes" /> > > <xsl:template match="/element1"> > <element1> > <xsl:for-each select="*"> > <xsl:copy> > <xsl:call-template name="numberingTemplate"> > <xsl:with-param name="node-set" select="*" /> > </xsl:call-template> > </xsl:copy> > </xsl:for-each> > </element1> > </xsl:template> > > <xsl:template name="numberingTemplate"> > <xsl:param name="node-set" /> > > <xsl:for-each select="$node-set"> > <xsl:element name="{name()}"> > <xsl:attribute name="number"><xsl:value-of > select="count(self::* | preceding::step)" /></xsl:attribute> > </xsl:element> > </xsl:for-each> > </xsl:template> > > </xsl:stylesheet> > > For e.g. when it is applied to XML - > <element1> > <element2> > <step/> > <step/> > </element2> > <element3> > <step/> > </element3> > <element4> > <step/> > <step/> > <step/> > </element4> > </element1> > > The output produced is - > <?xml version="1.0" encoding="UTF-8"?> > <element1> > <element2> > <step number="1"/> > <step number="2"/> > </element2> > <element3> > <step number="3"/> > </element3> > <element4> > <step number="4"/> > <step number="5"/> > <step number="6"/> > </element4> > </element1> > > Regards, > Mukul > > > On 8/5/05, Taco Fleur <taco@xxxxxxxxxxxxx> wrote: > > I am wanting to count all preceeding sibling (steps) but > they could be > > in different elements > > > > <element1> > > <element2> > > <step/> > > <step/> > > </element2> > > <element3> > > <step/> > > </element3> > > <element4> > > <step/> > > <step/> > > <step/> > > </element4> > > </element1> > > > > The output I am after is > > > > <element1> > > <element2> > > <step number="1" /> > > <step number="2"/> > > </element2> > > <element3> > > <step number="3"/> > > </element3> > > <element4> > > <step number="4"/> > > <step number="5"/> > > <step number="6"/> > > </element4> > > </element1> > > > > I have have the following which works fine on every step within an > > element, i.e. > > > > <element3> > > <step/> > > </element3> > > <element4> > > <step/> > > <step/> > > <step/> > > </element4> > > > > Would become > > > > <element3> > > <step number="1"/> > > </element3> > > <element4> > > <step number="1"/> > > <step number="2"/> > > <step number="3"/> > > </element4> > > > > <xsl:template match="step"> > > <xsl:copy> > > <xsl:copy-of select="@*" /> > > <!-- Calculate the step number --> > > <xsl:attribute name="number"> > > <xsl:value-of select="count( preceding-sibling::step ) + 1" /> > > </xsl:attribute> <xsl:apply-templates /> </xsl:copy> > </xsl:template> > > > > Can anyone help? > > Thanks > > ________________________________ > > Taco Fleur - E-commerce Development Manager Shelco Searches > & Services > > An Authorised ASIC Information Broker www.shelco.com.au > > <blocked::http://www.shelco.com.au> > > Ph: + 61 7 3236 2605
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Count preceeding sibling , Michael Kay | Thread | RE: [xsl] Count preceeding sibling , Taco Fleur \(@DataBr |
RE: [xsl] XSLT 2.0 matches function, Michael Kay | Date | Re: [xsl] XSLT 2.0 matches function, Marcin Miłkowski |
Month |