## net.sf.saxon.xpath
Class StandaloneContext

    java.lang.Object
      net.sf.saxon.xpath.StandaloneContext

All Implemented Interfaces:
  NamespaceResolver, StaticContext

public class StandaloneContext
extends java.lang.Object
implements StaticContext, NamespaceResolver

A StandaloneContext provides a context for parsing an XPath expression in a context other than a stylesheet. In particular, it is used to support the JAXP 1.3 XPath API. This API does not actually expose the StaticContext object directly; rather, the static context (namespaces, variables, and functions) is manipulated through the XPath object, implemented in Saxon by the `XPathEvaluator`

Constructor Summary
`StandaloneContext()` Create a StandaloneContext using the default Configuration and NamePool
`StandaloneContext(Configuration config)` Create a StandaloneContext using a specific NamePool
`StandaloneContext(NodeInfo node)` Create a StandaloneContext using a specific Node.

Method Summary
`VariableDeclaration` `bindVariable(int fingerprint)` Bind a variable used in an XPath Expression to the XSLVariable element in which it is declared.
`void` `clearAllNamespaces()` Clear all the declared namespaces, including the standard ones (xml, xslt, saxon).
`void` `clearNamespaces()` Clear all the declared namespaces, except for the standard ones (xml, xslt, saxon, xdt).
`void` `declareCollation(java.lang.String name, java.util.Comparator comparator, boolean isDefault)` Declare a named collation
`void` `declareNamespace(java.lang.String prefix, java.lang.String uri)` Declare a namespace whose prefix can be used in expressions.
`Variable` `declareVariable(java.lang.String qname, java.lang.Object initialValue)` Declare a variable.
`java.lang.String` `getBaseURI()` Get the Base URI of the stylesheet element, for resolving any relative URI's used in the expression.
`java.util.Comparator` `getCollation(java.lang.String name)` Get a named collation.
`Configuration` `getConfiguration()` Get the system configuration
`java.lang.String` `getDefaultCollationName()` Get the name of the default collation.
`short` `getDefaultElementNamespace()` Get the default XPath namespace, as a namespace code that can be looked up in the NamePool
`java.lang.String` `getDefaultFunctionNamespace()` Get the default function namespace
`FunctionLibrary` `getFunctionLibrary()` Get the function library containing all the in-scope functions available in this static context
`int` `getLineNumber()` Get the line number of the expression within that container.
`LocationMap` `getLocationMap()` Get the location map
`NamePool` `getNamePool()` Get the NamePool used for compiling expressions
`javax.xml.namespace.NamespaceContext` `getNamespaceContext()` Get the NamespaceContext that was set using `setNamespaceContext(javax.xml.namespace.NamespaceContext)`
`NamespaceResolver` `getNamespaceResolver()` Get a namespace resolver to resolve the namespaces declared in this static context.
`SlotManager` `getStackFrameMap()` Get the stack frame map containing the slot number allocations for the variables declared in this static context
`java.lang.String` `getSystemId()` Get the system ID of the container of the expression.
`java.lang.String` `getURIForPrefix(java.lang.String prefix)` Get the URI for a prefix, using the declared namespaces as the context for namespace resolution.
`java.lang.String` `getURIForPrefix(java.lang.String prefix, boolean useDefault)` Get the namespace URI corresponding to a given prefix.
`javax.xml.xpath.XPathFunctionResolver` `getXPathFunctionResolver()`
`javax.xml.xpath.XPathVariableResolver` `getXPathVariableResolver()` Get the XPathVariableResolver
`boolean` `isImportedSchema(java.lang.String namespace)` Determine whether a Schema for a given target namespace has been imported.
`boolean` `isInBackwardsCompatibleMode()` Determine whether Backwards Compatible Mode is used
`void` `issueWarning(java.lang.String s, javax.xml.transform.SourceLocator locator)` Issue a compile-time warning.
`java.util.Iterator` `iteratePrefixes()` Get an iterator over all the prefixes declared in this namespace context.
`void` `setBackwardsCompatibilityMode(boolean backwardsCompatible)` Set XPath 1.0 backwards compatibility mode
`void` `setBaseURI(java.lang.String baseURI)` Set the base URI in the static context
`void` `setDefaultElementNamespace(java.lang.String uri)` Set the default namespace for element and type names
`void` `setDefaultFunctionNamespace(java.lang.String uri)` Set the default function namespace
`void` `setFunctionLibrary(FunctionLibrary lib)` Set the function library to be used
`void` `setLocationMap(LocationMap locationMap)`
`void` `setNamespaceContext(javax.xml.namespace.NamespaceContext context)` Supply the NamespaceContext used to resolve namespaces.
`void` `setNamespaces(NodeInfo node)` Set all the declared namespaces to be the namespaces that are in-scope for a given node.
`void` `setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver xPathFunctionResolver)`
`void` `setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver resolver)` Set an XPathVariableResolver.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### StandaloneContext

    public StandaloneContext()

  Create a StandaloneContext using the default Configuration and NamePool

