Re: [xsl] Error: XPTY0020: Leading '/' cannot select the root node of the tree containing the context item: the context item is an atomic value

Subject: Re: [xsl] Error: XPTY0020: Leading '/' cannot select the root node of the tree containing the context item: the context item is an atomic value
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 10 Jan 2011 11:42:35 +0000
On 10/01/2011 11:35, Dietrich Bollmann wrote:
  <xsl:template match="/">
     <body>
       <xsl:for-each select="tokenize(example/bar/@ids, ',')">
         <xsl:value-of select="."/>:<xsl:value-of
select="key('index', .)" />
       </xsl:for-each>
     </body>
   </xsl:template>

The xsl:for-each select="tokenize()" changes the context item, so key() no longer knows which tree to search in. Change it to


  <xsl:variable name="root" select="/"/>
  <xsl:template match="/">
    <body>
      <xsl:for-each select="tokenize(example/bar/@ids, ',')">
        <xsl:value-of select="."/>:<xsl:value-of
select="key('index', ., $root)" />
      </xsl:for-each>
    </body>
  </xsl:template>

Michael Kay
Saxonica

Current Thread