Subject: Re: Concatenating the attribute values of ancestors
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Fri, 8 Jul 2005 01:54:00 -0700 (PDT)
|
I am actually getting error Exception in thread "main"
java.lang.OutOfMemoryError with my stylesheet. It
seems recursing is not stopping.
I am using JRE 1.4.2_03. I am using Saxon 8.4. Could
this be a bug?
Regards,
Mukul
--- Mukul Gandhi <mukul_gandhi@xxxxxxxxx> wrote:
> 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/
>
>
____________________________________________________
Sell on Yahoo! Auctions no fees. Bid on great items.
http://auctions.yahoo.com/
|