/*
* Copyright (c) 2004 World Wide Web Consortium,
*
* (Massachusetts Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved. This
* work is distributed under the W3C(r) Software License [1] in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
package org.w3c.dom.ls;
/**
* LSResourceResolver
provides a way for applications to
* redirect references to external resources.
*
Applications needing to implement custom handling for external
* resources can implement this interface and register their implementation
* by setting the "resource-resolver" parameter of
* DOMConfiguration
objects attached to LSParser
* and LSSerializer
. It can also be register on
* DOMConfiguration
objects attached to Document
* if the "LS" feature is supported.
*
The LSParser
will then allow the application to intercept
* any external entities, including the external DTD subset and external
* parameter entities, before including them. The top-level document entity
* is never passed to the resolveResource
method.
*
Many DOM applications will not need to implement this interface, but it * will be especially useful for applications that build XML documents from * databases or other specialized input sources, or for applications that * use URNs. *
Note: LSResourceResolver
is based on the SAX2 [SAX] EntityResolver
* interface.
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface LSResourceResolver {
/**
* Allow the application to resolve external resources.
*
The LSParser
will call this method before opening any
* external resource, including the external DTD subset, external
* entities referenced within the DTD, and external entities referenced
* within the document element (however, the top-level document entity
* is not passed to this method). The application may then request that
* the LSParser
resolve the external resource itself, that
* it use an alternative URI, or that it use an entirely different input
* source.
*
Application writers can use this method to redirect external
* system identifiers to secure and/or local URI, to look up public
* identifiers in a catalogue, or to read an entity from a database or
* other input source (including, for example, a dialog box).
* @param type The type of the resource being resolved. For XML [XML 1.0] resources
* (i.e. entities), applications must use the value
* "http://www.w3.org/TR/REC-xml"
. For XML Schema [XML Schema Part 1]
* , applications must use the value
* "http://www.w3.org/2001/XMLSchema"
. Other types of
* resources are outside the scope of this specification and therefore
* should recommend an absolute URI in order to use this method.
* @param namespaceURI The namespace of the resource being resolved,
* e.g. the target namespace of the XML Schema [XML Schema Part 1]
* when resolving XML Schema resources.
* @param publicId The public identifier of the external entity being
* referenced, or null
if no public identifier was
* supplied or if the resource is not an entity.
* @param systemId The system identifier, a URI reference [IETF RFC 2396], of the
* external resource being referenced, or null
if no
* system identifier was supplied.
* @param baseURI The absolute base URI of the resource being parsed, or
* null
if there is no base URI.
* @return A LSInput
object describing the new input
* source, or null
to request that the parser open a
* regular URI connection to the resource.
*/
public LSInput resolveResource(String type,
String namespaceURI,
String publicId,
String systemId,
String baseURI);
}