【问题标题】:xml file does not report error, given a reference external dtd filexml文件不报错,给定参考外部dtd文件
【发布时间】:2017-09-01 15:32:53
【问题描述】:

我写了一个dtd文件来规范一个xml文件,但是当根据dtd文件中的定义写错了,我发现Eclipse没有导出任何错误。我对这两个文件进行了多次审查,但我自己没有发现任何错误。下面是两个简单的文件。任何人都可以帮助弄清楚我缺少什么或没有报告错误的原因吗?提前致谢。

这里是dtd文件,

<?xml version="1.0" encoding="UTF-8"?>
<--!no classNo or one classNo at most, at least one teacher-->
<!DOCTYPE school [
    <!ELEMENT school (class)>
    <!ELEMENT class (classNo?,teacher+)>
    <!ElEMENT classNo (#PCDATA)> 
    <!ElEMENT teacher (#PCDATA)>
]>

这里是xml文件,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE school SYSTEM "Teacher.dtd">

<school>
    <class>
        <classNo>Class 3</classNo>
        <teacher>Mary</teacher>
    </class>
</school>

如果我添加另一个 classNo 元素,则不会报告错误。在Eclipse中xml文件和dtd文件在同一个包中。

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    DTD 格式不正确。 DOCTYPE 声明应该只在 XML 文档中,而不是在 DTD 中。还有一些错别字(小写“l”而不是大写“L”;评论中的--!应该是!--)。

    XML 文档根据此 DTD 进行验证:

    <!ELEMENT school (class)>
    <!ELEMENT class (classNo?,teacher+)>
    <!ELEMENT classNo (#PCDATA)> 
    <!ELEMENT teacher (#PCDATA)>
    

    当然,您还必须确保在 Eclipse 中启用了验证(假设已安装 XML 编辑器和工具)。

    【讨论】:

    • 是的,没错。您帮助我发现了 DTD 文件中的 2 个错误。一种是 DOCTYPE 声明,另一种是注释格式。修改为您的后一切正常。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2015-10-13
    • 1970-01-01
    • 2021-12-07
    • 2020-02-15
    相关资源
    最近更新 更多