## net.sf.saxon.sxpath
Class IndependentContext

    java.lang.Object
      net.sf.saxon.sxpath.AbstractStaticContext
          net.sf.saxon.sxpath.IndependentContext

All Implemented Interfaces:
  Serializable, SourceLocator, Container, StaticContext, NamespaceResolver, XPathStaticContext

    public class IndependentContext

extends AbstractStaticContext
implements XPathStaticContext, NamespaceResolver, Serializable, Container

An IndependentContext provides a context for parsing an XPath expression appearing in a context other than a stylesheet.

This class is used in a number of places where freestanding XPath expressions occur. These include the native Saxon XPath API, the .NET XPath API, XPath expressions used in XML Schema identity constraints, and XPath expressions supplied to saxon:evaluate(). It is not used by the JAXP XPath API (though it shares code with that API through the common superclass AbstractStaticContext).

This class currently provides no mechanism for binding user-defined functions.

See Also:
  Serialized Form

Constructor Summary
`IndependentContext()`
`IndependentContext(Configuration config)` Create an IndependentContext using a specific Configuration

Method Summary
`VariableReference` `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).
`IndependentContext` `copy()` Create a copy of this IndependentContext.
`void` `declareNamespace(String prefix, String uri)` Declare a namespace whose prefix can be used in expressions
`XPathVariable` `declareVariable(QNameValue qname)` Declare a variable.
`Set` `getImportedSchemaNamespaces()` Get the set of imported schemas
`NamespaceResolver` `getNamespaceResolver()` Get a namespace resolver to resolve the namespaces declared in this static context.
`int` `getSlotNumber(QNameValue qname)` Get the slot number allocated to a particular variable
`SlotManager` `getStackFrameMap()` Get a Stack Frame Map containing definitions of all the declared variables.
`String` `getURIForPrefix(String prefix)` Get the URI for a prefix, using the declared namespaces as the context for namespace resolution.
`String` `getURIForPrefix(String prefix, boolean useDefault)` Get the namespace URI corresponding to a given prefix.
`boolean` `isImportedSchema(String namespace)` Determine whether a Schema for a given target namespace has been imported.
`void` `issueWarning(String s, SourceLocator locator)` Issue a compile-time warning.
`Iterator` `iteratePrefixes()` Get an iterator over all the prefixes declared in this namespace context.
`void` `setImportedSchemaNamespaces(Set namespaces)`
`void` `setNamespaceResolver(NamespaceResolver resolver)` Set an external namespace resolver.
`void` `setNamespaces(NodeInfo node)` Declares all the namespaces that are in-scope for a given node, removing all previous namespace declarations.

Methods inherited from class net.sf.saxon.sxpath.AbstractStaticContext

`declareCollation, getBaseURI, getCollation, getColumnNumber, getConfiguration, getDefaultCollationName, getDefaultElementNamespace, getDefaultFunctionNamespace, getExecutable, getFunctionLibrary, getHostLanguage, getLineNumber, getLocationMap, getLocationProvider, getNamePool, getPublicId, getSystemId, isAllowedBuiltInType, isInBackwardsCompatibleMode, makeEarlyEvaluationContext, replaceSubExpression, setBackwardsCompatibilityMode, setBaseURI, setDefaultElementNamespace, setDefaultFunctionNamespace, setFunctionLibrary, setLocationMap`

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

Methods inherited from interface net.sf.saxon.sxpath.XPathStaticContext
`getExecutable, setDefaultElementNamespace`

Methods inherited from interface net.sf.saxon.expr.StaticContext
`getBaseURI, getCollation, getConfiguration, getDefaultCollationName, getDefaultElementNamespace, getDefaultFunctionNamespace, getFunctionLibrary, getLineNumber, getLocationMap, getNamePool, getSystemId, isAllowedBuiltInType, isInBackwardsCompatibleMode, makeEarlyEvaluationContext`

Methods inherited from interface net.sf.saxon.expr.Container
`getHostLanguage, getLocationProvider, replaceSubExpression`

Methods inherited from interface javax.xml.transform.SourceLocator
`getColumnNumber, getLineNumber, getPublicId, getSystemId`

Constructor Detail

### IndependentContext

    public IndependentContext()

### IndependentContext

    public IndependentContext(Configuration config)

  Create an IndependentContext using a specific Configuration

Method Detail

### copy

    public IndependentContext copy()

  Create a copy of this IndependentContext. All aspects of the context are copied except for declared variables.

### declareNamespace

    public void declareNamespace(String prefix,
                                 String uri)

  Declare a namespace whose prefix can be used in expressions

  Parameters:
    `prefix` - The namespace prefix. Must not be null. Supplying "" sets the default element namespace.
    `uri` - The namespace URI. Must not be null.

### clearNamespaces

    public void clearNamespaces()

  Clear all the declared namespaces, except for the standard ones (xml, xslt, saxon, xdt). This also resets the default element namespace to the "null" namespace

### 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=""). This also resets the default element namespace to the "null" namespace.

### setNamespaces

    public void setNamespaces(NodeInfo node)

  Declares all the namespaces that are in-scope for a given node, removing all previous namespace declarations. In addition, the standard namespaces (xml, xslt, saxon) are declared. This method also sets the default element namespace to be the same as the default namespace for this node.

  Parameters:
    `node` - The node whose in-scope namespaces are to be used as the context namespaces. If the node is an attribute, text node, etc, then the namespaces of its parent element are used.

### setNamespaceResolver

    public void setNamespaceResolver(NamespaceResolver resolver)

  Set an external namespace resolver. If this is set, then all resolution of namespace prefixes is delegated to the external namespace resolver, and namespaces declared individually on this IndependentContext object are ignored.

  Specified by:
    `setNamespaceResolver` in interface `XPathStaticContext`

### declareVariable

    public XPathVariable declareVariable(QNameValue qname)

  Declare a variable. A variable must be declared before an expression referring to it is compiled. The initial value of the variable will be the empty sequence

  Specified by:
    `declareVariable` in interface `XPathStaticContext`
  Parameters:
    `qname` - The name of the variable
  Returns:
    an XPathVariable object representing information about the variable that has been declared.

### getSlotNumber

    public int getSlotNumber(QNameValue qname)

  Get the slot number allocated to a particular variable

  Returns:
    the slot number, or -1 if the variable has not been declared

### issueWarning

    public void issueWarning(String s,
                             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`
  Overrides:
    `issueWarning` in class `AbstractStaticContext`

