2016-11-28 1 views
0

Ich habe versucht, meine XML zu bekommen, nicht nur die DTD anzuzeigen, aber ich bekomme einen Fehler beim Versuch, meine DTD zu validieren, die Markup in dem Dokument vor dem Wurzelelement muss wohlgeformt sein. Ich bin mir nicht sicher, was ich falsch mache oder wie es funktioniert, damit beide Dateien funktionieren. Jede Hilfe wäre willkommen.Ich versuche, meine DTD und XML richtig zu arbeiten

DTD:

<!ELEMENT measurements (#PCDATA|distance|weight|volume)> 
    <!ELEMENT weight (#PCDATA)> 
    <!ELEMENT volume (#PCDATA)> 
    <!ELEMENT distance (#PCDATA)> 
    <!ATTLIST distance status (metric|imperial) #REQUIRED> 

XML:

<?xml version="1.0"?> 
    <!DOCTYPE measurements PUBLIC "-//American Sentinel//XML Applications//EN" "measurements.dtd"> 
    <measurement> 
     <weight>5</weight> 
     <volume>10</volume> 
     <distance>metric</distance> 
    </measurement> 

Antwort

1

In Ihrer DTD, die Erklärung für measurements muss sein:

<!ELEMENT measurements (#PCDATA|distance|weight|volume)*> 

Dies liegt daran, es gibt nur einen Weg, Erklären Sie mixed content.

Außerdem haben Sie in Ihrer DTD measurements (Plural) deklariert, aber in Ihrem XML verwenden Sie measurement (Singular). Sie müssen entweder die DTD oder das XML ändern. Wenn Sie die DTD ändern, vergessen Sie nicht, die Doctype-Deklaration in der XML zu ändern.

Eine andere Sache ist, dass das status Attribut wie erforderlich in Ihrer DTD deklariert wird.

Beispiel von festen DTD und XML ...

DTD

<!ELEMENT measurements (#PCDATA|distance|weight|volume)*> 
<!ELEMENT weight (#PCDATA)> 
<!ELEMENT volume (#PCDATA)> 
<!ELEMENT distance (#PCDATA)> 
<!ATTLIST distance status (metric|imperial) #REQUIRED> 

XML

<!DOCTYPE measurements PUBLIC "-//American Sentinel//XML Applications//EN" "measurements.dtd"> 
<measurements> 
    <weight>5</weight> 
    <volume>10</volume> 
    <distance status="metric"/> 
</measurements> 
+0

Vielen Dank, dass auf jeden Fall hilfreich war und ist auf jeden Fall zu schätzen. –

Verwandte Themen