1

我正在尝试为 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,期待(教授*,讲师?),得到(讲师教授教授)”。不是 * 表示任何元素个数?为什么会报错?

4

2 回答 2

3

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

是的,但,正在指定订单。您的模型(Professor* , Lecturer?)表示 zero 或 moreProfessor 后跟zero 或 one Lecturer。XML 发现 1Lecturer后跟 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 回答