|
Préférences
Moteurs de recherche
|
||||||||
JavaTM 2 Platform Std. Ed. v1.6.0
org.xml.sax.ext
|
Method Summary | |
---|---|
InputSource |
getExternalSubset(String name,
String baseURI)
Allows applications to provide an external subset for documents that don't explicitly define one. |
InputSource |
resolveEntity(String name,
String publicId,
String baseURI,
String systemId)
Allows applications to map references to external entities into input sources, or tell the parser it should use conventional URI resolution. |
Methods inherited from interface org.xml.sax.EntityResolver |
---|
resolveEntity |
Method Detail |
---|
InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException
startDTD()
method as if
the document text had originally included the external subset;
this callback is made before any internal subset data or errors
are reported.
This method can also be used with documents that have no DOCTYPE declaration. When the root element is encountered, but no DOCTYPE declaration has been seen, this method is invoked. If it returns a value for the external subset, that root element is declared to be the root element, giving the effect of splicing a DOCTYPE declaration at the end the prolog of a document that could not otherwise be valid. The sequence of parser callbacks in that case logically resembles this:
... comments and PIs from the prolog (as usual) startDTD ("rootName", source.getPublicId (), source.getSystemId ()); startEntity ("[dtd]"); ... declarations, comments, and PIs from the external subset endEntity ("[dtd]"); endDTD (); ... then the rest of the document (as usual) startElement (..., "rootName", ...);
Note that the InputSource gets no further resolution.
Implementations of this method may wish to invoke
resolveEntity()
to gain benefits such as use
of local caches of DTD entities. Also, this method will never be
used by a (non-validating) processor that is not including external
parameter entities.
Uses for this method include facilitating data validation when interoperating with XML processors that would always require undesirable network accesses for external entities, or which for other reasons adopt a "no DTDs" policy. Non-validation motives include forcing documents to include DTDs so that attributes are handled consistently. For example, an XPath processor needs to know which attibutes have type "ID" before it can process a widely used type of reference.
Warning: Returning an external subset modifies the input document. By providing definitions for general entities, it can make a malformed document appear to be well formed.
name
- Identifies the document root element. This name comes
from a DOCTYPE declaration (where available) or from the actual
root element.baseURI
- The document's base URI, serving as an additional
hint for selecting the external subset. This is always an absolute
URI, unless it is null because the XMLReader was given an InputSource
without one.
SAXException
- Any SAX exception, possibly wrapping
another exception.
IOException
- Probably indicating a failure to create
a new InputStream or Reader, or an illegal URL.InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException
EntityResolver
interface, supporting implementations of more complex catalogue
schemes such as the one defined by the OASIS XML Catalogs specification.
Parsers configured to use this resolver method will call it
to determine the input source to use for any external entity
being included because of a reference in the XML text.
That excludes the document entity, and any external entity returned
by getExternalSubset()
.
When a (non-validating) processor is configured not to include
a class of entities (parameter or general) through use of feature
flags, this method is not invoked for such entities.
Note that the entity naming scheme used here is the same one
used in the LexicalHandler
, or in the ContentHandler.skippedEntity()
method.
name
- Identifies the external entity being resolved.
Either "[dtd]" for the external subset, or a name starting
with "%" to indicate a parameter entity, or else the name of
a general entity. This is never null when invoked by a SAX2
parser.publicId
- The public identifier of the external entity being
referenced (normalized as required by the XML specification), or
null if none was supplied.baseURI
- The URI with respect to which relative systemIDs
are interpreted. This is always an absolute URI, unless it is
null (likely because the XMLReader was given an InputSource without
one). This URI is defined by the XML specification to be the one
associated with the "<" starting the relevant declaration.systemId
- The system identifier of the external entity
being referenced; either a relative or absolute URI.
This is never null when invoked by a SAX2 parser; only declared
entities, and any external subset, are resolved by such parsers.
SAXException
- Any SAX exception, possibly wrapping
another exception.
IOException
- Probably indicating a failure to create
a new InputStream or Reader, or an illegal URL.