2017-08-07 3 views
-2

der angegebene Code ist:erzeugt DTD für einen bestimmten Code

<?xml version="1.0" encoding="UTF-8"?> 
<student id="12C042"> 

    <fName>John</fName> 

    <lName>Nelson</lName> 

    <plan> 
    <courses year="3"> 
     <course> 
      <name> Extensible Markup Language</name> 
      <shortName>XML</shortName> 
      <record> 
       <grade>30</grade> 
       <date>12-Jan-2017</date> 
      </record> 
     </course> 

     <course> 
      <name>Object Oriented Concepts and Unified Modeling Language</name> 
      <shortName><![CDATA[OOP & UML]]></shortName> 
     </course> 
    </courses> 
    </plan> 
</student> 

Ich brauche eine DTD XML-Datei für diese zu erzeugen.

machte ich einen Code:

<!ELEMENT student (fName,lName,plan)> 
<!ELEMENT fName (#PCDATA)> 
<!ELEMENT lName (#PCDATA)> 
<!ELEMENT plan (courses)> 
<!ELEMENT courses (course?)> 
<!ELEMENT course (name,shortName*,record*)> 
<!ELEMENT name ANY> 
<!ELEMENT shortName ANY> 
<!ELEMENT record (grade,date)> 
<!ELEMENT grade ANY> 
<!ELEMENT date ANY> 
<!ATTLIST student id NMTOKEN #REQUIRED> 
<!ATTLIST courses year CDATA #IMPLIED> 

es mir einen Fehler wirft:

Error:                   
    Public ID: null                
    System ID: file:/home/p/student.xml          
    Line number: 20                
    Column number: 13                
    Message: The content of element type "courses" must match "(course)".   
error 
+0

Kurs wird zweimal in der DTD definiert. Das ist natürlich nicht erlaubt, wie die Fehlermeldung sagt. – Markus

+0

Ich löschte die Zeile jetzt zeigt es mir. Fehler: öffentliche ID: null System-ID: file: /home/p13290/student.xml Zeilennummer: 20 Spaltennummer: 13 Nachricht: Der Inhalt des Elementtypen "Kurse" Must-match "(natürlich)". Fehler –

Antwort

0

Ihre aktuelle Erklärung für courses sagt, dass course erlaubt ist entweder Null oder ein Mal (das ist, was die ? meint).

Ihr XML hat zwei course Elemente.

Sie müssen die Deklaration ändern, um entweder course null oder mehrmals (*) oder ein oder mehrere Male (+) zuzulassen.

Beispiel ...

<!ELEMENT courses (course)*> 
Verwandte Themen