Subject: Re: [xsl] question on EXSLT data partitioning From: Erwan AMOUREUX <erwan.amoureux@xxxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 20 Oct 2010 15:19:15 +0200 |
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: [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() < $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: [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() < $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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] question on EXSLT data pa, Hermann Stamm-Wilbra | Thread | Re: [xsl] question on EXSLT data pa, Martin Honnen |
Re: [xsl] question on EXSLT data pa, Hermann Stamm-Wilbra | Date | Re: [xsl] question on EXSLT data pa, Martin Honnen |
Month |