|
Subject: Re: XSLT: Selecting nodes based on a group of other nodes From: "Mark Sztainbok" <sz@xxxxxxxxxxxxxx> Date: Fri, 10 Sep 1999 11:01:22 +1000 |
That's not exactly what I'm looking for. What I need to do is store the node
list into a variable so that something like the following can be done:
<xsl:choose>
<xsl:when test="/RESPONSE/FILTERED">
<!-- Set products variable to products that have corresponding
SELECTEDPRODUCT nodes -->
<!-- Insert my attempts to code here -->
</xsl:when>
<xsl:otherwise>
<!-- Set products variable to all the products -->
<xsl:variable name="products" select="/RESPONSE/PRODUCT"/>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="$products">
<!-- Process products here -->
</xsl:for-each>
Any ideas of how to set the products variable in the first case given the
description of what I want to do that I gave in my first email?
Thanks,
Mark
----- Original Message -----
From: Miloslav Nic <nicmila@xxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxx>
Sent: Thursday, September 09, 1999 4:58 PM
Subject: Re: XSLT: Selecting nodes based on a group of other nodes
> Look at http://zvon.vscht.cz/HTMLonly/XSLTutorial/Books/Book1/index.html
> example 75. It can help.
>
> Mark Sztainbok wrote:
> >
> > Is there a way to select nodes out of a document if they have a value
which
> > matches a value in another group of nodes?
> >
> > For example,
> >
> > if I have a document which looks like this:
> >
> > <RESPONSE>
> > <PRODUCT>
> > <ID>ABC</ID>
> > <NAME>Brown dog</NAME>
> > </PRODUCT>
> > <PRODUCT>
> > <ID>DEF</ID>
> > <NAME>Black cat</NAME>
> > </PRODUCT>
> > <PRODUCT>
> > <ID>GHI</ID>
> > <NAME>Yellow giraffe</NAME>
> > </PRODUCT>
> > <PRODUCT>
> > <ID>JKL</ID>
> > <NAME>Orange monkey</NAME>
> > </PRODUCT>
> > <SELECTEDPRODUCT>ABC</SELECTEDPRODUCT>
> > <SELECTEDPRODUCT>GHI</SELECTEDPRODUCT>
> > </RESPONSE>
> >
> > I would like to get a node list of the products which have an ID which
is in
> > a SELECTEDPRODUCT element i.e. products ABC and GHI (Brown dog and
Yellow
> > giraffe) and store it in a variable so I can use it later with for-each
> >
> > I have tried the following XSLT code but it doesn't work as it only gets
the
> > first product:
> > <xsl:variable name="IDS" select="/RESPONSE/SELECTEDPRODUCT"/>
> > <xsl:variable name="products" select="/RESPONSE/PRODUCT[ID = $IDS]/>
> >
> > and have also tried this, which also did not work:
> > <xsl:variable name="products"/>
> > <xsl:for-each select="RESPONSE/SELECTEDPRODUCT">
> > <xsl:variable name="product_id" select="text()"/>
> > <xsl:choose>
> > <xsl:when test="$products">
> > <xsl:variable name="products"
> > select="$products|/RESPONSE/PRODUCT[ID=$product_id])"/>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:variable name="products"
> > select="/RESPONSE/PRODUCT[ID=$product_id]"/>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:for-each>
> >
> > What is the correct way to do this?
> >
> > Thanks,
> >
> > Mark
>
> --
> ***************************************************************
> Dr. Miloslav Nic e-mail: nicmila@xxxxxxxx
> Department of Organic Chemistry TEL: +420 2 2435 5012
> ICT Prague (VSCHT Praha) +420 2 2435 4118
> FAX: +420 2 2435 4288
> ****************************************************************
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: XSLT: Selecting nodes based on , Miloslav Nic | Thread | While and for loops in XSLT, Miloslav Nic |
| RE: DOCTYPE and <xsl:preserve-space, Mike Brown | Date | Large # of XSL examples, Earl Bingham |
| Month |