Subject: RE: Trouble selecting appropriate node-set depending on parameters
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Tue, 28 Sep 2004 07:41:47 +0300
|
Hi,
> I'm writing a small xsl stylesheet to select a subset of
> nodes from an xml
> document. The important part looks like this...
>
> <xsl:param name="PRODUCTGROUP" />
> <xsl:param name="PLATFORM" />
> <xsl:param name="ITEM" />
>
> <xsl:for-each select="/store/productGroup[@type =
> $PRODUCTGROUP]/platform[@type=$PLATFORM]/item[@type=$ITEM]">
>
> etc..
>
>
> What happens is I pass in the values of productgroup,
> platform and item with
> php. I can then retrieve a list of all items the attributes
> of which match
> the criteria. This seems to work fine, the only trouble is,
> I'd like in
> some cases to be able to choose all items, regardless of
> attributes, like
> so...
>
> <xsl:for-each select="/store/productGroup/platform/item">
>
> or any combination, like so...
>
> <xsl:for-each
> select="/store/productGroup/platform[@type=$PLATFORM]/item">
>
> I guess I'm a bit unclear how to be able to choose between multiple
> node-sets, depending on the whether or not one of the
> parameters is set.
> I've been searching for info on this most of the afternoon,
> but can't seem
> to find much.
If @type always has a non-zero-length value, then
<xsl:for-each select="/store/productGroup[@type=$PRODUCTGROUP or
$PRODUCTGROUP=""]/platform[@type=$PLATFORM or $PLATFORM=""]/item[@type=$ITEM
or $ITEM=""]">
would work.
Cheers,
Jarno - Nick Sentience: March 2003 Mix
|