2017-10-17 8 views
0

Ich versuche, eine XML-Datei zu erstellen, die Informationen zu einer Liste von Büchern enthält, die Elemente verwenden, die in einer DTD-Datei erstellt wurden, alle Elemente wurden korrekt referenziert (ich denke?). Beim Versuch, eine XML-Datei mit den Elementen aus der DTD-Anforderung zu erstellen, wird ein Fehler angezeigt. "Ein Wurzelelement muss angegeben werden". Gibt es ein Problem mit meinem Code oder ist es möglich, obwohl unwahrscheinlich, ein Problem mit Eclipse (d. H. Ungeeignete Version, fehlendes Plugin)?Was könnte ein Grund dafür sein, dass ein Root-Element bei der versuchten Erstellung eines XML mit einer ImDTD durch Eclipse möglicherweise nicht angegeben wurde?

<?xml version="1.0" encoding="UTF-8"?> 
<!ELEMENT bookList(book)*> 
<!ELEMENT book((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)> 

<!ELEMENT author(#PCDATA)> 

<!ELEMENT editor(#PCDATA)> 

<!ELEMENT contributors(#PCDATA)> 

<!ELEMENT title(#PCDATA)> 

<!ELEMENT publisher(#PCDATA)> 

<!ATTLIST isbn_num id_code ID #REQUIRED> 

<!ELEMENT price(#PCDATA)> 
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED> 

<!ELEMENT vol(#PCDATA)> 

<!ELEMENT edition(#PCDATA)> 

Verion verwendet: Eclipse-Java EE IDE, Oxygen.1 Veröffentlichung (4.7.1)

+1

Welchen Befehl verwenden Sie genau, um ein Dokument zu erstellen? Erwartet der Befehl einen Elementtypnamen für das Stammelement als Parameter? Erwartet es, dass die DTD die Form 'annimmt? –

+0

Was genau machst du mit dieser DTD, wenn du diesen Fehler bekommst? –

Antwort

0

Ihre XML braucht ein Root-Element, und einen Link zu der DTD-Datei. So etwas wäre das Endergebnis für eine externe DTD.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE root SYSTEM "file.dtd"> 
<root> 
<element1>a</element1> 
<element2>b</element2> 
<element3>c</element3> 
<element4>d</element4> 
</root> 

"root" könnte alles sein, was Sie wollen.

Es sieht so aus, als würden Sie eine externe DTD erstellen. In diesem Fall benötigt Ihre Datei nicht die XML-Definition.

<!ELEMENT bookList(book)*> 
<!ELEMENT book((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)> 
<!ELEMENT author(#PCDATA)> 
<!ELEMENT editor(#PCDATA)> 
<!ELEMENT contributors(#PCDATA)> 
<!ELEMENT title(#PCDATA)> 
<!ELEMENT publisher(#PCDATA)> 
<!ATTLIST isbn_num id_code ID #REQUIRED> 
<!ELEMENT price(#PCDATA)> 
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED> 
<!ELEMENT vol(#PCDATA)> 
<!ELEMENT edition(#PCDATA)> 

Wenn Sie versuchen, eine interne DTD zu machen.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE bookList [ 
<!ELEMENT bookList(book)*> 
<!ELEMENT book((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)> 
<!ELEMENT author(#PCDATA)> 
<!ELEMENT editor(#PCDATA)> 
<!ELEMENT contributors(#PCDATA)> 
<!ELEMENT title(#PCDATA)> 
<!ELEMENT publisher(#PCDATA)> 
<!ATTLIST isbn_num id_code ID #REQUIRED> 
<!ELEMENT price(#PCDATA)> 
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED> 
<!ELEMENT vol(#PCDATA)> 
<!ELEMENT edition(#PCDATA)> 
]> 
<bookList>......</bookList> 
Verwandte Themen