Class JAXPXPathStaticContext

  • All Implemented Interfaces:
    StaticContext, NamespaceResolver

    public class JAXPXPathStaticContext
    extends AbstractStaticContext
    implements NamespaceResolver
    A JAXPXPathStaticContext 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
    • Constructor Detail

      • JAXPXPathStaticContext

        public JAXPXPathStaticContext​(Configuration config)
        Create a JAXPXPathStaticContext using a specific Configuration.
        Parameters:
        config - the Configuration. For schema-aware XPath expressions, this must be an EnterpriseConfiguration.
    • Method Detail

      • setNamespaceContext

        public void setNamespaceContext​(javax.xml.namespace.NamespaceContext context)
        Supply the NamespaceContext used to resolve namespaces.
        Parameters:
        context - the namespace context
      • getStackFrameMap

        public SlotManager getStackFrameMap()
        Get the stack frame map containing the slot number allocations for the variables declared in this static context
        Returns:
        the stack frame map
      • 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
        Returns:
        the XPathVariableResolver
      • setXPathFunctionResolver

        public void setXPathFunctionResolver​(javax.xml.xpath.XPathFunctionResolver xPathFunctionResolver)
      • getXPathFunctionResolver

        public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver()
      • 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 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 java.util.Iterator<java.lang.String> 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:
        java.lang.UnsupportedOperationException - if the NamespaceContext object is not a NamespaceResolver.
      • bindVariable

        public final Expression 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 - the name of the variable to be bound
        Returns:
        an expression representing the variable reference, This will often be a VariableReference, suitably initialized to refer to the corresponding variable declaration, but in general it can be any expression which returns the variable's value when evaluated.
        Throws:
        XPathException - if no VariableResolver has been supplied.
      • importSchema

        public void importSchema​(javax.xml.transform.Source source)
                          throws SchemaException
        Import a schema. This is possible only if Saxon-EE is being used, and if the Configuration is a EnterpriseConfiguration. 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
        java.lang.UnsupportedOperationException - if the configuration is not schema-aware
      • 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
        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 java.util.Set<java.lang.String> 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