net.sf.saxon.functions

## Class DocumentFn

- java.lang.Object
- - net.sf.saxon.expr.Expression
  - - net.sf.saxon.expr.FunctionCall
    - - net.sf.saxon.functions.SystemFunctionCall
      - - net.sf.saxon.functions.DocumentFn

- All Implemented Interfaces:
    Serializable, SourceLocator, LocationProvider, SaxonLocator, Callable, InstructionInfo, Locator

      public class DocumentFn
      extends SystemFunctionCall
      implements Callable

  Implements the XSLT document() function
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.functions.SystemFunctionCall

      `operation`

    - ### Fields inherited from class net.sf.saxon.expr.FunctionCall

      `argument`

    - ### Fields inherited from class net.sf.saxon.expr.Expression

      `EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, INHERITED_CONTEXT, INSPECTION_CONTEXT, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, NAVIGATION_CONTEXT, NODE_VALUE_CONTEXT, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, W3C_CONSUMING, W3C_FREE_RANGING, W3C_GROUP_CONSUMING, W3C_MOTIONLESS, WATCH_METHOD`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DocumentFn()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `PathMap.PathMapNodeSet` | `addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)` Add a representation of this expression to a PathMap.
    `Sequence` | `call(XPathContext context, Sequence[] arguments)` Evaluate the expression
    `void` | `checkArguments(ExpressionVisitor visitor)` Method called during static type checking
    `int` | `computeCardinality()` Determine the static cardinality
    `static DocumentURI` | `computeDocumentKey(String href, String baseURI, URIResolver resolver)` Compute a document key (an absolute URI that can be used to see if a document is already loaded)
    `protected static DocumentURI` | `computeDocumentKey(String href, String baseURI, XPathContext c)` Compute a document key
    `int` | `computeSpecialProperties()` Get the static properties of this expression (other than its type).
    `Expression` | `copy()` Copy an expression.
    `boolean` | `equals(Object o)` Determine whether two expressions are equivalent
    `String` | `getStaticBaseURI()` Get the base URI from the static context
    `SequenceIterator` | `iterate(XPathContext context)` iterate() handles evaluation of the function: it returns a sequence of Document nodes
    `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.
    `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 `FeatureKeys.PRE_EVALUATE_DOC_FUNCTION` is set.
    `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.
    `static Source` | `resolveURI(String href, String baseURI, String documentKey, Controller controller)` Call the URIResolver to resolve a URI
    `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.
    `void` | `sendDocuments(XPathContext context, Receiver out)` Copy the documents identified by this expression to a given Receiver.

    - ### Methods inherited from class net.sf.saxon.functions.SystemFunctionCall

      `addContextDocumentArgument, addDocToPathMap, bindStaticContext, equalOrNull, getContextNode, getConvertingCallable, getDefaultArgumentNode, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getImplementationMethod, getItemType, getOperation, getRequiredType, iterateSubExpressionInfo, makeSystemFunction, optimize, setDetails, useContextItemAsDefault`

    - ### Methods inherited from class net.sf.saxon.expr.FunctionCall

      `addExternalFunctionCallToPathMap, checkArgumentCount, explain, getArguments, getDisplayName, getExpressionName, getFunctionName, getNumberOfArguments, hashCode, iterateSubExpressions, promote, replaceSubExpression, setArguments, setFunctionName, simplify, simplifyArguments, toString, typeCheck`

    - ### Methods inherited from class net.sf.saxon.expr.Expression

      `adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getExpressionCompiler, getHostLanguage, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getStreamability, getStreamingAdjunct, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterateEvents, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toPattern, toStreamingPattern, typeError`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### DocumentFn

          public DocumentFn()

  - ### Method Detail

    - #### checkArguments

          public void checkArguments(ExpressionVisitor visitor)
                              throws XPathException

      Method called during static type checking
      Overrides:
        `checkArguments` in class `SystemFunctionCall`
      Parameters:
        `visitor` - the expression visitor
      Throws:
        `XPathException` - if the arguments are incorrect

    - #### computeCardinality

          public int computeCardinality()

      Determine the static cardinality
      Overrides:
        `computeCardinality` in class `SystemFunctionCall`
      Returns:
        the computed cardinality, as one of the values `StaticProperty.ALLOWS_ZERO_OR_ONE`, `StaticProperty.EXACTLY_ONE`, `StaticProperty.ALLOWS_ONE_OR_MORE`, `StaticProperty.ALLOWS_ZERO_OR_MORE`

    - #### getStaticBaseURI

          public String getStaticBaseURI()

      Get the base URI from the static context
      Returns:
        the base URI

    - #### 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.
      Overrides:
        `computeSpecialProperties` in class `SystemFunctionCall`
      Returns:
        the special properties, as a bit-significant integer

    - #### 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 `FeatureKeys.PRE_EVALUATE_DOC_FUNCTION` is set.
      Overrides:
        `preEvaluate` in class `FunctionCall`
      Parameters:
        `visitor` - an expression visitor
      Returns:
        the result of the early evaluation, or the original expression, or potentially a simplified expression

    - #### 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.
      Overrides:
        `addToPathMap` in class `Expression`
      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

    - #### copy

          public Expression copy()

      Copy an expression. This makes a deep copy.
      Overrides:
        `copy` in class `SystemFunctionCall`
      Returns:
        the copy of the original expression

    - #### equals

          public boolean equals(Object o)

      Determine whether two expressions are equivalent
      Overrides:
        `equals` in class `SystemFunctionCall`

    - #### iterate

          public SequenceIterator iterate(XPathContext context)
                                   throws XPathException

      iterate() handles evaluation of the function: it returns a sequence of Document nodes
      Overrides:
        `iterate` in class `Expression`
      Parameters:
        `context` - supplies the context for evaluation
      Returns:
        a SequenceIterator that can be used to iterate over the result of the expression
      Throws:
        `XPathException` - if any dynamic error occurs evaluating the expression

    - #### call

          public Sequence call(XPathContext context,
                      Sequence[] arguments)
                        throws XPathException

      Evaluate the expression
      Specified by:
        `call` in interface `Callable`
      Parameters:
        `context` - the dynamic evaluation context
        `arguments` - the values of the arguments, supplied as SequenceIterators
      Returns:
        the result of the evaluation, in the form of a SequenceIterator
      Throws:
        `XPathException` - if a dynamic error occurs during the evaluation of the expression

    - #### makeDoc

          public static NodeInfo makeDoc(String href,
                         String baseURI,
                         XPathContext c,
                         SourceLocator locator)
                                  throws XPathException

      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
      Throws:
        `XPathException` - if reading or parsing the document fails

    - #### resolveURI

          public static Source resolveURI(String href,
                          String baseURI,
                          String documentKey,
                          Controller controller)
                                   throws XPathException

      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`

    - #### computeDocumentKey

          protected static DocumentURI computeDocumentKey(String href,
                                       String baseURI,
                                       XPathContext c)
                                                   throws XPathException

      Compute a document key
      Throws:
        `XPathException`

    - #### computeDocumentKey

          public static DocumentURI computeDocumentKey(String href,
                                       String baseURI,
                                       URIResolver resolver)
                                                throws XPathException

      Compute a document key (an absolute URI that can be used to see if a document is already loaded)
      Parameters:
        `href` - the relative URI
        `baseURI` - the base URI
        `resolver` - the URIResolver
      Throws:
        `XPathException`

    - #### preLoadDoc

          public static NodeInfo preLoadDoc(String href,
                            String baseURI,
                            Configuration config,
                            SourceLocator locator)
                                     throws XPathException

      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
      Throws:
        `XPathException`

    - #### sendDocuments

          public void sendDocuments(XPathContext context,
                           Receiver out)
                             throws XPathException

      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
      Throws:
        `XPathException`

    - #### sendDoc

          public static void sendDoc(String href,
                     String baseURL,
                     XPathContext c,
                     SourceLocator locator,
                     Receiver out)
                              throws XPathException

      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
      Throws:
        `XPathException`

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.