### StandaloneContext

    public StandaloneContext(Configuration config)

  Create a StandaloneContext using a specific NamePool

### StandaloneContext

    public StandaloneContext(NodeInfo node)

  Create a StandaloneContext using a specific Node. This node is used to initialize the NamePool and also to establish the initial set of in-scope namespaces

Method Detail

### getConfiguration

    public Configuration getConfiguration()

  Get the system configuration

  Specified by:
    `getConfiguration` in interface `StaticContext`

### getLocationMap

    public LocationMap getLocationMap()

  Description copied from interface: `StaticContext`
  Get the location map

  Specified by:
    `getLocationMap` in interface `StaticContext`

### setLocationMap

    public void setLocationMap(LocationMap locationMap)

### declareNamespace

    public void declareNamespace(java.lang.String prefix,
                                 java.lang.String uri)

  Declare a namespace whose prefix can be used in expressions. Namespaces may either be pre-declared (the traditional Saxon interface), or they may be resolved on demand using a supplied NamespaceContext. When a prefix has to be resolved, the parser looks first in the pre-declared namespaces, then in the supplied NamespaceContext object.

  Parameters:
    `prefix` - The namespace prefix. Must not be null. Must not be the empty string ("") - unqualified names in an XPath expression always refer to the null namespace.
    `uri` - The namespace URI. Must not be null.

### setNamespaceContext

    public void setNamespaceContext(javax.xml.namespace.NamespaceContext context)

  Supply the NamespaceContext used to resolve namespaces. This supplements namespaces that have been explicitly declared using `declareNamespace(java.lang.String, java.lang.String)` or that have been implicitly declared using `setNamespaces(net.sf.saxon.om.NodeInfo)`

### getNamespaceContext

    public javax.xml.namespace.NamespaceContext getNamespaceContext()

  Get the NamespaceContext that was set using `setNamespaceContext(javax.xml.namespace.NamespaceContext)`

### clearNamespaces

    public void clearNamespaces()

  Clear all the declared namespaces, except for the standard ones (xml, xslt, saxon, xdt). This doesn't clear the namespace context set using `setNamespaceContext(javax.xml.namespace.NamespaceContext)`

### clearAllNamespaces

    public void clearAllNamespaces()

  Clear all the declared namespaces, including the standard ones (xml, xslt, saxon). Leave only the XML namespace and the default namespace (xmlns="")

### setNamespaces

    public void setNamespaces(NodeInfo node)

  Set all the declared namespaces to be the namespaces that are in-scope for a given node. In addition, the standard namespaces (xml, xslt, saxon) are declared.

  Parameters:
    `node` - The node whose in-scope namespaces are to be used as the context namespaces. Note that this will have no effect unless this node is an element.

### setBaseURI

    public void setBaseURI(java.lang.String baseURI)

  Set the base URI in the static context

### declareCollation

    public void declareCollation(java.lang.String name,
                                 java.util.Comparator comparator,
                                 boolean isDefault)

  Declare a named collation

  Parameters:
    `name` - The name of the collation (technically, a URI)
    `comparator` - The Java Comparator used to implement the collating sequence
    `isDefault` - True if this is to be used as the default collation

