[xsl] error testing id() in external document

Subject: [xsl] error testing id() in external document
From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx>
Date: Sat, 20 Oct 2007 05:56:06 +1300
Using xsltproc (libxml), and thus inside an <xsl:stylesheet version="1.0">,
the following template generates an error:

  <xsl:template match="jump[@srcfile]">
   <xsl:variable name="jfil" select="substring-before(@srcfile,'#')" />
   <xsl:variable name="jid" select="substring-after(@srcfile,'#')" />
   <!-- footnotes are an invalid external reference -->
   <xsl:if test="local-name(document($jfil,/)/id($jid)) = 'footnote'">
    <xsl:message terminate="yes">
     <xsl:text>Footnote reference to external document (</xsl:text>
     <xsl:value-of select="@srcfile" />
     <xsl:text> found in </xsl:text>
     <xsl:value-of select="$myfullself" />
    </xsl:message>
   </xsl:if>
  </xsl:template>

The error is:

  XPath error : Invalid expression
  xsl:if : could not compile test expression 'local-name(.. etc.

Is that really an invalid expression? Is there a valid expression that will
achieve the same thing?

Thanks
Trevor

Current Thread