# DTD Eintrag



## sirrurg (27. Mrz 2005)

Hi,

habe mal eine Frage. Und zwar will ich eine XML Datei auslesen, deren "Präambel"
folgendes enthält


```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
```

Nun möchte ich diese XML Datei mit nem SAX Parser auslesen, dabei greif ich eben einfach auf die Factory, die in der Java Bib mitgeliefert wird zurück.
Schön und gut, funktioniert auch alles bestens.
Nun wollte ich mal fragen, ob es eine elegante Variante gibt mit einer Exception umzugehen, die das Fehlen der DTD betrifft.
Im Handler gibt es ja die Möglichkeit kritische Fehler zu behandeln.
Ist es denn möglich einfach dann zur Laufzeit dem Parser noch zu sagen,
ok im gleichen Verzeichnis ist zwar keine dtd aber hier hast du eine äquivalente, die
im Verzeichnis ...  oder auch Archive liegt!

MfG


----------



## Bleiglanz (29. Mrz 2005)

such mal im forum, das hatten wir schon mal

=> CATALOG Mechanismus verwenden, wir mittlerweile gut unterstützt

=> oder 

http://xml.apache.org/xerces2-j/features.html#validation.dynamic
http://xml.apache.org/xerces2-j/features.html#nonvalidating.load-external-dtd


----------



## sirrurg (29. Mrz 2005)

Nun gut.

Habe mich mal im Forum genauer umgesehn.
Leider sieht es so aus, als ob es keine elegante Methode gibt um das zu Behandeln.
Habe mich nun dazu entschieden, einfach die Exception abzufangen, zu prüfen ob es sich dabei
um diese Datei handelt und diese dann in das entsprechende Verzeichnis zu kopieren.
Nicht unbedingt das schönste, aber es funktioniert.

MfG


----------



## Bleiglanz (29. Mrz 2005)

sirrurg hat gesagt.:
			
		

> Nun gut.
> Leider sieht es so aus, als ob es keine elegante Methode gibt um das zu Behandeln.


die Frage ist WAS behandeln?

wenn ein XML Dokument keine DTD einbindet, ist es meistens eine schlechte Idee, eine solche erzwingen zu wollen...

ich schreib in diesem Fall lieber einen hinreichend "robusten" SAX-Handler und verzichte ganz auf das validieren...

<!DOCTYPE log SYSTEM "logger.dtd"> deutet ja darauf hin, dass der Inhalt so komplex nicht sein dürfte


----------



## sirrurg (29. Mrz 2005)

Ja, so komplex ist die nun auch nicht. Aber ich verwende eben die Standard Logging API mit dem Standard XMLFormatter und der schreibt das eben als Präambel. Da ich nicht daran denke, deswegen nen Formatter "neu-zu-klaun" mit einer Zeile weniger, werde ich wohl damit auskommen müssen. :? 

Aber danke für die Tips, vielleicht finden die ja beim nächsten Mal, dann ne sinnvolle Verwendung  8)


----------



## Bleiglanz (30. Mrz 2005)

mach einfach setValidating(false), dann ignoriert der Parser den ganzen DTD Schamott

man ist ja nicht gezwungen, den DOCTYPE zu beachten


----------



## Politicallycorrect (6. Jun 2008)

Good Site! Thanks! niibatsahyeva mne


----------

