This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Understanding xsl:key
- To: XSL-List at mulberrytech dot com
- Subject: Understanding xsl:key
- From: "Heiner de Wendt" <H dot dewendt at systec dot de>
- Date: Thu, 17 Aug 2000 12:42:10 +0200
- Organization: SYSTEC Elektronik und Software GmbH
- Reply-To: xsl-list at mulberrytech dot com
Hello,
I've got trouble understanding the proper use of xsl:key and the
key() function. Here's my XML-File:
<booklist>
<book>
<title>
<name>Design Patterns</name>
</title>
<author>Erich Gamma</author>
<author>Richard Helm</author>
<author>Ralph Johnson</author>
<author>John Vlissides</author>
</book>
<book>
<title>
<name>Pattern Hatching</name>
</title>
<author>John Vlissides</author>
</book>
<book>
<title>
<name>Building Applications</name>
</title>
<author>Mohamed Fayad</author>
<author>Douglas C. Schmidt</author>
<author>Ralph Johnson</author>
</book>
</booklist>
Here's the XSL:
<xsl:key name="test" match="title" use="name"/>
<xsl:template match="booklist">
<booklist>
<xsl:apply-templates/>
</booklist>
</xsl:template>
<xsl:template match="book">
<xsl:if test="key('test','Pattern Hatching')">
<node>
<xsl:value-of select="."/>
<xsl:text> -EndOfKeyValue-</xsl:text>
</node>
</xsl:if>
</xsl:template>
Now, I'd expect the xsl:if to make sure only "name" elements that are
children of "title" and have the content "Pattern Hatching" are
shown. Instead, I get ALL contents, including the author names; only
the various "book" contents are (naturally) placed into single
"node" elements.
Now, to make a long question short: WHY??? :)
Thanks,
Heiner
(who's read all "key"-explanations that he could find, but just seems
to get something wrong)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list