xsl-list
[Top] [All Lists]

RE: [xsl] Getting node w/ lowest attribute value

2008-08-17 08:35:56
I'll try it, thanks. 

Chris Bordeman

-----Original Message-----
From: Mukul Gandhi [mailto:gandhi(_dot_)mukul(_at_)gmail(_dot_)com] 
Sent: Sunday, August 17, 2008 2:51 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Getting node w/ lowest attribute value

I think, in this case it will become a grouping and sorting problem.
Please try this stylesheet,

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                       version="2.0">

<xsl:output method="xml" indent="yes" />

<xsl:template match="addresses">
  <result>
    <xsl:for-each-group select="address[(_at_)IsActive = 'true']"
group-by="@NumOrder">
      <xsl:sort select="current-grouping-key()" order="ascending"
data-type="number" />
      <xsl:copy-of select="." />
    </xsl:for-each-group>
  </result>
</xsl:template>

</xsl:stylesheet>

This will output all the 'address' elements (only 1st in the group) as
required. You can later select the nth one (or the 2nd) if needed.

On Sat, Aug 16, 2008 at 11:12 PM, Bordeman, Chris
<Chris(_dot_)Bordeman(_at_)wolterskluwer(_dot_)com> wrote:
Cool, thanks Mukul, now how do I get the 2nd lowest?

-----Original Message-----
From: Mukul Gandhi [mailto:gandhi(_dot_)mukul(_at_)gmail(_dot_)com]
Sent: Friday, August 15, 2008 1:10 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Getting node w/ lowest attribute value

Please try this,

addresses/address[(@IsActive = 'true') and (@NumOrder = 
min(../address[(_at_)IsActive = 'true']/@NumOrder))][1]

This uses the XPath 2.0 function, 'min'.

On Fri, Aug 15, 2008 at 11:22 PM, Bordeman, Chris 
<Chris(_dot_)Bordeman(_at_)wolterskluwer(_dot_)com> wrote:
Hi all.

I have some nodes like:

<addresses>
   <address IsActive="false" NumOrder=1>[...]</address>
   <address IsActive="true" NumOrder=3>[...]</address>
   <address IsActive="true" NumOrder=2>[...]</address> </addresses>

How do I get the first address node where IsActive=true AND has the 
lowest value for the NumOrder attribute?

In the above case I'd want the 3rd address node (IsActive="true" and 
NumOrder=2).

Any assistance would be appreciated.  Thanks.


--
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
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>
--~--


--~------------------------------------------------------------------
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>