以下XML的DTD错误

时间:2017-03-23 19:22:54

标签: xml validation xml-dtd

At a school, there are many classes and the following elements are identified.
  • 有一位校长,他有姓名,年龄和地址
  • 每个班级都有一名班主任
  • 每位班主任都持有以下信息

    • Class_number
    • Teacher_Details
    • Number_of_students
  • Teacher_details部分包含以下信息

    • TEACHER_NAME
    • DOB

    问题是上述信息的DTD文件

我使用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>

The DTD and XML with error in 1st line

1 个答案:

答案 0 :(得分:1)

主要问题

主要问题是您声明name两次。删除其中一个声明以修复立即错误。

其他问题

<!ELEMENT school (principal|ClassTeacher)*>

这是“元素内容”声明的“选择列表”,这意味着school可以包含多个principal或多个ClassTeacher子项,但不能同时包含两个<!ELEMENT school (principal, ClassTeacher*)> 。请参阅Element Type Declarations

尝试

principal

这将要求ClassTeacher是第一个元素,后跟任意数量(包括零)的void reverse(LL_t *L) { if (L->head->next == NULL) { return; } node_t *rest = L->head->next; reverse(rest); node_t *q = rest->next; q->next = rest; rest->next = NULL; } 元素。