Defining a collection using a collection catalog
If the collection URI identifies a file, Saxon treats this as a collection catalog. This is a file in XML format that lists the documents comprising the collection. Here is an example of such a catalog file:
<collection stable="true"> <doc href="dir/contents.json"/> <doc href="dir/chap1.xml"/> <doc href="dir/chap2.xml"/> <doc href="dir/chap3.xml"/> <doc href="dir/chap4.xml"/> <doc href="dir/index.json"/> </collection>The stable
attribute indicates whether the collection is stable or not. The
default value is true
. If a collection is stable, then the URIs listed in the
doc
elements are treated like URIs passed to the doc()
function.
Each URI is first looked up in the document pool to see if it is already loaded; if it is,
then the corresponding value is returned (a document node in the case of XML resources).
Otherwise the URI is passed to the registered
URIResolver
, and the resulting document is added to the document pool. The
effect of this process is firstly, that two calls on the collection()
function
passing the same collection URI will return the same nodes each time, and secondly, that these
results are consistent with the results of the doc()
function: if the
document-uri()
of a node returned by the collection()
function is
passed to the doc()
function, the original node will be returned. If
stable="false"
is specified, however, the URI is dereferenced directly, and the
document is not added to the document pool, which means that a subsequent retrieval of the
same document will not return the same node.