blob: 2912faafe4e21c3c151121288a260771b82daf97 [file] [log] [blame]
/*
* Copyright (c) 2001 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.apache.xerces.dom3.ls;
/**
* <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> property 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 URI types other than URIs. <code>DOMEtityResolver</code> is based on
* the SAX2 <code>EntityResolver</code> interface.
* <p>See also the <a href='http://www.w3.org/TR/2001/WD-DOM-Level-3-ASLS-20011025'>Document Object Model (DOM) Level 3 Abstract Schemas and 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
* (i.e. .
* @param baseURI The URI reference representing the 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.
* @exception DOMSystemException
* Any <code>DOMSystemException</code>, possibly wrapping another
* exception.
*/
public DOMInputSource resolveEntity(String publicId,
String systemId,
String baseURI)
throws Exception;
}