目录
什么是XML
XML是可扩展标记语言(eXtensible Markup Language)的缩写,是一种用于存储和传输数据的标记语言。与HTML类似,XML也是用标记符号来描述数据和数据的结构,但XML的标记不是预定义的,而是由用户自定义的,因此XML可以适用于许多不同的领域和应用。例如,XML可用于表示个人联系信息、企业业务流程、科学数据集等。由于XML的通用性和灵活性,它在Web应用程序、数据交换、配置文件和文档管理等方面得到广泛应用。
什么是dtd
DTD是文档类型定义(Document Type Definition)的缩写,是一种定义XML或SGML文档的结构和规范的语法。DTD规定了文档中允许出现的元素、属性以及它们之间的关系和顺序等约束和限制,使得文档有一个统一的结构和语法,以便于在不同的系统中进行互操作性。通过使用DTD,可以为XML或SGML文档创建一个标准的模板和验证工具,使得文档的结构和内容得到规范和约束,避免了出现语法错误和不一致性等问题。
标准的XML格式
- 1、有且只有一个根元素
- 2、XML标签大小正确区分
- 3、正确使用结束标签
- 4、正确使用嵌套标签
- 5、使用了合法的标签名字
- 6、定义有效的属性
如何在XML中加入DTD声明
<!DOCTYPE root[]>
XML中的三种元素
- 1、文本标签 <!ELEMENT element-name EMPTY>//空元素
- 2、空标签 <!ELEMENT element-name (#PCDATA)//文本元素
- 3、混合标签 <!ELEMENT element-name (e1,e2)//混合元素
XML中元素的限制
次数
- 0或者1:?
- 0或者n次:*
- 1到n次:+
具体的使用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (email+|phone+)>
<!ELEMENT br EMPTY>
<!ELEMENT email (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]
>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
我们在代码中还看到了每一个标签元素中还有一些属性,这些属性同样也收到dtd定义的规则约束
元素属性的规范定义
语法:<ATTLIST element-name att_name type desc> //只有在type为男女类型的时候,desc才可以使用默认的方式
属性类型:
- ID id类型
- (男|女|未知) "男" 这里的意思是默认就是男 选择类型
- CDATA 文本类型
- IDREF id的依赖
属性的描述
- #REQUIRED :必填
- #IMPLIED: 非必填
接下来我们看看完整的代码吧
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (email+|phone+)>
<!ELEMENT br EMPTY>
<!ELEMENT email (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女|未知) "男"
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]
>
<!-- DTD标签约束
三种元素类型
1、文本标签 <!ELEMENT element-name EMPTY>//空元素
2、空标签 <!ELEMENT element-name (#PCDATA)//文本元素
3、混合标签 <!ELEMENT element-name (e1,e2)//混合元素
元素的限制
次数
0或者1:?
0或者n次:*
1到n次:+
//元素属性的定义
语法:<ATTLIST element-name att_name type desc>
属性类型:
ID id类型
(男|女|未知) "男" 这里的意思是默认就是男 选择类型
CDATA 文本类型
IDREF id的依赖
reference 关联类型
属性的描述
#REQUIRED :必填
#IMPLIED: 非必填
-->
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>