Re: Novice question: selecting an element based on an
Hi Ohmson, > As you can see, based on "myIdRef", I am supposed to retrieve the > original string. In this example, the referent and the reference are > close but sometimes in a big document, they could be far apart. I > bet I can do this inefficiently by keeping state of all the > referents in XSL variables but you folks probably have an better > idea on how to do this efficiently. Use a key. You can set up a key so that all the elements that have a myId attribute are indexed by their myId attribute: <xsl:key name="values" match="*[@myId]" use="@myId" /> And then retrieve an element with a particular value for its myId attribute using the key() function. For example, to get the element whose myId attribute is 28, you can use: key('values', 28) If the current node has a myIdRef attribute, then you can use that to provide the second argument to the call for the key: key('values', @myIdRef) The call to the key() function actually returns the node; you can apply templates to it, for example, to process it: <xsl:apply-templates select="key('values', @myIdRef)" /> 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