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