xsl-list
[Top] [All Lists]

Key error: the context item is undefined

2005-12-12 11:45:06
  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 
Téléchargez cette version sur http://fr.messenger.yahoo.com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>