Subject: [xsl] document() and keys From: "Phil Endecott" <spam-from-xsl-list@xxxxxxxxxxxx> Date: Tue, 13 Nov 2001 13:37:42 -0500 (EST) |
Hi XSLT experts, A while ago I asked about how to refer to nodes in the original input while processing another document(). A few of you replied with the excellent suggestion of storing the root of the original document in a global variable: <xsl:variable name="src-root" select="/"/> and then selecting nodes inside it like this: ....select="$src-root//[ some test ]" This works great. But: as some of you might have guessed from the // up there, I now find that I can make the transformation go about 20 times faster if I use keys instead. But I can't see how to make keys work in this multi-document situation. Having searched the archives I established that something like this could work: <xsl:for-each select="$src-root"> .... select="key(keyname,...)" ... </xsl:for-each> I think that this does get the correct nodes (though I'm not 100% sure of it). The problem is that I want to pass the selected node as a parameter to a named template. I have tried this: <xsl:call-template.....> <xsl:for-each select="$src-root"> <xsl:with-param .... select="key(keyname,...)"/> </xsl:for-each> </xsl:call-template> But that's not legal XSL. So I tried putting it in a variable: <xsl:variable name="tmp"> <xsl:for-each select="$src-root"> <xsl:value-of select="key(keyname,...)"/> </xsl:for-each> </xsl:variable> <xsl:call-template.....> <xsl:with-param select="$tmp"/> </xsl:call-template> But that gives the "result fragment not node set" error, so I tried using a conversion extension function (yuk): <xsl:call-template.....> <xsl:with-param select="xalan:nodeset($tmp)"/> </xsl:call-template> But that isn't working either: I think that the nodeset is copying the nodes, so my code in the called template that tries to look up its parents fails to work. Now I've run out of ideas. Help! --Phil. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Call context within a nam, Jeff Beadle | Thread | Re: [xsl] document() and keys, David Carlisle |
RE: [xsl] Call context within a nam, Chris Bayes | Date | [xsl] newbie: searching for web lin, Bryan Tarantina |
Month |