XCatalogReaderpublic class XCatalogReader extends SAXCatalogReader implements SAXCatalogParserParse "xcatalog" XML Catalog files, this is the XML Catalog format
developed by John Cowan and supported by Apache. |
Fields Summary |
---|
protected com.sun.org.apache.xml.internal.resolver.Catalog | catalogThe catalog object needs to be stored by the object so that
SAX callbacks can use it. |
Constructors Summary |
---|
public XCatalogReader(SAXParserFactory parserFactory)The constructor
super(parserFactory);
|
Methods Summary |
---|
public void | characters(char[] ch, int start, int length)The SAX characters method does nothing.
return;
| public void | endDocument()The SAX endDocument method does nothing.
return;
| public void | endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)The SAX endElement method does nothing.
return;
| public com.sun.org.apache.xml.internal.resolver.Catalog | getCatalog()Get the current catalog.
return catalog;
| public void | ignorableWhitespace(char[] ch, int start, int length)The SAX ignorableWhitespace method does nothing.
return;
| public void | processingInstruction(java.lang.String target, java.lang.String data)The SAX processingInstruction method does nothing.
return;
| public void | setCatalog(com.sun.org.apache.xml.internal.resolver.Catalog catalog)Set the current catalog.
this.catalog = catalog;
| public void | setDocumentLocator(org.xml.sax.Locator locator)The SAX setDocumentLocator method does nothing.
return;
| public void | startDocument()The SAX startDocument method does nothing.
return;
| public void | startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts)The SAX startElement method recognizes elements
from the plain catalog format and instantiates CatalogEntry
objects for them.
int entryType = -1;
Vector entryArgs = new Vector();
if (localName.equals("Base")) {
entryType = catalog.BASE;
entryArgs.add(atts.getValue("HRef"));
catalog.getCatalogManager().debug.message(4, "Base", atts.getValue("HRef"));
} else if (localName.equals("Delegate")) {
entryType = catalog.DELEGATE_PUBLIC;
entryArgs.add(atts.getValue("PublicId"));
entryArgs.add(atts.getValue("HRef"));
catalog.getCatalogManager().debug.message(4, "Delegate",
PublicId.normalize(atts.getValue("PublicId")),
atts.getValue("HRef"));
} else if (localName.equals("Extend")) {
entryType = catalog.CATALOG;
entryArgs.add(atts.getValue("HRef"));
catalog.getCatalogManager().debug.message(4, "Extend", atts.getValue("HRef"));
} else if (localName.equals("Map")) {
entryType = catalog.PUBLIC;
entryArgs.add(atts.getValue("PublicId"));
entryArgs.add(atts.getValue("HRef"));
catalog.getCatalogManager().debug.message(4, "Map",
PublicId.normalize(atts.getValue("PublicId")),
atts.getValue("HRef"));
} else if (localName.equals("Remap")) {
entryType = catalog.SYSTEM;
entryArgs.add(atts.getValue("SystemId"));
entryArgs.add(atts.getValue("HRef"));
catalog.getCatalogManager().debug.message(4, "Remap",
atts.getValue("SystemId"),
atts.getValue("HRef"));
} else if (localName.equals("XMLCatalog")) {
// nop, start of catalog
} else {
// This is equivalent to an invalid catalog entry type
catalog.getCatalogManager().debug.message(1, "Invalid catalog entry type", localName);
}
if (entryType >= 0) {
try {
CatalogEntry ce = new CatalogEntry(entryType, entryArgs);
catalog.addEntry(ce);
} catch (CatalogException cex) {
if (cex.getExceptionType() == CatalogException.INVALID_ENTRY_TYPE) {
catalog.getCatalogManager().debug.message(1, "Invalid catalog entry type", localName);
} else if (cex.getExceptionType() == CatalogException.INVALID_ENTRY) {
catalog.getCatalogManager().debug.message(1, "Invalid catalog entry", localName);
}
}
}
|
|