目录
什么是DTD?
文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。它是标准通用标记语言(SGML)和可扩展标记语言(XML)1.0版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。文档类型定义也可用做保证标准通用标记语言、可扩展标记语言文档格式的合法性,可通过比较文档和文档类型定义文件来检查文档是否符合规范,元素和标签使用是否正确。文件实例提供应用程序一个数据交换的格式。
PS:简而言之,DTD就是用来约束XML文档的,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的。
什么是XML?
XML,Extensible Markup Language,扩展性标识语言。文件的后缀名为.xml。就像HTML的是用来显示数据的,xml的作用是传输和存储数据的。
XML是用来干嘛的?
其实说白了,xml就是便于不同应用、不同平台之间的数据共享和通信。
如下图所示:
⭐具体点的作用为:
(1)可作为一种简单的数据库,存储并检索数据;
(2)传输约定格式的文件;
(3)做软件的配置文件。【配置文件:保存软件设置的文件】
XML的亲戚 :
1.XML的好哥哥——HTML
①我们来看看他们的出生顺序:
其实XML的出生就是为了完善HTML的缺陷与局部性。
②在使用方面的区别:
比较内容 | HTML | XML |
作用 | 显示数据 | 传输和存储数据 |
语法 | 无右述要求 | 要求嵌套 、配对 ,并遵循DTD的树状结构 |
空格 | 当输入多个时只会显示 一个 | 输入几个则显示几个 |
与数据库的关系 | 无直接联系 | 与关系型和层状数据库均可对应和转换 |
大小写的敏感区分 | 不区分 | 严格区分 |
2.XML的好闺蜜——JSON
这样的关系是不是更加容易理解:哥哥是一个妈生的,但是闺蜜就不是。
JSON,Javascript Object Notation,js对象表示法。作用也是存储和交换文本信息。
两者比较:由于,JSON采用键值对的格式,所以,JSON比XML更小、更快 、更易解析,so,也是更受欢迎。
两者的作用范围:JSON适用于简单的传值,XML适用于更广阔的传值。
XML的数据结构——树状结构:
注意:就像一棵树只有一个根,XML只能有一个根元素。
XML的标准格式:
元素定义:
1.在XML中加入DTD声明:
<!DOCTYPE root[]>
2.元素的分类:
①空元素
<!ELEMENT element-name EMPTY>
②文本元素
<!ELEMENT element-name (#PCDATA)>
③混合元素
<!ELEMENT element-name (e1,e2)>
3.元素的限制:
ps:默认的次数是?
属性定义:
1.语法:
<!ATTLIST element-name att-name type desc>
2.属性类型:
ID | 要求文档中所有标记ID类型的属性值一定不能相同 |
Enumerated | 必须从枚举过的数据类型中选取,如(true|false),也可以不写类型,直接写成(true|false) |
CDATA | 该类型的属性值不能含有“<”和“””,但实体可以出现在该字符串中 |
IDREF | 用于表示XML文档中标记之间关系的一种类型,其值必须是文档中被定义好的某一标记的ID类型的属性值 |
IDREFS | 类似于IDREF,但可以引用多个ID,多个ID之间用空格隔开 |
3.属性描述:
- #REQUIRED:必填
- #IMPLIED:非必填
- 默认值:只有当属性类型为Enumerated的时候,desc才能够指定默认值。
案例:
<?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 (phone|email)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF #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>[email protected]</email>
</contact>
</person>
</persons>
好啦,我们下期再见,如果有没有补充到的地方欢迎大家在评论区留言!