以下 XML 的 DTD 给出错误

The DTD for the following XML gives error

At a school, there are many classes and the following elements are identified.

我使用VS 2008创建了XML和DTD。但是DTD的第一行有一个错误。

<!DOCTYPE school [
  <!ELEMENT school (principal|ClassTeacher)*>
  <!ELEMENT principal (name,age,address)>
  <!ELEMENT name    (#PCDATA)>
  <!ELEMENT age     (#PCDATA)>
  <!ELEMENT address  (#PCDATA)>
  <!ELEMENT ClassTeacher (cno,td*,nos)>
  <!ELEMENT cno   (#PCDATA)>
  <!ELEMENT td (name,dob)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT dob (#PCDATA)>
  <!ELEMENT nos (#PCDATA)>
]>

<school>
  <principal>
    <name>sdasd</name>
    <age>456</age>
    <address>jhkh</address>
  </principal>

  <ClassTeacher>
    <cno>456</cno>
    <td>
      <name>gyj</name>
      <dob>fgd</dob>
    </td>
    <nos>45</nos>
  </ClassTeacher>
</school>

主要问题

主要问题是您声明了两次 name。删除其中一项声明以修复直接错误。

其他问题

<!ELEMENT school (principal|ClassTeacher)*>

这是“元素内容”声明的“选择列表”,这意味着 school 可以有多个 principal 或多个 ClassTeacher 子元素,但不能同时有两个子元素。参见 Element Type Declarations

尝试

<!ELEMENT school (principal, ClassTeacher*)>

这将要求 principal 是第一个元素,然后是任意数量(包括零)的 ClassTeacher 个元素。