Re: [xsl] How to efficiently obtain the first 10 records of a file with over 2 million records?

Subject: Re: [xsl] How to efficiently obtain the first 10 records of a file with over 2 million records?
From: "Michael Kay michaelkay90@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 19 Jul 2023 17:20:50 -0000
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

Current Thread