一、XML简介
1.1 什么是XML?
- XML 指可扩展标记语言(EXtensible Markup Language)。
- XML 的设计宗旨是传输数据,而不是显示数据。
- XML 标签没有被预定义。您需要自行定义标签。
- XML 是 W3C 的推荐标准。
1.2 XML的作用
1. 数据交互
XML可以用于将数据从一个应用程序传输到另一个应用程序。由于XML具有与平台无关的特性,因此它非常适合在不同的系统之间进行数据交换。
2. 配置
XML是一种常用于表示数据结构的标记语言,因此它也可以被用作建模(设计模式+反射) 和配置文件。
1.3 标准的XML格式
- 有且只有一个根元素
- XML标签严格区分大小写
- 正确使用结束标签
- 正确嵌套标签
- XML 属性值必须加双引号
- 使用合法的标签名
- 定义有效属性
- 在XML中 空格会被保留
实例:
<?xml version="1.0" encoding="UTF-8"?><!-- XML声明 --> <!-- 根元素 --> <persons> <person pid="p1" sex="男" nickname="小黑子" parent="p2"> <name>绿师函</name> <age>21</age> <contact> <phone>12345678</phone> </contact> <br/> </person> <person pid="p2"> <name>ikun</name> <age>35</age> <contact> <email>123@qq.com</email> </contact> </person> </persons><!-- 结束标签 -->
这就是一个'形式良好'的标准XML格式👍
二、 DTD(XML文档类型定义)
2.1 XML DTD介绍
XML DTD 代表“XML文档类型定义”。它用于通过指定可以出现的元素和属性,是用来定义XML文档的结构的。
DTD可以是内部或外部的。内部DTD在XML文档中定义,而外部DTD存储在单独的文件中,并使用DOCTYPE声明在XML文档中引用。
外部DTD引入示例:
<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
以下是一个内部DTD的声明示例:
<!DOCTYPE persons [ <!ELEMENT persons (person+)> <!ELEMENT person (name, age, contact,br?)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT contact (phone|email)> ]>
2.2 元素定义
2.2.1 元素命名规范
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母 xml(或者 XML、Xml 等等)开始
- 名称不能包含空格
2.2.2 元素分类
1. 空元素
<ELEMENT element-name EMPTY >
<br/>
2. 文本元素
<ELEMENT element-name (#PCDATA)>
<name>绿师函</name>
<age>21</age>
3. 混合元素
<ELEMENT element-name (元素1 , 元素2) >
<person pid="p2">
<name>ikun</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
2.2.3 元素的限制
1.( , )与( | )非
( , )表示必须存在, ( | )表示可以存在也可不存在
2. 次数
- 0 ~ 1 表示 : ?
- 0 ~ N 表示 :*
- 1 ~ N 表示 :+
2.3 属性定义
2.3.1 语法
<! ATTLIST element-name
arr_name type(类型) #REQUIRED (属性描述)
······
>
2.3.2 属性类型
- ID (表示元素的唯一标识符)
- ( 男 | 女 ) '默认值'
- CDATA (表示文本数据)
- IDREF (表示对元素的引用)
2.3.3 属性描述
- #REQUIRED 必填
- #IMPLIED 非必填
- ' 默认值 ' (只有type为(男|女)类型时,desc才可以用默认方式)
2.4 一个良好标准格式的实例
<?xml version="1.0" encoding="UTF-8"?><!-- XML声明 --> <!DOCTYPE persons [ <!ELEMENT persons (person*)> <!ELEMENT person (name, age, contact, br?)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT contact (phone|email)> <!ELEMENT phone (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT br EMPTY> <!ATTLIST person pid ID #REQUIRED sex (男|女|未知) '未知' nickname CDATA #IMPLIED parent IDREF #IMPLIED > ]> <!-- 根元素 --> <persons> <person pid="p1" sex="男" nickname="小黑子" parent="p2"> <name>绿师函</name> <age>21</age> <contact> <phone>12345678</phone> </contact> <br /> </person> <person pid="p2"> <name>ikun</name> <age>35</age> <contact> <email>123@qq.com</email> </contact> </person> </persons><!-- 结束标签 -->
到这里就本章内容就结束了,后续会持续更新内容,有待完善的欢迎大佬们留言🥰!