[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Adjacent grouping?

Subject: Re: Adjacent grouping?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 17 Nov 2017 18:00:37 -0000
Re:  Adjacent grouping?
Sorry, I misread the requirement. You want a new group if the value is 30+
greater than the FIRST value in the previous group, whereas I thought you were
comparing with the LAST value in the previous group.

No, I don't think this can be done with grouping: it needs full recursion (or
in XSLT 3.0, xsl:iterate).

Using xsl:iterate it would be

<xsl:iterate select="Content">
  <xsl:param name="previous" as="xs:integer?" select="()"/>
 <xsl:choose>
    <xsl:when test="empty($previous) or xs:integer(@value) gt @previous+30">
      <Content value="{@value}"/>
      <xsl:next-iteration>
         <xsl:with-param name="previous" select="@value"/>
     </xsl:next-iteration>
    </xsl:when>
   <xsl:otherwise>
      <Content value=""/>
  </xsl:otherwise>
</xsl:choose>
</xsl:iterate>

Michael Kay
Saxonica

> On 17 Nov 2017, at 17:51, Michael Kay mike@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> You want to start a new group if @value is greater than
preceding-sibling::Content/@value.
>
> So you can use
>
> <xsl:for-each-group select="Content" group-starting-with="*[number(@value)
gt number(../preceding-sibling::*/@value) + 30]">
>    ...
> </xsl:for-each-group>
>
> Michael Kay
> Saxonica
>
>> On 17 Nov 2017, at 17:43, rus tle profrustyleafiii@xxxxxxxxxxx
<mailto:profrustyleafiii@xxxxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx
<mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
>>
>> Hello All,
>>
>> I am trying to remove attribute values in a list based on a frequency
parameter.
>>
>> Is this possible in XSLT 2? I cannot see how to tackle the problem without
being able to store the last attribute value added to the result tree so that
I can compare against it for the following attribute values? I am told that
there is no way to query the result tree and so I am at a loss as to whether
XSLT can actually do what I require?
>>
>> To illustrate, please see the example below.
>>
>> The frequency parameter is 30. I would like to remove all values that are
"within 30" of the last value used. If the first value is 0 then I would like
to remove all the following attribute values that are less than 30 plus the
last value added to the result tree (in this case 0). The only way I can think
to do this is by somehow caching the last value that was copied to the result
tree so I can compare against it with the next value.
>>
>> It was suggested to me that adjacent grouping my work? I am a recent
beginner to XSLT and would love to learn more about how it might help me
achieve the result I am looking for?
>>
>> Thanks,
>>
>> Rusty
>>
>> Before:
>>
>> <p frequency=b30">
>>     <Content value="0"/>
>>     <Content value=b10b/>
>>     <Content value=b15b/>
>>     <Content value=b18b/>
>>     <Content value=b22b/>
>>     <Content value=b26b/>
>>     <Content value=b34b/>
>>     <Content value=b37b/>
>>     <Content value=b56b/>
>>     <Content value=b99b/>
>>     <Content value=b101b/>
>>     <Content value="115"/>
>>     <Content value="118"/>
>>     <Content value="129"/>
>> </p>
>> After:
>>
>> <p frequency="30">
>>     <Content value="00"/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value="34"/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value="99"/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value=""/>
>>     <Content value="129"/>
>> </p>
>>
>> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
>> EasyUnsubscribe <x-msg://19/-list/293509> (by email
<applewebdata://EAB4634C-8806-4E4F-85C4-8658F324B332>)
>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <-list/293509> (by email <>)

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.