Subject: RE: [xsl] Concatenating the attribute values of ancestors From: "Lakshmi narayana" <lchintala@xxxxxxxxxxxx> Date: Fri, 8 Jul 2005 14:29:10 +0500 |
I am getting stack over flow exception.... -----Original Message----- From: Mukul Gandhi [mailto:mukul_gandhi@xxxxxxxxx] Sent: Friday, July 08, 2005 12:56 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Concatenating the attribute values of ancestors Probably some sort of following logic is required.. Please be beware, this is not tested. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <xsl:template match="node() | @*" priority="5"> <xsl:copy> <xsl:apply-templates select="node() | @*" /> </xsl:copy> </xsl:template> <xsl:template match="*" priority="6"> <xsl:copy> <xsl:apply-templates select="@*" /> <xsl:attribute name="newSeq"> <xsl:call-template name="concatenate-ancestor-attributes"> <xsl:with-param name="attr_value" select="''" /> <xsl:with-param name="anestors" select="ancestor::*" /> </xsl:call-template> </xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template name="concatenate-ancestor-attributes"> <xsl:param name="attr_value" /> <xsl:param name="ancestors" /> <xsl:choose> <xsl:when test="parent::*"> <xsl:call-template name="concatenate-ancestor-attributes"> <xsl:with-param name="attr_value" select="concat($attr_value, parent::*/@seq)" /> <xsl:with-param name="anestors" select="ancestor::*" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$attr_value" /> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> Regards, Mukul --- Lakshmi narayana <lchintala@xxxxxxxxxxxx> wrote: > > Hi > I want a template which adds the attribute values of > its ancestors and > create an attribute to the current > node. The value to this attribute is the result of > conactination of all the > node values added of its parents. > For example, > <A seq="1"> > <B seq="2" /> > <C seq="3"> > <D seq="4" /> > </C> > </A> > In the above xml, I want to concatenate all the seq > values of all ancestors > and its seq value also. And add new attribute > to the current node as newSeq with the result > concatenated value. > Note : if seq attribute is not there concatenate > value "0". > Output should look like this. > <A seq="1" newSeq="1"> > <B seq="2" newSeq="12"/> > <C seq="3" newSeq="13"> > <D seq="4" newSeq="134"/> > </C> > <E newSeq="10"> > <F seq="5" newSeq="105"/> > </E> > </A> > > Thanks > Laxmi Narayana > > ____________________________________________________ Sell on Yahoo! Auctions no fees. Bid on great items. http://auctions.yahoo.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Concatenating the attribu, Michael Kay | Thread | RE: [xsl] Concatenating the attribu, Mukul Gandhi |
Re: [xsl] multiple paths in the "us, David Carlisle | Date | Re: [xsl] Concatenating the attribu, Mukul Gandhi |
Month |