package org.caudexorigo.xom; import java.io.IOException; import java.io.StringReader; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.ext.EntityResolver2; public class XhtmlEntityResolver implements EntityResolver2 { public XhtmlEntityResolver() { } public InputSource resolveEntity(String publicID, String systemID) throws SAXException { try { return this.resolveEntity(null, publicID, null, systemID); } catch (IOException e) { throw new SAXException(e); } } @Override public InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException { // System.out.println("*************************************************"); // System.out.println("XhtmlEntityResolver.getExternalSubset.name: " + name); // System.out.println("XhtmlEntityResolver.getExternalSubset.baseURI: " + baseURI); // if ("html".equals(name)) // // return new InputSource(getClass().getResourceAsStream("/org/caudexorigo/etc/catalogs/html/html.dtd")); // else // return new InputSource(new StringReader("")); // always return the html dtd return new InputSource(getClass().getResourceAsStream("/org/caudexorigo/etc/catalogs/html/html.dtd")); } @Override public InputSource resolveEntity(String name, String publicID, String baseURI, String systemID) throws SAXException, IOException { // System.out.println("*************************************************"); // System.out.println("XhtmlEntityResolver.resolveEntity.name: " + name); // System.out.println("XhtmlEntityResolver.resolveEntity.publicID: " + publicID); // System.out.println("XhtmlEntityResolver.resolveEntity.baseURI: " + baseURI); // System.out.println("XhtmlEntityResolver.resolveEntity.systemID: " + systemID); if (systemID.contains(".dtd")) return new InputSource(getClass().getResourceAsStream("/org/caudexorigo/etc/catalogs/html/html.dtd")); if (systemID.contains("html-lat1.ent")) return new InputSource(getClass().getResourceAsStream("/org/caudexorigo/etc/catalogs/html/html-lat1.ent")); if (systemID.contains("html-symbol.ent")) return new InputSource(getClass().getResourceAsStream("/org/caudexorigo/etc/catalogs/html/html-symbol.ent")); if (systemID.contains("html-special.ent")) return new InputSource(getClass().getResourceAsStream("/org/caudexorigo/etc/catalogs/html/html-special.ent")); else return new InputSource(new StringReader("")); } }