This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
AW: for-each with included variable
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Subject: AW: [xsl] for-each with included variable
- From: "Machelett, Renato (FA.G+M-EP/ETK)" <fa-gm-renato dot machelett at daimlerchrysler dot com>
- Date: Thu, 19 Apr 2001 15:26:18 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
Thank you David and Mike,
David's solution didn't bring the result I expected, I'm not sure why, but
the output stays exactly the same as before. Which I find unsettling - like
always when I'm clueless.
Mike's approach won't work because I cannot use key() inside a template.
I'll try the generate-id() part once I've gotten more familiar with this
whole thing, which might take a while as far as I can tell. I'm still
struggling with the basics. :)
For now I picked another solution (found it in the FAQ, which is a good
one), that might not be overly elegant, but works. The variable now holds
the entire expression, not just a list of single literals.
IncludeMe.xsl:
<xsl:variable name="myOPTypeList" select="(.//*[@OPTypeRef='Type1'])[1] |
(.//*[@OPTypeRef='Type2'])[1] | (.//*[@OPTypeRef='Type3'])[1]"/>
DoSomeStuff.xsl:
<xsl:include href="IncludeMe.xsl"/>
<xsl:for-each select="$myOPTypeList">
<!-- do some stuff -->
</xsl:for-each>
Not exactly the way I wanted it, but at least I have a central place for
changes, and I have it when I need it - NOW. :)
Renato
> > <xsl:for-each select="(.//*[@OPTypeRef='Type1'])[1] |
> > (.//*[@OPTypeRef='Type2'])[1] | (.//*[@OPTypeRef='Type3'])[1]">
> > <!-- do some stuff -->
> > </xsl:for-each>
> >
> Someone else has pointed out your simple coding error, but how about a
> completely different approach:
>
> <xsl:key name="OKtypes"
> match="*[@OPTypeRef[.='Type1' or .='Type2' or .='Type3']]"
> use="1"/>
>
> <xsl:for-each select="key('OKtypes', 1)[1]"> ...
>
> (This only works if ".//*" in your code is searching the
> whole document: if
> not, you could change the use= in the key to be the
> generate-id() of the
> relevant ancestor node.)
>
> Mike Kay
> Software AG
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list