XML

来源:互联网 发布:网络拓扑图在线制作 编辑:程序博客网 时间:2024/06/06 00:14

一,什么是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>]]></人物>

特殊字符:

对于一些特殊字符,若要在元素主体内容中显示,必须进行转义实体引用
实体引用            字符

&lt;                     <

&ft;                     >

&amp;               &

&quot;               "

&apos;               '

<武力>刘备 &lt; 赵云</武力>

处理指令:

常用处理指令,

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文档进行校验

ActiveXObject("Microsoft.XMLDOM")        //实例化xmldom对象(校验或解析)

doc.validateOnParse                                    //是否开启校验功能

doc.async                                                   //是否异步加载

doc.load()                                                   //加载xml文件

doc.parseError.reason                                  //错误信息

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子元素

  第二个是messagebody子元素

<!ELEMENT note (header|message)*>

Note下的子元素

headermesssage其中的一个,它的出次数不限制

2,定义属性

语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值>

属性类型--》

CDATA:文本数据

(en1|en2|……):任选其一       须结合 #REQUIRED使用

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

 

 

原创粉丝点击