编写XML文件的dtd约束
程序员文章站
2022-05-30 13:16:21
...
一、了解dtd中的语法规则
1、元素声明:
<!ELEMENT 元素名称 类别> <!ELEMENT 元素名称 (元素内容)>如:
<!ELEMENT factory EMPTY> ,表示空元素
<!ELEMENT id (#PCDATA)>,元素内容为普通的文本,也就是被解析的字符数据
<!ELEMENT 元素名称 (子元素名称1 | 子元素名称2)>,带有子元素的写法
<!ELEMENT 元素名称 (子元素名称1,子元素名称 2)>,带有子元素的写法
<!ELEMENT books (book+)>,相同的元素至少出现一次
<!ELEMENT books (book*)>,同元素不出现或者多次出现
<!ELEMENT books (book?)>,同元素不出现或者出现一次
2、属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>属性的默认值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的
如:
<!ATTLIST book
alias CDATA #REQUIRED>
二、写出想要的xml文件内容
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<factory name="北京出版社" />
<book alias="java">
<id>111111</id>
<name>java核心思想</name>
<author>张圣诞</author>
</book>
<book alias="linux">
<id>2222</id>
<name>linux私房菜</name>
<author>李四</author>
</book>
</books>
三、根据xml文件格式推导出dtd的编写
1、声明所有元素
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT books ()>
<!ELEMENT factory EMPTY>
<!ELEMENT book ()>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
2、区分复杂元素和简单元素
复杂元素:有子元素
简单元素:没有子元素
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT books (book+,factory?)+>
<!ELEMENT factory EMPTY>
<!ELEMENT book (id,name,author)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
3、给元素增加属性
<?xml version="1.0" encoding="UTF-8" ?>
<!-- book出现一次或者多次 -->
<!ELEMENT books (book+ | factory?)+ >
<!ELEMENT factory EMPTY>
<!-- name属性不是必须的 -->
<!ATTLIST factory
name CDATA #IMPLIED>
<!-- id、name、author必须出现一次 -->
<!ELEMENT book (id,name,author)>
<!-- alias属性是必须的 -->
<!ATTLIST book
alias CDATA #REQUIRED>
<!-- 元素内容是被解析的字符数据 -->
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
四、在xml文件中引用dtd
其中,xml文件是跟dtd文件放在一个目录下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE books SYSTEM "mydtd.dtd">
<books>
<factory name="北京出版社" />
<book alias="java">
<id>111111</id>
<name>java核心思想</name>
<author>张圣诞</author>
</book>
<book alias="linux">
<id>2222</id>
<name>linux私房菜</name>
<author>李四</author>
</book>
</books>
上一篇: XML——合法的文档构建XSD
下一篇: mysql 增删改查之外的操作