Re: [xsl] Navigating XML Using Attributes

Subject: Re: [xsl] Navigating XML Using Attributes
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Tue, 11 Feb 2003 22:20:33 +0000
Hi James,

> To navigate the XML document, one must pull the Ids from element
> <LevelA3> and return to the <Account> level to find the <LevelA3>
> elements that reside in the document just below <Account>. Once the
> appropriate <LevelA3> element is found, the XSL must find its way to
> <LevelB2>, grab its Id, return to the top and find <LevelB2> below.
> This continues until the data contained in <LevelC1> is found. For
> example, the path to DataGamma is: Account/LevelA1/LevelA2/LevelA3
> Id="333"/LevelB1/LevelB2 Id="11"/LevelC1:DataGamma
>
> I assume I will have to use apply-templates again and again. What I
> don't know is how to remember all the Ids in LevelA3, and below, so
> I can find each of the cooresponding elements. Any suggestions?

I don't really understand the problem about *remembering* the Ids in
LevelA3. If you apply templates to all the LevelA3 elements then they
will all be processed. I'd have something like:

<xsl:template match="LevelA2">
  ...
  <xsl:apply-templates select="LevelA3" />
  ...
</xsl:template>

<xsl:template match="LevelA3">
  <xsl:variable name="id" select="@Id" />
  <xsl:apply-templates select="/Account/LevelA3[@Id = $id]" />
</xsl:template>

<xsl:template match="LevelA3[node()]">
  ...
</xsl:template>

I would also consider using a key to index the elements under the
Account element by their Id attributes (and possibly by their name) so
that you can access them quickly.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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


Current Thread