net.sf.saxon.xpath

Class StandaloneContext

public class StandaloneContext extends 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 Configuration.
StandaloneContext(NodeInfo node)
Create a StandaloneContext using a specific Node.
Method Summary
VariableReferencebindVariable(int fingerprint)
Bind a variable used in an XPath Expression to the XSLVariable element in which it is declared.
voidclearAllNamespaces()
Clear all the declared namespaces, including the standard ones (xml, xslt, saxon).
voidclearNamespaces()
Clear all the declared namespaces, except for the standard ones (xml, xslt, saxon, xdt).
voiddeclareCollation(String name, Comparator comparator, boolean isDefault)
Declare a named collation
voiddeclareNamespace(String prefix, String uri)
Declare a namespace whose prefix can be used in expressions.
VariabledeclareVariable(String qname, Object initialValue)
Declare a variable.
StringgetBaseURI()
Get the Base URI of the stylesheet element, for resolving any relative URI's used in the expression.
ComparatorgetCollation(String name)
Get a named collation.
ConfigurationgetConfiguration()
Get the system configuration
StringgetDefaultCollationName()
Get the name of the default collation.
shortgetDefaultElementNamespace()
Get the default XPath namespace, as a namespace code that can be looked up in the NamePool
StringgetDefaultFunctionNamespace()
Get the default function namespace
FunctionLibrarygetFunctionLibrary()
Get the function library containing all the in-scope functions available in this static context
SetgetImportedSchemaNamespaces()
Get the set of imported schemas
intgetLineNumber()
Get the line number of the expression within that container.
LocationMapgetLocationMap()
NamePoolgetNamePool()
Get the NamePool used for compiling expressions
NamespaceContextgetNamespaceContext()
Get the NamespaceContext that was set using
NamespaceResolvergetNamespaceResolver()
SlotManagergetStackFrameMap()
Get the stack frame map containing the slot number allocations for the variables declared in this static context
StringgetSystemId()
Get the system ID of the container of the expression.
StringgetURIForPrefix(String prefix)
Get the URI for a prefix, using the declared namespaces as the context for namespace resolution.
StringgetURIForPrefix(String prefix, boolean useDefault)
Get the namespace URI corresponding to a given prefix.
XPathFunctionResolvergetXPathFunctionResolver()
XPathVariableResolvergetXPathVariableResolver()
Get the XPathVariableResolver
voidimportSchema(Source source)
Import a schema.
booleanisAllowedBuiltInType(AtomicType type)
Determine whether a built-in type is available in this context.
booleanisImportedSchema(String namespace)
Determine whether a Schema for a given target namespace has been imported.
booleanisInBackwardsCompatibleMode()
Determine whether Backwards Compatible Mode is used
voidissueWarning(String s, SourceLocator locator)
Issue a compile-time warning.
IteratoriteratePrefixes()
Get an iterator over all the prefixes declared in this namespace context.
XPathContextmakeEarlyEvaluationContext()
Construct a dynamic context for early evaluation of constant subexpressions
voidsetBackwardsCompatibilityMode(boolean backwardsCompatible)
Set XPath 1.0 backwards compatibility mode
voidsetBaseURI(String baseURI)
Set the base URI in the static context
voidsetDefaultElementNamespace(String uri)
Set the default namespace for element and type names
voidsetDefaultFunctionNamespace(String uri)
Set the default function namespace
voidsetFunctionLibrary(FunctionLibrary lib)
Set the function library to be used
voidsetLocationMap(LocationMap locationMap)
voidsetNamespaceContext(NamespaceContext context)
Supply the NamespaceContext used to resolve namespaces.
voidsetNamespaces(NodeInfo node)
Set all the declared namespaces to be the namespaces that are in-scope for a given node.
voidsetXPathFunctionResolver(XPathFunctionResolver xPathFunctionResolver)
voidsetXPathVariableResolver(XPathVariableResolver resolver)
Set an XPathVariableResolver.

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

Parameters: config the Configuration. For schema-aware XPath expressions, this must be a SchemaAwareConfiguration.

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

bindVariable

public VariableReference bindVariable(int fingerprint)
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 StandaloneContext, that value is used; otherwise if a variable resolved has been supplied using setXPathVariableResolver then that is used.

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.

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="")

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 StandaloneContext

declareCollation