### getURIForPrefix

    public String getURIForPrefix(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 String getURIForPrefix(String prefix,
                                  boolean useDefault)

  Get the namespace URI corresponding to a given prefix. Return null if the prefix is not in scope.

  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 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

  Specified by:
    `iteratePrefixes` in interface `NamespaceResolver`

### bindVariable

    public VariableReference 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.

  Specified by:
    `bindVariable` in interface `StaticContext`
  Parameters:
    `fingerprint` - the name of the variable
  Returns:
    a VariableReference representing the variable reference, suitably initialized to refer to the corresponding variable declaration
  Throws:
    `StaticError`

### getStackFrameMap

    public SlotManager getStackFrameMap()

  Get a Stack Frame Map containing definitions of all the declared variables. This must be a newly created object that the caller is free to modify by adding additional variables, without affecting the static context itself.

  Specified by:
    `getStackFrameMap` in interface `XPathStaticContext`
  Returns:
    a SlotManager object holding details of the allocation of variables on the stack frame.

### isImportedSchema

    public boolean isImportedSchema(String namespace)

  Description copied from interface: `StaticContext`
  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`

### getImportedSchemaNamespaces

    public Set getImportedSchemaNamespaces()

  Get the set of imported schemas

  Specified by:
    `getImportedSchemaNamespaces` in interface `StaticContext`
  Returns:
    a Set, the set of URIs representing the names of imported schemas

### setImportedSchemaNamespaces

    public void setImportedSchemaNamespaces(Set namespaces)

Copyright (C) Michael H. Kay. All rights reserved.