Class 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