Re: [xsl] Keeping track of parents

Subject: Re: [xsl] Keeping track of parents
From: "Anthony E." <apwebdesign@xxxxxxxxx>
Date: Fri, 13 Jul 2001 16:07:10 -0700 (PDT)
> Most of it I can generate, but how can I fill the
> parentid? If there is no
> ancestor-element named <somenode> then the parent_id
> should be 0, else the
> parent_id should be the group_id of the ancestor.

someone can probably better answer this than me, but i
had a similar situation and came up with this:


<xsl:template match="somenode">
  <xsl:choose>
    <xsl:when test="ancestor::somenode">
    <xsl:variable name="parent_id"
select="parent::somenode[ancestor::somenode]/@id"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:variable name="parent_id" select="'0'"/>
    </xsl:otherwise>
  </xsl:choose>

  <!-- print to test $parent_id -->
  parent_id = <xsl:value-of select="$parent_id"/>

</xsl:template>



--- Christian Cäsar <caesar@xxxxxxxxxxxx> wrote:
> Hi there,
> 
> I'm a newbie, so please be patient with me if I
> cannot explain my problem
> as I should. I am quite stumped on this.
> 
> This is my problem:
> 
> I have an XML-File with a structure like this
> (simplified):
> 
> <somenode id="1">
>   <more_elements/>
>   <somenode id="2">
>     <more_elements/>
>     <somenode id="3">
>       <more_elements/>
>     </somenode>
>   <somenode id="4">
>     <more_elements/>
>   </somenode>
> </somenode>
> 
> That is, the element <somenode> can have children
> that are also called
> <somenode>.
> 
> My result xml should look like this:
> 
> <structure>
>   <group_name
> value="some_value_from_more_elements"/>
>   <group_id value="some_unique_id_for_somenode"/>
>   <parent_id value="group_id_of_somenodes_parent"/>
> </structure>
> <structure>
>   <group_name
> value="some_value_from_more_elements"/>
>   <group_id value="some_unique_id"/>
>   <parent_id value="group_id_of_somenodes_parent"/>
> </structure>
> <structure>
>   <group_name
> value="some_value_from_more_elements"/>
>   <group_id value="some_unique_id"/>
>   <parent_id value="group_id_of_somenodes_parent"/>
> </structure>
> <structure>
>   <group_name
> value="some_value_from_more_elements"/>
>   <group_id value="some_unique_id"/>
>   <parent_id value="group_id_of_somenodes_parent"/>
> </structure>
> 
> Most of it I can generate, but how can I fill the
> parentid? If there is no
> ancestor-element named <somenode> then the parent_id
> should be 0, else the
> parent_id should be the group_id of the ancestor.
> 
> If it matters: I'm using xalan.
> 
> Thanks for helping me,
> Christian
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> 


__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread