Subject: RE: Using Saxon 8.5 and collection() to process a directory of XML files
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 4 Aug 2005 16:23:56 +0100
|
Yes, if the collection is held in a global variable then it's likely that
all the documents will be locked down.
If it's in a local variable the situation is more complex: if Saxon can
detect that you are doing a single iteration over the contents of the
variable, then it won't actually hold the whole sequence in memory, but in
other cases it will.
Doing <for-each select="collection($in)/discard-document(.)"> or
<apply-templates select="collection($in)/discard-document(.)"> is safest.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: David Carlisle [mailto:davidc@xxxxxxxxx]
> Sent: 04 August 2005 15:57
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: Using Saxon 8.5 and collection() to
> process a directory of XML files
>
>
>
> > You can call saxon:discard-document() to make a document
> available for
> > garbage collection when there are no outstanding references to it.
>
> ah, thanks.
>
> So does that mean that one shoudn't make a global variable
>
> <xsl:variable name="collection" select="collection(...
>
> <xsl:template name="main">
> <xsl:for-each select="$collection/saxon:discard-document(.)" ...
>
>
> as that will force you to keep the document around forever in
> case I go
> $collection[66]/a/b/c at some strange point? Or can your stylesheet
> analysis detect that the variable is only used in a top level loop?
>
>
> Should I instead go
>
>
> <xsl:template name="main">
> <xsl:for-each select="collection( ...)/saxon:discard-document(.)"
>
>
>
> so that outside the loop the node is not accessible (without reparsing
> the document)
>
> David
>
> ______________________________________________________________
> __________
> This e-mail has been scanned for all viruses by Star. The
> service is powered by MessageLabs. For more information on a proactive
> anti-virus service working around the clock, around the globe, visit:
> http://www.star.net.uk
> ______________________________________________________________
> __________
|