xsl-list
[Top] [All Lists]

Re: [xsl] question on EXSLT data partitioning

2010-10-20 08:19:33
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(_at_)de(_dot_)ibm(_dot_)com>
À : <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Envoyé : mercredi 20 octobre 2010 14:56
Objet : Re: [xsl] 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(_dot_)Honnen(_at_)gmx(_dot_)de>
To:         xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date:       10/19/2010 08:09 PM
Subject:    Re: [xsl] 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/

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


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