DTD简单用法和案例
语法简介
利用DTD中的<!ELEMENT>标签,可以定义XML中允许出现的节点及数量
<!--定义hr节点下只允许出现一个employee子节点-->
<!ELEMENT hr (employee)>
<!--hr节点下最少出现一次employee节点-->
<!ELEMENT hr (employee+)>
<!--hr节点下可出现任意个employee节点-->
<!ELEMENT hr (employee*)>
<!--hr节点下最多出现一次employee节点-->
<!ELEMENT hr (employee?)>
<!--employee节点下必须包含以下四个节点,且按顺序出现-->
<!ELEMENT employee (name,age,salary,department)>
<!--定义name标签体只能是文本,#PCDATA代表文本元素-->
<!ELEMENT name (#PCDATA)>
DTD属性的定义:<!ATTLIST 节点名 属性名 CDATA "默认值">
<!ATTLIST employee no CDATA "">
XML使用DTD:<!DOCTYPE 根节点 STSTEM "dtd文件路径">
<!--hr.xml使用hr.dtd-->
<!DOCTYPE hr STSTEM "hr.dtd">
使用示例
hr.dtd:
<?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 department (dname,address)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>
hr.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!--人力资源管理系统-->
<hr>
<employee no="3309">
<name>张三</name>
<age>23</age>
<salary>7000</salary>
<department>
<dname>会计部</dname>
<address>XX大厦-B401</address>
</department>
</employee>
<employee no="3310">
<name>李四</name>
<age>27</age>
<salary>10000</salary>
<department>
<dname>研发部</dname>
<address>XX大厦-B402</address>
</department>
</employee>
</hr>