[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: How to efficiently obtain the first 10 records of
On 19.07.2023 18:09, David Carlisle d.p.carlisle@xxxxxxxxx wrote: > > > On Wed, 19 Jul 2023 at 16:15, 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]"> > B B <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?B How to write the XSLT code so that the XSLT > processor stops iterating upon processing the first 10 <record> > elements? > > /Roger > > > > You may have access to a streaming processor to avoid parsing the > whole file, but an alternative is to invoke your inner DPH If you don't have access to Saxon EE then instead of invoking your DPH you can use STX https://sourceforge.net/projects/joost/: java -jar joost.jar -o results.xml records.xml transform.stx <stx:transform version="1.0" B xmlns:stx="http://stx.sourceforge.net/2002/ns"> <stx:template match="Document"> B <stx:process-children/> </stx:template> <stx:template match="Document/record[1]"> B <stx:process-self group="copy"/> B <stx:process-siblings group="copy" until="record[11]"/> </stx:template> <stx:group name="copy"> B <stx:template match="node()"> B B B <stx:copy> B B B B B <stx:process-children/> B B B </stx:copy> B </stx:template> </stx:group> </stx:transform>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|