【问题标题】:Error validating DTD验证 DTD 时出错
【发布时间】:2013-01-25 03:31:01
【问题描述】:

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

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

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

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

    这个模型可能是(Lecturer,Professor+),但这取决于其他Instructors 元素的样子。以(Lecturer,Professor+) 开头并根据需要“松开”它。

    【讨论】:

    • 我也试过你的,但这次它给出了另一个错误,因为还有另一个(教授,讲师)元素。有什么办法可以摆脱订购吗?我也找了你的电子邮件,但是没找到:)
    • @JohnRock - 是的,请改用|。试试这个:(Professor|Lecturer)+
    【解决方案2】:

    你可能应该先写你的 DTD ......但是......

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

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 2011-11-23
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2016-07-18
      相关资源
      最近更新 更多