/*
* Copyright (c) 2002 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program is distributed 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.
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.ls;
/**
* <strong>DOM Level 3 WD Experimental:
* The DOM Level 3 specification is at the stage
* of Working Draft, which represents work in
* progress and thus may be updated, replaced,
* or obsoleted by other documents at any time.</strong> <p>
* <code>DOMEntityResolver</code> Provides a way for applications to redirect
* references to external entities.
* <p>Applications needing to implement customized handling for external
* entities must implement this interface and register their implementation
* by setting the <code>entityResolver</code> attribute of the
* <code>DOMBuilder</code>.
* <p>The <code>DOMBuilder</code> will then allow the application to intercept
* any external entities (including the external DTD subset and external
* parameter entities) before including them.
* <p>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. <code>DOMEntityResolver</code> is based on the SAX2
* <code>EntityResolver</code> interface.
* <p>See also the <a href='http://www.w3.org/TR/2002/WD-DOM-Level-3-LS-20020725'>Document Object Model (DOM) Level 3 Load
and Save Specification</a>.
*/
public interface DOMEntityResolver {
/**
* Allow the application to resolve external entities.
* <br>The <code>DOMBuilder</code> will call this method before opening
* any external entity except the top-level document entity (including
* the external DTD subset, external entities referenced within the DTD,
* and external entities referenced within the document element); the
* application may request that the <code>DOMBuilder</code> resolve the
* entity itself, that it use an alternative URI, or that it use an
* entirely different input source.
* <br>Application writers can use this method to redirect external system
* identifiers to secure and/or local URIs, 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).
* <br>If the system identifier is a URI, the <code>DOMBuilder</code> must
* resolve it fully before reporting it to the application through this
* interface. See issue #4. An alternative would be to pass the URI out
* without resolving it, and to provide a base as an additional
* parameter. SAX resolves URIs first, and does not provide a base.
* @param publicId The public identifier of the external entity being
* referenced, or <code>null</code> if none was supplied.
* @param systemId The system identifier, a URI reference , of the
* external entity being referenced exactly as written in the source.
* @param baseURI The absolute base URI of the resource being parsed, or
* <code>null</code> if there is no base URI.
* @return A <code>DOMInputSource</code> object describing the new input
* source, or <code>null</code> to request that the parser open a
* regular URI connection to the system identifier.
*/
public DOMInputSource resolveEntity(String publicId,
String systemId,
String baseURI);
}