|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.enhydra.apache.xerces.readers.XMLCatalogHandler | +--org.enhydra.apache.xerces.readers.XCatalog
This catalog supports the XCatalog proposal draft 0.2 posted to the xml-dev mailing list by John Cowan. XCatalog is an XML representation of the SGML Open TR9401:1997 catalog format. The current proposal supports public identifier maps, system identifier aliases, and public identifier prefix delegates. Refer to the XCatalog DTD for the full specification of this catalog format at http://www.ccil.org/~cowan/XML/XCatalog.html.
In order to use XCatalogs, you must write the catalog files with the following restrictions:
<!DOCTYPE XCatalog PUBLIC "-//DTD XCatalog//EN" "org.enhydra.apache.xerces/readers/xcatalog.dtd">
To use this catalog in a parser, set an XCatalog instance as the parser's EntityResolver. For example:
XMLParser parser = new AnyParser(); Catalog catalog = new XCatalog(); parser.getEntityHandler().setEntityResolver(catalog);
Once installed, catalog files that conform to the XCatalog grammar can be appended to the catalog by calling the loadCatalog method on the parser or the catalog instance. The following example loads the contents of two catalog files:
parser.loadCatalog(new InputSource("catalogs/cat1.xml")); parser.loadCatalog(new InputSource("http://host/catalogs/cat2.xml"));
Limitations: The following are the current limitations of this XCatalog implementation:
Nested Class Summary | |
(package private) class |
XCatalog.Parser
Parser for XCatalog document instances. |
Field Summary | |
(package private) static java.lang.String |
BASE
Base element name ("Base"). |
(package private) static java.lang.String |
DELEGATE
Delegate element name ("Delegate"). |
(package private) static java.lang.String |
DTD
XCatalog DTD resource name ("xcatalog.dtd"). |
(package private) static java.lang.String |
EXTEND
Extend element name ("Extend"). |
(package private) static java.lang.String |
HREF
HRef attribute name ("HRef"). |
(package private) static java.lang.String |
MAP
Map element name ("Map"). |
(package private) static java.lang.String |
PUBLICID
PublicID attribute name ("PublicID"). |
(package private) static java.lang.String |
REMAP
Remap element name ("Remap"). |
(package private) static java.lang.String |
SYSTEMID
SystemID attribute name ("SystemID"). |
(package private) static java.lang.String |
XCATALOG
XCatalog element name ("XCatalog"). |
static java.lang.String |
XCATALOG_DTD_PUBLICID
XCatalog public identifier string ("-//DTD XCatalog//EN"). |
Constructor Summary | |
XCatalog()
Constructs an XCatalog instance. |
Method Summary | |
void |
addDelegateCatalog(java.lang.String prefix,
XCatalog catalog)
Adds a delegate mapping. |
XCatalog |
getDelegateCatalog(java.lang.String prefix)
Returns the catalog for the given delegate prefix. |
java.util.Enumeration |
getDelegateCatalogKeys()
Returns an enumeration of delegate prefixes. |
(package private) boolean |
isURL(java.lang.String str)
Returns true if the string is a valid URL. |
void |
loadCatalog(InputSource source)
Loads the catalog stream specified by the given input source and appends the contents to the catalog. |
void |
removeDelegateCatalog(java.lang.String prefix)
Removes a delegate. |
InputSource |
resolveEntity(java.lang.String publicId,
java.lang.String systemId)
Resolves external entities. |
Methods inherited from class org.enhydra.apache.xerces.readers.XMLCatalogHandler |
addPublicMapping, addSystemMapping, getPublicMapping, getPublicMappingKeys, getSystemMapping, getSystemMappingKeys, removePublicMapping, removeSystemMapping |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final java.lang.String XCATALOG_DTD_PUBLICID
static final java.lang.String DTD
static final java.lang.String XCATALOG
static final java.lang.String MAP
static final java.lang.String PUBLICID
static final java.lang.String HREF
static final java.lang.String DELEGATE
static final java.lang.String EXTEND
static final java.lang.String BASE
static final java.lang.String REMAP
static final java.lang.String SYSTEMID
Constructor Detail |
public XCatalog()
Method Detail |
public void loadCatalog(InputSource source) throws SAXException, java.io.IOException
loadCatalog
in class XMLCatalogHandler
source
- The catalog source.
SAXException
- Throws exception on SAX error.
java.io.IOException
- Throws exception on i/o error.public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws SAXException, java.io.IOException
resolveEntity
in interface EntityResolver
resolveEntity
in class XMLCatalogHandler
publicId
- The public identifier used for entity resolution.systemId
- If the publicId is not null, this systemId is
to be considered the default system identifier;
else a system identifier alias mapping is
requested.
SAXException
- Exception thrown on SAX error.
java.io.IOException
- Exception thrown on i/o error.public void addDelegateCatalog(java.lang.String prefix, XCatalog catalog)
This method makes sure that prefixes that match each other are inserted into the delegate list in order of longest prefix length first.
prefix
- The delegate prefix.catalog
- The delegate catalog.public void removeDelegateCatalog(java.lang.String prefix)
prefix
- The delegate prefix to remove.public java.util.Enumeration getDelegateCatalogKeys()
public XCatalog getDelegateCatalog(java.lang.String prefix)
boolean isURL(java.lang.String str)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |