2017-08-07 6 views
-2

le code donné est:générer DTD pour un code donné

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

Je dois générer un fichier xml DTD pour cela.

J'ai fait un 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> 

il me jette une erreur:

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

cours est défini deux fois dans votre DTD. Ce n'est évidemment pas autorisé comme le message d'erreur dit. – Markus

+0

j'ai supprimé la ligne maintenant il me montre. Erreur: ID public: null ID système: fichier: /home/p13290/student.xml Numéro de ligne: 20 Numéro de colonne: 13 Message: Le contenu du type d'élément «courses» doit correspondre à «(cours)». erreur –

Répondre

0

Votre déclaration actuelle pour courses dit que course est autorisé soit zéro ou une fois (c'est ce que le ? veux dire).

Votre fichier XML contient deux éléments course.

Vous devez modifier la déclaration pour autoriser course zéro ou plusieurs fois (*) ou une ou plusieurs fois (+).

... Exemple

<!ELEMENT courses (course)*>