### getStackFrameMap

    public SlotManager getStackFrameMap()

  Get the stack frame map containing the slot number allocations for the variables declared in this static context

### declareVariable

    public Variable declareVariable(java.lang.String qname,
                                    java.lang.Object initialValue)
                             throws XPathException

  Declare a variable. A variable may be declared before an expression referring to it is compiled. Alternatively, a JAXP XPathVariableResolver may be supplied to perform the resolution. A variable that has been explicitly declared is used in preference.

  Parameters:
    `qname` - Lexical QName identifying the variable. The namespace prefix, if any, must have been declared before this method is called, or must be resolvable using the namespace context.
    `initialValue` - The initial value of the variable. A Java object that can be converted to an XPath value.
  Throws:
    `XPathException`

### setXPathVariableResolver

    public void setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver resolver)

  Set an XPathVariableResolver. This is used to resolve variable references if no variable has been explicitly declared.

  Parameters:
    `resolver` - A JAXP 1.3 XPathVariableResolver

### getXPathVariableResolver

    public javax.xml.xpath.XPathVariableResolver getXPathVariableResolver()

  Get the XPathVariableResolver

### setXPathFunctionResolver

    public void setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver xPathFunctionResolver)

### getXPathFunctionResolver

    public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver()

### getNamePool

    public NamePool getNamePool()

  Get the NamePool used for compiling expressions

  Specified by:
    `getNamePool` in interface `StaticContext`

### issueWarning

    public void issueWarning(java.lang.String s,
                             javax.xml.transform.SourceLocator locator)

  Issue a compile-time warning. This method is used during XPath expression compilation to output warning conditions. The default implementation writes the message to System.err. To change the destination of messages, create a subclass of StandaloneContext that overrides this method.

  Specified by:
    `issueWarning` in interface `StaticContext`

### getSystemId

    public java.lang.String getSystemId()

  Get the system ID of the container of the expression. Used to construct error messages.

  Specified by:
    `getSystemId` in interface `StaticContext`
  Returns:
    "" always

### getBaseURI

    public java.lang.String getBaseURI()

  Get the Base URI of the stylesheet element, for resolving any relative URI's used in the expression. Used by the document() function, resolve-uri(), etc.

  Specified by:
    `getBaseURI` in interface `StaticContext`
  Returns:
    "" if no base URI has been set

### getLineNumber

    public int getLineNumber()

  Get the line number of the expression within that container. Used to construct error messages.

  Specified by:
    `getLineNumber` in interface `StaticContext`
  Returns:
    -1 always

### getURIForPrefix

    public java.lang.String getURIForPrefix(java.lang.String prefix)
                                     throws XPathException

  Get the URI for a prefix, using the declared namespaces as the context for namespace resolution. The default namespace is NOT used when the prefix is empty. This method is provided for use by the XPath parser.

  Specified by:
    `getURIForPrefix` in interface `StaticContext`
  Parameters:
    `prefix` - The prefix
  Throws:
    `XPathException` - if the prefix is not declared

### getNamespaceResolver

    public NamespaceResolver getNamespaceResolver()

  Description copied from interface: `StaticContext`
  Get a namespace resolver to resolve the namespaces declared in this static context.

  Specified by:
    `getNamespaceResolver` in interface `StaticContext`
  Returns:
    a namespace resolver.

### getURIForPrefix

    public java.lang.String getURIForPrefix(java.lang.String prefix,
                                            boolean useDefault)

  Get the namespace URI corresponding to a given prefix. Return null if the prefix is not in scope. This method first searches any namespaces declared using `declareNamespace(String, String)`, and then searches any namespace context supplied using `setNamespaceContext(javax.xml.namespace.NamespaceContext)`.

  Specified by:
    `getURIForPrefix` in interface `NamespaceResolver`
  Parameters:
    `prefix` - the namespace prefix
    `useDefault` - true if the default namespace is to be used when the prefix is ""
  Returns:
    the uri for the namespace, or null if the prefix is not in scope. Return "" if the prefix maps to the null namespace.

