一、XML概述
1.什么是xml:
英文Extensible MarkUp Language,可扩展的标记语言。
* 可扩展的标记语言:在xml里面的标记是可以扩展的。
* xml版本号1.0 ,1.1
2.xml用途:它用来存储数据
* 1.作为系统与系统之间传输数据的格式
* 2.作为项目的配置文件
* 3.保存有结构关系型的数据。
比如:<china name="中国">
<province name="河北">
<city>衡水</city>
<city>保定</city>
----
</province>
-----
</china>
3.XML 和 html的比较:
1.xml文档的标记可以随意扩展,html的标记是预定义好的。
2.xml区分大小写,html不区分大小写。
3. html主要是用来显示数据的,xml是用来保存数据的。
4. html中,空格会自动过滤,而xml不会。
5. html中可以有多个根节点,在xml里面只有一个。
二、 XML语法
1.XML的文档声明:
语法:<?xml version="1.0" encoding="utf-8" standalone="yes"?>
属性: version 用来表示xml的版本号
encoding 用来表示xml的编码格式
standalone 用来表示xml文档是否依赖外部的文件。
注意:xml的文档声明一定放到第一行,第一列。
比如:
<?xml version="1.0" encoding="utf-8"?>
<china name="zhongguo">
<province name="hebei">
<city> hengshui</city>
</province>
</china>
2.XML元素定义:
xml文档由元素(标记)组成,元素由开始标记、属性、文本和结束标记组成。
标记可以嵌套,必须合理的嵌套,比如:
<a>
<b>bbbb</b>
</a>
错误的写法:
<a>
<b>bbbb</a>
</b>
3.属性定义:
语法:<province name="hebei">
属性对应的值要用""给括起来。
4.注释:
html的注释:<!-- html的注释-->
javaScript的注释:参照java的注释
xml的注释:<!--xml的注释-->
注意:
1. xml是区分大小写的。
2. xml的标记不能以数字或者_下划线开头。比如<1a>内容</1a>,<_a>内容<_a>,错误的写法
3. xml的标记不能以xml或者XML(大小写都不可以)等开头。
4. xml的标记里面不能包含空格等特殊符号,比如<a a>内容</a a>,<a:b>内容</a:b> 错误的写法。
三、 DTD 约束
1.什么是约束:
在xml文档中,咱们可以通过一个文件来约束xml文档中的内容规范,这个规范就是约束。
简单来说:约束就是规定了xml文件中可以写什么,不可以写什么。
为什么要有约束?
因为xml文件可以随意写,如果标记随意写,在解析xml文件时,程序员就不清楚xml文件中的标记具体表示什么含义
所以说用约束规范xml文件的书写。
2.DTD约束
什么是DTD:文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
比如:
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
3.DTD引入:
1.直接内嵌在xml文件中
语法:<!DOCTYPE 根元素名称 [dtd具体约束内容]>
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
]>
2.外部引入方式:
>>> 本地引入:
语法:<!DOCTYPE 书架 SYSTEM "book.dtd">
>>> 公网引入:
<!DOCTYPE 书架 PUBLIC "DTD名称" "DTD文件在公网的url">
4.DTD语法:
1.元素定义:
基本语法 <!ELEMENT 元素名称 元素内容>
元素内容对应的类型:
>>>普通的文本:#PCDATA
>>>子元素:比如说:(子元素1,子元素2,---)
>>>EMPTY:比如说 <book />
>>>ANY:代表任意内容,元素内容可以是普通的文本,也可以是子元素。
注意:
* 表示0个或者多个
+ 表示一个或者多个
| 任选一个
,表示子元素按顺序排列
? 表示可以出现0或者1
2.属性定义
语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
属性类型:
CDATA:属性值为任意文本数据;
CDATA,即Character Data(字符数据)。表示属性的类型为字符类型!
Enumerated:属性值必须是枚举列表中的一个;
定义中不会出现Enumerated关键字,定义枚举类型的属性需要给出枚举列表。
当属性值为枚举类型时,那么这个属性的取值必须是枚举列表中的一个值
ID:属性值必须是唯一的,并且属性值不能以数字开头;
一个元素最多只能有一个ID 属性,ID属性用来表示元素唯一性的唯一标识。ID属性就相当与元素的身份证号,必须是唯一标识!
IDREF:属性值必须是ID属性的值;
IDREF属性用来与其他元素建立关联关系,IDREF属性的值必须是另一元素的ID属性值
IDREFS:一对多;
设置说明:
#REQUIRED:表示属性是必须的;
#IMPLIED:表示属性是可选的,即这个属性可以不给出;
#FIXED
默认值
四、Schema约束
1.什么是Schema约束:它同DTD约束基本一样,也是用来规范xml文件内容的书写规范,只不过Schema的约束比DTD更加强大。
区别:
>>>DTD约束文件的后缀名dtd,机制采用自身的约束。
>>>Scheam约束文件的后缀名是xsd,它是基于xml语法格式。
2.名称空间:
名称空间的作用就是用来在xml文档中引入schema文件的,但是在一个xml文件中可以引入多个schema文件,就可以使用名称空间来区分不同的约束文件。
3.引入Schema文档:
第一种方式:通过名称空间来引入shcema文件,第二种:不通过名称空间引入。
4.Schema语法:
>>> 元素定义 >>>属性定义。