版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章规范的XML文件XML文件规范的XML文件有效的XML文件
规范的XML文件(Well-FormedXML):符合W3C指定的基本语法规则。有效的XML文件(ValidatedXML):规范的XML文件再符合额外的一些约束。XML的特点:
是一种能够应用在各个领域进行设计的标记语言。XML的标记是可自由定义,使得XML文件能够很好地体现数据结构和含义。XML文件必须符合一定的语法规则。
XML的特点:
XML文件必须符合一定的语法规则规范的XML文件必须要满足W3C所指定的标准,比如:文件用“XML声明”开始有且仅有一个根标记,其他文件必须封存在根标记中文件是树状结构非空标记必须有“开始标记”和“结束标记”……规范的XML的组成:声明可选的序言:注释、处理指令文档的主体由一个或多个元素组成,其形式为一个可能包含字符数据的文档树规范的XML的组成:<?xmlversion=“1.0”?><!--注释--><员工><姓名>张三</姓名><性别>男</性别></员工><!--注释-->序言主体尾部文档XML的基本结构1、序言码:XML声明<?xmlversion="1.0"encoding="UTF—8"?>2、处理指令:关联DTD、XSL、CSS3、根标记4、标记5、属性6、CDATA段:〈![CDATA[…………]]〉7、注释:〈!--…………--〉<?xmlversion="1.0"encoding="UTF—8"?><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don'tforgetthemeeting!</body></note><!--John给George便签-->通过一个文档实例看——XML
第一行是XML声明。它定义XML的版本(1.0)和所使用的编码(UTF——8)。下一行描述文档的根元素
<note>
接下来4行描述根的4个子元素(to、from、heading以及body):
<to>George</to><from>John</from><heading>Reminder</heading><body>Don'tforgetthemeeting!</body>
最后一行定义根元素的结尾:
</note>
注释说明:该XML文档包含了John给George的一张便签。XML文档形成一种树结构XML文档必须有一个且只有一个根元素,该元素是所有其他元素的父元素。XML文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素:<root><child><subchild>.....</subchild></child></root>父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有元素均可拥有文本内容和属性(类似HTML中)。2.1XML声明一个规范的XML文档通常以XML声明开始。XML声明是处理指令的一种,它告诉浏览器或其他处理程序这个文档是XML文档。声明必须放在第一行,前面不能有空白、注释或其它处理命令。XML声明XML声明中的版本属性XML声明中的编码属性XML声明中的独立属性其格式如下:<?xml版本信息[编码信息][文档独立性信息]?>例子:<?xmlversion=“1.0”encoding=“UTF-8”standalone=“yes”?>XML声明中的版本属性一个最基本的XML声明:
<?xmlversion="1.0"?>标识开始XML版本标识结束注:version属性不能省略且必须在属性列表的第一位,指明所采用的XML的版本号,用来保证对XML未来版本的支持。XML声明中的编码属性<?xmlversion="1.0"encoding=“UTF-8”?>编码方式要和其xml的保存方式相一致
编码属性指定了文本的编码系统,即规定了XML文档采用哪种字符集进行编码。字符与编码的发展ASCII:运行在英文DOS。计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示。ANSI编码:运行在中文DOS,中文Windows95/98,日文Windows95/98。通常使用2个字节来表示1个字符。不同的国家和地区制定了不同的标准,由此产生了GB2312,BIG5,JIS等各自的编码标准。不同ANSI编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段ANSI编码的文本中。字符与编码的发展3.UNICODE(国际化)运行在WindowsNT/2000/XP,Linux,Java。为了使国际间信息交流更加方便,国际组织制定了UNICODE字符集。给各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。字符串在内存中的存放方法ASCII阶段,单字节字符串使用一个字节存放一个字符;ANSI编码支持多种语言阶段,每个字符使用一个字节或多个字节来表示;在UNICODE被采用之后,计算机存放字符串时,改为存放每个字符在UNICODE字符集中的序号。2个字节存放一个序号ABC123中国123中国12310个字节6个字节7个字节ASCIIANSIUNICODE使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。字符集与编码
在制定编码标准的时候,“字符的集合”和“编码”一般都是同时制定的。因此,平常我们所说的“字符集”,比如:GB2312,GBK,JIS等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。用来给UNICODE字符集编码的标准有很多种,比如:UTF-8,UTF-16,UTF-32等。常用的编码简介分类编码标准说明分类编码标准说明分类编码标准说明单字节字符编码ISO-8859-1最简单的编码规则,每一个字节直接作为一个字符。常用的编码简介分类编码标准说明分类编码标准说明分类编码标准说明ANSI编码GB2312BIG5Shift_JIS,ISO-8859-2……这些“ANSI编码标准”都只能处理各自语言范围之内的UNICODE字符。比如:汉字标准(GB2312)中没有规定韩国语字符怎样存储。GB2312简介GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。常用的编码简介分类编码标准说明分类编码标准说明分类编码标准说明UNICODE编码UTF-8UTF-16UTF-32……
给各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。XML声明中的编码属性常用的编码方式及其保存方式
UTF-8gb2312ISO-8859-1XML声明中的编码属性ISO-8859-1ASCIIGB2312ASCII、中文UTF——8ASCII、中文、日文等多种文字XML文件默认使用的是UTF——8的编码方式XML中可用的字符集编码字符集名称语言/国家US-ASCII英语UTF-8压缩UnicodeUTF-16压缩UCSISO-10646-UCS-2原始UnicodeISO-10646-UCS-4原始UCSISO-8859-1Latin-1,西欧ISO-8859-2Latin-2,东欧ISO-8859-3Latin-3,南欧ISO-8859-4Latin-4,北欧ISO-8859-5ASCII码加古斯拉夫语ISO-8859-6ASCII码加阿拉伯语ISO-8859-7ASCII码加希腊语ISO-8859-8ASCII码加希伯来语ISO-8859-9Latin-5,土耳其语ISO-8859-10Latin-6,ASCII码加北欧语ISO-8859-11ASCII码加泰国语ISO-8859-13Latin-7,ASCII码加波罗地海周边语言和独特的拉托维亚语ISO-8859-14Latin-8,ASCII码加盖尔语和威尔式语ISO-8859-15Latin-9,Latin-0,西欧ISO-2022-JP日语Shift_JIS日文版WindowsEUC-JP日文版UnixBig5中国台湾地区,汉语GB2312中国大陆,汉语KOI6-R俄罗斯ISO-2022-KR韩语EUC-KR韩语版UnixISO-2022-CN汉语XML声明中的独立属性<?xmlversion="1.0"encoding=“UTF-8”standalone=“yes”?>
如果我们的文档不依赖于外部文档,即所有必须的实体声明都包含在文档中。在XML声明中,我们可以通过standalone=“yes”声明这个文档是独立的文档.
如果文档依赖于外部文档,即需要外部的DTD(文档类型定义),可以通过standalone=“no”来声明.
2.2XML的标记XML的标记分为非空标记与空标记.XML标记空标记非空标记开始标记结束标记XML是基于文本的标记语言,标记是XML文档最基本的组成部分。
XML的空标记空标记的语法格式<空标记的名称属性列表/>或<空标记的名称/>“<”与“标记名称”之间不要含有空格“/>”前面可以有空格和换行XML中的空标记例子:<王菲age=“35”sex=“女”/><李亚鹏/><谢霆锋age=“26”sex=“男”
/>XML中的非空标记非空标记必须由“开始标记”与“结束标记”组成,两者之间是该“标记的内容”。例子:<超级女生>我喜欢这个节目</超级女生>非空标记开始标记结束标记=+XML中的非空标记非空标记语法格式开始标记格式<标记名称属性列表>
或<标记名称>结束标记</标记名称>例子: <王菲sex=“女”> </王菲>“<”与标记名称之间不要含有空格“>”前面可以有空格和换行非空标记的内容开始标记与结束标记之间是标记的内容。标记内容是有两部分组成:文本数据与标记。标记内容子标记文本数据非空标记的内容1.<goods>
电脑
</goods>2.<goods>电脑</goods>区别:标记文本:1个回行符、4个空格、“电脑”
和1个回行符标记文本:“电脑”标记的名称规则:名称可以由字母、数字、下划线、点或连字符组成;但必须以字母或下划线开头。不能使用空白标记名称区分大小写<name>与<Name>是不同的“标记”和“标签”是具有不同含义的词。标记是指开始标签、结束标签以及之间的内容,包括属性、文本、注释及子元素。标签是一对尖括号〈〉和之间的内容,包括标记名和属性。例如:〈bookname=HarryPotter〉和〈/book〉是标签〈bookname=HarryPotter〉Good〈/book〉则是一个标记。“标记”和“标签”区别XML的根标记XML文件必须有且仅能有一个根标记,其他标记都必须封装在根标记中。最后XML文件的标记必须形成树状结构。XML的根标记<root> <性别>
男
<出生日期> </性别> 1980年8月6日
</出生日期> </root>×XML文件中的特殊字符XML文件中有五种特殊字符:<、>、&、’、”XML标记内容中的文本数据不能含有特殊字符XML特殊字符字符实体引用<<>>‘'“"&&十进制字符引用十六进制字符引用<<>>''""&&XML特殊字符<?xmlversion="1.0"encoding="UTF-8"?><?xml-stylesheethref="show.css"type="text/css"?><xml-body><entity>
这是实体引用的例子:李四是1980年出生&<大学毕业></entity><character>
这是字符引用的例子:李四是1980年出生&<大学毕业></character></xml-body>2.3XML文件中的特殊字符
还有一些无法从键盘键入到文档中,如希腊字母。例如“β”就会被解析器换成希腊字母β.字符引用例题<?xmlversion="1.0"encoding="gb2312"?><书>我喜欢的书有<哈利波特>&"红楼梦"</书>字符引用例题2.4XML中的CDATA段CDATA(characterData)段解决了要使用大量特殊字符的问题
<![CDATA[]]>
开始结束
只要用CDATA做了标识,解析器就不对它进行处理了,也就是你写什么,解析器都原样输出。解析器不对CDATA段的内容做分析处理。XML中的CDATA段
<![CDATA[
这是一个CDATA段
booleanboo=true&&false<你好>]]>不可以有空格字符注意:CDATA必须为大写;CDATA不允许嵌套,不能再包含CDATA段。CDATA段保持标签完整2.5标记的文本数据一个标记的文本数据可以有:普通字符CDATA段中的内容字符引用实体引用标记的内容:文本数据和子标记部分<?xmlversion="1.0"encoding="UTF-8"?><root><XML例子>
这是我写的一个例子:
<![CDATA[<?xmlversion="1.0"encoding="UTF-8"?><employy><name>&张小三&</name><employy>]]><node>
我是子标记中的文本数据
</node></XML例子></root>标记的文本数据2.6XML标记的属性
属性的构成属性是一个名值对,名=“值”必须在非空标记的开始标记或空标记中声明
属性是标记数据的附加信息,可用于描述标记的一些特性。XML标记的属性属性的定义格式非空元素<标记名属性名=“属性值”属性名=“属性值”......>…</标记名>空元素<标记名属性名=“属性值”属性名=“属性值”......></标记名>或<标记名属性名=“属性值”属性名=“属性值”....../>XML标记的属性属性注意事项:
1、属性名由字母、数字、下划线(_)、点(.)、连字符(-)组成。
2、属性名必须以字母或下划线开头。
3、属性名区分大小写
4、属性名不能含有空格
5、同一标记不能有两个相同的属性
6、属性值必须用单引号或双引号括起来
7、属性值不能含有特殊字符(5个),可以包含实体引用或字符引用XML标记的属性属性的使用原则:不要因为属性的频繁使用破坏XML的数据结构。根据你描述事物的重要性,重要的信息用子标记去实现,次要信息用属性去描述。数据本身应当存储在标记中;而有关数据的信息存储在属性中
标记更具扩展性。2.7注释<?xmlversion=“1.0”encoding=UTF-8?><!--简单的XML文件--><root> <speak>
你好
</speak></root>与html相同“<!--”开始“-->”结束注释规则注释可以跨行使用注释可以包括标记注释要保持结构完整性注释不能放在第一行注释不能包含在标记中注释中不能包含“——”,不能包括注释注释与CDATACDATA只能出现在根元素之中。从逻辑上看两者的意图是不一样的:在做数据转换时,CDATA是输出的(不被解析),它是数据的一部分。注释是不输出的,仅仅是显示注释。<?xmlversion=“1.0”encoding=“gb2312”?><book><title>红楼梦</title><author>
曹雪芹
<title>大作家</title></author></book>2.8XML名称空间名称空间的目的就是为了有效区分名字相同的标记。名称空间的声明必须在标记的“开始标记”里面且必须放在开始标记中标记名字的后面。
<张三xmlns=“liaoning”></张三><张三></张三>XML名称空间规则名称空间名字不同,即使前缀相同也是不同的名称空间名称空间区分大小写在名称空间的声明中,名称空间的前缀不能以“XML”开头(大小写都不可以)无前缀名称空间的名字为空名称空间公式:无前缀名称空间:xmlns=“名称空间的名字”有前缀名称空间:xmlns:前缀=“名称空间的名字”例:<前缀:标记名称xmlns:前缀=“名称空间的名字”>XML名称空间名称空间的作用域一个标记如果使用了名称空间声明,那么该名称空间的作用域是该标记及其所有子孙标记。名称空间作用域有前缀名称空间对于有前缀名称空间,如果想让该标记及其子孙标记隶属于这个名称空间,则必须引用前缀。没引用前缀的标记是不属于该名称空间的。语法:<前缀:标记名称……></前缀:标记名称>1<张三xmlns:p1=“liaoning”>1976年出生,大学毕业
<小张三>
在小学读书
<小张三></张三>2<张三xmlns:p1=“liaoning”>1976年出生,大学毕业
<p1:小张三>
在小学读书
</p1:小张三></张三>3<p1:张三xmlns:p1=“liaoning”>1976年出生,大学毕业
<小张三>
在小学读书
</小张三><p1:李四>1980年出生,高中毕业
</p1:李四></p1:张三>名称空间作用域无前缀名称空间如果标记中声明的是无前缀名称空间,那么该标记及其子孙标记都默认的隶属于这个名称空间。<bookxmlns=“”><java>Java基础教程
</java><jsp>Jsp基础教程
</jsp></book>名称空间作用域子标记可以重新声明名称空间
对于子标记来说,可以通过引用父标记声明的有前缀的名称空间的前缀来隶属于其名称空间,也可以默认地隶属于其父标记的无前缀名称空间。同时可以声明自己名称空间。名称空间作用域<p1:张三xmlns:p1=“liaoning”>1976年出生,大学毕业
<p1:小张三xmlns:p1=“American”>
在小学读书
</p1:小张三></p1:张三>名称空间作用域<张三xmlns=“liaoning”>1976年出生,大学毕业
<小张三xmlns=“Beijing”>
在小学读书
</小张三><p1:小张三xmlns:p1=“American”>
在小学读书
</p1:小张三></张三>名称空间作用域<张三xmlns:p1=“liaoning”xmlns=“china”>1976年出生,大学毕业
<p1:小张三>
在小学读书
</p1:小张三><p2:小张三xmlns:p2=“American”>
在小学读书
</p2:小张三><小张三xmlns=“Beijing”>
在小学读书
</小张三></张三>名称空间作用域称空间的作用域是向下使用(其子标记),不能向上或同级使用。屏蔽上层名称空间:标记名称xmlns=“名称空间的名字”(名称空间的名字为空)<?xmlversion="1.0"encoding="gb2312"?><studentxmlns=“”> <namexmlns=“”>
周杰伦
<sex>
男
</sex> </name> <name>
蔡依林
<sex>
女
</sex> </name></student>名称空间的名字名称空间的目的是为了区分名字相同的标记。W3C推荐使用统一资源标识符(URI)作为名称空间的名字。名称空间的名字URI统一资源标识符
UR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论