Subject: RE: [xsl] error testing id() in external document From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 19 Oct 2007 18:21:34 +0100 |
In XSLT 1.0 you can't use a function call on the rhs of "/". You need to use xsl:for-each to set the context node for id(): <xsl:for-each select="document(..)"> <xsl:if test="id($jid) = 'footnote'>... Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Trevor Nicholls [mailto:trevor@xxxxxxxxxxxxxxxxxx] > Sent: 19 October 2007 17:56 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] error testing id() in external document > > > 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] error testing id() in externa, Trevor Nicholls | Thread | Re: [xsl] error testing id() in ext, G. Ken Holman |
RE: [xsl] multiple transformations , Michael Kay | Date | Re: [xsl] error testing id() in ext, G. Ken Holman |
Month |