[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: key declarations (using a sequence constructor)

Subject: Re: key declarations (using a sequence constructor)
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 06 Oct 2009 13:52:22 -0400
Re:  key declarations (using a sequence constructor)
At 2009-10-06 18:22 +0100, Andy Chambers wrote:
I'm playing around with the added features available in key
declarations but I think I must be misunderstanding
something.  Here's my key declaration (I realize that this particular
example would be better as a simple
@use but I want to understand how it works to see if it might make
some of my other keys look a little
better)....

  <xsl:key name="keyNames"
                   match="name | mdv">
        <lookup oid="{@oid}"/>
  </xsl:key>

According to http://www.w3.org/TR/2007/REC-xslt20-20070123/#xsl-key the value of the key is atomized. Your key is an element node. The typed value of the element node is the string value (untypedAtomic) of the text content, in your case an empty string, according to:


http://www.w3.org/TR/2007/REC-xslt20-20070123/#dt-atomization

and

  http://www.w3.org/TR/2007/REC-xpath-datamodel-20070123/#const-infoset-element
  (typed-value)

I thought that to use this key to lookup the @name associated with
@oid="AA.AA" for example, I'd do

        <xsl:variable name="lookup">
          <lookup oid="AA.AA"/>
        </xsl:variable>
        <xsl:sequence select="key('keyNames', $lookup)/@name"/>

According to http://www.w3.org/TR/2007/REC-xslt20-20070123/#keys the lookup value is an atomic value. Your key being passed is a document node and the atomized value is the string value of that tree, which in your example is the empty string.


But this actually returns a sequence containing all the @names.

I seek enlightenment as to why this is so :-)

Every member in your key table has the empty string as the associated key value, and you are looking up the key value using an empty string. Thus, every member of the key table is being returned to you, so you are getting every attribute.


I hope this helps.

. . . . . . . . . . Ken


-- Upcoming: hands-on code list, UBL, XSLT, XQuery and XSL-FO classes in Copenhagen Denmark and Washington DC USA, October/November 2009 Interested in other classes? http://www.CraneSoftwrights.com/s/i/ Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18 Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18 G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.