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

Re: question on EXSLT data partitioning

Subject: Re: question on EXSLT data partitioning
From: Erwan AMOUREUX <erwan.amoureux@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 20 Oct 2010 15:19:15 +0200
Re:  question on EXSLT data partitioning
Fisrt sorry for my english, litlle out of practice

Second, for this data volume , it would be nice to use key, isn't it ?
You cannot use a variable for modulo but that accelerate processing

<xsl:key name="part" match="Entity" use="(position() - (position() mod 1000))
div 1000 ">
[...]
<xsl:for-each select="Entity[position()  mod 1000 = 0]">
      <arguments>
        <xsl:apply-templates select ="key('part',position() div 1000) ">
</arguments>
    </xsl:for-each>

[...]

I can't test (and make always error with modulo and other...) but that's the
scheme

Erwan Amoureux
 ----- Message d'origine -----
De : "Hermann Stamm-Wilbrandt" <STAMMW@xxxxxxxxxx>
@ : <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Envoyi : mercredi 20 octobre 2010 14:56
Objet : Re:  question on EXSLT data partitioning


>> It should be possible without recursion
>>    <xsl:for-each select="Entity[(position() - 1) mod $N = 0]">
>>      <arguments>
>>        <xsl:apply-templates select=". |
>> following-sibling::Entity[position() &lt; $n"/>
>>      </arguments>
>>    </xsl:for-each>
>
> Thanks Martin, that is perfect
>
>> But I am not sure whether that is the approach you don't want.
>
> Yes, that is what I wanted.
>
> Mit besten Gruessen / Best wishes,
>
> Hermann Stamm-Wilbrandt
> Developer, XML Compiler, L3
> Fixpack team lead
> WebSphere DataPower SOA Appliances
> ----------------------------------------------------------------------
> IBM Deutschland Research & Development GmbH
> Vorsitzender des Aufsichtsrats: Martin Jetter
> Geschaeftsfuehrung: Dirk Wittkopp
> Sitz der Gesellschaft: Boeblingen
> Registergericht: Amtsgericht Stuttgart, HRB 243294
>
>
>
> From:       Martin Honnen <Martin.Honnen@xxxxxx>
> To:         xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date:       10/19/2010 08:09 PM
> Subject:    Re:  question on EXSLT data partitioning
>
>
>
> Hermann Stamm-Wilbrandt wrote:
>
>> yesterday I was asked by a colleague on data partitioning.
>> He wanted to partition 100000s of Entities in blocks of 1000
>> for sending a single Database update for 1000 entities.
>>
>> Below is the simplified input, partition size is N=3 and the
>> requested output. Below that is the solution I provided.
>>
>> Here are my questions:
>> * can this task be done without recursion in EXSLT?
>>   [the colleage did not like the idea of doing the partitioning with
>>    just XPath (1<=position()<=1000, 1001<=position()<=2000, ...)
>>    because of the 6 digit number of entities]
>
> It should be possible without recursion
>   <xsl:for-each select="Entity[(position() - 1) mod $N = 0]">
>     <arguments>
>       <xsl:apply-templates select=". |
> following-sibling::Entity[position() &lt; $n"/>
>     </arguments>
>   </xsl:for-each>
> But I am not sure whether that is the approach you don't want.
>
>
> --
>
>             Martin Honnen
>             http://msmvps.com/blogs/martin_honnen/

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.