第二节:xml文档规范
Xml文档的分类
1、 格式不良好(malformed)的xml文档:完全没有遵守xml文的基本规范的xml文档。
2、 格式良好(well-formed)的但无效的xml文档: 遵守xml文的基本规范,但没有使用dtd或schema定义语义约束的xml文档。
3、 有效(valid)的xml文档:遵守xml文的基本规范,并使用dtd或schema定义语义约束,而且也完全遵守了dtd或schema定义语义约束的xml文档。
Xml的语法
• 一个XML文件分为如下几部分内容:
– 文档声明
– 元素
– 属性
– 注释
– CDATA区 、特殊字符
– 处理指令(processing instruction)
Xml的声明
最简单声明
<?xml version=” 1.0” ?>
Encoding属性:字符编码 如果没有指定默认的是UTF-8编码
常见的字符集
简体中文:GBK 或GB2312
繁体中文: BIG5
西欧字符:ISO8859-1
通用的国际编码:Unicode UTF-8
演示案例:
<?xml version="1.0" encoding="UTF-8"?>
<中国></中国>
引起错误的原因是:编码的错误
解码成字符 |
新建是一个.txt文档 保存的是.xml UTF-8 默认的编码ANSI 中国 |
写入到硬盘 编码成二进制码 00 11 |
磁盘文件 |
Standalone:指定该文档是否需要引用其它资源,属性值只有:yes或no
Yes:独立 No:不独立
Xml元素的基本规则
元素是xml文档的基本单元,xml文档就是一个一个层层嵌套的元素组成的。整个的xml文档从根元素开始,根元素包含若干个子元素,而每个子元素又可以包含若干个子元素,从而可以组成一个xml文档。
Xml标签语法:
1、Xml的标签分为两类:
单标记:<中国/>
双标记:<中国></中国>
2、xml标签的要求:
1、标签名可以有字母(包括非西欧字符)、数字、下划线(_)、中划线(-)、冒号(:)和点号(.)组成,但不能以数字、中划线和点号开头。
2、标签名不能包含<、>、,、$等符号
3、标签名种尽量不要出现英文的冒号(:),除非在使用命名空间。
4、标签名不能以字符xml、XML等任意大小写组合开始。
5、标签名不能包含空格。
6、标签名区分大小写
3、xml标签嵌套子元素:xml允许深度嵌套子元素,只要保证元素之间合理的嵌套即可.而且xml元素可以嵌套多个重名的子元素,这多个子元素之间是有序的。
第一个:xml
<中国>
<北京>
<海淀/>
<朝阳></朝阳>
<朝阳></朝阳>
</北京>
</中国>
第二个xml:
<中国>
<北京>
<朝阳></朝阳>
<朝阳></朝阳>
<海淀/>
</北京>
</中国>
4、空元素:空元素不可以接受子元素,也不可以接受字符串内容。
第三个xml:
<book>
<name>redarmy</name>
<content/> :备注:空元素 但可以接受属性,而且可以接受多个属性
</book>
<book>
<name>redarmy</name>
<content></content> :备注它包好的是一个空格 空格也是字符
</book>
例如空元素接受属性:
<book name=”Java建议” price=” 30” />
5、字符数据
<book>
<computer>Struts2开发详解</computer>
<computer>
Struts2开发详解
</computer>
</book>
对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理
如果文本字符中包含了一些特殊的字符,例如<和&由于这些字符都有特殊的含义,因此直接在xml文档中使用该字符串将引起文档的混乱。
<表达式>
<比较符>1+3<6</比较符>
</表达式>
代表的是文本字符串中包含了特殊的字符
有以下两种方法解决:
1、 使用实体引用:用另一个特殊符号代替这些特殊符号
2、 使用CDATA标记:将整个文档定义成字符串。
1、 使用实体引用
<?xml version="1.0" encoding="UTF-8"?>
<表达式>
<比较符>1+3&<6</比较符>
</表达式>
上面的红色的<产生了干扰
解决如下:
<?xml version="1.0" encoding="UTF-8"?>
<表达式>
<比较符>1+3<6</比较符>
</表达式>
2、 使用CDATA标记
在特殊标记CDATA下,所有的特殊字符,甚至是有效的元素都将被当成简单的字符串处理。实体引用也会失去作用,变成直接的文本。
CDATA的语法格式如下:
<![CDATA[文本内容]]>
<?xml version="1.0" encoding="UTF-8"?>
<表达式>
<比较符>
<![CDATA[
1+3<6
]]>
</比较符>
</表达式>
备注:由于xml文档根本不会对CDATA标记内容进行任何解析,因此在CDATA内可以放置任何内容,其中的内容永远不会出错。
1、 注释
Xml文档还可以加入解释用的字符数据,这些解释用的字符串不会被xml解析器处理。这些解释用的文本称为注释。Xml的文档注释与html完全一致。
Xml注释的语法格式如下:
<!--注释字符串 -->
Xml的注释允许包含元素和标签。
注意:
1、 Xml的注释不能够放在标签体内。
2、 不要把xml文档放在xml文档声明之前 xml文档的声明永远在第一行
3、 不在注释中使用双中划线(--)
…..
2、 处理指令
处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。
处理指令用于给处理xml文档的应用程序提供信息,告诉处理程序应该如何处理该文档。一个完备的xml文档的处理程序,可以读取xml文档的处理指令,并根据处理指令进行相应处理,或将它传给下一个程序。
Xml处理指令的格式如下:
<?处理指令名 处理指令信息?>
3、 属性
xml属性的特征:
1、 xml元素的属性必须有属性值,属性值必须用引号引起来。
2、 同一个xml元素里不能有多个同名的属性
3、 Xml元素里的多个属性之间没有先后顺序。
<book>
<isbn>123456780</isbn>
<book_name>Java讲义</book_name>
<price>99</price>
</book>
比如说 这个book本身就有 isbn book_name price的属性
那么
<book isbn=”” book_name=”” price=””/>
Xml必须有一个根元素。
Xml文档的整体结构
1、 必须有一个根元素(有且只有一个)
2、 元素必须合理结束
3、 元素之间必须合理嵌套
4、 元素的属性必须有属性值
只要不满足上面的条件就是一个格式不良好的xml文档
只要满足上面的条件就是一个格式良好的xml文档
并且遵守了dtd或者schema就是一个有效的xml文档。
Xml文档是一种标准的结构化文档,可以转换成DOM(Document Object Model)树,其根节点对应DOM树的根节点。
<book>
<computer>
<name>网上介绍</name>
<author>redarmy</author>
</computer>
<computer>
<name>网上介绍</name>
<author>redarmy</author>
</computer>
</book>
book |
computer |
computer |
……… |
computer |
name |
author |
注意:
必须具有根标记且根标记必须唯一
开始标记和结束标记需配对使用
标记不能交错使用
空标记可写 成“<标记名/> ”的形式
标记对大小写敏感