xsl-list
[Top] [All Lists]

Re: [xsl] Compound filter in for-each

2009-03-24 18:39:04
Wendell Piez wrote:
At 06:03 PM 3/24/2009, Mike wrote:
> .... but if I do this:
>
> <xsl:for-each
> select="Placemark/ExtendedData/Data[(_at_)name='rdb_status' and
> value='Endangered']">
>
> I get no error, but also no data returned -even though there
> are matching values.

You haven't shown what you are doing inside the for-each - perhaps that's
where your error is.

How do you know you have now matched the values? What do you get for

count(Placemark/ExtendedData/Data[(_at_)name='rdb_status' and
        value='Endangered'])

Also, you haven't shown us the context (template match) within which the for-each is used, so we don't know if any nodes are actually selected by the path -- even if it's syntactically correct, and plausible to think it might, given what we've seen.

(That's what I meant about "knowing more about what you haven't told us" in my first response. XSLT is easy enough once things line up, but until you know how to make that happen, it'll be mysterious.)

Cheers,
Wendell
Michael/Wendell
Ah - I see what you mean. Here is the context::

   <xsl:template match="/">
Id,Taxon,Location,OldGridRef,NewGridRef,RDBStatus,LastSeen,NowDate <br/> <xsl:apply-templates />
     </xsl:template>
<xsl:template match="Folder"> <xsl:for-each select="Placemark/ExtendedData/Data[(_at_)name='rdb_status' and value='Endangered']"> <xsl:value-of select="@id" />,
           <xsl:value-of select="name" />,
<xsl:value-of select="ExtendedData/Data[(_at_)name='location_name']/value"/>, <xsl:value-of select="ExtendedData/Data[(_at_)name='grid_ref']/value"/>, <xsl:comment>The following line inserts the output of some C# code to calculate British Grid Ref from Long/Lat</xsl:comment>
           <xsl:value-of select="adh:Transform(Point/coordinates)"/>,
<xsl:value-of select="ExtendedData/Data[(_at_)name='rdb_status']/value"/>, <xsl:value-of select="ExtendedData/Data[(_at_)name='last_seen']/value"/>,
           <xsl:value-of select="adh:Date()"/>
           <br/>
       </xsl:for-each>
   </xsl:template>
This works well enough when I just do:

 <xsl:for-each select="Placemark">
i.e. with no filter

(Mysterious indeed Wendell - though I begin to get the beginnings of some insight).

Thanks both for your help - much appreciated.

Alan Hale
Aberystwyth

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>