Subject: Re: [xsl] Concatenating the attribute values of ancestors From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Fri, 8 Jul 2005 00:55:55 -0700 (PDT) |
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 -> |
---|---|---|
[xsl] Concatenating the attribute v, Lakshmi narayana | Thread | Re: [xsl] Concatenating the attribu, Mukul Gandhi |
[xsl] Concatenating the attribute v, Lakshmi narayana | Date | Re: [xsl] Concatenating the attribu, Mukul Gandhi |
Month |