[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] How to stream-process non-XML text using unparsed-text-lines( ) ?


Subject: Re: [xsl] How to stream-process non-XML text using unparsed-text-lines( ) ?
From: "mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 24 Jul 2014 17:07:53 -0000

> So, what will happen for this expression:

>

> unparsed-text-lines(...)[3]
Saxon will read the first three
items, deliver the third, and read no further. With luck, it will remember
to close the file.

>



> Will referencing the 1000th line and then referencing the 10th line
work?

>

Yes. In this case you will need a variable, something
like
 
let $x := unparsed-text-lines(...)
return
($x[1000], $x[10])
Saxon implements $x using a data structure called
a MemoClosure where items from the input are read on-demand, and then
remembered. Reading $x[1000] will cause the first 1000 items to be read
and retained in memory; reading $x[10] finds that the tenth item is
already in memory. No further items from the file are requested, so none
are read. And I suspect the input file never gets closed....
Michael
Kay
Saxonica


Current Thread