This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: retrieving a piece of data from a different xml file
- To: Eric Taylor <Eric dot Taylor at RealPage dot com>
- Subject: RE: retrieving a piece of data from a different xml file
- From: Jeni Tennison <jeni at friday dot u-net dot com>
- Date: Wed, 02 Aug 2000 00:01:19 +0100
- Cc: <xsl-list at mulberrytech dot com>
- References: <DBF5834E2987D311A4BE0060081D992C2C3DBD@BUR2>
- Reply-To: xsl-list at mulberrytech dot com
Eric,
Chris Bayes wrote:
><xsl:variable name="locs" select="document('pagelocations.xml')">
></xsl:variable>
>
>later
>
><xsl:template match="link">
> <a>
> <xsl:atribute name="href"><xsl:value-of
>select="$locs/pagelocations/item[@name = @page]/location" /></xsl:attribute>
> </a>
></xsl:template>
Just to correct a couple of typos in Chris' solution:
<xsl:template match="link">
<a>
<xsl:attribute name="href">
<xsl:value-of
select="$locs/pagelocations/item[@name =
current()/@page]/@location" />
</xsl:attribute>
<xsl:value-of select="@page" />
</a>
</xsl:template>
If you don't use current()/@page, then the XSLT processor will try to look
for the 'page' attribute on the context node, which is the 'item' in
pagelocations.xml. You could alternatively define a variable to hold
information about what the current page is:
<xsl:template match="link">
<xsl:variable name="page" select="@page" />
<a>
<xsl:attribute name="href">
<xsl:value-of
select="$locs/pagelocations/item[@name = $page]/@location" />
</xsl:attribute>
<xsl:value-of select="@page" />
</a>
</xsl:template>
The '/location' step selects the 'location' element children of the item
rather than the attributes of the item: you need '/@location' instead.
Without some content (I've used the name of the page), the link won't show
on an HTML page.
You can use:
<xsl:template match="link">
<a href="$locs/pagelocations/item[@name = current()/@page]/@location">
<xsl:value-of select="@page" />
</a>
</xsl:template>
to give the same effect.
I hope that helps,
Jeni
Dr Jeni Tennison
Epistemics Ltd * Strelley Hall * Nottingham * NG8 6PE
tel: 0115 906 1301 * fax: 0115 906 1304 * email: jeni.tennison@epistemics.co.uk
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list