This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: selecting an element in an external doc using its id attribute
- From: "J.Pietschmann" <j3322ptm at yahoo dot de>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Tue, 18 Jun 2002 00:44:49 +0200
- Subject: Re: [xsl] selecting an element in an external doc using its id attribute
- References: <94290089927.20020617172118@virginia.edu>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Cindy Mazza wrote:
But when I try to find an element whose id attribute is equal to the
value of the 'from' variable, I get an error saying "Unexpected token
[<function>] in path expression."
<xsl:variable name="from" select="@from"/>
<xsl:variable name="docnode" select="document('../texts/odes.xml')"/>
<xsl:message>
<xsl:value-of select="$docnode//id($from)"/>
</xsl:message>
You can't use id() this way. A slash '/' in an XPath mus be
followed by another step, and functions, like id(), do not
fall into this category (in XPath 1.0).
Use either a predicete
<xsl:message>
<xsl:value-of select="$docnode//*[@id=$from]"/>
</xsl:message>
(supposed all your ID attributes are named "id")
or change the context using an xsl:for-each:
<xsl:message>
<xsl:for-each select="$docnode">
<xsl:value-of select="id($from)"/>
</xsl:for-each>
</xsl:message>
This makes it a bit inconvenient to use id() or key() to
grab elements from another document, but so are the rules...
J.Pietschmann
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list