|
|
|
[XML初学进阶]XML(39)合并 网上资源
|
|
5.1.1 XML基础标准及其相互关系
好了,到此为止,我们已经讲完XML文档的语法、如何进行文档类型说明(DTD/Schema)以及如何规定文档的显示方式(CSS/XSL)。也就是说,关于一个完整的置标语言所需要的各个要素我们都已经一一加以介绍。可以说,现在你已经对XML完全入门了,从最初的起点算起,已经在XML学习的道路上迈了一大步!
不过,这些基本的元素和它们所涉及到的协议还远远不能涵盖 XML的强大功能,比如说XML链接、XML与应用程序的接口,还有XML如何与数据库进行数据交换等等,它们为XML应用作出的杰出贡献,绝对不可小觑哟。关于这些内容的讲解,将放在后面几章中,如果前面的学习叫做入门,那么后面的学习就是提高了。不过,为了让大家对XML所涉及到的各个部分各个协议有一个完整的了解,以便更好地继续后面的学习,我们先来看看XML基础标准之间的相互关系。
500)this.width=500'>
首先,看看XML相关标准外围的一些标准,也就是那些对WEB应用具有确定体系框架意义的几个标准,如上图中虚线左侧的三个标准。这些标准并不是针对XML标准应用或采用XML标准制定的,但它们是WEB应用的基础,几乎在WEB应用的任何地方都会使用到它们。当然,在学习、使用或制定XML标准中,也必然要涉及到它们。
HTTP(超文本传输协议):是在WEB中应用最为广泛的一种应用层的协议,采用请求/应答方式,客户端发送请求信息到服务器端,这些信息包括请求方式、URI、协议版本以及客户端信息等。服务器端返回状态信息、实体信息以及可能有的实体内容。当前浏览器进行网站页面的浏览都是采用这一协议。
URI/URL(统一资源标识符/统一资源定位器):用来定位Internet上资源,以便在庞大的WEB信息系统中能唯一地标识任何一个资源。这种标识是在WEB上进行信息访问的前提和基础。
Unicode:是在WEB应用中广泛采用的一个字符编码标准,它将几乎世界上所有的文字都包括进去了。它的制定者Unicode策进会与相关国际组织密切合作,Unicode2.0版和ISO10646-1使用完全相同的字库与编码。XML标准要求XML分析器必须至少支持UTF-8/16编码的Unicode字符。
现在,来看看仅次于XML标准本身,居于核心地位,并且几乎被其他所有XML相关标准采用的一组标准,也就是图的中上部的一组标准。这些标准是由XML核心工作组(XML Core Working Group)制定的,为XML标准提供最为本质的支持。
XML Base:用于定义XML文档中URI的基础部分的标准,与HTML BASE相似。
XML Inclusions (XInclude):用于规定文档中包含物的处理模型与语法规则,包括如何合并这些包含物的信息,如何使用类似XML的语法进行合并控制等。
Canonical XML:目前还只是一个工作草案,它描述了一种对输入的XML文档生成范式的方法,这个范式不会因为文档采用的句法形式的改变而改变。对被一个应用改变了的XML文档,如果它的范式没有改变的话,那么对多数应用来说,改变前后的两个文档是等效的。
Namespaces in XML:这是我们前面介绍过的一个标准,它提供了一种简单的方式,用来解决多DTD的XML文档中元素名、属性名相冲突的问题。由于XML标准越来越丰富,命名空间也变得越来越重要。
图中右侧的四个标准为XML文档的处理提供了有效的方法与规则。
Schema:相信大家对这个老朋友会感到非常亲切,它是对DTD的补充,提供了一种更为严格的描述XML文档的结构、属性、数据类型等的方法,以便对XML文档进行更加严格的自动化处理。
DOM:定义了一组与平台和语言无关的接口,以便程序和脚本能够动态访问和修改XML文档内容、结构及样式。
XQuery:这是一个正处于工作草案阶段的标准,其目的是为从WEB中实际的或虚拟的文档中提取数据,提供一种灵活的查询机制。它为XML文档提供了一个数据模型、一组基于这个模型的查询操作以及在这些操作基础上的查询语言。它的需求文档已经发布,但在其下定义数据模型却是个困难的工作。为此,虽然W3C XML Query工作组早已成立,但该标准还处于工作草案需求阶段。
XForms:这也是一个工作草案阶段的标准,是从HTML的表单中发展抽象而来的。其关键思想是将用户界面和表现与数据模型和逻辑分开,以便同一个表单可被广泛地应用于手持设备、桌面设备或基于语音的浏览器等各种情况。XForms将XML的优点带入到Web表单中,采用XForms进行数据传输可以减少脚本语句,使得不必为实现表单的布局而将表单嵌入表格中等等。
包含XSL的那一组标准其实在HTML标准中已有其雏形:显示与链接,而且这是HTML中最为重要与常用的内容。同时,这组标准的内容充分继承了SGML标准中DSSSL与HyTime的相关内容。
一组描述显示的标准(CSS、XSL、XSLT):这一组标准在上一章中已经进行了详细的介绍,这里就不再赘述。它们都是用来描述XML的显示方式的。
XPath:这也是我们介绍过的一个标准,它用于描述如何识别、选择、匹配XML文件中的各个构成元件,包括元素、属性、文字内容等。该标准最初是从XSL标准中分离出来的,但由于其定义的是XML中一种常用的功能,为了XML标准本身的一致性,该标准不再仅仅为XSL标准服务,当需要进行XML文档内部元素定位时都采用它所规定的方法。其中XPointer就充分地利用了其内容,并在它基础上进行扩展。
XPointer和XLink:它们继承了HyTime标准中有关定位、链接方面的内容,链接采用单独的元素形式,并在标准中定义了"元元素",以便作为模板或父元素类型,链接可以有多种形式等。有关这两个标准将在第七章作详细的介绍。
剩下的一组标准可能读者接触较少。这几个标准中除了RDF较常用之外,其他几个一般的Internet使用者很少直接使用。不过它们是采用XML定义的几个Internet应用的基础标准。
RDF (Resource Description Format):是采用XML语法格式处理元数据的应用,为描述图像、文档和它们之间的相互关系定义了一个简单数据模型。简而言之,RDF用于进行资源描述,但它并不直接用来描述资源,而是定义了描述资源的规则。
PICS (The Platform for Internet Content Selection):可以说是RDF的一个应用,它提供了一种标注Internet内容的方法。比方说,我们可以用它对那些少儿不宜的内容进行标注。
P3P (Platform for Privacy Preferences):这是采用XML提供的一种进行隐私策略的描述格式,以便保护Internet使用者的个人隐私信息或其他保密信息不会未经允许而被站点或他人获取。它采用的方式是在用户访问站点时,对这方面的信息进行提示。
XML Signatures:提供了一种对XML文档进行数字签名的方法。它采用XML语法来描述数字签名的方法、计算和验证签名的处理方式,以便保证数据的完整性、可信任性和不可抵赖性。
5.1.1 XML基础标准及其相互关系
好了,到此为止,我们已经讲完XML文档的语法、如何进行文档类型说明(DTD/Schema)以及如何规定文档的显示方式(CSS/XSL)。也就是说,关于一个完整的置标语言所需要的各个要素我们都已经一一加以介绍。可以说,现在你已经对XML完全入门了,从最初的起点算起,已经在XML学习的道路上迈了一大步!
不过,这些基本的元素和它们所涉及到的协议还远远不能涵盖 XML的强大功能,比如说XML链接、XML与应用程序的接口,还有XML如何与数据库进行数据交换等等,它们为XML应用作出的杰出贡献,绝对不可小觑哟。关于这些内容的讲解,将放在后面几章中,如果前面的学习叫做入门,那么后面的学习就是提高了。不过,为了让大家对XML所涉及到的各个部分各个协议有一个完整的了解,以便更好地继续后面的学习,我们先来看看XML基础标准之间的相互关系。
500)this.width=500'>
首先,看看XML相关标准外围的一些标准,也就是那些对WEB应用具有确定体系框架意义的几个标准,如上图中虚线左侧的三个标准。这些标准并不是针对XML标准应用或采用XML标准制定的,但它们是WEB应用的基础,几乎在WEB应用的任何地方都会使用到它们。当然,在学习、使用或制定XML标准中,也必然要涉及到它们。
HTTP(超文本传输协议):是在WEB中应用最为广泛的一种应用层的协议,采用请求/应答方式,客户端发送请求信息到服务器端,这些信息包括请求方式、URI、协议版本以及客户端信息等。服务器端返回状态信息、实体信息以及可能有的实体内容。当前浏览器进行网站页面的浏览都是采用这一协议。
URI/URL(统一资源标识符/统一资源定位器):用来定位Internet上资源,以便在庞大的WEB信息系统中能唯一地标识任何一个资源。这种标识是在WEB上进行信息访问的前提和基础。
Unicode:是在WEB应用中广泛采用的一个字符编码标准,它将几乎世界上所有的文字都包括进去了。它的制定者Unicode策进会与相关国际组织密切合作,Unicode2.0版和ISO10646-1使用完全相同的字库与编码。XML标准要求XML分析器必须至少支持UTF-8/16编码的Unicode字符。
现在,来看看仅次于XML标准本身,居于核心地位,并且几乎被其他所有XML相关标准采用的一组标准,也就是图的中上部的一组标准。这些标准是由XML核心工作组(XML Core Working Group)制定的,为XML标准提供最为本质的支持。
XML Base:用于定义XML文档中URI的基础部分的标准,与HTML BASE相似。
XML Inclusions (XInclude):用于规定文档中包含物的处理模型与语法规则,包括如何合并这些包含物的信息,如何使用类似XML的语法进行合并控制等。
Canonical XML:目前还只是一个工作草案,它描述了一种对输入的XML文档生成范式的方法,这个范式不会因为文档采用的句法形式的改变而改变。对被一个应用改变了的XML文档,如果它的范式没有改变的话,那么对多数应用来说,改变前后的两个文档是等效的。
Namespaces in XML:这是我们前面介绍过的一个标准,它提供了一种简单的方式,用来解决多DTD的XML文档中元素名、属性名相冲突的问题。由于XML标准越来越丰富,命名空间也变得越来越重要。
图中右侧的四个标准为XML文档的处理提供了有效的方法与规则。
Schema:相信大家对这个老朋友会感到非常亲切,它是对DTD的补充,提供了一种更为严格的描述XML文档的结构、属性、数据类型等的方法,以便对XML文档进行更加严格的自动化处理。
DOM:定义了一组与平台和语言无关的接口,以便程序和脚本能够动态访问和修改XML文档内容、结构及样式。
XQuery:这是一个正处于工作草案阶段的标准,其目的是为从WEB中实际的或虚拟的文档中提取数据,提供一种灵活的查询机制。它为XML文档提供了一个数据模型、一组基于这个模型的查询操作以及在这些操作基础上的查询语言。它的需求文档已经发布,但在其下定义数据模型却是个困难的工作。为此,虽然W3C XML Query工作组早已成立,但该标准还处于工作草案需求阶段。
XForms:这也是一个工作草案阶段的标准,是从HTML的表单中发展抽象而来的。其关键思想是将用户界面和表现与数据模型和逻辑分开,以便同一个表单可被广泛地应用于手持设备、桌面设备或基于语音的浏览器等各种情况。XForms将XML的优点带入到Web表单中,采用XForms进行数据传输可以减少脚本语句,使得不必为实现表单的布局而将表单嵌入表格中等等。
包含XSL的那一组标准其实在HTML标准中已有其雏形:显示与链接,而且这是HTML中最为重要与常用的内容。同时,这组标准的内容充分继承了SGML标准中DSSSL与HyTime的相关内容。
一组描述显示的标准(CSS、XSL、XSLT):这一组标准在上一章中已经进行了详细的介绍,这里就不再赘述。它们都是用来描述XML的显示方式的。
XPath:这也是我们介绍过的一个标准,它用于描述如何识别、选择、匹配XML文件中的各个构成元件,包括元素、属性、文字内容等。该标准最初是从XSL标准中分离出来的,但由于其定义的是XML中一种常用的功能,为了XML标准本身的一致性,该标准不再仅仅为XSL标准服务,当需要进行XML文档内部元素定位时都采用它所规定的方法。其中XPointer就充分地利用了其内容,并在它基础上进行扩展。
XPointer和XLink:它们继承了HyTime标准中有关定位、链接方面的内容,链接采用单独的元素形式,并在标准中定义了"元元素",以便作为模板或父元素类型,链接可以有多种形式等。有关这两个标准将在第七章作详细的介绍。
剩下的一组标准可能读者接触较少。这几个标准中除了RDF较常用之外,其他几个一般的Internet使用者很少直接使用。不过它们是采用XML定义的几个Internet应用的基础标准。
RDF (Resource Description Format):是采用XML语法格式处理元数据的应用,为描述图像、文档和它们之间的相互关系定义了一个简单数据模型。简而言之,RDF用于进行资源描述,但它并不直接用来描述资源,而是定义了描述资源的规则。
PICS (The Platform for Internet Content Selection):可以说是RDF的一个应用,它提供了一种标注Internet内容的方法。比方说,我们可以用它对那些少儿不宜的内容进行标注。
P3P (Platform for Privacy Preferences):这是采用XML提供的一种进行隐私策略的描述格式,以便保护Internet使用者的个人隐私信息或其他保密信息不会未经允许而被站点或他人获取。它采用的方式是在用户访问站点时,对这方面的信息进行提示。
XML Signatures:提供了一种对XML文档进行数字签名的方法。它采用XML语法来描述数字签名的方法、计算和验证签名的处理方式,以便保证数据的完整性、可信任性和不可抵赖性。
5.1.2 SGML标准体系框架
从前面可以看出,虽然XML标准本身简单,但与XML相关的标准却种类繁多。其实上一小节中列出的还只是XML的基础标准,实际上还有很多用XML定义的应用标准,也是我们这一章中讲述的重点。到目前为止,仅W3C制定的相关标准就有二十多个,采用XML制定的重要的电子商务标准又有十多个。这一方面说明XML确实是一种非常实用的结构化语言,并且已经得到广泛应用;另一方面,这又为学习了解这些标准带来一定得困难,除了标准种类繁多外,标准之间通常还互相引用,特别是应用标准,它们的制定不仅仅使用的是XML标准本身,还常常用到了其他很多标准。对某一特定的应用领域哪些标准是重要的呢?哪些标准是基础的,被其他标准广泛引用呢?这些标准之间的相互关系如何呢?XML标准的体系是怎样的呢?
下面我们就给出XML标准体系的框架。不过由于XML脱胎于SGML,二者的体系也非常相似,所以我们不妨先占用一点篇幅说说XML的老祖宗——SGML。
SGML文件的组成主要有三部分,即SGML声明、DTD和文件实例。
SGML声明是说明DTD和文件实例所使用的语法,其中包括文件和语法元素使用的字符集、定界符和命名规则、名字字符的使用、保留名的替换、可选的特征,如是否允许标记省略或子文件出现,另外此声明还指出系统的一些数量特征,称为容量集,例如名字允许的最大长度。SGML这部分体现了"抽象语法"的思想,即对于不同的系统环境、民族习惯及键盘设置,SGML的语法是可以改变的。声明部分在XML中被极大地简化,许多在SGML声明中的内容,被直接以固定的取值形式写入XML标准之中。但这并不影响XML的灵活性与可扩展性,因为XML已经有其明确的应用对象与应用背景,而恰恰是这种简化,大大降低了其复杂性,从而适应了WWW的应用要求。
DTD(Document Type Definition)称文档类型定义,与XML中的DTD一样,主要作用是定义一类文件的结构。在DTD中说明此类文件中有哪些元素,它们之间是怎样包含的,及出现的限制。
文件实例是文件实际要表达的信息,是由文件数据内容和描述结构的置标组成。这一部分内容也就相当于XML数据文档中的内容。
下图对SGML、HTML和XML的文件组成进行了比较:
500)this.width=500'>
从上图可以看出,SGML文件首先要进行SGML声明,但对于只由一个系统处理的SGML文件也可隐含SGML声明。通常,一个SGML声明也代表着一个SGML处理系统的特征与性能。在具有相同的SGML声明的情况下,可定义不同的DTD,每个DTD定义的是一类SGML文件实例。XML文件的XML声明大大简化,许多SGML声明中的内容都已作为XML标准的一部分内容被固定下来,但XML还是有充分的灵活性定义DTD。而对于HTML来说,DTD则已经是固定的了。
在XML标准出现之前,SGML标准已形成完善的体系,并有许多建立于其上的应用系统与应用标准。如下图所示,SGML标准的体系可分为三个层次:第一层次是元语言标准:SGML标准;第二层次是基础标准,如:HyTime、DSSSL等,是该体系的基本标准;第三层次是具体的应用标准,如:Internet上已广泛应用的HTML、VRML等标准。
500)this.width=500'>
现在,再仔细地看看中间那层的基础标准。这些基础标准可分为三类:信息描述标准、信息表现标准和信息关联标准。
信息描述:这一类标准是与SGML标准本身直接相关的标准,如:SGML公共标识符注册标准(ISO 9070)、SGML技术报告(ISO TR 9573)、SGML一致性测试系统标准(ISO/IEC 13673)、文档处理APIs标准等等。
信息表现:这一类标准是关于组合文档、超媒体文档的描述与处理的标准。如:文档处理框架与逻辑文档格式化、多语种字体信息、信息交换与服务等等。具体标准包括:文档样式语义与规范语言标准DSSSL(ISO/IEC 10179)、标准页面描述语言SPDL(ISO/IEC 10180)、字体标准Fonts (ISO/IEC 9541)、字体注册标准Font Registration (ISO/IEC 10036)等等。
信息关联:这一类标准是关于基于SGML进行信息管理与交换的标准,如:信息的链接与定位、基于时间的信息管理、知识结构与索引的表示法、交互式文档中的动作管理。具体的标准包括:超媒体/基于时间的结构化语言标准HyTime (ISO/IEC 10744)、基于主题的地图导航标准 (ISO/IEC 13250)、可更改交互文档交换标准ISMID。
在这些协议中,信息表现部分最重要的标准是DSSSL(Document Style Semantics and Specification Language),信息关联部分最重要的是HyTime(Information processing -- Hypermedia/Time-based Structuring Language (HyTime) - 2d edition)。这两个标准也是对XML标准体系中影响最为深刻的两个。其中前者是一种与平台无关的进行SGML文件处理的语言,其中主要包括转换语言、样式语言、表达式语言和标准文档查询语言(SDQL),XML相关标准中的CSS、XSL、XSLT、XPath,就有很多内容是从DSSSL中继承过来的。后者则定义了一个元素类型的集合,以便使用者可以利用这些类型,以一种标准的方式,在已有的SGML文档中提供超链及其他功能。在XML相关标准中,XPath、XPointer继承了这方面的内容。
5.1.3 XML标准体系框架
与SGML相关标准的体系相似,XML相关标准也可分为元语言标准、基础标准、应用标准三个层次,如下图所示。
500)this.width=500'>
元语言标准(meta-Language):定义的是用来描述标准的元语言,在XML标准体系中就是XML标准。XML标准在XML标准体系中与SGML标准在SGML标准体系中的地位相似,是整个体系的核心,其他XML相关标准都是用它制定的或为其服务的。
基础标准(Foundation Standards):这一层次的标准是为XML的进一步实用化制定的标准,规定了采用XML制定标准时的一些公用特征、方法或规则。在第一小节中讨论的标准基本都属于这一层次。
应用标准(Application Standards):XML已开始被广泛接受,大量的应用标准,特别是针对INTERNET的应用标准,纷纷采用XML进行制定。有人甚至认为,XML标准是Internet时代的ASCII标准。在这个Internet时代,几乎所有的行业领域都与Internet有关。而这些行业一旦与Internet发生关系,都必然要有其行业标准,这些标准往往是采用XML来制定的。当前较为重要的应用标准主要包括:
用于XML显示的标准:XHTML(采用XML对HTML的重新定义)、SVG(有关矢量图形的)、SMIL(有关多媒体同步显示的)、MathML(有关数学公式符号的);
用于移动设备的标准:CC/PP(移动设备的内容协商与信息交换)、HDML(手持设备)、WAP(无线应用设备)、VoiceXML(通过语音进行WEB访问);
用于电子商务领域的标准:Micropayments(W3C制定的)、BizTalk(Microsoft发起的电子商务的schema库)、ebXML(联合国UN/CEFACT小组和OASIS共同发起的)、PIP(由诸多IT业的巨子组成的一个标准化组织RosettaNet的应用网络标准。),cXML、xCBL、tpaML等等;
其他领域的标准:TV/WEB(WEB电视)、OEB(电子图书)、WAI(方便残障人进行WEB访问)。
下面,我们就分别对这些林林总总的XML应用标准作一个大致的介绍。
5.2.1 OASIS
读过前面一节之后,相信大家已经对各种XML的标准有了一个总体的认识。不过我们对介绍各种XML应用标准的铺垫还没有做完,在正式开始之前,还需要简要介绍一下制定这些标准的主要国际组织。
OASIS(Organization for the Advancement of Structured Information Standards)是一个致力于推动结构信息标准化的国际组织,该组织是非盈利性的国际联盟,专注于推进采用独立于具体产品的公共标准格式。这些标准包括:SGML、XML、HTML,以及其他与结构化信息处理有关的标准。
OASIS成员是这些标准的提供者与使用者,他们都是进行这些标准的具体实践工作的人。OASIS提供一个开放的论坛,以便它的成员讨论这些标准的市场需求、发展方向,以及为产品的互操作推荐指导方针。该论坛创建、接收、整理和分发这些标准的相关信息,包括标准的描述方法信息和标准的技术与实现信息。该组织长期进行标准相关的工作,包括标准的修订、使得标准更易于采用,以及在现实开放系统中的实现等。
该组织的网址是http://www.oasis-open.org/。The XML Cover Pages (http://www.oasis-open.org/cover/)是该组织建立的一个全面介绍XML及其父标准SGML的在线参考资源的站点。这些资源包括广泛的"置标语言"标准的文档。这些标准包括:XSL, XSLT, XPath, XLink, XPointer, HyTime, DSSSL, CSS, SPDL, CGM, ISO-HTML, 等等。
5.2.2 W3C
W3C (World Wide Web Consortium)创立于1994年10月,致力于领导万维网(World Wide Web),制定公共的协议,促进万维网的发展并确保其互操作性。W3C在世界各地,已有400多个成员组织,并在推进万维网的发展方面赢得了广泛的国际赞誉。
通过促进协作与鼓励开放论坛讨论的方式,W3C负责领导WEB的技术发展。在过去的6年里,W3C已为WEB基础设施建设制定了30多个技术规范,其中包括:HTML、XML、XHTML、CSS等等。然而,WEB还是年轻的,还有许多工作要做,特别是在计算机、远程通讯、多媒体技术等方面。为了适应用户期望值的增长和机器能力的提高,W3C已瞄准了下一代WEB的基础设施。W3C的技术将有助于为世界信息建设一个健壮、易扩展、适应性强的WEB基础设施。
W3C的长期目标是:
普遍访问:通过推动WEB技术的发展,使得WEB可以被普遍访问,人们不会因为民族文化、受教育程度、物质资源等不同而受限制;
基于语义的WEB:通过发展软件环境,使得每个使用者都可以最好地使用WEB上的可用资源;
可信赖的WEB:通过WEB技术的发展,使得其上的法律合约、商务活动、社会言论等都是可信赖的。
WEB是建立在Internet上的应用,它遵循如下设计原则:
互操作性:WEB的语言与协议技术规范必须互相兼容,而且允许任何软硬件协作地访问WEB;
可持续发展性:WEB必须有能力使用未来的技术。具体设计原则包括:简单性、模块化、易扩展等。以便很容易改变,而适应未来技术的发展,如:移动WEB设备、数字电视以及其他的未来技术。
分布性:毫无疑问,分布性是最新的设计原则和最难实现的。象Internet那样,为了抵抗错误与崩溃,WEB体系结构必须限制或避免依赖于一个中央注册机构。
W3C的网址是http://www.w3.org/。一打开主页,它的至理名言便赫然映入眼帘——“Leading the Web to its Full Potential..."。
5.3.1 面向网页:HTML的升级版——XHTML
在众多XML相关的标准中,我们从XHTML开始讲起。之所以先说它,是因为它融合了我们迄今为止最为熟悉的两种置标语言--HTML和XML。我们知道,HTML是用SGML定义的适于网上浏览的一种置标语言,而XHTML就是将过去以SGML定义的HTML,改用XML来重新定义,所有的置标都与既有的HTML 4置标一致,所以最早又叫做“HTML in XML”。从很大程度上讲,它是HTML到XML的过渡版本,是由于HTML危机四伏、而XML的使用环境尚不成熟所以被制订的。不过因为变成了XML,有些地方必须遵守XML的规范,严格执行,不再像过去那么随便。
XHTML的全称是可扩展超文本置标语言,即eXtensible HyperText Markup Language。XHTML于1998年12月5日提出第一个草案,其1.0版本的推荐标准(Recommendation)于今年1月26日正式通过。在此之后,W3C又致力于1.1版本的制订,侧重于对于XHTML的模块化,并从1.1版本中提取出最基本元素构成基本XHTML(XHTML Basic)专门用于非PC环境,尤其是移动电话的浏览环境。此外,W3C的HTML工作组最近又开始着手于XForms标准的起草工作,通过对XHTML中表单实现方式的修改将网页中用户交互功能从数据表现中分离出来。这些变化都充分体现了未来网页内容与形式相分离,以及适用于多种交互环境和浏览环境的大趋势。
大家不要小看了对HTML的这一改头换面,它可不是简单的新瓶装旧酒。HTML经这么一改,具有了很多以前没有的优点。首先,由于XHTML遵循XML格式,因此可以用标准的XML工具浏览、编辑和检查,它可谓是HTML向XML的一个过渡。让我们在XML的编辑浏览工具尚未成熟的时候,也能通过XHTML来提前领略XML的诸多优点。
其次,XHTML象众多XML的成员一样,可以通过使用名空间而具有良好的扩展性,这意味着我们不但可以在页面上使用传统的HTML标记来描述显示格式,而且还可以引入MathML描述的数学公式、SVG描述的矢量图形、SMIL描述的多媒体效果,甚至可以引入用户自定义的基于内容描述的标记。
不仅如此,XHTML的最大特点在于它的模块化。它不是一股脑地将HTML中所有的标记不加选择不加鉴别地进行一遍改装,而是将这些标记根据浏览者的需求和浏览器的支持能力分解为一个个模块。现有的1.0标准中包含了三个模块:
严格式Strict:使用CSS来描述样式,而淘汰诸如FONT等的标记
过渡式Tranzitional:考虑到FONT等标记使用还很广泛,采用一种过渡的方式来逐步过渡到严格式
集合Frame set:支持含有 的HTML。
由于以后会出现不同种类的终端和平台,例如手持设备和移动电话等,没有必要每一种终端都百分之百地支持所有HTML中的标记,所以XHTML这一模块化的思想是顺应了网络发展的潮流和后PC时代的到来的。
XHTML和HTML文档非常相似,所用的标记和属性都是相同的,外观也大同小异,只有以下几点额外的要求:
文件最好以一个XML声明打头。
文档的根元素之前应该有一个文档类型声明,在声明中使用XHTML的三个DTD中的一个作为公共标识符。
文档的根元素应该是HTML,而且应该利用属性xmlns指定XHTML的名空间。
必须遵守XML关于"格式良好"的诸多规定。
下面我们就来看一个简单的XHTML文档:
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Strict//EN" "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml> <head> <title>第一个XHTML文档</title> </head> <body> <p>欢迎访问 <a href="http://www.xml.net.cn">XML中国论坛</a>。 </p> </body></html>
XHTML文件可以冠以.html扩展名,这样就可以用当前的浏览器浏览;也可以冠以.xml扩展名,确保它能被未来的XML编辑浏览工具所接受。不仅如此,使用W3C的免费工具HTML Tidy可以很方便地把一个现有的HTML文件转换为XHTML文件。仅从这些来看,称XHTML为HTML到XML的过渡版本也是恰如其分的。
5.3.2 面向科技领域:最古老的XML——MathML
MathML可以说是最“古老的”XML语言之一,它使得数学成为得到XML恩泽的第一个领域。在MathML出现之前,由于HTML缺乏描述数学表达式的标记,这些表达式不得不利用其它公式编辑工具先存为图象格式再插到网页中去,大大降低了传输速度。可以想见,制作一个以包含了众多数学公式的论文为内容的页面有多么繁琐,而浏览者又要花多少时间去等待众多公式图象的下载,这甚至已经成为对科学交流的阻碍。MathML正是因此应运而生,W3C于1998年4月7日发布了MathML的1.0版本,随后又于1999年7月7日发布了升级版1.01。现在MathML2.0草案也在讨论之中。
MathML专门用于描述数学符号并且捕获其结构与内容,它的目的是使数学及科学内容可以在Web上使用和重用,并且可以在其他应用系统上,如计算代数系统、排版打印系统及语音合成系统等,得到使用和重用。MathML从表现形式和语意两个不同的角度定义了两大类标记,其中28个MathML标记描述了抽象符号结构,而另外75个标记提供了一种明确指定表达式意义的方法。这样一来,MathML不但能够用来为高质量的显示系统编码数学符号的表现,也可以用来为科学软件或声音合成软件等基于语义的应用软件编码其数学内容。
现在,我们就通过一个最常见的公式来看看这两大类标记如何使用。
500)this.width=500'>
使用表形的标记,这个公式是如下描述的:
<mrow> <mi>x</mi> <mo>=</mo> <mfrac> <mrow> <mrow> <mo>-</mo> <mi>b</mi> </mrow> <mo>±</mo> <msqrt> <mrow> <msup> <mi>b</mi> <mn>2</mn> </msup> <mo>-</mo> <mrow> <mn>4</mn> <mo>⁢</mo> <mi>a</mi> <mo>⁢</mo> <mi>c</mi> </mrow> </mrow> </msqrt> </mrow> <mrow> <mn>2</mn> <mo>⁢</mo> <mi>a</mi> </mrow> </mfrac></mrow>
其中:<mrow>表示水平的部件,起到封装的作用,其子元素排列在一行;<mfrac>表示分式,它的第一个子元素位于分号之上,第二个子元素位于分号之下;<msup>表示乘方,它的第二个子元素位于第一个的右肩;而<msqrt>是根号,其子元素放在根号下。另外,在MathML中不能直接引用数字、变量和运算符,分别需要用标记对<mn>、<mi>、<mo>括起来。而±和⁢则是专门用来代表运算符的实体引用。
如果使用表义的标记,公式表示为:
<reln> <eq/> <ci>x</ci> <apply> <divide/> <apply> <fn><mo>±</mo></fn> <apply> <minus/> <ci>b</ci> </apply> <apply> <root/> <apply> <minus/> <apply> <power/> <ci>b</ci> <cn>2</cn> </apply> <apply> <times/> <cn>4</cn> <ci>a</ci> <ci>c</ci> </apply> </apply> <cn>2</cn> </apply> </apply> <apply> <times/> <cn>2</cn> <ci>a</ci> </apply> </apply></reln>
表义标记中<apply>充当封装的作用。各种各样的运算都有专门的记号来描述,例如<reln>、<times>、<divide>、<root>等等。数字和变量同样不能直接出现,用<cn>、<ci>来标注。这两段MathML都是很容易看懂的,其实它们还可以结合起来使用,例如在下面这段代码中,用semantics元素为一个表形表达式附加一个表义表达式作为“语义注释”:
<semantics> <mrow> ... </mrow> <annotation-xml encoding="MathML-Content"> <apply> ... </apply> </annotation-xml></semantics>
相反,也可以用一个表形表达式为表义法作注释:
<semantics> <apply> ... </apply> <annotation-xml encoding="MathML-Presentation"> <mrow> ... </mrow> </annotation-xml></semantics>
最后要指出的是,所有MathML部分都用一个math标记包起来,以便和其他内容区分,可以插到HTML等等的网页中。除了我们看到的这个例子之外,MathML还可以用于表示集合、矩阵等非常复杂的数学表达式,可谓是在数学领域“术业有专攻”的典范了。
| |
|
|
|