1

I'm trying to write a DTD for an XML file.Here it is : https://prod-c2g.s3.amazonaws.com/db/Winter2013/files/courses-noID.xml

Here's my DTD

    <!ELEMENT Course_Catalog (Department*) >
<!ELEMENT Department (Title*, Chair*, Course*) >
<!ATTLIST Department Code CDATA #REQUIRED >
<!ELEMENT Title ANY >
<!ELEMENT Chair (Professor) >
<!ELEMENT Professor (First_Name, Middle_Initial?, Last_Name) >
<!ELEMENT First_Name ANY >
<!ELEMENT Last_Name ANY >
<!ELEMENT Course (Title, Description?, Instructors, Prerequisites?) >
<!ATTLIST Course Number CDATA #REQUIRED Enrollment CDATA #IMPLIED >
<!ELEMENT Description ANY >
<!ELEMENT Instructors (Professor*, Lecturer?) >
<!ELEMENT Lecturer (First_Name, Middle_Initial?, Last_Name) >
<!ELEMENT Middle_Initial ANY >
<!ELEMENT Prerequisites (Prereq*)>
<!ELEMENT Prereq ANY >

Well it looks almost fine but there is a slight error.It says 'validity error : Element Instructors content does not follow the DTD, expecting (Professor* , Lecturer?), got (Lecturer Professor Professor )'.Isn't * means any number of elements?Why is there an error?

4

2 に答える 2

3

* は任意の数の要素を意味しますか?なぜエラーが発生するのですか?

はい。ただし、,は注文を指定しています。あなたのモデル(Professor* , Lecturer?)は、 0 個以上のProfessor 後に0 個または 1 個が続くことを意味しますLecturer。XML は、1 のLecturer後に 2 が続くオカレンスを検出しましたProfessor

このモデルは である可能性があります(Lecturer,Professor+)が、他のInstructors要素がどのように見えるかによって異なります。(Lecturer,Professor+)必要に応じて「緩める」ことから始めます。

于 2013-01-24T19:31:01.973 に答える
0

おそらく、最初に DTD を作成する必要がありました ... しかし ...

DTD ジェネレーターを含む Stylus Studio の試用版をダウンロードしてみませんか。 http://www.stylusstudio.com/dtd%5Fgenerator.html

于 2013-01-24T19:24:59.600 に答える