If I use BaseX (9.2.4) simply as an XQuery 3.1 processor from the command line with e.g. basex.bat -i input.xml query.xq does BaseX then first always parse the input.xml into an XDM tree, meaning if I use huge input documents that way I can run easily run out of memory? Or does that depend on the type of query or some other settings? I was wondering whether a "tumbling window" based split algorithm like declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization"; declare option output:method 'xml'; declare option output:indent 'yes'; declare variable $chunk-size as xs:integer external := 500; for tumbling window $chunk in /*/* start at $sp when $sp mod $chunk-size = 1 count $p return put(document { element { node-name(head($chunk)/..) } { $chunk } }, 'xquery-split-result-' || $p || '.xml') would run/work without memory problems for huge inputs.