验证DTD时出错

时间:2013-01-24 19:13:36

标签: xml dtd

我正在尝试为XML文件编写DTD。这是:https://prod-c2g.s3.amazonaws.com/db/Winter2013/files/courses-noID.xml

这是我的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 >

它看起来几乎没问题,但是有一点点错误。它说'有效性错误:元素教师内容不遵循DTD,期待(教授*,讲师?),得到(讲师教授教授)'。不是*表示任意数量的元素?为什么会出错?

2 个答案:

答案 0 :(得分:3)

  

不是*表示任意数量的元素吗?为什么会出错?

是的,但,正在指定订单。您的模型(Professor* , Lecturer?)表示零个或多个Professor ,后跟零或一个Lecturer。 XML发现一个Lecturer后跟2 Professor

此模型可以是(Lecturer,Professor+),但这取决于其他Instructors元素的外观。从(Lecturer,Professor+)开始,根据需要“松开”。

答案 1 :(得分:0)

您可能应该首先编写DTD ......但是......

为什么不下载包含DTD生成器的Stylus Studio试用版。 http://www.stylusstudio.com/dtd%5Fgenerator.html