Interface RelativeURIResolver
-
- All Superinterfaces:
javax.xml.transform.URIResolver
public interface RelativeURIResolver extends javax.xml.transform.URIResolver
The standard JAXP URIResolver is given a relative URI and a base URI and returns the resource identified by this combination. However, to support a stable implementation of the doc() function, Saxon needs to know what the absolute URI is before the resource is fetched, so it can determine whether a document with that absolute URI actually exists.This extended interface defines a URIResolver that separates the two functions of resolving a relative URI against a base URI, and fetching a resource with that absolute URI. If the URI resolver supplied to Saxon implements this interface, the absolute URI associated with a loaded document will be the URI returned by this resolver.
The particular motivation for providing this interface is to allow a URIResolver to wrap a .NET XmlResolver, which has additional capability not present in the JAXP interface.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description javax.xml.transform.Source
dereference(java.lang.String uri)
Called by the processor when it encounters an xsl:include, xsl:import, or document() function.default javax.xml.transform.Source
dereference(java.lang.String uri, java.lang.String flags)
Extended method that accepts flagsjava.lang.String
makeAbsolute(java.lang.String href, java.lang.String base)
Create an absolute URI from a relative URI and a base URI.javax.xml.transform.Source
resolve(java.lang.String href, java.lang.String base)
Called by the processor when it encounters an xsl:include, xsl:import, or document() function.default javax.xml.transform.Source
resolve(java.lang.String href, java.lang.String base, java.lang.String flags)
Extended method that accepts flags
-
-
-
Method Detail
-
makeAbsolute
java.lang.String makeAbsolute(java.lang.String href, java.lang.String base) throws javax.xml.transform.TransformerException
Create an absolute URI from a relative URI and a base URI. This method performs the process which is correctly called "URI resolution": this is purely a syntactic operation on the URI strings, and does not retrieve any resources.- Parameters:
href
- A relative or absolute URI, to be resolved against the specified base URIbase
- The base URI against which the first argument will be made absolute if the absolute URI is required.- Returns:
- A string containing the absolute URI that results from URI resolution. If the resource
needs to be fetched, this absolute URI will be supplied as the href parameter in a subsequent
call to the
resolve
method. - Throws:
javax.xml.transform.TransformerException
- if any failure occurs
-
dereference
javax.xml.transform.Source dereference(java.lang.String uri) throws javax.xml.transform.TransformerException
Called by the processor when it encounters an xsl:include, xsl:import, or document() function.- Parameters:
uri
- The absolute URI to be dereferenced- Returns:
- A Source object, or null if the href cannot be dereferenced, and the processor should try to resolve the URI itself.
- Throws:
javax.xml.transform.TransformerException
- if an error occurs when trying to resolve the URI.
-
dereference
default javax.xml.transform.Source dereference(java.lang.String uri, java.lang.String flags) throws javax.xml.transform.TransformerException
Extended method that accepts flags- Parameters:
uri
- the URI to be dereferencedflags
- recognized flags are S=streamable, M=stylesheet module, D=document, K=schema- Returns:
- A Source object, or null if the href cannot be dereferenced, and the processor should try to resolve the URI itself.
- Throws:
javax.xml.transform.TransformerException
- if the source cannot be dereferenced
-
resolve
javax.xml.transform.Source resolve(java.lang.String href, java.lang.String base) throws javax.xml.transform.TransformerException
Called by the processor when it encounters an xsl:include, xsl:import, or document() function.Despite the name, the main purpose of this method is to dereference the URI, not merely to resolve it.
This method is provided because it is required by the interface. When using a RelativeURIResolver, the single-argument dereference() method is preferred. The result of calling this method should be the same as the result of calling
dereference(makeAbsolute(href, base))
- Specified by:
resolve
in interfacejavax.xml.transform.URIResolver
- Parameters:
href
- An href attribute, which may be relative or absolute.base
- The base URI against which the first argument will be made absolute if the absolute URI is required.- Returns:
- A Source object, or null if the href cannot be resolved, and the processor should try to resolve the URI itself.
- Throws:
javax.xml.transform.TransformerException
- if an error occurs when trying to resolve the URI.
-
resolve
default javax.xml.transform.Source resolve(java.lang.String href, java.lang.String base, java.lang.String flags) throws javax.xml.transform.TransformerException
Extended method that accepts flags- Parameters:
href
- the relative URI to be dereferencedbase
- the base URIflags
- recognized flags are S=streamable, M=stylesheet module, D=document, K=schema- Returns:
- the resolved source
- Throws:
javax.xml.transform.TransformerException
- in the event of failure
-
-