Package net.sf.saxon.lib

## Class StandardURIResolver

- java.lang.Object
- - net.sf.saxon.lib.StandardURIResolver

- All Implemented Interfaces:
    `javax.xml.transform.URIResolver`, `NonDelegatingURIResolver`
  Direct Known Subclasses:
    `XomUriResolver`

      public class StandardURIResolver
      extends java.lang.Object
      implements NonDelegatingURIResolver

  This class provides the service of converting a URI into an `Source`. It is used to get stylesheet modules referenced by xsl:import and xsl:include, and source documents referenced by the document() function. The standard version handles anything that the java URL class will handle, plus the `classpath` URI scheme defined in the Spring framework, and the `data` URI scheme defined in RFC 2397.

  You can write a subclass to handle other kinds of URI, for example references to data in a database, or to handle standard URIs in non-standard ways, for example by supplying authentication credentials.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `StandardURIResolver()` | Create a StandardURIResolver, with no reference to a Configuration.
    `StandardURIResolver​(Configuration config)` | Create a StandardURIResolver, with a reference to a Configuration

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.util.function.Predicate<java.net.URI>` | `getAllowedUriTest()` | Set a Predicate that is applied to a URI to determine whether the resolver should accept it.
    `Configuration` | `getConfiguration()` | Get the configuration if available
    `protected Platform` | `getPlatform()` | Get the relevant platform
    `protected javax.xml.transform.Source` | `getPTreeSource​(java.lang.String href, java.lang.String base)` | Handle a PTree source file (Saxon-EE only)
    `boolean` | `queryParametersAreRecognized()` | Determine whether query parameters (such as validation=strict) are to be recognized
    `javax.xml.transform.Source` | `resolve​(java.lang.String href, java.lang.String base)` | Resolve a URI
    `void` | `setAllowedUriTest​(java.util.function.Predicate<java.net.URI> test)` | Set a Predicate that is applied to a URI to determine whether the resolver should accept it.
    `void` | `setConfiguration​(Configuration config)` | Set the configuration
    `void` | `setRecognizeQueryParameters​(boolean recognize)` | Indicate that query parameters (such as validation=strict) are to be recognized
    `protected void` | `setSAXInputSource​(javax.xml.transform.sax.SAXSource source, java.lang.String uriString)` | Set the InputSource part of the returned SAXSource.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### StandardURIResolver

          public StandardURIResolver()

      Create a StandardURIResolver, with no reference to a Configuration. Note: it is preferable but not essential to supply a Configuration, either in the constructor or in a subsequent call of `setConfiguration()`

    - #### StandardURIResolver

          public StandardURIResolver​(Configuration config)

      Create a StandardURIResolver, with a reference to a Configuration
      Parameters:
        `config` - The Configuration object. May be null. This is used (if available) to get a reusable SAX Parser for a source XML document

  - ### Method Detail

    - #### setRecognizeQueryParameters

          public void setRecognizeQueryParameters​(boolean recognize)

      Indicate that query parameters (such as validation=strict) are to be recognized
      Parameters:
        `recognize` - Set to true if query parameters in the URI are to be recognized and acted upon. The default (for compatibility and interoperability reasons) is false.

    - #### queryParametersAreRecognized

          public boolean queryParametersAreRecognized()

      Determine whether query parameters (such as validation=strict) are to be recognized
      Returns:
        true if query parameters are recognized and interpreted by Saxon.

    - #### setAllowedUriTest

          public void setAllowedUriTest​(java.util.function.Predicate<java.net.URI> test)

      Set a Predicate that is applied to a URI to determine whether the resolver should accept it.

      It is possible to set the default predicate by means of the configuration property `Feature.ALLOWED_PROTOCOLS`.

      Parameters:
        `test` - the predicate to be applied to the absolute URI.

    - #### getAllowedUriTest

          public java.util.function.Predicate<java.net.URI> getAllowedUriTest()

      Set a Predicate that is applied to a URI to determine whether the resolver should accept it.

      The default predicate can be set by means of the configuration property `Feature.ALLOWED_PROTOCOLS`.

    - #### getPlatform

          protected Platform getPlatform()

      Get the relevant platform
      Returns:
        the platform

    - #### setConfiguration

          public void setConfiguration​(Configuration config)

      Set the configuration
      Parameters:
        `config` - the configuration

    - #### getConfiguration

          public Configuration getConfiguration()

      Get the configuration if available
      Returns:
        the configuration

    - #### resolve

          public javax.xml.transform.Source resolve​(java.lang.String href,
                                                    java.lang.String base)
                                             throws XPathException

      Resolve a URI
      Specified by:
        `resolve` in interface `javax.xml.transform.URIResolver`
      Parameters:
        `href` - The relative or absolute URI. May be an empty string. May contain a fragment identifier starting with "#", which must be the value of an ID attribute in the referenced XML document.
        `base` - The base URI that should be used. May be null if uri is absolute.
      Returns:
        a Source object representing an XML document
      Throws:
        `XPathException`

    - #### getPTreeSource

          protected javax.xml.transform.Source getPTreeSource​(java.lang.String href,
                                                              java.lang.String base)
                                                       throws XPathException

      Handle a PTree source file (Saxon-EE only)
      Parameters:
        `href` - the relative URI
        `base` - the base URI
      Returns:
        the new Source object
      Throws:
        `XPathException`

    - #### setSAXInputSource

          protected void setSAXInputSource​(javax.xml.transform.sax.SAXSource source,
                                           java.lang.String uriString)

      Set the InputSource part of the returned SAXSource. This is done in a separate method to allow subclassing. The default implementation checks for the (Spring-defined) "classpath" URI scheme, and if this is in use, it attempts to locate the resource on the classpath and set the supplied SAXSource to use the corresponding input stream. In other cases it simply places the URI in the InputSource, allowing the XML parser to take responsibility for the dereferencing. A subclass may choose to dereference the URI at this point and place an InputStream in the SAXSource.
      Parameters:
        `source` - the SAXSource being initialized
        `uriString` - the absolute (resolved) URI to be used