一,XML简介·
xml全称为 extensible markup language,可扩展性标记语言,所有浏览器都有xml的解析引擎,测试xml文件时,可直接在浏览器中执行。xml主要用来存储数据和传输数据(而非展示数据),是两个服务器进行数据交互的一种方式。
二,XML基本语法规范
1,文件的扩展名是.xml;
2,文件的第一行必须是,(其中可包含一些属性值);
3,xml中只能有一个根标签,同时标签严格区分大小写,以及每个标签须有结束标签;
4,xml文件中为自定义标签;
范例:演示xml文件的基本格式(bookstore.xml)
水浒传
施耐庵
60
三,XML基础知识
<一>xml注释:
<二>文档声明的属性值:
1,所有的属性值必须用英文双引号括起来;
2,version:版本号,目前流行的任然是1.0;
3,encoding:声明编码格式;
4,standalone:说明文档是否独立,即是否依赖于其他文档;
<三>实体:
xml文件不能解析特殊字符,如<,>,=等等,同时对表达式不做处理,仅仅存储它们;因此在xml中有一套对应的实体转换规则:
最常用的转义字符列表
字符 说明 实体
空格
< 小于 <
> 大于 >
& &符号 &
" 双引号 "
© 版权 ©
® 已注册商标 ®
™ 商标(美国) ™
× 乘号 ×
÷ 除号 ÷
<四>自定义标签规范
1,不能以数字或标点符号开始;
2,名称不可以包含数字和其他字符;
3,不能以xml开始;
4,不可以包含空格;
<五>专业术语与xml文件的数据结构
xml数据是以树结构来进行存储的,根节点又称为根元素,即根标签,从根节点往下,依次称为一级元素,二级元素,元素(element)也可称为节点(node)
四,约束文档
如果没有约束,我们的数据将会非常混乱无章,如下面的一个xml文件:
水浒传
施耐庵
60
红楼梦
曹雪芹
读此书获益匪浅
上面的书没有remark标签,但是下面的书却有,而且《红楼梦》没有写明价格。这种数据不一致的情况需要我们使用一个约束来规范我们的数据。xml有两种约束:DTD约束和Schema约束。
<一>DTD约束
DTD,Document Type Difinition,文档约束,这种约束是使用最广泛的约束(时间原因),但是功能不如Schema约束。
1,DTD约束类型
有两种约束,一种是将约束写在一个文件扩展名为.dtd中,然后通过在xml文件中引入外部DTD约束,一种是直接在xml文件中写DTD约束。
2,DTD约束语法(以范例讲解)
<1> 约束写在一个文件扩展名为.dtd中
小编为了方便读者的阅读,对重点进行了标红。这是一个bookstore.dtd文件:
下面讲解上述范例:
@约束语法的基本格式是:
@第一行:.dtd文件本质还是一个xml文件,因此第一行代码任然是不变的;
@第二行:对根元素进行约束,约束了根元素的子元素有哪些,每个子元素出现的个数(默认为一次)————
每个子元素后可跟数量字符:
+ 1~n次
? 0~1次
* 0~n次
@第三行:对一级子元素进行约束,约束一级子元素的元素(即二级元素)有哪些以及可出现次数
@第四行~~第六行:对二级元素进行约束,约束了数据类型,在DTD约束中只有一种类型,即PCDATA,字符串类型(另外的一种是声明为 ANY,ANY声明的元素可包含可解析数据组合,其语法格式为 )。———— ,这儿也可进行嵌套,即在括号()中写三级元素。
@第七行:这一行是对book元素的属性进行约束,属性约束语法格式如下:
属性类型及默认值见下表(常用的塔配是 ID+#REQUIRED):
CDATA | 值为字符数据(字符串) |
(en1|en2|...) | 值为枚举列表中的一个 |
ID | 值为唯一的id,不能重复,不能以数字开头 |
值 | 属性的默认值 |
#REQUIRED | 属性值是必须的 |
#IMPLIED | 属性值不是必须的 |
#FIXED value | 属性值是所给定的值 |
<2>直接在xml文件中写DTD约束
语法格式(写在xml文档的第二行): ]>
]>
水浒传
施耐庵
60
红楼梦
曹雪芹
75
悲惨世界
雨果
30
3.引入外部DTD文档约束
当在外部写好约束后,需要将约束引入需要约束的xml文件(写在第二行),有两种引入方式。
<1>引入本地外部文件约束:
语法:
<2>引入网上的外部文件:
语法:
<二>Schema约束
Schema约束便不是为了替代DTD而出生的,只是作为优化完善而诞生的。Schema约束功能相比DTD是非常强大的存在,然而强大的东西就会很复杂。Schema约束相比DTD约束有以下优势
①面向对象,可以继承,扩展;②能够对数据详细的约束,以及元素出现的顺序,次数,还支持正则表达式等·;③支持命名空间,在不同的命名空间可以有重复元素。
Schema约束只能写在外部文件中,且文件扩展名为.xsd。
为了方便读者快速入门掌握,小编依旧以范例讲解。
1,对Schema头部约束的讲解
第一行代码无需多言。第二行中现在来依次讲解。
<1> xmlns="http://www.w3.org/2001/XMLSchema" : 显示schema约束中用到的元素和数据类型来自命名空间“http://www.w3.org/2001/XMLSchma”,有时这行代码也会写成——————“xmlns:xs="http://www.w3.org/2001/XMLSchema"”,显示schema约束中用到的元素和数据类型来自命名空间“http://www.w3.org/2001/XMLSchma”,同时元素名前需带有前缀 xs:。(此行代码固定)
<2>targetNamespace="http://www.example.org/students" : 声明被此schema定义的元素属于命名空间"http://www.example.org/students",注意只是声明,而不能说明当前schema默认使用该命名空间。(example部分可自己写,students是根标签名)
<3>xmlns:tns="http://www.example.org/students" : 默认命名空间。
<4>elementFormDefault="qualified" : 指出任何XML实例文档所使用的且在此schema中声明过的元素必须被命名空间限定。(此行代码固定)
2,Schema约束的具体约束
只能为男或者女
年龄必须在15~50岁
主修科目最少为一门,最多为三门
<1>标签讲解
①
②
③&
④
⑤
⑥ 3,引入Schema约束 在xml文件的第二行写下面的代码: 这一期写了四个小时,希望能给读者带来帮助,也希望兄弟们给小编点支持!!!下一期写如何解析XML文档!!! 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)