/** * SAX ContentHandler API. * * <p>Detect and use the oasis-xml-catalog PI if it occurs. */ public void processingInstruction(String target, String pidata) throws SAXException { if (target.equals("oasis-xml-catalog")) { URL catalog = null; String data = pidata; int pos = data.indexOf("catalog="); if (pos >= 0) { data = data.substring(pos + 8); if (data.length() > 1) { String quote = data.substring(0, 1); data = data.substring(1); pos = data.indexOf(quote); if (pos >= 0) { data = data.substring(0, pos); try { if (baseURL != null) { catalog = new URL(baseURL, data); } else { catalog = new URL(data); } } catch (MalformedURLException mue) { // nevermind } } } } if (allowXMLCatalogPI) { if (catalogManager.getAllowOasisXMLCatalogPI()) { catalogManager.debug.message(4, "oasis-xml-catalog PI", pidata); if (catalog != null) { try { catalogManager.debug.message(4, "oasis-xml-catalog", catalog.toString()); oasisXMLCatalogPI = true; if (piCatalogResolver == null) { piCatalogResolver = new CatalogResolver(true); } piCatalogResolver.getCatalog().parseCatalog(catalog.toString()); } catch (Exception e) { catalogManager.debug.message( 3, "Exception parsing oasis-xml-catalog: " + catalog.toString()); } } else { catalogManager.debug.message(3, "PI oasis-xml-catalog unparseable: " + pidata); } } else { catalogManager.debug.message(4, "PI oasis-xml-catalog ignored: " + pidata); } } else { catalogManager.debug.message( 3, "PI oasis-xml-catalog occurred in an invalid place: " + pidata); } } else { super.processingInstruction(target, pidata); } }
/** Provide accessto the underlying Catalog. */ public Catalog getCatalog() { return catalogResolver.getCatalog(); }