Xml的语法
• 一个XML文件分为如下几部分内容:
– 文档声明
– 元素
– 属性
– 注释
– CDATA区、特殊字符
– 处理指令(processing instruction)
Xml的声明
最简单声明
307f197fa35495e5bd15705cfb261526
Encoding属性:字符编码如果没有指定默认的是UTF-8编码
常见的字符集
简体中文:GBK 或GB2312
繁体中文: BIG5
西欧字符:ISO8859-1
通用的国际编码:Unicode UTF-8
演示案例:
44268761adfa814cf615c226dea79439
c14d22ff3ccf1f46261d33e09e715fd84cd913b7f4ffcc7b6b86a519dbdd50c8
引起错误的原因是:编码的错误
解码成字符 |
字符集错误时的xml文档
新建是一个.txt文档 保存的是.xml UTF-8 默认的编码ANSI 中国 |
写入到硬盘 编码成二进制码 00 11 |
磁盘文件 |
Standalone:指定该文档是否需要引用其它资源,属性值只有:yes或no
Yes:独立 No:不独立
XML文件和HTML文件一样,实际上是一个文本文件。
显然大家立刻就会明白,创建XML文件最普通的工具和HTML一样,就是"记事本"了。
除了"记事本"之外,当然还有一些更加方便的工具,如XML Notepad、XML Pro、CLIP!XML Editor等,
这些工具的一大特点是:能够检查你所建立的XML文件是否符合XML规范。不过,现在这些工具都只有英文版的,并且需要付费使用。
当然,你仍然能够使用FrontPage、DreamWeaver等工具,不过使用起来不是很方便。
随着XML的逐渐普及,相信在不久后,也会出现非常好用的创建XML文件的工具。
现在我们暂且使用"记事本"来创建我们的XML文件吧。先看一个XML文件:
例1
〈?xml version="1.0" encoding="gb2312" ?〉
〈参考资料〉
〈书籍〉
〈名称〉XML入门精解〈/名称〉
〈作者〉张三〈/作者〉
〈价格 货币单位="人民币"〉20.00〈/价格〉
〈/书籍〉
〈书籍〉
〈名称〉XML语法〈/名称〉
〈!--此书即将出版--〉
〈作者〉李四〈/作者〉
〈价格 货币单位="人民币"〉18.00〈/价格〉
〈/书籍〉
〈/参考资料〉
这是一个典型的XML文件,编辑好后保存为一个以.xml为后缀的文件。我们可以将此文件分为文件序言(Prolog)和文件主体两个大的部分。
在此文件中的第一行即是文件序言。该行是一个XML文件必须要声明的东西,而且也必须位于XML文件的第一行,它主要是告诉XML解析器如何工作。
其中,version是标明此XML文件所用的标准的版本号,必须要有;encoding指明了此XML文件中所使用的字符类型,可以省略,在你省略此声明的时候,后面的字符码必须是Unicode字符码(建议不要省略)
。因为我们在这个例子中使用的是GB2312字符码,所以encoding这个声明也不能省略。在文件序言部分还有一些声明语句,我们在后面给予介绍。
文件的其余部分都是属于文件主体,XML文件的内容信息存放在此。
我们可以看到,文件主体是由开始的〈参考资料〉和结束的〈/参考资料〉控制标记组成,这个称为XML文件的"根元素";〈书籍〉是作为直属于根元素下的"子元素";在〈书籍〉下又有〈名称〉、〈作者〉、〈价格〉这些子元素。货币单位是〈价格〉元素中的一个"属性","人民币"则是"属性值"。
首先,XML文件的第一行必须是声明该文件是XML文件以及它所使用的XML规范版本。在文件的前面不能够有其它元素或者注释。
第二,在XML文件中有且只能够有一个根元素。我们的第一个例子中,〈参考资料〉... 〈/参考资料〉就是此XML文件的根元素。
第三,在XML文件中的标记必须正确地关闭,也就是说,在XML文件中,控制标记必 须有与之对应的结束标记。如:〈名称〉标记必须有对应的〈/名称〉结束标记,不像HTML,某些标记的结束标记可有可无。如果在XML文件中遇到自成一个单元的标记,就是类似于HTML 中的〈img src=http://www.php.cn/〉的这些没有结束标记的时候,XML把它称为"空元素",必须用这样的写法:〈空元素名/〉,如果元素中含有属性时写法则为:〈空元素名 属性名="属性值"/〉。
第四,标记之间不得交叉。在以前的HTML文件中,可以这样写:
〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,〈B〉和〈H〉
标记之间有相互重叠的区域,而在XML中,是严格禁止这样标记交错的写法,标记必须以规则性的次序来出现。
第五,属性值必须要用" "号括起来。如第一个例子中的"1.0"、"gb2312"、"人民币"。都是用" "号括起来了的,不能漏掉。
第六,控制标记、指令和属性名称等英文要区分大小写。与HTML不同的是,在HTML中, 类似〈B〉和〈b〉的标记含义是一样的,而在XML中,类似〈name〉、〈NAME〉或〈Name〉这样的标记是不同的
第七,我们知道,在HTML文件中,如果我们要浏览器原封不动地将我们所输入的东西显示出来,可以将这些东西放到〈pre〉〈/pre〉或者〈xmp〉〈/xmp〉标记中间。这对于我们创建HTML教学的网页是必不可少的,因为网页中要显示HTML的源代码。而在XML中,要实现这样的功能,就必须使用CDATA标记。在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。CDATA区域是由:"〈![CDATA["为开始标记,以">〉"为结束标记。例如:例2中的源码,除了"〈![CDATA["和">〉"符号,其余的内容解析器将原封不动地交给下游的应用程序,即使CDATA区域中的开始和结尾的空白以及换行字符等,都同样会被转交(注意CDATA是大写的字符)。
Xml元素的基本规则
元素是xml文档的基本单元,xml文档就是一个一个层层嵌套的元素组成的。整个的xml文档从根元素开始,根元素包含若干个子元素,而每个子元素又可以包含若干个子元素,从而可以组成一个xml文档。
Xml标签语法:
1、Xml的标签分为两类:
单标记:e2884bd8aa1e645b5d7ff61553422cc6
双标记:c14d22ff3ccf1f46261d33e09e715fd84cd913b7f4ffcc7b6b86a519dbdd50c8
2、xml标签的要求:
1、标签名可以有字母(包括非西欧字符)、数字、下划线(_)、中划线(-)、冒号(:)和点号(.)组成,但不能以数字、中划线和点号开头。
2、标签名不能包含43ea2b066e268a9e20b676cd21d80b62、,、$等符号
3、标签名种尽量不要出现英文的冒号(:),除非在使用命名空间。
4、标签名不能以字符xml、XML等任意大小写组合开始。
5、标签名不能包含空格。
6、标签名区分大小写
3、xml标签嵌套子元素:xml允许深度嵌套子元素,只要保证元素之间合理的嵌套即可.而且xml元素可以嵌套多个重名的子元素,这多个子元素之间是有序的。
第一个:xml
c14d22ff3ccf1f46261d33e09e715fd8
849ecb920bc434dfbae6746221f149da
69bf1dd76ff4815d1960c18119e882cb
3710dd4e6b0f08bf9a2409c06ae06e923a34c0ea669bfdcc0228b60b6ca83292
3710dd4e6b0f08bf9a2409c06ae06e923a34c0ea669bfdcc0228b60b6ca83292
5a19f130690ac1d071f74d245279b970
4cd913b7f4ffcc7b6b86a519dbdd50c8
第二个xml:
c14d22ff3ccf1f46261d33e09e715fd8
849ecb920bc434dfbae6746221f149da
3710dd4e6b0f08bf9a2409c06ae06e923a34c0ea669bfdcc0228b60b6ca83292
3710dd4e6b0f08bf9a2409c06ae06e923a34c0ea669bfdcc0228b60b6ca83292
69bf1dd76ff4815d1960c18119e882cb
5a19f130690ac1d071f74d245279b970
4cd913b7f4ffcc7b6b86a519dbdd50c8
4、空元素:空元素不可以接受子元素,也不可以接受字符串内容。
第三个xml:
463aef0d2da08708f472268a99530dbe
8a11bc632ea32a57b3e3693c7987c420redarmydf406f776eecbaf16b62325323196f14
e69ec73c61052262ebce3a853bcad4b6 :备注:空元素但可以接受属性,而且可以接受多个属性
0f6fa65eb6c7f3ed4374d12bf4ac01bd
463aef0d2da08708f472268a99530dbe
8a11bc632ea32a57b3e3693c7987c420redarmydf406f776eecbaf16b62325323196f14
b589d893b57b86314aa1904b5daea7841de6d7a1654980629dac47d54ddaac63 :备注它包好的是一个空格空格也是字符
0f6fa65eb6c7f3ed4374d12bf4ac01bd
例如空元素接受属性:
06f9063201224c5ea2c737869b78b220
5、字符数据
463aef0d2da08708f472268a99530dbe
2c6008b0e56443c91d19286e6d5aeb74Struts2开发详解1d3f22abb3651fd0d3b978b732f443e5
2c6008b0e56443c91d19286e6d5aeb74
Struts2开发详解
1d3f22abb3651fd0d3b978b732f443e5
0f6fa65eb6c7f3ed4374d12bf4ac01bd
对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理
如果文本字符中包含了一些特殊的字符,例如9916825e1251ffb5610956d1d0de7076
ae0dad9014289c6d12010d8d7c16d4801+3e9fae4ba621339ac778d677fd6c1e93e
f0f56cc353d60613bb77ad77dc4a2b71
代表的是文本字符串中包含了特殊的字符
有以下两种方法解决:
1、 使用实体引用:用另一个特殊符号代替这些特殊符号
2、使用CDATA标记:将整个文档定义成字符串。
1、 使用实体引用
44268761adfa814cf615c226dea79439
a30d83af1c24e4dd3fb885081ed8bb3c
ae0dad9014289c6d12010d8d7c16d4801+3&6ccdf030973307f116f98ffdd41846a0
f0f56cc353d60613bb77ad77dc4a2b71
上面的红色的<产生了干扰
解决如下:
44268761adfa814cf615c226dea79439
a30d83af1c24e4dd3fb885081ed8bb3c
ae0dad9014289c6d12010d8d7c16d4801+3<6a7f9fe91d91e1c9e48986c28ae44ee0d
f0f56cc353d60613bb77ad77dc4a2b71
2、 使用CDATA标记
在特殊标记CDATA下,所有的特殊字符,甚至是有效的元素都将被当成简单的字符串处理。实体引用也会失去作用,变成直接的文本。
CDATA的语法格式如下:
f4826fd78589c258f2dd0a4545d2f42c
44268761adfa814cf615c226dea79439
a30d83af1c24e4dd3fb885081ed8bb3c
ae0dad9014289c6d12010d8d7c16d480
da7841e53a5ce2f4dc6d7ca7dadefd0f
a7f9fe91d91e1c9e48986c28ae44ee0d
f0f56cc353d60613bb77ad77dc4a2b71
备注:由于xml文档根本不会对CDATA标记内容进行任何解析,因此在CDATA内可以放置任何内容,其中的内容永远不会出错。
1、 注释
Xml文档还可以加入解释用的字符数据,这些解释用的字符串不会被xml解析器处理。这些解释用的文本称为注释。Xml的文档注释与html完全一致。
Xml注释的语法格式如下:
1eaba07352fc01f0054473911b2e49d9
Xml的注释允许包含元素和标签。
注意:
1、 Xml的注释不能够放在标签体内。
2、 不要把xml文档放在xml文档声明之前 xml文档的声明永远在第一行
3、 不在注释中使用双中划线(--)
…..
2、 处理指令
处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。
处理指令用于给处理xml文档的应用程序提供信息,告诉处理程序应该如何处理该文档。一个完备的xml文档的处理程序,可以读取xml文档的处理指令,并根据处理指令进行相应处理,或将它传给下一个程序。
Xml处理指令的格式如下:
b13f7363c075454edd1d3b5d2beb4d6d
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 |
注意:
必须具有根标记且根标记必须唯一
开始标记和结束标记需配对使用
标记不能交错使用
空标记可写成“1683f6fca5b08e9b60abae0f29ff6fb4”的形式
标记对大小写敏感
以上就是疯狂XML学习笔记(2)-------------格式要求的内容,更多相关内容请关注PHP中文网(www.php.cn)!