Re: Key function using key strings from msxsl:node-set
Hi Gennady, > Actually it gives Person by Address node-set, not a string. If you > use this key, you must supply an Address **element**, which is a > child of the Person element you are looking for. You are supplying a > string and therefore getting nothing (as it should be). That's not exactly true. If the expression that you use in the use attribute of xsl:key evaluates to a node set, then you get a number of entries for the matched node, one for each node in the node set. The *value* for these keys is still a string value, just a string value of the node. So in: <xsl:key name="PersonByAddress" match="/People/Person" use="Address" /> then given that each Person has just one Address, the use attribute returns a single Address element. The Person element's key value is the string value of that Address element. It's exactly the same as defining the key as: <xsl:key name="PersonByAddress" match="/People/Person" use="string(Address)" /> Likewise, when you access a key with the key() function, the second argument always gets converted to a string. There's no need to make sure that the two expressions (when defining the key and when using the key) have the same object type. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format