xsl-list
[Top] [All Lists]

AW: xsl:key function help

2005-08-03 23:22:25
Hello again,

thanks for your help. Finally I dont understand the basic concept I think. 

Try count(key('Categories','Microsoft'))

The second argument of key() is an expression that evaluates 
to the key value you are searching for. The expression you 
have supplied is Topic, which means child::Topic, and as the 
context node is "/" and "/" doesn't have a child Topic, you 
have supplied an empty node-set as the key value, so nothing matches.

That is OK so far because I can understand. Regarding the Muenchian method
which is described on Jenis site I tried the following:

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:key name="Categories" match="Tip" use="@Topic" />
<xsl:output method="xml"/>
        
        <xsl:template match="/">                
                <xsl:apply-templates select="Tip[generate-id(.) =
generate-id(key('Categories',@Topic)[1])]"/>
        </xsl:template>

        <xsl:template match="Tip" >
                <xsl:for-each select="key('Categories', @Topic)">
                        <xsl:value-of select="@Subtopic"/>
                </xsl:for-each>
        </xsl:template>
</xsl:stylesheet>

That does not work and I dont know why. As you stated earlier I have to
provide a matching child. What is it? A string or a nodeset or an object?
When trying to understand Jenis explanations (My capabilities either in
english and in xslt are very poor) I really had problems to understand the
generate-id approach and also the use of the attributes.

key('Categories',@Topic)[1]
sounds for me like: 

give me the first node in the nodeset which was returned by the key function

But in my case that seem not to match anything. When I just replace teh
xpath on root level with xsl:apply-templates then the Tip template matches
even with the @Topic given as parameter to the key function.

Shed some light on my weird understanding please all you gurus.

Thanks,

David Preuss


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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