我正在尝试为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,期待(教授*,讲师?),得到(讲师教授教授)'。不是*表示任意数量的元素?为什么会出错?
答案 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