一,什么是xml【extensible markup language】
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,是一种允许用户
对自己的标记语言进行定义的源语言。
二,为什么使用xml
xml:保存数据
1,html标签不能自定义,从标签上不能达到‘见词知意’的目的
<表格><行><单元格>武松</单元格></行></表格>
2,html将数据与格式绑定在一起
<td><font color='red'>武松</font></td>
3,不同浏览器解析html不同
4,html语法要求不严格
<td>武松
三,XML的主要用途
1,程序之间的相互通信;2,配置文件;3,存储数据;4,规范数据格式
四,XML语法
快速入门:
如,描述个人信息
<?xml version="1.0" encoding="UTF-8" ?>
<persons>
<person pid="s123">
<name>zhangsan</name>
<age>23</age>
</person>
<person>
<name>lisi</name>
<age>24</age>
</person>
</persons>
XML的构成
文档声明;元素;元素属性;注释;CDATA区;特殊字符;处理指令
文档声明:
<? xml version="1.0" encoding="UTF-8" ?>
使用中文的话,一定呀encoding为 utf-8或者gb2312。同时需要和文件的编码一致
元素:
1)一个标签分为起始和结束标签
<a></a>
2)一个标签可以嵌套若干个子标签
<a><b></b</a>
3)一个XML文档必须有且仅有一个根标签
4)元素(标签)的名字可以包含字母,数字,减号,下划线,和英文句点。如:<ab1> , <a_>
5)严格区分大小写 <P>和<p>不同
6)只能以字母和下划线开头,但不能以xml开头。如:<a_>,<_a>
7)名称字符之间不能有空格和制表符,冒号。
元素属性:
1)一个元素可以有多个属性,属性值用单引或双引括起来
<学生 学号='s123' 性别='男'>
2)属性名称的命名规范和元素的命名规范一致
3)标签属性所代表的信息也可以被改成子元素的形式来描述
例:<书 编号='s12312'>
像这个,也可以用下面的格式
<书>
<编号>s12312</编号>
<书名>三国</书名>
</书名>
注释:
<!--这是一个注释-->
xml声明之前不能有注释,注释不能嵌套。
CDATA区:
【character data】字符数据
作用:把标签当做普通文本内容,在CDATA区内的所有内容,会当做普通文本进行显示
语法:<![CDATA[内容]]>
提出问题:如果出现了
< 人物>
<first>刘备</first>
<second>关旭</second>
</人物>
会把first和second当做标签进行解析,怎么解决?
<人物>
<![CDATA[
<first>刘备</first>
<second>关旭</second>
]]>
</人物>
特殊字符:
对于一些特殊字符,若要在元素主体内容中显示,必须进行转义实体引用
实体引用 字符
< <
&ft; >
& &
" "
' '
<武力>刘备 < 赵云</武力>
处理指令:
常用处理指令,
xml指令 文档声明功能
xml-stylesheet指令 样式功能
可以通过定义一个外部css文件 ,然后通过以下形式引用进来
<? xml-stylesheet type="text/css" href="css文件地址" ?>
举例说明:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="demo04.css"?>
<root>
<first>大中国</first>
<second>小日本</second>
</root>
demo04.css文件
first{
color:red;
font-size:30px;
}
second
{
color:black;
font-size:10px;
}
五,数据岛
数据岛是指存在于html页面的xml代码【仅限于ie】
引用格式:<xml id="xmlid" src="user.xml"/>
对数据岛的数据进行绑定
span,div,input,textarea
属性:datasrc,数据岛id;datafld,数据标签
举例说明:
六,DTD约束
1,什么是约束
xml技术中,可以编写一个文档来约束一个xml的书写规范,这个文档称之为约束。
约束文档定义了在xml中允许出现的元素名称,属性及元素出现的顺序。
格式良好的XML:遵循XML语法的XML
有效的XML:遵循约束文档的XML
2,常用约束
XML DTD,XDR,SOX,XML Schema
3,什么是dtd【document type definition】
即文档类型定义,约束XML的书写规范
4,dtd可以存放的位置
文件中,外部文件中
5,快速入门
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 班级 [
<!--下面班级和’(‘之间一定要有空格,学生,姓名,年龄一样,要有空格。-->
<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (姓名,年龄)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
]>
<班级>
<学生>
<姓名>乔峰</姓名>
<年龄>23</年龄>
</学生>
<学生>
<姓名>李四</姓名>
<年龄>40</年龄>
</学生>
</班级>
6,对dtd文档进行校验
l ActiveXObject("Microsoft.XMLDOM") //实例化xmldom对象(校验或解析)
l doc.validateOnParse //是否开启校验功能
l doc.async //是否异步加载
l doc.load() //加载xml文件
l doc.parseError.reason //错误信息
l doc.parseError.line //错误行号
使用软件工具 iexmltls.exe
7,使用外部dtd进行约束
<! DOCTYPE 根元素 SYSTEM “DTD文档路径">
例子说明:
demo02.dtd文件
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (姓名1,年龄)>
<!ELEMENT 姓名1 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
demo02.xml文件
<!DOCTYPE 班级 SYSTEM "demo02.dtd">
<班级>
<学生>
<姓名1>张三</姓名1>
<年龄>40</年龄>
</学生>
</班级>
八,DTD语法
1,定义元素
语法:<!ELEMENT 元素名 使用规则>
(#PCDATA):文本数据
EMPTY:空
ANY:任意次数、任意类型
(子元素):只出现一次
(子元素1,子元素2,....)指定子元素的个数和顺序
(子元素+):指定的子元素必须最少出现一次
(子元素*):指定的子元出现的次数为任意次数)(包括0次)
(子元素?):出现次数为0次或1次
(子元素1|子元素2):选择其中一个
说明:
ANY:任意次数,任意类型的含义:如可以在元素内加子元素,子元素的个数不限制,
也可在元素内直接写入文本数据
(子元素*):如果有,必须为子元素,不能是文本数据
混合型
<!ELEMENT note (header,(message|body))>
note下的子元素:
第一个是header子元素
第二个是message或body子元素
<!ELEMENT note (header|message)*>
Note下的子元素
是header或messsage其中的一个,它的出次数不限制
2,定义属性
语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型--》
l CDATA:文本数据
l (en1|en2|……):任选其一 须结合 #REQUIRED使用
l ID:唯一
<!ATTLIST 学生 学号 CDATA " ">
<!ATTLIST 学生 学号 CDATA "">
或者 下面这样写
<!ATTLIST 学生
学号 CDATA " "
性别 CDATA " "
>
给学生元素定义了两个属性,分别为学号和性别
默认值--》l #REQUIRED 非空 (这个属性值不能为空)
l #IMPLIED 可选 (可以用这个属性,也可以不用)
l #FIXED 固定值 (这个属性的值必须是固定的某个值)
值 默认值 (如果没有指定这个属性的值就使用这个默认)
3,定义实体
定义实体就是为一段内容指定一个名称,使用时通过这个名称就可以引用其所代表的内容
使用内部实体
定义语法:<!ENTITY 实体名称 "实体的值">
引用语法:&实体名
使用外部实体
定义语法:<!ENTITY 实体名称 SYSTEM ”URL">
引用语法:&实体名
外部实体可以完成对一个文件的引入
在某个文档里包含另一个文档
举例:
Demo01.xml :保存的是第一个班所有同学的信息
Demo02.xml :保存的是第二个班所有的同学的信息
我们查看所有班的同学的信息?!
方法1:在demo01.xml包含demo02.xml
方法2:在demo02.xml包含demo01.xml
方法3:在demo03.xml中包含demo01.demo02