net.sf.saxon.trans

Class IndependentContext

public class IndependentContext extends Object implements StaticContext, NamespaceResolver, Serializable

An IndependentContext provides a context for parsing an expression or pattern appearing in a context other than a stylesheet. This class was formerly named StandaloneContext. It has forked from that class, so that StandaloneContext could be changed to meet the demands of the JAXP 1.3 XPath API.
Constructor Summary
IndependentContext()
IndependentContext(Configuration config)
Create an IndependentContext using a specific Configuration
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)
IndependentContextcopy()
Create a copy of this IndependentContext.
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(QNameValue qname)
Declare a variable.
VariabledeclareVariable(String qname)
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
NamespaceResolvergetNamespaceResolver()
intgetSlotNumber(QNameValue qname)
Get the slot number allocated to a particular variable
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.
booleanisAllowedBuiltInType(AtomicType type)
Determine whether a built-in type is available in this context.
booleanisImportedSchema(String namespace)
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
voidsetBaseURI(String baseURI)
Set the base URI in the static context
voidsetDefaultFunctionNamespace(String uri)
Set the default function namespace
voidsetFunctionLibrary(FunctionLibrary lib)
Set the function library to be used
voidsetImportedSchemaNamespaces(Set namespaces)
voidsetLocationMap(LocationMap locationMap)
voidsetNamespaceResolver(NamespaceResolver resolver)
Set an external namespace resolver.
voidsetNamespaces(NodeInfo node)
Set all the declared namespaces to be the namespaces that are in-scope for a given node.

Constructor Detail

IndependentContext

public IndependentContext()

IndependentContext

public IndependentContext(Configuration config)
Create an IndependentContext using a specific Configuration

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.

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)

copy

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

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

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

Parameters: qname The name of the variable

declareVariable

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

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

getNamespaceResolver

public NamespaceResolver getNamespaceResolver()

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

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.

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.

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)

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

makeEarlyEvaluationContext

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

setBaseURI

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

setDefaultFunctionNamespace

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

setFunctionLibrary

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

setImportedSchemaNamespaces

public void setImportedSchemaNamespaces(Set namespaces)

setLocationMap

public void setLocationMap(LocationMap locationMap)

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.

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. If the node is an attribute, text node, etc, then the namespaces of its parent element are used.