当前位置:文档之家› xml 基础

xml 基础

序在很多时候,学习一门技术都是让人很痛苦的一件事。

不仅因为技术本身,还有资料的来源也是很匮乏的。

当我们兴致勃勃的准备开始学习技术,发现原来只有英文文档或者纸媒介的中文文档的时候,会让人倍感沮丧。

当我在开始学习XML技术的时候,也遇到了同样的问题。

于是决定将自己学习的内容记录下来,方便学习。

当然,在下水平有限,而且在没有专业校对和审核的情况下,这样的文档可能会显得比较稚嫩。

如果大家发现了任何错别字,错误的描述,错误的格式......,都可以将这些问题发送到我将不胜感激。

Terry Zhang2009/06/131为什么要学XML�XML是一种通用的数据交换格式�许多系统的配置文件都使用XML格式�配置文件就是记录应用程序的配置信息的文件。

�传统配置文件的格式:DBServer=192.168.0.100Database=empPort=1443Username=testPassword=111可以看到,在传统的配置文件中,一行就代表一个配置信息。

这些配置信息之间是平行的关系,很难表达出具有层级关系的配置,例如国家,省,市这样的配置信息。

XML格式的配置文件可以很容易的解决层级关系的配置。

通过父节点和子节点的配置就能满足这样的功能。

看一个简单的XML文件的配置:<书架><书><书名>红楼梦</书名><作者>曹雪芹</作者><售价>45.00元</售价></书><书><书名>西游记</书名><作者>吴承恩</作者><售价>50.00元</售价></书></书架>�JSP文档也逐渐向XML语法格式过渡我们可以看到,JSP规范中指定可以使用XML的语法来编写JSP页面,越来越多的应用程序也支持XML的语法格式。

�许多公司内部的系统也会使用XML文件来作为内部数据交换的格式。

�在日常生活中也会经常看到XML格式的文件。

�掌握XML是软件开发人员一项基本技能。

2XML的起源与作用�在线电子商务活动交换的电子文档必须采用某种标准格式,统一电子文档的标准规范是电子商务的基础。

�HTML不适合作为电子商务的文档标准。

�SGML(Standard Generaliz ed Markup Language)过于复杂,无法适应网络上的日常应用。

�W3C于1998年2月批准了XML(Extensible Markup Language)的 1.0版本。

XML是对SGML的简化,语法与HTML非常相似。

�XML具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。

�XML文档很容易创建,并且结构清晰,不仅让人能够明白,还让计算机业能明白。

�XML作为一种公订的、开放的标准,不受知识产权的限制。

3XML简介3.1XML与HTML的比较HTML将数据和其显示效果混在一起,它是一种表现技术;XML文档只是存储了数据和描述了数据之间的关系,没有规定该如何显示数据。

HTML的格式要求比较松散;而XML是非常严格的标记语言。

HTML的标记集合是固定的;而XML只是提供了一个标准,可以按照这个标准来定义自己专用的标记。

XML允许粒度更新,HTML不支持类似的功能。

XML不是HTML的升级,也不是HTML的替代品。

HTML目前已经不再是WEB标记的标准,它已经被XHTML所取代,XHTML是HTML和XML的混合物,是XML在WEB领域的应用。

3.2XML的基本语法�文档声明在一个完整的XML文档当中,必须包含一个XML文档声明语句,这个语句必须是XML文档的第一行。

1.最简单的声明语法:<?xml version="1.0"?>在开始的左尖括号,问号和xml字母之间,还有结尾的问号和右尖括号之间不能有空格。

version 属性用于指定当前xml文档所遵循的xml规范的版本号。

这个属性必须指定。

2.用encoding属性说明文档的字符编码<?xml version="1.0"encoding="GB2312"?>如果没有指定encoding属性,那么xml的处理程序将编码默认为UTF8或者UTF16。

3用standalone属性说明文档是否独立<?xml version="1.0"encoding="GB2312"standalone="yes"?>如果XML文档需要和DTD文件,或者其它文件配合使用,那么需要把这个属性设置为no,表示它不能够单独使用。

如果同时指定了encoding属性和standalone属性,那么standalone属性必须在encoding属性之后。

