Class DocumentFn

All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, CallableExpression, InstructionInfo, Locator

public class DocumentFn extends SystemFunction implements CallableExpression
Implements the XSLT document() function
See Also:
  • Constructor Details

    • DocumentFn

      public DocumentFn()
  • Method Details

    • checkArguments

      public void checkArguments(ExpressionVisitor visitor) throws XPathException
      Method called during static type checking
      Overrides:
      checkArguments in class SystemFunction
      Parameters:
      visitor - the expression visitor
      Throws:
      XPathException - if the arguments are incorrect
    • computeCardinality

      public int computeCardinality()
      Determine the static cardinality
      Overrides:
      computeCardinality in class SystemFunction
      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 SystemFunction
      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 SystemFunction
      Returns:
      the copy of the original expression
    • equals

      public boolean equals(Object o)
      Determine whether two expressions are equivalent
      Overrides:
      equals in class SystemFunction
    • 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 SequenceIterator call(SequenceIterator[] arguments, XPathContext context) throws XPathException
      Evaluate the expression
      Specified by:
      call in interface CallableExpression
      Parameters:
      arguments - the values of the arguments, supplied as SequenceIterators
      context - the dynamic evaluation context
      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
    • 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