This works for me. If I add the template rule
<xsl:template match="/">
<xsl:call-template name="AcronymnStandsFor">
<xsl:with-param name="acronym" select="'Ant'"/>
</xsl:call-template>
</xsl:template>
and run it under Saxon 6.5.3, with any source document, it produces
<?xml version="1.0" encoding="utf-8"?>Another Neat Tool
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Justin Makeig
Sent: 07 November 2003 21:36
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Using keys to lookup from current stylesheet
I'm trying to use a key to lookup elements in the current
stylesheet. The AcronymnStandsFor is called from another
stylesheet that imports the one shown below to populate the
@title attribute of xhtml:acronym elements. I've used Michael
Kay's advice from his book and used the for-each
select="document('')" to switch the context to the current
(stylesheet) document. However, the key doesn't seem to find
anything. I've tested that the values that are coming in in
the $acronym parameter are correct. Can anybody spot what the
problem might be? Thanks.
- Justin
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="http://cde.berkeley.edu/docbook/constant/acronym"
exclude-result-prefixes="a">
<xsl:key name="AcronymKey" match="a:acronymItem" use="a:acronym"/>
<xsl:template name="AcronymnStandsFor">
<xsl:param name="acronym"/>
<!-- change context to current document so the key
will work -->
<xsl:for-each select="document('')">
<xsl:value-of
select="key('AcronymKey',$acronym)/a:standsFor"/>
</xsl:for-each>
</xsl:template>
<!-- acronym lookups -->
<a:acronymList>
<a:acronymItem>
<a:acronym>Ant</a:acronym>
<a:standsFor>Another Neat Tool</a:standsFor>
</a:acronymItem>
...
</a:acronymList>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list