# DTD benutzen um XML zu prüfen



## PhantomXXL (25. Mrz 2005)

ich hab mir jetzt eine DTD erstellt, ist es nun möglich mit jdom ein document type mit deier dtd zu vergleichen, ohne das ich jeden vergleich extra ausprogrammiere?


```
...
Element tcd = doc.getRootElement();
if(!tcd.getName().equalsIgnoreCase("TCD")) {
seterror("invalidformat");
}
...
```
das ist wie ichs momentan machen würde, aber bei komplexeren xmls wirds umständluich, und wenn schon eine dtd da ist wieso nicht gleich die mit dem doctype verwneden, bloss wie?

xml ist so aufgebaut:


```
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tcd SYSTEM "http://localhost/tcd.dtd">
<tcd version="1.17">
...
```


----------



## Roar (25. Mrz 2005)

org.jdom.input.SAXBuilder#setValidating() auf true setzen


----------



## PhantomXXL (25. Mrz 2005)

also irgendwie is das dem builder völlig egal, er gab zwar ne nette IOException bei falschem doctype link, aber was da nu drin steht juckt ihn nich:


```
<!ELEMENT TCD ( (TEMPLATE|CLIENT)?, SERVER )>
<!ATTLIST TCD verssion CDATA #REQUIRED>
```

ansich müsste er dan ja irgendwie schreien das verssion nicht vorhanden ist, weil ja version dasteht.


----------



## PhantomXXL (25. Mrz 2005)

hat sich erledigt, hab nur vergessen neu zu kompilieren *Gg*


----------



## PhantomXXL (25. Mrz 2005)

ok neue frage zum thema 

die zwei zeilen die ich vorher aus der dtd kopiert haben muckt die erste irgendwie auf:
Error on line 4: Element type "client" must be declared.

jedoch ist das doch oder verknüpft mit dem template und das ist definitiv vorhanden

```
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tcd SYSTEM "tcd.dtd">
<tcd version="1.17">
<template>
...
```


----------



## Bleiglanz (29. Mrz 2005)

TCD  (TEMPLATE|CLIENT)

du musst auch das Element CLIENT in der DTD spezifizieren (wie überhaupt JEDES Element, das in deinem Instanzdokument vorkommt)

BTW: Gross- und Kleinschreibung bei Elementnamen beachten...


----------



## PhantomXXL (29. Mrz 2005)

PhantomXXL hat gesagt.:
			
		

> ```
> <!ELEMENT TCD ( (TEMPLATE|CLIENT)?, SERVER )>
> <!ATTLIST TCD verssion CDATA #REQUIRED>
> ```



hab ich ja auch, aber mittlerweile bin ich auf den blödsinn mit gross klein schreibung selbst draufgekommen 

und hab die falsche xml untersucht letzte woche


----------

