为什么这样不报错?

为什么这样不报错?

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT hr (employee+)>
<!ELEMENT employee (name,age,salary,department)>
<!ATTLIST employee no CDATA "">
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统 -->
<!-- XML文件中,所有的标签和属性都是可以自定义的 -->
<hr>
    <employee no="3309">
        <name>张三</name>
        <age>31</age>
        <salary>4000</salary>
        <department>
            <dname>会计部</dname>
            <address>XX大厦-B103</address>
        </department>
    </employee>
    
    <employee no="3310">
        <name>李四</name>
        <age>24</age>
        <salary>3000</salary>
        <department>
            <dname>工程部</dname>
            <address>XX大厦-B104</address>
        </department>
    </employee>
</hr>

我没有添加department的dtd啊,为什么不报错?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。这个xml写的规则是符合这个dtd约束的,所以不报错。在xml中引入<!DOCTYPE hr SYSTEM "hr.dtd">后,eclipse会自动帮我们校验,但是,只会对语法错误做提示。对于没有定义的语法,eclipse不会报错。你没有定义department标签的规则,department标签内的语法编译器就不校验了。

同学的dtd文件中定义了:

<!ELEMENT employee (name,age,salary,department)>

这相当于告诉编译器,employee标签内需要有name,age,salary,department四个子标签,并且按顺序排列。同学的xml显然符合这一点。所以不报错。

如果还有疑问,可以继续提问。如果解答了同学的疑问,望采纳~

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师