Probleme mit Xerces und DTD

eagle1985

Mitglied
Hallo zusammen,

habe das Problem, dass der XML-Parser die DTD nicht laden kann wenn keine Internetverbindung besteht.

Es handelt sich um folgenden DTD eintrag:
Code:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

gibt es eine möglichkeit dem Parser zu melden, dass er das DTD-File auch Local (Lokalerwebserver oder Verzeichnis) findet, falls keine Internetverbindung besteht?

Arbeite mit Java 1.5 und Xerces 2.4 und xercesImpl 2.7

besten Dank für eure Hilfe
 
Hallo zusammen,

habe bisher folgendes erfolglos versucht:
Code:
String [] catalogs = {"catalog.xml"};
DOMParser m_Parser = new DOMParser();

try
{
   m_Parser.setFeature ("http://xml.org/sax/features/validation", true);
   xmlCatalogResolver = new XMLCatalogResolver();
   xmlCatalogResolver.setPreferPublic(false);
   xmlCatalogResolver.setCatalogList(catalogs);

   //xmlCatalogResolver.

   m_Parser.setProperty("http://apache.org/xml/properties/internal/entity-resolver", xmlCatalogResolver);
   m_Parser.setEntityResolver(xmlCatalogResolver);
}
catch (SAXException e)
{
   log.log (SyrLog.DEBUG, "error in setting up parser feature");
}

trozdem findet er das DTD nicht da keine Internetverbindung besteht.

catalog.xml und das svg10.dtd befinden sich im Working-Directory des Java-Programmes

Catalog.xml:
HTML:
<?xml version="1.0" encoding="UTF8"?>
<!--
   Catalog Doctype kann nicht gesetzt werden, da sosnt DTD geladen werden sollte. Dies ist ohne Internetverbindung nicht moeglich.
   Catalog kann sich selber nicht umleiten, da DTD immer zu beginn geladen wird
   <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
-->
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public">
   <public publicId="-//W3C//DTD SVG 1.0//EN" uri="svg10.dtd"/>
</catalog>

Hat jemand eine Ahnung wo sich mein Fehler eingeschlichen hat oder was ich vergessen habe?
 
Habe die Lösung inzwischen gefunden.

Für alle welche das selbe Problem haben:

Code:
m_Parser.setFeature ("http://xml.org/sax/features/validation", true);
 
cm = new CatalogManager();
 
cm.setAllowOasisXMLCatalogPI(true);
cm.setCatalogClassName("org.apache.xml.resolver.Resolver");
cm.setCatalogFiles("./mycatalog.xml");
cm.setIgnoreMissingProperties(false);
cm.setPreferPublic(true);
cm.setRelativeCatalogs(true);
cm.setUseStaticCatalog(true);
cm.setVerbosity(99);
 
cr = new CatalogResolver(cm);
 
m_Parser.setEntityResolver(cr);
 
Zurück