Re: mapping attributes.

Subject: Re: mapping attributes.
From: Mike Brown <mike@xxxxxxxx>
Date: Mon, 6 Nov 2000 16:56:14 -0700 (MST)
Jamie wrote:
> I have an XML document, like so:
> 
> <DOCUMENT>
>    <SECTION ID="SOME_ID">
>        <TITLE>This sections title</TITLE>
> 	   <BODY />
> 	   <RELATED ID="ANOTHER" />   
>    </SECTION>   
>    <SECTION ID="ANOTHER">
>         <TITLE>Another sections title</TITLE>
> 		<BODY />
>    		<RELATED ID="SOME_OTHER" />
>    </SECTION>   
> </DOCUMENT>
> 
> For each section, I want to produce a cross reference to related sections,
> like so:
> 
> See Also:
> <A HREF="#ANOTHER">Another sections title</A>
> 
> 
> The "#ANOTHER" is easy to get, but the link text isn't. This works:
>
> [...]
> 
> <xsl:for-each select="SECTION[@ID={RELATED/@ID}]/TITLE"> but it doesn't find
> anything.

If you are currently processing a SECTION element then you need to go back
up a level to see the other SECTION element siblings of the current node.

<xsl:template match="SECTION">
  <xsl:value-of select="concat('Title: ',TITLE)"/>
  <xsl:variable name="thisID" select="@ID"/>
  <xsl:for-each select="../SECTION[RELATED/@ID=$thisID]">
    <br/>
    <xsl:value-of select="concat('Related Title: ',TITLE)"/>
  </xsl:for-each>
  <br/><br/>
</xsl:template>

You could also use keys.

   - Mike
____________________________________________________________________
Mike J. Brown, software engineer at         My XML/XSL resources:
webb.net in Denver, Colorado, USA           http://www.skew.org/xml/


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


Current Thread
  • mapping attributes.
    • Jamie - Mon, 6 Nov 2000 15:12:38 -0800
      • Mike Brown - Mon, 6 Nov 2000 16:56:14 -0700 (MST) <=
      • jackson - Tue, 7 Nov 2000 11:33:57 +1000
      • <Possible follow-ups>
      • sara . mitchell - Mon, 6 Nov 2000 19:06:25 -0500
        • Jamie - Mon, 6 Nov 2000 17:08:08 -0800
          • Mike Brown - Mon, 6 Nov 2000 18:52:20 -0700 (MST)