�元素定义1.一个XML元素由一个标记来定义,包括开始和结束标记以及其中的内容,例如:<书名>红楼梦</书名>2.一个元素中可以嵌套若干个子元素3.格式良好的XML文档必须有且仅有一个根元素,其它元素都是这个根元素的子孙元素。

4.空元素可以不使用结束标记,但必须在起始标记的结束界定符(>)前面加一个正斜杠(/)字符,例如:<img src="test.gif"/>5.所有元素必须合理的嵌套,绝对不允许标签交叉,例如:<b>test<i>test2</b></i>6.元素标记名称规范1)可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:2)区分大小写,例如,<P>和<p>是两个不同的标记。

3)不能以数字或“_”(下划线)开头。

4)不能以字符组合xml(或XML、或Xml等)开头。

5)不能包含空格。

6)名称中间不能包含冒号(:)。

7.元素的标记名称建议1)不要使用“.”,因为在很多程序语言中,“.”用于引用对象的属性。

2)最好不要使用减号(-),而以下划线(_)代替,以避免与表达式中的减号(-)运算符发生冲突3)名称尽量简短,以减少XML文档的大小。

4)名称的大小写尽量采用统一标准,要么全部大写,要么全部小写。

5)名称可以使用非英文字符,例如中文,但是有的软件可能不支持非英文字符,在使用时应考虑这种情况。

�属性定义1.一个标签可以有多个属性,每个属性都有它自己的名称和取值。

例如:<书单位="元">100</书>2.属性值一定要用双引号(")或单引号(')括起来。

3.属性的名称与标签有相同的命名规范。

4.属性可以被改用成子元素来表示同样的信息,例如:<书><单位>元</单位><价格>100</价格></书>�注释1.用“<!--注释-->”这样的格式加入注释。

2.XML声明之前不能出现注释。

3.一对注释符号之中不能包含另一对注释符号,例如:<!--注释......<!--局部注释-->......-->�空格和换行处理在HTML中连续出现的多个空格或换行它们总是会显示成一个空格。

但是在XML中:1.对于XML中的标签以外的所有空格和换行,XML解析程序都要一个个如实地交给后面的程序去处理。

2.下面两段内容的意义是不一样的的:第一段:<晚餐>番茄炒蛋</晚餐>第二段<晚餐>番茄炒蛋</晚餐>3.由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让源文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。

�CDATA区问题:XML文档中包含类似“Elements look like<this>”的文本,其中的“<this>”将被解析程序解释成一个元素,而人们实际想要的是“<this>”所表示的原始文本。

要满足以上功能,就需要使用到CDATA区了:1.CDATA区全称为character data,以“<![CDA TA[”开始,以“]]>”结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动的交给后面的程序。

2.CDATA区中的起始和结束处有何没有空格和换行时有区别的。

3.“<![CDA TA[”不能写成“<![cdata[”或“<![Cdata[”之类的。

4.CDATA区内部不能出现“]]>”。

�特殊字符在XML中有以下5个预定义的特殊字符:&lt;<小于&gt;>大于&amp;&和号&apos;'单引号&quot;"双引号�处理指令(processing instruction)1.处理指令是processing instruction的中文翻译,通常简称PI,用来为处理XML文档的应用程序提供指示信息。

2.处理指令以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。

3.XML分析器把处理指令原封不动地传递给应用程序,由应用程序来解释这个指令,按照它所提供的信息进行处理。

例如在某个XML文档中可以包含下面的语句来告诉浏览器要使用simple.css控制其显示效果:<?xml-stylesheet type="text/css"href="simple.css"?>当然,如果要显示XML文件,更好的选择不是使用CSS而是使用XSLT(eXtensible Stylesheet Language Transformations),XSLT比CSS更加完善,如果需要使用XSLT来控制显示,则需要加入下面的处理指令:<?xml-stylesheet type="text/xsl"href="simple.xsl"?>4XML约束模式4.1XML约束模式基础4.1.1格式良好的XML计算机程序在处理XML文档之前,首先必须能够解析出XML文档内容中的各个元素的相关信息。

要让计算机程序解析出XML文档内容所表述的信息,XML文档更应该严格遵循一定的语法。

遵守XML基本语法规则和规范的XML文档就可以称之为“Well-formed XML”,中文意思就是“格式良好的XML”。

相关主题