net.sf.saxon.functions

Class Document

public class Document extends SystemFunction

Implements the XSLT document() function
Method Summary
PathMap.PathMapNodeSetaddToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of this expression to a PathMap.
voidcheckArguments(ExpressionVisitor visitor)
intcomputeCardinality()
Determine the static cardinality
protected static StringcomputeDocumentKey(String href, String baseURI, XPathContext c)
Compute a document key
intcomputeSpecialProperties()
Get the static properties of this expression (other than its type).
Expressioncopy()
Copy an expression.
StringgetStaticBaseURI()
Get the base URI from the static context
booleanisReadOnce()
Ask whether this document has been marked as being read once only.
SequenceIteratoriterate(XPathContext context)
iterate() handles evaluation of the function: it returns a sequence of Document nodes
static NodeInfomakeDoc(String href, String baseURI, XPathContext c, SourceLocator locator)
Supporting routine to load one external document given a URI (href) and a baseURI.
ExpressionpreEvaluate(ExpressionVisitor visitor)
preEvaluate: the document() function can be evaluated at compile time if (a) the argument is a string literal, and (b) the option PRE_EVALUATE_DOC_FUNCTION is set.
static NodeInfopreLoadDoc(String href, String baseURI, Configuration config, SourceLocator locator)
Supporting routine to load one external document given a URI (href) and a baseURI.
static SourceresolveURI(String href, String baseURI, String documentKey, Controller controller)
Call the URIResolver to resolve a URI
static voidsendDoc(String href, String baseURL, XPathContext c, SourceLocator locator, Receiver out)
Supporting routine to push one external document given a URI (href) and a baseURI to a given Receiver.
voidsendDocuments(XPathContext context, Receiver out)
Copy the documents identified by this expression to a given Receiver.
voidsetReadOnce(boolean once)
Indicate that the document(s) will be read once only (or that they should be treated as if they are read once only.

Method Detail

addToPathMap

public PathMap.PathMapNodeSet addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Add a representation of this expression to a PathMap. The PathMap captures a map of the nodes visited by an expression in a source tree.

Parameters: pathMap the PathMap to which the expression should be added pathMapNodeSet the set of nodes in the path map that are affected

Returns: the pathMapNode representing the focus established by this expression, in the case where this expression is the first operand of a path expression or filter expression

checkArguments

public void checkArguments(ExpressionVisitor visitor)

computeCardinality

public int computeCardinality()
Determine the static cardinality

computeDocumentKey

protected static String computeDocumentKey(String href, String baseURI, XPathContext c)
Compute a document key

computeSpecialProperties

public int computeSpecialProperties()
Get the static properties of this expression (other than its type). The result is bit-signficant. These properties are used for optimizations. In general, if property bit is set, it is true, but if it is unset, the value is unknown.

copy

public Expression copy()
Copy an expression. This makes a deep copy.

Returns: the copy of the original expression

getStaticBaseURI

public String getStaticBaseURI()
Get the base URI from the static context

Returns: the base URI

isReadOnce

public boolean isReadOnce()
Ask whether this document has been marked as being read once only.

Returns: true if the document has been marked as being read once only

iterate

public SequenceIterator iterate(XPathContext context)
iterate() handles evaluation of the function: it returns a sequence of Document nodes

makeDoc

public static NodeInfo makeDoc(String href, String baseURI, XPathContext c, SourceLocator locator)
Supporting routine to load one external document given a URI (href) and a baseURI. This is used in the normal case when a document is loaded at run-time (that is, when a Controller is available)

Parameters: href the relative URI baseURI the base URI c the dynamic XPath context locator used to identify the location of the instruction in event of error

Returns: the root of the constructed document, or the selected element within the document if a fragment identifier was supplied

preEvaluate

public Expression preEvaluate(ExpressionVisitor visitor)
preEvaluate: the document() function can be evaluated at compile time if (a) the argument is a string literal, and (b) the option PRE_EVALUATE_DOC_FUNCTION is set.

Parameters: visitor an expression visitor

preLoadDoc

public static NodeInfo preLoadDoc(String href, String baseURI, Configuration config, SourceLocator locator)
Supporting routine to load one external document given a URI (href) and a baseURI. This is used when the document is pre-loaded at compile time.

Parameters: href the relative URI. This must not contain a fragment identifier baseURI the base URI config the Saxon configuration locator used to identify the location of the instruction in event of error. May be null.

Returns: the root of the constructed document, or the selected element within the document if a fragment identifier was supplied

resolveURI

public static Source resolveURI(String href, String baseURI, String documentKey, Controller controller)
Call the URIResolver to resolve a URI

Parameters: href the supplied relative URI, stripped of any fragment identifier baseURI the base URI documentKey the absolute URI if already available, or null otherwise controller the Saxon controller

Returns: a Source representing the document to be read

Throws: XPathException

sendDoc

public static void sendDoc(String href, String baseURL, XPathContext c, SourceLocator locator, Receiver out)
Supporting routine to push one external document given a URI (href) and a baseURI to a given Receiver. This method cannot handle fragment identifiers

Parameters: href the relative URI baseURL the base URI c the XPath dynamic context locator used to identify the lcoation of the instruction in case of error out the destination where the document is to be sent

sendDocuments

public void sendDocuments(XPathContext context, Receiver out)
Copy the documents identified by this expression to a given Receiver. This method is used only when it is known that the documents are being copied, because there is then no problem about node identity.

Parameters: context the XPath dynamic context out the destination to which the documents will be sent

setReadOnce

public void setReadOnce(boolean once)
Indicate that the document(s) will be read once only (or that they should be treated as if they are read once only. This means (a) the document will not be held in memory after all references to it go out of scope, and (b) if the query or transformation tries to read it again, it will get a new copy, with different node identities, and potentially with different content. It also means that the document is eligible for document projection.

Parameters: once true if this document is to be treated as being read once only