XML文档语法 学习笔记
?
?
?
?
1、什么是XML,为什么学习XML?
?
????Extensible?Markup?Language,翻译过来为可扩展标记语言。Xml技术是w3c组织发布的,目前推荐遵循的是W3C组织于2000发布的XML1.0规范。??
?
在现实生活中大量存在有关系的数据,如图所示。问题:这样的数据如何交给计算机处理呢?
?
???????
???????
?
?
?
?
?
?
?
2、XML技术用于解决什么问题?
?
????XML语言出现的根本目标在于描述上图那种,在现实生活中经常出现的有关系的数据。
?
????在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。例如:
?
???????????
????????
?
?
?
?
?
?
?
3、XML常见应用
?
????XML技术除用于保存有关系的数据之外,它还经常用作软件配置文件,以描述程序模块之间的关系。
?
????在一个软件系统中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定。
?
????例如一个软件在启动时,它需要启动A、B两个模块,而A、B这两个模块在启动时,又分别需要A1、A2和B1、B2模块的支持,为了准确描述这种关系,此时使用XML文件最为合适不过。
?
?
?
?
?
?
4、XML语法概述
?
??一个XML文件分为如下?6?部分内容:
?
????????? a. 文档声明?
????????? b. 元素
????????? c. 属性
????????? d. 注释??
????????? e. CDATA区?、特殊字符?
????????? f. 处理指令(processing?instruction)??
?
?
?
?
?
?
5、XML语法-文档声明
?
????在编写XML文档时,需要先使用文档声明,声明XML文档的类型。
?
????最简单的声明语法:
?
????????<?xml?version="1.0"??>
?
????用encoding属性说明文档的字符编码:
?
????????<?xml?version="1.0"?encoding="UTF-8"??>??
?
????????比如:文中有中文出现时,就必须要写encoding
?
????用standalone属性说明文档是否独立:
?
??????<?xml?version="1.0"?encoding="GB2312"??standalone="yes"??>
?
????备注:IE浏览器?对于标签standalone并不解析,就是说yes/no都没影响。
?
????
?
????常见错误:
?
??????? a.?<?xml?version=1.0??>
?
??????? b.?<?xml?version=“1.0” ?>
?
??????? c.?编码错误
?
????建议:使用声明时,从其他的文档拷贝一份?声明语句,防止放生错误。????
?
?
?
?
?
?
6、XML语法-?元素
?
????XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如:
?
????????? a. 包含标签体:<a>www.itcast.cn</a>
????????? b. 不含标签体的:<a></a>,?简写为:<a/>
????????? c. 嵌套标签体:<a>welcome?to?<b>www.it315.org</a></b>?
?
????备注:(1)标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套?。????????
?
?????????????? (2)良好的XML文档必须有且仅有一个根标签,其它标签都是这个根标签的子孙标签。??
?
????对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。
???
?
????由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。
?
?
?
?
7、元素的命名规范
?
????一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:
?
????????? a. 区分大小写,例如,<P>和<p>是两个不同的标记。
????????? b. 不能以数字或"_"?(下划线)开头。
????????? c. 不能以xml(或XML、或Xml?等)开头。????
????????? d. 不能包含空格。
????????? e. 名称中间不能包含冒号(:)。
?
?
?
?
8、XML语法-?属性
?
????一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:
?
????????<input?name=“text”>
?
????????? a. 属性值一定要用双引号(")或单引号(')引起来
????????? b. 定义属性必须遵循与标签相同的命名规范?
?
????多学一招:在XML技术中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如:
?
????????<input>
?
???????????<name>text</name>
?
????????</input>
?
?
?
?
?
?
9、XML语法-?注释
?
????Xml文件中的注释采用:“<!--注释-->”?格式。
?
????注意:
?
????????? a. XML声明之前不能有注释
????????? b. 注释不能嵌套,例如:
?
??????????<!--大段注释
?
??????????????……
?
????????????????<!--局部注释-->
?
??????????????……
?
??????????-->??
?
?
?
?
?
?
10、XML语法-?CDATA区
?
????在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理(如配置文件中的参数值)。
?
????遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出。
?
????语法:<![CDATA[?内容?]]>
?
????Demo:?<![CDATA[
?
????????????????<itcast>
?
??????????????????<br/>
?
????????????????</itcast>
?
??????????????]]>
?
?
?
?
?
?
11、XML语法-?转义字符
?
????对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理。
?
????备注:当特殊字符需要交由计算机进行读取话,一定要使用CDATA字符区;
?
??????????若是仅给人来阅读,就可以使用转义字符。因为二者的在XML文档中实际的源字符不同。
?
???????
??????????
?
?
?
?
?
?
?
12、XML语法-?处理指令
?
????(1)处理指令,简称PI?(Processing?Instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。
?
????????例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容:??
?
????????????????eg:<?xml-stylesheet?type="text/css"?href="1.css"?>
?
????(2)处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。?
?
????????备注:可以多条处理指令同时使用,各司其职:?
?
????????????eg:<?xml?version="1.0"?encoding="GB2312"??standalone="yes"??>
?
????????????????<?xml-stylesheet?type="text/css"?href="1.css"?>
?
?
?
?
?
?
13、XML约束概述
?
????什么是XML约束:
?
????????在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
?
????为什么需要XML约束:
?
????????便于不同的人在使用同一版本的Xml文档时可以写书同样的Xml文档(尤其是配置文件)
?
????常用的约束技术:
?
????????? a. XML?DTD?????——?参见我的博文:《DTD?——?Xml文档?约束技术??学习笔记》
????????? b. XML?Schema??——?参见我的博文:《Schema?——?Xml文档?约束技术?学习笔记?》??
?
?
?
?
?
?
14、XML编程(CRUD)?—— Xml文档的解析与操作
?
????我们对于Xml文档所进行的增删查改(CRUD)编程都是基于?XML解析技术?进行的,只有现将Xml进行解析到系统内存中后,我们才可以进行所需要的Dom编程。
?
????(1)XML解析技术概述
?
????????XML解析方式分为两种:dom和sax
?
????????? a. Dom:(Document?Object?Model,?即文档对象模型)?是?W3C?组织推荐的处理?XML?的一种方式。
????????? b. Sax:?(Simple?API?for?XML)?不是官方标准,但它是?XML?社区事实上的标准,几乎所有的?XML?解析器都支持它。
?
????(2)XML解析器:
?
????????Crimson(sun公司)、Xerces(IBM公司)?、Aelfred2(Dom4j开源组织)
?
????(3)XML解析开发包(API+XML解析器)
?
????????Jaxp(内置Xerces)、dom4j(内置Aelfred2?)?、Jdom(很少被使用了)
?
????
?
????备注:关于Jaxp?和?Dom4j?两个?API的使用,请分别参见我的博文:
?
????????? a. 《?Jaxp 解析Xml文档 及其Dom编程? 学习笔记》
????????? b. 《Dom4j?解析Xml文档 及其Dom编程? 学习笔记》
?
???
????
????
?
?
????????
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?