### iteratePrefixes

    public java.util.Iterator iteratePrefixes()

  Get an iterator over all the prefixes declared in this namespace context. This will include the default namespace (prefix="") and the XML namespace where appropriate. The iterator only covers namespaces explicitly declared using `declareNamespace(String, String)`; it does not include namespaces declared using `setNamespaceContext(javax.xml.namespace.NamespaceContext)`, because the JAXP `NamespaceContext` class provides no way to discover all the namespaces available.

  Specified by:
    `iteratePrefixes` in interface `NamespaceResolver`

### bindVariable

    public VariableDeclaration bindVariable(int fingerprint)
                                     throws StaticError

  Bind a variable used in an XPath Expression to the XSLVariable element in which it is declared. This method is provided for use by the XPath parser, and it should not be called by the user of the API, or overridden, unless variables are to be declared using a mechanism other than the declareVariable method of this class.

  If the variable has been explicitly declared using `declareVariable(String, Object)`, that value is used; otherwise if a variable resolved has been supplied using `setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver)` then that is used.

  Specified by:
    `bindVariable` in interface `StaticContext`
  Throws:
    `StaticError` - If no variable with the given name is found, or if the value supplied for the variable cannot be converted to an XPath value.

### getFunctionLibrary

    public FunctionLibrary getFunctionLibrary()

  Get the function library containing all the in-scope functions available in this static context

  Specified by:
    `getFunctionLibrary` in interface `StaticContext`

### setFunctionLibrary

    public void setFunctionLibrary(FunctionLibrary lib)

  Set the function library to be used

### getCollation

    public java.util.Comparator getCollation(java.lang.String name)

  Get a named collation.

  Specified by:
    `getCollation` in interface `StaticContext`
  Parameters:
    `name` - The name of the required collation. Supply null to get the default collation.
  Returns:
    the collation identified by the given name, as set previously using declareCollation. Return null if no collation with this name is found.

### getDefaultCollationName

    public java.lang.String getDefaultCollationName()

  Get the name of the default collation.

  Specified by:
    `getDefaultCollationName` in interface `StaticContext`
  Returns:
    the name of the default collation; or the name of the codepoint collation if no default collation has been defined

### setDefaultElementNamespace

    public void setDefaultElementNamespace(java.lang.String uri)

  Set the default namespace for element and type names

### getDefaultElementNamespace

    public short getDefaultElementNamespace()

  Get the default XPath namespace, as a namespace code that can be looked up in the NamePool

  Specified by:
    `getDefaultElementNamespace` in interface `StaticContext`

### setDefaultFunctionNamespace

    public void setDefaultFunctionNamespace(java.lang.String uri)

  Set the default function namespace

### getDefaultFunctionNamespace

    public java.lang.String getDefaultFunctionNamespace()

  Get the default function namespace

  Specified by:
    `getDefaultFunctionNamespace` in interface `StaticContext`

### setBackwardsCompatibilityMode

    public void setBackwardsCompatibilityMode(boolean backwardsCompatible)

  Set XPath 1.0 backwards compatibility mode

  Parameters:
    `backwardsCompatible` - if true, expressions will be evaluated with XPath 1.0 compatibility mode set to true.

### isInBackwardsCompatibleMode

    public boolean isInBackwardsCompatibleMode()

  Determine whether Backwards Compatible Mode is used

  Specified by:
    `isInBackwardsCompatibleMode` in interface `StaticContext`
  Returns:
    false; XPath 1.0 compatibility mode is not supported in the standalone XPath API

### isImportedSchema

    public boolean isImportedSchema(java.lang.String namespace)

  Determine whether a Schema for a given target namespace has been imported. Note that the in-scope element declarations, attribute declarations and schema types are the types registered with the (schema-aware) configuration, provided that their namespace URI is registered in the static context as being an imported schema namespace. (A consequence of this is that within a Configuration, there can only be one schema for any given namespace, including the null namespace).

  Specified by:
    `isImportedSchema` in interface `StaticContext`
  Returns:
    This implementation always returns false: the standalone XPath API does not support schema-aware processing.