Subject: Re: question on EXSLT data partitioning
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 19 Oct 2010 16:33:16 +0100
|
What's wrong with
<xsl:variable name="Entities" select="child::Entity"/>
<xsl:for-each select="1 to (count($Entities) idiv $PARTITION_SIZE">
<partition>
<xsl:copy-of select="subsequence($Entities, (1 + (. - 1) *
$PARTITION_SIZE), $PARTITION_SIZE)"/>
</partition>
</xsl:for-each>
Or does the mention of EXSLT mean you need a 1.0 solution?
And why exactly is a recursive solution considered unsuitable for the
task? (Is it because you need to run this on processors that don't
optimize tail calls?)
Michael Kay
Saxonica
Hello,
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]
* is the conversion of Entity to argument by apply-templates
the way to go?
| Current Thread |
|
Michael Kay - 19 Oct 2010 15:33:33 -0000 <=
|
|