xsl-list
[Top] [All Lists]

RE: Using keys to lookup from current stylesheet

2003-11-10 04:43:05

Isn't this a case of keys across documents Michael?
He did say the acronym list was in another stylesheet.

His key() function only needs to search one document, so it's not a
problem.

Michael Kay



regards DaveP



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

- 
DISCLAIMER: 

NOTICE: The information contained in this email and any 
attachments is 
confidential and may be privileged. If you are not the intended 
recipient you should not use, disclose, distribute or copy any of the 
content of it or of any attachment; you are requested to notify the 
sender immediately of your receipt of the email and then to delete it 
and any attachments from your system. 

RNIB endeavours to ensure that emails and any attachments 
generated by 
its staff are free from viruses or other contaminants. However, it 
cannot accept any responsibility for any  such which are 
transmitted. We therefore recommend you scan all attachments. 

Please note that the statements and views expressed in this email and 
any attachments are those of the author and do not 
necessarily represent 
those of RNIB. 

RNIB Registered Charity Number: 226227 

Website: http://www.rnib.org.uk 

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



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



<Prev in Thread] Current Thread [Next in Thread>