1.什么是XML?
XML 开发者们会告诉你,事实上XML并不是一种语言,而是一种用来定义其它语言的系统。可能你已经听过,或许甚至自己尝试过一些这样的语言——比如微软为推(push)技巧所推出的频道定义格局(Channel Definition Format)。
W3C是互连网上一些公用尺度的开发者,他推出了一系列和XML相干的尺度和草案。他们把XML描叙成“一种用来表达结构化数据的通用语法”。所谓结构化数据是指被标签(tags)定义了其内容,意义和用法的数据。例如,在HTML的定义中,<H1>标签所定义的文本,将会用一种特定的字体和大小所显示出来。一个XML标签会明白的断定一种信息: <AUTHOR>标签可能表现的是文档的作者,而<PRICE>则可能包含了产品的价格。与HTML中标签所不同的是:XML标签的含义是自定义的,假如你愿意,可以用<PRICE>来表现作者信息,而用<AUTHOR>来表现产品价格。固然这看起来会很别扭,但尽对是准确的。
通过火别结构和数据,一份XML文档能够一经写出,就能利用在多种不同的用处:在盘算机屏幕上显示出来,或者显示在手机屏幕上,又或者被转到为盲人设计的语音设备上,等等,诸多功用,不一而足。它几乎能够工作在任何可能的通信设备上。这时候,一个XML文档的作用,已经远远超出了当初你所认为的那样,仅仅是用来显示内容的简略文档了。这样,XML就能够在除了互连网的其它处所也能够一展身手。
在一些大型的文档制作商中,SGML是他们用了很多年的语言,但是它实在是太复杂了,仅仅是定义就有400多页。XML的呈现也为他们发明了一些契机。事实上XML是SGML的一个精简了的子集,SGML的大部分工作都可以由XML来完成,而XML比起SGML来却是简略了很多。
当然,平台无关的XML最初是为Web所设计的,它也将在在Web上产生最大的影响。
DOM(Domument Object Model)是一个编程接口,他定义了在一个文档中如何进行数据存取的机制。XML能够为Web所做的,很大程度上取决于它是如何同DOM(文档对象模型)进行交互。
应用DOM,程序员可以用一种尺度的方法来动态的把持文档的内容和相干的一些属性。换句话说,程序员可以让在一个浏览器的文档对象树中的一段内容进行一些特定的动作。例如:当把鼠标移到一小段文字上面时,它会转变色彩。网景的Navigator和微软 Internet Explorer都定义了个不相容的DOM,但是这两个公司都颁布在他们下一个版本的浏览器中会支撑W3C的尺度DOM。这会给程序员带来很多的方便。
2.为什么XML很重要?
在Web上一条很重要的原则是:内容是一个网站最为重要的东西。但不幸的是,内容总是同如何将他们显示出来这个方面接洽在一起的。你在浏览网页的时候,有多少次看到一个小小的标签,上面写着“最好在800*600解析度下浏览本网站”呢?数不胜数吧!
XML将有助于解决这个标题。由于在XML中,网站建设者不再是指定在网页的什么处所显示什么东西,他们需要做的是定义好一个文档的结构。例如,你需要定义的是文档的标题,作者,一系列相干链接等等。任何设备有XML 浏览器的设备——一个掌上电脑,或这是电视机顶盒,或者是一个高性能的工作站等等——就能够把XML文档的内容根据各个设备的显示特征显示出来。
或许XML最强的特征,在于其内在的可扩大性。任何的公司和组织都能够扩大XML 来实现新的利用。现在在乎联网上几乎天天都有关于XML的利用计划的提出。一些基于XML的语言已经开端被应用,像微软的频道定义格局——还有一些正在被开发之中,包含Resource Definition Format(资源定义格局)和Open Software Description(开放式软件描叙)等等。
XML还很有可能成为数据和文档交换机制的尺度。例如,可以用XML来实现在Internet上不同数据库之间的信息交换。
到现在为止,要准确的阐明XML的公用似乎还为时过早。但是它所带来的可能性是无限的,或许这就是为什么XML能够在其初期就能够如此引人关注的原因吧。
3. SGML,HTML和XML的关系是怎样的?
SGML,尺度通用标记语言(Standard Generalized Markup Language)最早是用来再字处理程序中描叙数据用的。像RTF(富文本)文件,Word的DOC文件等等,都可以看成是利用SGML的例子。假如你用记事本打开一个RTF文件,就可以看到同HTML相近的一些东西,那就是RTF的源数据描叙,也是通过SGML定义的。SGML从出生到现在已经有上10年的时间了,可以说已经发展的十分成熟。XML和HTML都可以算的上是SGML的徒子徒孙了,他们都是从SGML发展而来的文档格局描叙语言。因此他们都有一些共通的特征,比如相近的语法,都应用尖括号标签等等。但是准确的说来,HTML是SGML的一个利用,而XML是SGML的一个精简子集。
这其间的差别是本质上的。简略的说来,HTML不能够用来定义(或者说衍生)一个新的利用,而XML却能够做到。例如,资源描叙格局和频道定义格局就是由XML定义出来的新的利用。理论上讲,甚至可以用XML来重新改写HTML。对于它们之间的关系,W3C给出了一个图例(见图),活泼的阐明了这一点。
XML事实上是与SGML相兼容的——XML文档能够被任何的SGML编纂和浏览器所解析。但是,XML比SGML要简略的多,并且他是特别的为传输带宽有限的Internet所设计的。Tim Bray是XML尺度的编制职员之一,根据他的说法,XML就是要持续SGML的长处,但往处SGML的复杂性,并使之能够在网上很好的工作。
HTML,SGML,和XML都将在必定时间内守住自己的岗位,暂时不会有哪一种会被其他的所淘汰。HTML仍然是网上宣布信息的最为快捷的方法。假如要宣布的数占领长期的利用价值并且需要一些结构化的内容,网站建设者应当考虑转而应用XML。和HTML与XML不同,SGML将不会在网上得到广泛的赞成,由于它并不是为网上传输而特别设计的。但对于高真个利用,那些高度结构化的文档利用,SGML仍将施展起作用。
4.XML是如何被实现的?
XML能够被利用到很多不同的方面。其中之一是用来在人和机器之间交换信息,比如把信息从一个网站服务器说明了在传递给用户浏览器共用户浏览。在有就是在不同的机器,不同的系统,不同的利用程序之间进行数据交换。
在上面的两种利用中,你可能都需要一种三层模式各构架:一个数据库服务器是一层,用来存贮数据。一个作为中间层的服务器,用来对数据进行适当的说明和表达,然后就是客户端,数据被显示出来,并能够做进一步的利用。数据库服务器能够从多个数据源接收信息,或许它们已经是作为XML格局存在了的。中间层能够把所有的数据整合起来,然后发送到客户端往。
现在,很多的Web网页就是这样被天生的。并且,一个结构的比拟好的XML文档,能够答应客户端程序修正文档的外端来显示在不同的媒介中,比如在打印机中打印出来。
5.什么是DTD?
一个文档类型定义(Document Type Definition)是一套标签的语法定义。它告诉你在一个XML文档中你能够应用那些标签,标签呈现的次序以及能够应用那些属性等等。DTD最先是在SGML中工作的,在XML中也引进了DTD,但它不是构成一个XML文档所必需的。而且,它通常也并不与XML一起呈现在一个文档中(当然也可以在一起),而是在一个单独的DTD文件中,这样,一个单独的DTD就可以被多个XML文件所引用了。
由于XML本身并不是一个语言,而是用来定义其他语言的尺度方法,因此他并没有一个像HTML那用的通用的DTD。因而,每个想用XML的公司和个人,都可以定义其合适的DTD,来满足不同的请求。
关于DTD也有很多的争辩。一些人认为它为很重要,是最为本质性的东西。一些人为它限制了发明性,还有一些人认为它很有用,但还不是足够的好。微软试图用他的XML-Data来结束这些争辩,但批评家们认为应当从DTD的本质定义上对其进行改良。
微软的schema包含微软在内的一些公司,针对DTD的一些标题提出了一个DTD的代替计划,称为schema,并且已经作为XML-Data提交给W3C。和DTD类似,一个schema供给了关于文档的一些规矩,并给出了能够应用的标签,属性以及标签之间的属性,等等。
但与DTD所不同的是,schema能够用来定义数据类型。例如,假如在DTD中定义了一个名为<PRICE>的标签,此时包含在标签中的内容可以是数字或者字符串。但是假如应用schema,就可以强迫其中输进的内容只能是数字,而不能够输进其他类型的数据。
这种方法显然是有效的,特别是在不同的利用程序,对象或者数据库之间交换数据的时候。唯一的标题就是:schema能否成为DTD尺度的一部分,或着仅仅是一个独立的XML的扩大。
6.什么是well-formed和valid文档?
在本质上存在着两种类型的XML文档:well-formed(结构良好的)和 valid(有效的)。一个结构良好的XML文档服从XML语法的一般规矩。这个规矩说起来要比HTML和SGML都要严格的多。HTML的语法规矩有很大的随便性,经常可以有一些省略和不规范的写法存在。但XML文档却不能够这样,必需严格的以XML的语法规矩来撰写XML文档。下面给出了well-formed的XML应当遵照的几条规矩:
1. XML文件的第一列必需是XML的文档声名;
2. XML文件中只能有一个根节点。
3. 开端标签与结束标签必需称对呈现。
4. 空的标签必需要有“/”符号。
5. 首有的标签不能够交叉呈现,必需满足巢状的结构。
6. 英文的大小写是有差别的。
7. 属性指必需用双引号包抄起来。
8. 特别字符有特别的表达方法,包含“&”,“<”,“>”,“"”,“'”这五个字符。
一个有效的XML文档要比结构良好的XML文档请求更为严格一些。它除了要满足所有上面列出的八条规矩外,还必需遵照一个DTD文档的定义。前面说过,DTD对于一个XML不是必需的,但对于一个有效的XML文档来说,必需有一个对应的DTD定义存在。
确认XML文档的有效性,很大程度上是那些出版和撰写工具所要考虑的标题。对于一般的XML浏览器而言,要显示出XML的内容,只需要是满足well-formed的定义就可以了。
7.浏览器是如何解读XML文档的?
用来解读XML的工具一般的被称为XML分析器(parser),不过它正式的名称应当是XML处理器(processor)。XML为那些用来撰写,出版,搜索,或者显示的利用程序传递数据。XML并没有供给一套API(利用程序接口)来节制其行动,他只是简略的把解析后的XML文档传递给利用程序。当然,前面已经说过,对于不满足well-formed条件的XML文档,XML是不会进行解析的。网景和微软都已经在其最新版本的浏览器中内置了XML解析器。这样,当XML被传递到客户端浏览器时,首先经过解析器的解析,然后才传递给浏览器把内容显示出来。
8,RDF,CDF和XML之间有什么关系?
假如XML有才能说出某种语言,那么XML利用程序就可以看成被说出的那种具体的语言。RDF(Resource Description Format)就是那样的一种XML利用。它也是一种语言,只不过是遵照XML的语法,由XML衍生出来的。
RDF是用来描序和存取数据的一种方法。这意味着RDF是关于数据的数据,或者称为元数据(metadata)。在WEB上,这种元数据可以被用来建立尺度的网站舆图,得到更为准确的搜索成果,以及网站主体的分级描序。
RDF还能够用来创立智能书签,当书签所引用的网页地址产生转变的时候,书签本身也能够主动的转变。这对于那些内容经常更新的网站来说尤为有用。对于网站的建设者而言,应用metadata是一件很简略但能够收效颇大的事情。
同样的,CDF也是有XML发展而来的。CDF(Channel Definition Format)是由微软提出并大力提倡的。通过它的XML解析器,Internet Explorer 4.0能够读懂CDF文件并更具其内容进行相干的网页提取把持。这也就是所谓的“推”技巧。网景也有相应的“推”技巧,但在语法构成上与微软的CDF并不雷同。
9,作风页和XML的关系是什么?
由于XML把内容和表现情势离开来了,所以网站设计者们需要一种新的方法来节制版面的和外观的显示。作风页这时候挺身而出了。到现在,共有三种不同的作风页能够和XML一起工作,它们是:
1. Cascading Style Sheets (CSS)。
2. Extensible Style Language (XSL)。
3.Document Style Semantics and Specification Language (DSSSL)。
XML对于现在的CSS尺度支撑的很好,CSS也能够完成大部分基础的作风和外形的设定。但是CSS并不能够满足一些高真个利用。这时候或许更多的请求助于DSSSL,这项ISO尺度。它曾经和XML的先辈SGML合作得很好,现在对付XML当然不会有什么标题——唯一的标题是:她太复杂了,而且大多数是为了出版业而设计的,并没有太多地考虑网上传输的特别性。
于是,剩下的就是XSL了,它基础上就是专为XML所设计的。现在XSL正作为W3C的一项议案有待于通过讨论,所以现在只有在IE5中得到了支撑,其他浏览器都还不熟悉XSL。XSL给网页设计者和用户以更大的弹性,它很多的特征在HTML中基本是无法想象的。例如:HTML的<H2> 标签在所有的浏览器中显示都是一成不变的,但在XSL中,社记者能够指定任意的页面元素按他们的想法显示出来。而用户也可以通过个人的设定来决定<H2>到底该如何显示。 XSL是被设计成可以和一些脚本语言比如javascript协同工作的。你甚至可以写这样的脚本:“if 某个XML元素的某个属性值=10 then 让它显示成绿色,else 让它显示成蓝色”,等等。和XSL在一起,XML显得无所不能。
10.XML对于超链接有那些改良?
XML对HTML的超链接做了一些改良,增加了一些特征,包含能够建立“智能”链接,可以省往不少手工编写JavsScript的麻烦。在XML中,链接是作为一个对象呈现的,可以向把持任何的其它对象那样,对超链接进行方便的把持。
本来的关于链接的的尺度——XLL,XML链接语言(XML Linking Language)现在被分为两种新的尺度:Xpointer和XLink.
Xpointer:在HTML中,可以通过书签链接到一个页面的任何处所。通过Xpointer你将能够“寻址到(address to)”(而不是“链接到(link to)”)其他页面的任何一部分的内容。显然的,这对于在文档引用方面是非常有用的。
Xlink:当用户点击了HTML中的一个超链接后,当前的网页被一个新的网页所调换。Xlink能够让Web开发者为链接这个对象添加一些动作(behaviors)。例如:在现在你必需用javascript来实现把链接的网页在一个新的窗口中显示出来,但Xlink通过给链接对象添加了一些行动,实现弹出窗口轻易到只是简略的调用对象的方法而已。其他的一些有用的利用,像弹出的警告对话框,需要用户做出确认的对话框等等,通过Xlink的对象机制都可以很轻易地实现。但现在,我们还都必需求助于脚本编程采能够解决。
对于一系列相干的链接,XML能够让Web开发者创立扩大链接(Extended Links)来方便的实现像www.webring.com这样的网站或网页,把一些雷同主题的网页主动的链接在一起。现在实现这个功效需要应用到CGI脚本,但是扩大链接将供给尺度的方法来建立资源之间的关联。
现在还有一些标题需要得到进一步的讨论,特别是在“行动”机制方面还有一些工作要作。但这并不妨碍在不久的将来,Xpinter和Xlink作为新的尺度被广泛应用。
11.XML的国际化标题
XML的呈现,使得网站的国际化变得空前的轻易。和Java一样,XML也是应用的Unicode(ISO 10646)作为其编码尺度,这是的网站建设者们能够很轻易的写出各国的文字和符号,而不必过多的担心乱码的标题。Unicode 包含了所有的ASCII字符,以及简体中文,繁体中文,日文,韩文,希腊文等等。在XML中甚至可以答应有混杂的编码呈现,例如,一个显示中文的网页可以引用一个德文的单词,而不必担心呈现乱码。
开发者不需要专门为了Unicode而在往学习什么新的东西,网页一经写好后,在客户真个浏览器中显示时,浏览器会主动的应用合适的字符集把网页显示出来