XML 文件和dtd关联

XML file and dtd associated

我有一个简单的 xml 文件练习有问题。 这是名为 "Newfile.xml"

的 XML 文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="students.xsl"?>
<!DOCTYPE students SYSTEM "student.dtd">
  <student id="100026">
    <name>Joe Average</name>
    <age>21</age>
    <major>Biology</major>
    <results>
      <result course="Math 101" grade="C-"/>
      <result course="Biology 101" grade="C+"/>
      <result course="Statistics 101" grade="D"/>
    </results>
  </student>
  <student id="100078">
    <name>Jack Doe</name>
    <age>18</age>
    <major>Physics</major>
    <major>XML Science</major>
    <results>
      <result course="Math 101" grade="A"/>
      <result course="XML 101" grade="A-"/>
      <result course="Physics 101" grade="B+"/>
      <result course="XML 102" grade="A"/>
    </results>
  </student>
</students>

这是名为 "student.dtd" 的相关 dtd 文件,放在同一目录中

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT students (student+)>

<!ELEMENT student (name,age,major,results)>
<!ATTLIST student id CDATA #REQUIRED>

<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT major (#PCDATA)>
<!ELEMENT results (result+)>


<!-- <!ELEMENT result (grade,course)> -->
<!ELEMENT result (#PCDATA)>
<!ATTLIST result grade CDATA #REQUIRED>
<!ATTLIST result course CDATA #REQUIRED>

当我尝试使用 Eclipse 运行 Newfile.xml 时,它说: “错误第 14 行: 文档中跟在根元素之后的标记必须格式正确。"

哪里出错了? 你能帮帮我吗?

我认为这是因为你的 XML 格式不正确 - 你有一个 student 元素的开始和结束标记,然后另一个 student 元素也是如此,并且然后你有 结束标签 students 元素。

但是您没有 students 元素的开始标记。

顺便说一下,您在第二个 student 元素中也有 2 个 major 元素,但是您的 DTD 指定只允许有 1 个 major 元素。

尝试以下操作,根据您的 DTD 是有效的:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="students.xsl"?>
<!DOCTYPE students SYSTEM "student.dtd">
<students>
  <student id="100026">
    <name>Joe Average</name>
    <age>21</age>
    <major>Biology</major>
    <results>
      <result course="Math 101" grade="C-"/>
      <result course="Biology 101" grade="C+"/>
      <result course="Statistics 101" grade="D"/>
    </results>
  </student>
  <student id="100078">
    <name>Jack Doe</name>
    <age>18</age>
    <major>Physics</major>
    <results>
      <result course="Math 101" grade="A"/>
      <result course="XML 101" grade="A-"/>
      <result course="Physics 101" grade="B+"/>
      <result course="XML 102" grade="A"/>
    </results>
  </student>
</students>