XML Buddy liest DTD evtl falsch aus?

Status
Nicht offen für weitere Antworten.

ven000m

Bekanntes Mitglied
Hallo,

folgende DTD:


Code:
<?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:

Code:
<?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:

Code:
?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

Top Contributor
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

Bekanntes Mitglied
Hallo,

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

Code:
<?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

Top Contributor
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

Bekanntes Mitglied
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">
<kunde></kunde>

<position artikelnr="12345" anzahl="3"></position>
<position artikelnr="12346">
<erlaeuterung>Kunde konnte Menge noch nicht nennen</erlaeuterung>
</position>
</auftragsformular>

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ß
 
Status
Nicht offen für weitere Antworten.

Oben