Subject: RE: [xsl] Key error: the context item is undefined From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 12 Dec 2005 19:17:18 -0000 |
I imagine you want to search within the document that contains the $obj node. In this case you can write <xsl:value-of select="foo:do.it(key('by.id', $obj/@idref, $obj/root()))"/> or if you prefer, <xsl:value-of select="foo:do.it($obj/key('by.id', @idref))"/> The reason for the error is that key(), with 2 arguments, always searches the document containing the context node, and if there isn't a context node then it doesn't know which document to search. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: drkm [mailto:darkman_spam@xxxxxxxx] > Sent: 12 December 2005 18:45 > To: XSL Mulberry list > Subject: [xsl] Key error: the context item is undefined > > Hi > > I have a problem using a key. I have an XPath function > that can deal with elements that are identifiers for other > elements. In such a case, the function uses a key to > retreive the effective element (corresponding to the id). > > Saxon-SA 8.6.1 give me the following error message: > > Error on line 13 of ~/drafts/key-wo-context.xsl: > XPDY0002: Cannot select a node here: the context item > is undefined > > While I think I understand mostly what it means, I can't > find a way to do what I want. Below is a minimal example > that reproduce the error: > > ~/drafts $ cat key-wo-context.xsl > <xsl:transform > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:foo="..." > version="2.0"> > > <xsl:output method="text"/> > > <xsl:key name="by.id" match="item" use="id"/> > > <xsl:function name="foo:do.it"> > <xsl:param name="obj"/> > <xsl:choose> > <xsl:when test="$obj/@idref"> > <xsl:value-of > select="foo:do.it(key('by.id', $obj/@idref))"/> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="."/> > </xsl:otherwise> > </xsl:choose> > </xsl:function> > > <xsl:template match="/"> > <xsl:value-of select="*[1]/*"/> > </xsl:template> > > </xsl:transform> > > ~/drafts $ cat key-wo-context.xml > <root> > <item id="a">A</item> > <item id="b">B</item> > <item idref="b"/> > <item id="c">C</item> > <item idref="c"/> > <item idref="a"/> > <item id="d">D</item> > </root> > > ~/drafts $ saxon key-wo-context.xml key-wo-context.xsl > Error on line 13 of ~/drafts/key-wo-context.xsl: > XPDY0002: Cannot select a node here: the context item > is undefined > Failed to compile stylesheet. 1 error detected. > > Do you have any idea? > > Thanks, > > --drkm > > > > > > > > > > > > > > > > > > > > > > > > ______________________________________________________________ > _____________ > Appel audio GRATUIT partout dans le monde avec le nouveau > Yahoo! Messenger > Tilichargez cette version sur http://fr.messenger.yahoo.com
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Key error: the context item i, drkm | Thread | RE: [xsl] Key error: the context it, drkm |
RE: [xsl] document() and HTTP heade, Michael Kay | Date | RE: [xsl] key() in match pattern of, Michael Kay |
Month |