Just put it through a streaming XSLT 3.0 processor and it should work just
fine.
Note, even a non-streaming XSLT processor, if it has a half-way decent
optimizer, should stop processing after the 10th record. The difference with a
streaming processor is that it will stop the XML parser reading the rest of
the file and building the tree in memory.
Michael Kay
Saxonica
> On 19 Jul 2023, at 16:16, Roger L Costello costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Folks,
>
> I have an XML file containing over 2 million <record> elements. I want to
obtain the first 10 <record> elements.
>
> Here's how I did it:
>
> <xsl:for-each select="/Document/record[position() le 10]">
> <xsl:sequence select="."/>
> </xsl:for-each>
>
> I ran it and it took a long time to complete. I am guessing that the XSLT
processor is iterating over all 2 million <record> elements. Yes? How to
write the XSLT code so that the XSLT processor stops iterating upon processing
the first 10 <record> elements?
>
> /Roger
|