|
Subject: RE: [xsl] Using id() when id and idref are in 2 different files From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Mon, 13 Dec 2004 10:49:38 -0000 |
> So I have tried using document() to read the castlist into a
> variable called $cast. Now I can use <xsl:value-of
> select="$cast//@id" /> to output the required values but I
> can't get it to work with the id()function. <xsl:value-of
> select="id(@who)" /> just fails, which doesn't surprise me.
> However <xsl:value-of select="$cast//role[@id = @who]" />
> also returns nothing. Is it because it is now looking for
> @who within $cast?
Using the id() function relies on the XML getting validated against a
DTD (that specifies that attribute as type ID) - are you sure your
imported files are being validated? Even then I'm not sure it's
possible...
As an alternative to the id() function, you could use a key:
<xsl:key name="ids" match="*" use="@id"/>
and then access the values:
<xsl:value-of select="key('ids', @who)"/>
Remember to change the context nodes to the referenced XML when you want
to key into that:
<xsl:variable name="who" select="@who"/>
<xsl:for-each select="$cast">
<xsl:value-of select="key('ids',$who)"/>
</xsl:for-each>
In XSLT 2.0 this can be shortened to:
<xsl:value-of select="key('ids', @who, $cast)"/>
...which is great because you don't need the variable anymore.
cheers
andrew
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Using id() when id and id, Chris Matchett | Thread | Re: [xsl] Using id() when id and id, David Carlisle |
| RE: [xsl] Using id() when id and id, Pawson, David | Date | Re: [xsl] Using id() when id and id, David Carlisle |
| Month |