This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: mapping attributes.
- To: xsl-list at mulberrytech dot com
- Subject: Re: mapping attributes.
- From: Mike Brown <mike at skew dot org>
- Date: Mon, 6 Nov 2000 16:56:14 -0700 (MST)
- Reply-To: xsl-list at mulberrytech dot com
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