Re: Xerces a relativni DTD

2005-08-30 Tema obsahu Martin Javorek

Vyhravate prvni cenu, vase reseni se mi libi opravdu ze vsech nejvice :-)

Dekuji vsem za odpovedi.
Martin


  Puvodni zprava 
 Od: ales [EMAIL PROTECTED]
 Predmet: Re: Xerces a relativni DTD
 Datum: 27.8.2005 10:54:13
 
 V pripade, ze by ste chcel ist este dalej a nechcel kodovat cestu k DTD
 natvrdo do implementacie rozhrania org.xml.sax.EntityResolver mozete
 vyriesit Vas problem prostrednictvom
 http://xml.apache.org/commons/components/resolver/. Cela zmena by potom
 pozostavala z pridania resolver.jar do CLASSPATH, konfiguracie CATALOG
 RESOLVER-a, a nastavenia CATALOG RESOLVER-a pre DocumentBuilder
 nasledujucim sposobom:

 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
 DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
 docBuilder.setEntityResolver(new
 org.apache.xml.resolver.tools.CatalogResolver());
 document = docBuilder.parse(is);

 V strucnosti, cela idea je taka, ze URI DTD je definovane v
 konfiguracnom subore a parser pri parsovani XML dokumentu
 prostrednictvom nastaveneho CATALOG RESOLVER-a ziska toto URI. Myslim
 si, ze takto postavene riesenie sa vyznacuje vysokou flexibilitou zmeny
 umiestnenia DTD bez potreby rekompilacie zdrojoveho kodu. Je dost mozne,
 ze uprednostnite jednoduchsie riesenie zalozene na vlastnej
 implementacii rozhrania org.xml.sax.EntityResolver, kazdopadne nebude
 na skodu veci ked budete vediet aj o tejto moznosti. V pripade, ze sa
 rozhodnete ist cestou CATALOG RESOLVER-a, tak nasledujuce linky Vam budu
 napomocne:

 http://www.dallaway.com/acad/dtd/
 http://www.xml.com/lpt/a/2004/03/03/catalogs.html

 Ales

 Michal Palička wrote:

 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
 
 
 
 
 
 
 
 





RE: Xerces a relativni DTD

2005-08-26 Tema obsahu Michal Palička
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


Re: Xerces a relativni DTD

2005-08-26 Tema obsahu Miroslav Jarosik
Zdravim,
psat si vlastni EntityResolver je zbytecne. Melo by stacit do metody
parse() predavat instanci InputSource s nastavenym systemId() - cesta,
kde bude parser hledat relativni cesty.

The system identifier is optional if there is a byte stream or a
character stream, but it is still useful to provide one, since the
application can use it to resolve relative URIs 

M.Jarosik

On 8/26/05, Martin Javorek [EMAIL PROTECTED] wrote:
 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



Re: Xerces a relativni DTD

2005-08-26 Tema obsahu Jozef Babjak
 Jak bych mel rict tomu parseru, kde ten dokument lezi? Nejaka base
 URL/URI? Nebo je to uplne spatne?

  ^-- Zrovna riesim velmi podobny problem, akurat ze pouzivam JDOM. Tvorim 
.jar kniznicu, ktora zapuzdruje udaje. Objekt(y) sa vytvaraju tym, ze sa 
ich udaje nacitaju z XML, tieto objekty podliehaju spracovaniu a nakoniec 
sa udaje ulozia spa:t' do XML. Moja predstava idealneho spravania sa je 
taka, ze DTD definujuce XML format (vstupny aj vystupny je totozny) by 
bol ulozeny priamo v .jar subore, aby kniznica mala voci comu validovat 
nacitavane XML a aby si nacitavane XML nemuselo niest DTD so sebou. Je 
nejaky jednoduchy sposob, ako to urobit? Ako treba zaadresovat DTD v 
DOCTYPE XML-ka, aby ho java nasla v jar-ku?

JDOM pouziva interne SAX, takze idem skumat, ci je pouzitelna odpoved, 
ktoru uz niekto poslal. :-) Kazdopadne budem za pripadne nasmerovania 
vdacny. 

J.