net.sf.saxon.xpath
Class JAXPXPathStaticContext

java.lang.Object
  extended by net.sf.saxon.sxpath.AbstractStaticContext
      extended by net.sf.saxon.xpath.JAXPXPathStaticContext
All Implemented Interfaces:
Serializable, SourceLocator, Container, StaticContext, NamespaceResolver

public class JAXPXPathStaticContext
extends AbstractStaticContext
implements StaticContext, NamespaceResolver, Container

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. The JAXP 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

See Also:
Serialized Form

Constructor Summary
JAXPXPathStaticContext(Configuration config)
          Create a StandaloneContext using a specific Configuration.
 
Method Summary
 VariableReference bindVariable(StructuredQName qName)
          Bind a variable used in an XPath Expression to the XSLVariable element in which it is declared.
 Set getImportedSchemaNamespaces()
          Get the set of imported schemas
 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
 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.
 XPathFunctionResolver getXPathFunctionResolver()
           
 XPathVariableResolver getXPathVariableResolver()
          Get the XPathVariableResolver
 void importSchema(Source source)
          Import a schema.
 boolean isImportedSchema(String namespace)
          Determine whether a Schema for a given target namespace has been imported.
 Iterator iteratePrefixes()
          Get an iterator over all the prefixes declared in this namespace context.
 void setNamespaceContext(NamespaceContext context)
          Supply the NamespaceContext used to resolve namespaces.
 void setXPathFunctionResolver(XPathFunctionResolver xPathFunctionResolver)
           
 void setXPathVariableResolver(XPathVariableResolver resolver)
          Set an XPathVariableResolver.
 
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, issueWarning, 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.expr.StaticContext
getBaseURI, getCollation, getConfiguration, getDefaultCollationName, getDefaultElementNamespace, getDefaultFunctionNamespace, getFunctionLibrary, getLineNumber, getLocationMap, getNamePool, getSystemId, isAllowedBuiltInType, isInBackwardsCompatibleMode, issueWarning, makeEarlyEvaluationContext
 
Methods inherited from interface net.sf.saxon.expr.Container
getExecutable, getHostLanguage, getLocationProvider, replaceSubExpression
 
Methods inherited from interface javax.xml.transform.SourceLocator
getColumnNumber, getLineNumber, getPublicId, getSystemId
 

Constructor Detail

JAXPXPathStaticContext

public JAXPXPathStaticContext(Configuration config)
Create a StandaloneContext using a specific Configuration.

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

setNamespaceContext

public void setNamespaceContext(NamespaceContext context)
Supply the NamespaceContext used to resolve namespaces.


getNamespaceContext

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


getStackFrameMap

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


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

getXPathVariableResolver

public XPathVariableResolver getXPathVariableResolver()
Get the XPathVariableResolver


setXPathFunctionResolver

public void setXPathFunctionResolver(XPathFunctionResolver xPathFunctionResolver)

getXPathFunctionResolver

public XPathFunctionResolver getXPathFunctionResolver()

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
Returns:
the corresponding namespace URI
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. This method 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 for elements and types 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 method is implemented only in the case where the NamespaceContext supplied using setNamespaceContext(javax.xml.namespace.NamespaceContext) is an instance of Saxon's NamespaceResolver class. In other cases the method throws an UnsupportedOperationException

Specified by:
iteratePrefixes in interface NamespaceResolver
Returns:
an iterator over all the inscope namespace prefixes, if available
Throws:
UnsupportedOperationException - if the NamespaceContext object is not a NamespaceResolver.

bindVariable

public final VariableReference bindVariable(StructuredQName qName)
                                     throws XPathException
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.

Specified by:
bindVariable in interface StaticContext
Parameters:
qName -
Returns:
a VariableReference representing the variable reference, suitably initialized to refer to the corresponding variable declaration
Throws:
XPathException - if no VariableResolver has been supplied.

importSchema

public void importSchema(Source source)
                  throws SchemaException
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:
SchemaException - if the schema contained in this document is invalid
UnsupportedOperationException - if the configuration is not schema-aware

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

Specified by:
isImportedSchema in interface StaticContext
Parameters:
namespace - the target namespace in question
Returns:
true if schema components for the given namespace have been imported into the schema-aware configuration

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


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