Hi Christian, and thanks a lot for the pointer to fetch:xml - it seems to
do the trick! Now, a little recoding, and it should be working.

Best,
Lars

2015-03-27 10:48 GMT+01:00 Christian Grün <christian.gr...@gmail.com>:

> Hi Lars,
>
> Here is some background information for the reported behavior (sorry
> in advance if this is known to you anyway): The functional semantics
> of XQuery requires that repeated calls to fn:doc and fn:collection
> return the same documents. This can e.g. be shown by the following
> query:
>
>   doc('x.xml') is doc('x.xml')
>
> As it's difficult to guess in advance which of the opened documents
> will possibly be requested again in the same query, they are all kept
> in main-memory until query evaluation is completed.
>
> However, things are different with functions like fetch:xml [1]. You
> may need to tweak your query a little bit, because the function will
> always give you single XML documents.
>
> Does this help?
> Christian
>
> [1] http://docs.basex.org/wiki/Fetch_Module#fetch:xml
>
>
> On Fri, Mar 27, 2015 at 10:41 AM, Lars Johnsen <yoon...@gmail.com> wrote:
> > Hi all
> >
> > Here is code that gradually eats up memory, whether run in GUI or as
> > command. All it does is creating temporary collections out of folders,
> and
> > writing them to file.
> >
> > Is there a simple way to avoid this code to eat up memory? It runs out of
> > memory (set at 12GB for command, 18GB in GUI) after 300 folders or so,
> and
> > it has to process 20 000 of them.
> >
> > Best
> > Lars G Johnsen
> > Norwegian National Library
> >
> > Here is the actual code
> >
> > (: process list of folders :)
> >
> > for $collections in file:list($digibooks)
> >      let $html := $htmlfiles || substring-before($collections, "_ocr") ||
> > ".html"
> >
> >      return
> >
> >         (: code is rerun so check if files exist :)
> >
> >         if (not(file:exists($html))) then
> >         try {
> >
> >            (: create a temporary collection of the files and write
> result to
> > disk :)
> >
> >             file:write(
> >               $html,
> >               db:digibok-to-html(
> >                 collection($digibooks || $collections))
> >             )
> >
> >         } catch * {
> >             $err:code
> >         }
> >         else
> >           ()
> >
> >
>

Reply via email to