# XML Buddy liest DTD evtl falsch aus?



## ven000m (9. Jul 2006)

Hallo,

folgende DTD:



```
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT auftragsformular (kunde,position+)>
<!ATTLIST auftragsformular auftragsnummer CDATA # REQUIRED auftragsdatum CDATA #REQUIRED kundennummer CDATA #REQUIRED>
<!ELEMENT kunde (name?,strasse?,plz?,ort?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT ort (#PCDATA)>
<!ELEMENT strasse (#PCDATA)>
<!ELEMENT position (#PCDATA)>
<!ELEMENT erlaeuterung (#PCDATA)>
<!ATTLIST position artikelnr CDATA #REQUIRED anzahl CDATA #REQUIRED>
```

Sollte eigentlich zu diesem Ergebnis führen:


```
<?xml version="1.0" encoding="ISO-8859-2"?>

<auftragsformular auftragsnummer="1234" auftragsdatum="07.04.05"
	kundennummer="JB007">
	<kunde></kunde>
	
	<position artikelnr="12345" anzahl="3"></position>
	<position artikelnr="12346">
		<erlaeuterung>Kunde konnte Menge noch nicht nennen</erlaeuterung>
	</position>
</auftragsformular>
```

Doch wenn ich in XML Buddy auf diese DTD Datei referenziere erzeugt er mir lediglich:


```
?xml version="1.0" encoding="ISO-8859-2" standalone="yes"?>
<!DOCTYPE auftragsformular SYSTEM "file:///C:/dtd.dtd">
<auftragsformular>
	
</auftragsformular>
```

Wieso ist das in der obigen XML Datei (<auftragsformular auftragsnummer="1234" auftragsdatum="07.04.05"
	kundennummer="JB007">
) nicht automatisch auch dabei, vor wenigen Wochen war es da noch, hab ich evtl. etwas übersehen in der DTD oder falsch abgeschrieben? Hab eigentlich alles mehrmals kontrolliert und mit dem Original verglichen, mhm!?

XML Buddy hats doch sonst immer erzeugt.

Gruß


----------



## foobar (9. Jul 2006)

In deiner XML-Instanz steht auch standalone auf yes d.h. daß die DTD ignoriert wird.

BTW die Processing-Instruction in der DTD kannst du dir sparen.


----------



## ven000m (9. Jul 2006)

Hallo,

auch mit Standalone weg, stellt sich kein anderes Ergebnis ein:


```
<?xml version="1.0" encoding="ISO-8859-2"?>
<!DOCTYPE auftragsformular SYSTEM "file:///C:dtd.dtd">
<auftragsformular>
	<kunde>
		<name></name>
		<ort></ort>
		
	</kunde>
	<position anzahl="" artikelnr="">
		
	</position>
</auftragsformular>
```

Es fehlen beim Auftragsformular die Attribute ???:L .

Gruß


----------



## foobar (9. Jul 2006)

Also mein XML-Buddy hat auch noch nie selbstständig Attribute eingefügt oder ähnliches. Wenn du wirklich professionell mit XML arbeiten willst/mußt guck dir mal XMetal oder XmlSpy an, die können so ziemlich alles.


----------



## ven000m (9. Jul 2006)

Mhm, also an der DTD Definition liegts also definitiv nicht, die Attlist ist richtig?


Ich sehe gerade das die ursprüngliche XML Datei auch gar nicht wirklich von XML Buddy erzeugt wurde, sondern von mir vom Papier abgeschrieben wurde und in Eclipse eingetragen wurde:



> <?xml version="1.0" encoding="ISO-8859-2"?>
> 
> <auftragsformular auftragsnummer="4711" auftragsdatum="07.04.05"
> kundennummer="JB007">
> ...



Das erkennt man daran, dass die fettmarkierte Zeile ja keine *Anzahl *enthält und somit gar nicht _valid _sein kann. Ergo: Kann sie auch nicht von XML Buddy kommen, was ich vorher nicht wusste, weil sie einige Wochen in Eclipse brach lag.

P.S Verstehen tu ich's aber dennoch nicht, XML Dateien anhand von DTD Definitionen zu erzeugen kann nämlich auch das kostenlose Plugin von XMLBuddy. Irgendwie komisch.

Gruß


----------

