Dobry den,

podivejte se do JavaDocu na tridu "org.xml.sax.EntityResolver".

Nacitani DTD z "nestandardniho" ulozite muzete vyresit implementaci 
vlastniho resolveru.

V dokumentaci se pise:

If a SAX application needs to implement customized handling for external 
entities, it must implement this interface 
and register an instance with the SAX driver using the setEntityResolver method.
The XML reader will then allow the application to intercept any external 
entities (including the external DTD subset 
and external parameter entities, if any) before including them.

mp.
 

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martin Javorek
Sent: Friday, August 26, 2005 5:47 PM
To: Java
Subject: Xerces a relativni DTD

Ahoj,

tak tu ted resim takovy problemek... Web aplikace (Tomcat 5.0), pri startu 
servletu se parsuji (DOM) nejaka XML (Xerces 2.0.7). Ta XML maji relativni 
cestu k DTD. Zjistil jsem vsak, ze cesta je zavisla na tom, odkud se spusti 
Tomcat - jinymi slovy, je relativni k /bin adresare Tomcatu a ne ke XML 
dokumentu. Samozrejme - aplikace funguje jen v pripade, ze se Tomcat spusti 
davkou z /bin, pokud jej spustim jinak a odjinud, tak nastane problem, protoze 
DTD se nenajdou. Kdyz predelam adresy DTD relativne k dokumentum, taktez to 
nefunguje. 

Tak jsem to doho chvilu koukal a napadlo me, ze se to XML nacita pres stream a 
tudiz validator parseru nema asi pristup k informaci, kde se vlastne dokument 
nachazi a tudiz nemuze ani relativne k nemu najit to DTD... a clovek, ktery to 
psal prede mnou to nejspis vyresil tak, ze tam placnul relativni cestu k tomu 
binu a hotovo (coz mi zrovna nevyhovuje).

Utrzek kodu parsovani toho XML:

         DocumentBuilderFactory dbFactory = 
DocumentBuilderFactory.newInstance();
         DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
         document = docBuilder.parse(is);

kde is je inputstream toho XML

Jak bych mel rict tomu parseru, kde ten dokument lezi? Nejaka base URL/URI? 
Nebo je to uplne spatne?
Diky.

Martin

Odpovedet emailem