## com.icl.saxon.expr
Interface StaticContext

All Known Implementing Classes:
  ExpressionContext, StandaloneContext

public interface StaticContext

A StaticContext contains the information needed while an expression or pattern is being parsed. The information is also sometimes needed at run-time.

Method Summary
`boolean` `allowsKeyFunction()` Determine whether the key() function is permmitted in this context
`Binding` `bindVariable(int fingerprint)` Bind a variable to an object that can be used to refer to it
`boolean` `forwardsCompatibleModeIsEnabled()` Determine whether forwards-compatible mode is enabled
`java.lang.String` `getBaseURI()` Get the Base URI of the stylesheet element, for resolving any relative URI's used in the expression.
`java.lang.Class` `getExternalJavaClass(java.lang.String uri)` Get an external Java class corresponding to a given namespace prefix, if there is one.
`int` `getFingerprint(java.lang.String qname, boolean useDefault)` Get a fingerprint for a name, using this as the context for namespace resolution
`int` `getLineNumber()` Get the line number of the expression within its containing entity Returns -1 if no line number is available
`Function` `getStyleSheetFunction(int fingerprint)`
`java.lang.String` `getSystemId()` Get the System ID of the container of the expression.
`java.lang.String` `getURIForPrefix(java.lang.String prefix)` Get the URI for a prefix, using this Element as the context for namespace resolution
`java.lang.String` `getVersion()` Get the effective XSLT version in this region of the stylesheet
`boolean` `isElementAvailable(java.lang.String qname)` Determine if an extension element is available
`boolean` `isExtensionNamespace(short uriCode)` Determine whether a given URI code identifies an extension element namespace
`boolean` `isFunctionAvailable(java.lang.String qname)` Determine if a function is available
`int` `makeNameCode(java.lang.String qname, boolean useDefault)` Make a NameCode, using this Element as the context for namespace resolution
`NamespaceTest` `makeNamespaceTest(short nodeType, java.lang.String prefix)` Make a NamespaceTest, using this element as the context for namespace resolution
`NameTest` `makeNameTest(short nodeType, java.lang.String qname, boolean useDefault)` Make a NameTest, using this element as the context for namespace resolution
`StaticContext` `makeRuntimeContext(NamePool pool)` Copy the context with a different namepool

Method Detail

### makeRuntimeContext

    public StaticContext makeRuntimeContext(NamePool pool)

  Copy the context with a different namepool

### getSystemId

    public java.lang.String getSystemId()

  Get the System ID of the container of the expression. This is the containing entity (file) and is therefore useful for diagnostics. Use getBaseURI() to get the base URI, which may be different.

### getLineNumber

    public int getLineNumber()

  Get the line number of the expression within its containing entity Returns -1 if no line number is available

### getBaseURI

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

### getURIForPrefix

    public java.lang.String getURIForPrefix(java.lang.String prefix)
                                     throws XPathException

  Get the URI for a prefix, using this Element as the context for namespace resolution

  Parameters:
    `prefix` - The prefix
  Throws:
    `XPathException`

### makeNameCode

    public int makeNameCode(java.lang.String qname,
                            boolean useDefault)
                     throws XPathException

  Make a NameCode, using this Element as the context for namespace resolution

  Parameters:
    `qname` - The name as written, in the form "[prefix:]localname"
  Throws:
    `XPathException`

### getFingerprint

    public int getFingerprint(java.lang.String qname,
                              boolean useDefault)
                       throws XPathException

  Get a fingerprint for a name, using this as the context for namespace resolution

  Parameters:
    `qname` - The name as written, in the form "[prefix:]localname"
  Returns:
    -1 if the name is not already present in the name pool
  Throws:
    `XPathException`

### makeNameTest

    public NameTest makeNameTest(short nodeType,
                                 java.lang.String qname,
                                 boolean useDefault)
                          throws XPathException

  Make a NameTest, using this element as the context for namespace resolution

  Throws:
    `XPathException`

### makeNamespaceTest

    public NamespaceTest makeNamespaceTest(short nodeType,
                                           java.lang.String prefix)
                                    throws XPathException

  Make a NamespaceTest, using this element as the context for namespace resolution

  Throws:
    `XPathException`

### bindVariable

    public Binding bindVariable(int fingerprint)
                         throws XPathException

  Bind a variable to an object that can be used to refer to it

  Parameters:
    `fingerprint` - The fingerprint of the variable name
  Returns:
    a Binding object that can be used to identify it in the Bindery
  Throws:
    `XPathException` - if the variable has not been declared, or if the context does not allow the use of variables

### isExtensionNamespace

    public boolean isExtensionNamespace(short uriCode)
                                 throws XPathException

  Determine whether a given URI code identifies an extension element namespace

  Throws:
    `XPathException`

### forwardsCompatibleModeIsEnabled

    public boolean forwardsCompatibleModeIsEnabled()
                                            throws XPathException

  Determine whether forwards-compatible mode is enabled

  Throws:
    `XPathException`

### getStyleSheetFunction

    public Function getStyleSheetFunction(int fingerprint)
                                   throws XPathException

  Throws:
    `XPathException`

### getExternalJavaClass

    public java.lang.Class getExternalJavaClass(java.lang.String uri)
                                         throws TransformerException

  Get an external Java class corresponding to a given namespace prefix, if there is one.

  Parameters:
    `uri` - The namespace URI corresponding to the prefix used in the function call.
  Returns:
    the Java class if a suitable class exists, otherwise return null.
  Throws:
    `TransformerException` - if the class is found, but cannot be loaded.

### isElementAvailable

    public boolean isElementAvailable(java.lang.String qname)
                               throws XPathException

  Determine if an extension element is available

  Throws:
    `XPathException`

### isFunctionAvailable

    public boolean isFunctionAvailable(java.lang.String qname)
                                throws XPathException

  Determine if a function is available

  Throws:
    `XPathException`

### allowsKeyFunction

    public boolean allowsKeyFunction()

  Determine whether the key() function is permmitted in this context

### getVersion

    public java.lang.String getVersion()

  Get the effective XSLT version in this region of the stylesheet