XML语法
一、 XML概述
- XML可扩展标记语言:在XML里面的标记是可以扩展的。
- XML用途:
- 存储数据
- 作为系统与系统之间的传输数据的格式
- 作为项目的配置文件
- 保存有结构关系型的数据
- xml与html的比较:
- xml文档的标记可以随意扩展,html的标记是预定义好的。
- xml区分大小写,html不区分大小写
- html主要是用来显示数据的,xml是用来保存数据的。
- html中,空格会自动过滤,而xml不会
- html中可以有多个根节点,在xml里面只有一个。
二、具体语法
(一)、XML文档声明
语法: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
属性:
- version:用来表示XML的版本号
- encoding:指定XML编码格式
- standalone:用来表示XML文件是否依赖外部的文件
注意:xml的文档声明一定放在第一行,第一列。
(二)、XML元素定义
语法: <元素名></元素>
(三)、属性定义
语法: <元素名 属性="属性值" 属性2="属性值2"></元素>
(四)、注释
语法:<!-- 这是一条注释-->
(五)、XML书写注意事项
- xml是区分大小写的
- xml的标记不能以数字或者_下划线开头。
- xml的标记不能以xml开头
三、XML文件DTD约束
约束:在xml文档中,可以通过一个文件来约束文档中的内容规范,这里的规范就是约束。
(一)、书写约束文件
<!ELEMENT 元素名称>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
(二)、约束文件引入语法
<!-- 第一种 内嵌式 -->
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
<!-- 第二种 外联式 -->
<!-- 引入本地DTD文件 -->
<!DOCTYPE 根元素名称 SYSTEM "本地文件地址">
<!-- 引入公共DTD文件 -->
<!DOCTYPE 根元素名称 PUBLIC "dtd名称" "本地文件地址">
(三)、案例演示
创建book.dtd约束文件
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
引入book.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!-- -->
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名>JavaWeb</书名>
<作者>某某</作者>
<价格>23</价格>
</书>
<书>
<书名>JavaWeb</书名>
<作者>某某</作者>
<价格>23</价格>
</书>
</书架>
(四)、DTD具体语法
1、元素定义
基本语法:
<!ELEMENT 元素名称 元素内容>
元素内容:
设置说明 | 含义 |
---|---|
PCDATA | 表示元素中嵌套的内容是普通文本 |
子元素 | 说明元素包含元素比如:(元素1,元素2,…) |
混合内容 | 表示元素既可以包含字符与数据,也可以包含子元素 |
EMPYTY | 表示元素不包含字符数据,也不包含子元素 |
ANY | 表示元素可以包含任何的字符数据,也可已包含子元素 |
内容中符号含义
符号 | 具体含义 |
---|---|
问号[?] | 表示该对象可以出现0次或1次 |
星号[*] | 表示该对象可以出现0次或多次 |
加号[+] | 表示该对象可以出现1次或多次 |
竖线 | 表示在列中的对象选择1个 |
逗号[,] | 表示对象必须按照顺序出现 |
括号[()] | 用于给元素进行分组 |
2、属性定义
语法
<!ATTLIST 元素名称 元素类型 元素值>
设置说明
设置说明 | 含义 |
---|---|
#REQUIRED | 表示与元素的该属性是必须的 |
#IMLIED | 表示元素可以包含该属性,也可以不包含 |
#FIXED | 表示一个固定的默认值 |
属性类型
属性类型 | 含义说明 |
---|---|
CDATA | 表明属性类型式字符数据,和#PCDATA相同 |
Enumerated | 枚举类型,在声明属性时,可以限制属性的取值可以从一个列表中选择. |
ID | 一个类型的属性用于唯一的表示xml文档元素. |
CDATA案例
四、XML文件Schema约束
(一)Schema和DTD的区别
区别:
Schema | DTD |
---|---|
文件后缀xsd | 文件后缀dtd |
(二)名称空间
名称空间的作用就是用来在xml文档中引入Schema文件的,但是在一个xml’文件里可以引入多个schena文件,就可以使用名称空间来区分不同的约束文件
(三)引入Schema文档
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
五、总结
现在我们在实际应用中很少有机会去自己书写xml文件都是直接复制引入就可以,只要了解简单的语法规范就可以