生成格式良好的XML文档时过早结束文件错误

时间:2017-06-27 06:15:00

标签: xml

以下是我的问题陈述:

XYZ学校想存储学生的详细信息 和xml文件中的人员。以下方案 有助于设计XML文档。人员将成为根标签。人员将获得每个人的姓名,年龄,性别,地址。 一个人可以是学生或工作人员。学生将有rollno,标准和部分。如果是员工,那么工作人员和主题。 每个人都必须拥有以下条目的地址 - doorno,街道,城市和州。

我写的代码如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE persons
[
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ELEMENT address (doorno,street,city,state)>
<!ELEMENT student (rollno,standard,section)>
<!ELEMENT rollno (#PCDATA)>
<!ELEMENT standard (#PCDATA)>
<!ELEMENT section (#PCDATA)>
<!ELEMENT staff (staffid,subject)>
<!ELEMENT staffid (#PCDATA)>
<!ELEMENT subject (#PCDATA)>
<!ELEMENT doorno (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>

] GT;

它给出错误 - 异常:文件过早结束。我是XML的新手,因此很难。帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我猜你正在使用什么来检查你的文件是抱怨它没有良好的形式,因为它没有根节点。在您的情况下,我希望根节点应该是人员,因此添加<persons/>将为您提供格式良好的文档,尽管它仍然无效。

您可以使用xmllint等验证工具来检查有效性。见Is there a difference between 'valid xml' and 'well formed xml'?

虽然您已指定DTD的根节点是人,但您实际上并未定义人员或人物元素。一个例子可能会让你走上正确的道路。 https://www.w3schools.com/xml/xml_dtd_intro.asp

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person [
<!ELEMENT person (student | staff)>
<!ELEMENT staff EMPTY>
<!ELEMENT student EMPTY>
<!ATTLIST person name CDATA #REQUIRED age CDATA #REQUIRED>
<!ATTLIST student rollno CDATA #REQUIRED>
]>
<person age="1" name="A">
<student rollno="20013456"/>
</person>