public void declareCollation(String name, 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

declareNamespace

public void declareNamespace(String prefix, 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.

declareVariable

public Variable declareVariable(String qname, Object initialValue)
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.

getBaseURI

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

Returns: "" if no base URI has been set

getCollation

public Comparator getCollation(String name)
Get a named collation.

Returns: the collation identified by the given name, as set previously using declareCollation. Return null if no collation with this name is found.

getConfiguration

public Configuration getConfiguration()
Get the system configuration

getDefaultCollationName

public String getDefaultCollationName()
Get the name of the default collation.

Returns: the name of the default collation; or the name of the codepoint collation if no default collation has been defined

getDefaultElementNamespace

public short getDefaultElementNamespace()
Get the default XPath namespace, as a namespace code that can be looked up in the NamePool

getDefaultFunctionNamespace

public String getDefaultFunctionNamespace()
Get the default function namespace

getFunctionLibrary

public FunctionLibrary getFunctionLibrary()
Get the function library containing all the in-scope functions available in this static context

getImportedSchemaNamespaces

public Set getImportedSchemaNamespaces()
Get the set of imported schemas

Returns: a Set, the set of URIs representing the names of imported schemas

getLineNumber

public int getLineNumber()
Get the line number of the expression within that container. Used to construct error messages.

Returns: -1 always

getLocationMap

public LocationMap getLocationMap()

getNamePool

public NamePool getNamePool()
Get the NamePool used for compiling expressions

getNamespaceContext

public NamespaceContext getNamespaceContext()
Get the NamespaceContext that was set using StandaloneContext

getNamespaceResolver

public NamespaceResolver getNamespaceResolver()

getStackFrameMap

public SlotManager getStackFrameMap()
Get the stack frame map containing the slot number allocations for the variables declared in this static context

getSystemId

public String getSystemId()
Get the system ID of the container of the expression. Used to construct error messages.

Returns: "" always

getURIForPrefix

public String getURIForPrefix(String prefix)
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.

Parameters: prefix The prefix

Throws: net.sf.saxon.trans.XPathException if the prefix is not declared

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. This method first searches any namespaces declared using StandaloneContext, and then searches any namespace context supplied using setNamespaceContext.

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.

getXPathFunctionResolver

public XPathFunctionResolver getXPathFunctionResolver()

getXPathVariableResolver

public XPathVariableResolver getXPathVariableResolver()
Get the XPathVariableResolver

importSchema

public void importSchema(Source source)
Import a schema. This is possible only if the schema-aware version of Saxon is being used, and if the Configuration is a SchemaAwareConfiguration. Having imported a schema, the types defined in that schema become part of the static context.

Parameters: source A Source object identifying the schema document to be loaded

Throws: net.sf.saxon.type.SchemaException if the schema contained in this document is invalid UnsupportedOperationException if the configuration is not schema-aware

isAllowedBuiltInType

public boolean isAllowedBuiltInType(AtomicType type)
Determine whether a built-in type is available in this context. This method caters for differences between host languages as to which set of types are built in.

Parameters: type the supposedly built-in type. This will always be a type in the XS or XDT namespace.

Returns: true if this type can be used in this static context

isImportedSchema

public boolean isImportedSchema(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).

Returns: This implementation always returns false: the standalone XPath API does not support schema-aware processing.

isInBackwardsCompatibleMode

public boolean isInBackwardsCompatibleMode()
Determine whether Backwards Compatible Mode is used

Returns: false; XPath 1.0 compatibility mode is not supported in the standalone XPath API

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.

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. The iterator only covers namespaces explicitly declared using StandaloneContext; it does not include namespaces declared using setNamespaceContext, because the JAXP NamespaceContext class provides no way to discover all the namespaces available.

makeEarlyEvaluationContext

public XPathContext makeEarlyEvaluationContext()
Construct a dynamic context for early evaluation of constant subexpressions

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.

setBaseURI

public void setBaseURI(String baseURI)
Set the base URI in the static context

setDefaultElementNamespace

public void setDefaultElementNamespace(String uri)
Set the default namespace for element and type names

setDefaultFunctionNamespace

public void setDefaultFunctionNamespace(String uri)
Set the default function namespace

setFunctionLibrary

public void setFunctionLibrary(FunctionLibrary lib)
Set the function library to be used

setLocationMap

public void setLocationMap(LocationMap locationMap)

setNamespaceContext

public void setNamespaceContext(NamespaceContext context)
Supply the NamespaceContext used to resolve namespaces. This supplements namespaces that have been explicitly declared using StandaloneContext or that have been implicitly declared using setNamespaces

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.

setXPathFunctionResolver

public void setXPathFunctionResolver(XPathFunctionResolver xPathFunctionResolver)

setXPathVariableResolver

public void setXPathVariableResolver(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