From BaseX Documentation
This XQuery Module contains functions for handling streamable items.
In contrast to standard XQuery items, a streamable item contains only a reference to the actual data. The data itself will be retrieved if it is requested by an expression, or if the item is to be serialized. Hence, a streamable item only uses a few bytes, and no additional memory is occupied during serialization.
The following BaseX functions return streamable items:
Some functions are capable of consuming items in a streamable fashion: data will never be cached, but instead passed on to another target (file, the calling expression, etc.). The following streaming functions are currently available:
The XQuery expression below serves as an example on how large files can be downloaded and written to a file with constant memory consumption:
All functions in this module are assigned to the
http://basex.org/modules/stream namespace, which is statically bound to the
All errors are assigned to the
http://basex.org/errors namespace, which is statically bound to the
Updated with Version 8.0: Extended to sequences.
|Summary||Returns a materialized instance of the specified |
Materialization is advisable if a value is to be processed more than once, and is expensive to retrieve. It is get mandatory whenever a value is invalidated before it is requested (see the example below).
|Example||In the following example, a file will be deleted before its content is returned. To avoid a "file not found" error, the content will first be materialized:
let $file := 'data.txt' let $data := stream:materialize(file:read-text($file)) return (file:delete($file), $data)
|Summary||Checks whether the specified |
- Version 8.0
- Update: stream:materialize extended to sequences.
This module was introduced with Version 7.7.