前言:才学了半个学期的XML,对XML技术的内容有所了解,也为其编程的灵活性和规范性所折服,但是对其中所用的三个常用元数据工具其各自的特点仍然不够明晰.因此便想借此机会进行加深巩固.
一 XML 简介
1).什么是XML? XML是"可扩展标识语言"(Extensible Markup Language)的缩写。也是目前网络上流行的HTML语言的延伸。与HTML不同的是,XML语言能把数据与数据表示(例如界面)分开。这种特性能够让XML适合在网络上不同计算环境(无论是不同的操作系统环境,还是不同的设备显示方式)中采用一致的信息表示方式。XML技术被称作是下一代网络计算的核心技术,是因为它能够按照一定的语法和词汇表定义各种专业知识,而且还能够以文本的方式在网络上传递,让各种联网的计算机能够解释这些知识,并协同工作完成不同的计算任务。这种特性使XML成为了网络上分布式计算的最佳载体,使P2P计算方式轻松实现。 2).XML的特点 XML的本质特点是表达知识的语义。具体地包括: 1. 有助于构造三层的应用框架 XML能集成不同的数据源,并与分布式对象技术相结合,构造三层的应用框架。 2.可在本地进行个性化计算和处理 在客户端处理数据,减轻了服务器端负担,并且可根据不同用户的要求作相应的处理。 3.各种编辑操作非常方便 特别是支持对文档局部进行更新,减少了数据传输量。 4. 广泛的适用性 支持多种应用环境,具有跨平台、跨空间和跨设备的优点,适合网络传输。 5. 表达知识能力强 与HTML不同,XML主要是描述数据本身而非数据的显示格式,因此,它特别适合知识表示。 3.)XML带来的好处 1、更有意义的搜索 数据可被XML唯一的标识。没有XML,搜索软件必须了解每个数据库是如何构建的。这实际上是不可能的,因为每个数据库描述数据都是不同的。有了XML,书就可以很容易以标准的方式按照作者、标题、ISBN序号或其他的标准分类。搜索书就变得十分方便。 2、开发灵活的Web应用软件 数据一旦建立,XML能被发送到其他应用软件、对象或者中间层服务器做进一步地处理,也可以发送到桌面用浏览器浏览。XML和HTML、脚本、公共对象模式一起为灵活的三层Web应用软件的开发提供了所需的技术。 3、不同来源数据的集成 现在搜索多样的不兼容的数据库实际上是不可能的。XML能够使不同来源的结构化的数据很容易的结合在一起。软件代理商可以在中间层的服务器上对从后端数据库和其他应用处来的数据进行集成。然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。 4、多种应用得到的数据 XML的扩展性和灵活性允许它描述不同种类应用软件中的数据,从描述搜集的Web页到数据记录。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。 5、本地计算和处理 XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据,而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据。数据计算不需要回到服务器就能进行。分离使用者观看数据的界面,使用简单灵活开放的格式,可以给Web创建功能强大的应用软件,这些软件原来只能建立在高端数据库上。 6、数据的多样显示 数据发到桌面后,能够用多种方式显示。通过以简单开放扩展的方式描述结果化的数据,XML补充了HTML,被广泛的用来描述使用者界面。HTML描述数据的外观,而XML描述数据本身。由于数据显示与内容分开,XML定义的数据允许指定不同的显示方式,使数据更合理地表现出来。本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。CSS和XSL为数据的显示提供了公布的机制。 7、粒状的更新 通过XML,数据可以粒状的更新。每当一部分数据变化后,不需要重发整个结构化的数据。变化的数据不需要刷新整个使用者的界面就能够显示出来。目前,只要一条数据变化了,整一页都必须重建。这严重限制了服务器的升级性能。XML也允许加进其他数据,比如预测的温度。加入的信息能够流入存在的页面,不需要浏览器发一个新的页面。 8、升级性 由于XML彻底把标识的概念同显示分开,处理者能够在结构化的数据中嵌套程序化的描述以表明如何显示数据。这是令人难以相信的强大的机制,使得客户计算机同使用者间的交互作用尽可能的减少了,同时减少了服务器的数据交换量和浏览器的响应时间。另外,XML使个人的数据只能通过更新的布告发生变化,减少了服务器的工作量,大大增强了服务器的升级性能。 二 XML是如何实现其特点和功能的呢?XML是一种WEB标记语言,它为用户提供了灵活的标记扩展机制,使得不同内容的资源能以格式良好的自定义的标记元素来表现。元数据是描述信息资源或数据等对象的数据,主要用来识别、评价、追踪资源,以及方便对资源的管理、发现、查找和交换。随着计算机网络的发展,特别是Internet的普及,网络环境下信息的描述和处理成为一个重要的问题,相应地网络环境下的元数据问题也成为一个研究的热点。DTD和XML Schema是XML中常用的进行标记扩展的工具,RDF是专用的元数据描述工具,网络环境下的元数据描述通常就是借助这几个工具,利用XML的标记可扩展性来完成。在这三个工具中,DTD 随着XML1.0最早被提出,伴随着XML应用的普及和人们对DTD认识的加深,又进一步提出了RDF和更有发展潜力的XML Schema。随着Internet和WWW的飞速发展,XML凭借其自身的特点,为网络信息的管理、搜索以及Web上各种应用的链接提供了极大的便利,从而得到了广泛应用。XML的一个重要特点就是允许用户定义自己的标签,从而实现对信息的存储和管理。XML中较常用的标签定义工具有DTD和XML Schema,而RDF是一个专用的元数据描述框架。本文结合一个MARC元数据描述的实例,对DTD和Schema工具进行了比较细致的分析和对比.
1.DTD作为XML1.0规范的重要组成部分,它使用EBNF(Extended Backus Naur Form)语法完成XML文档结构的定义,即XML文档中标记的定义。一个XML文档只能对应一个DTD,一个DTD由一系列标记定义组成,包括元素定义(element declaration)、属性定义(attribate declaration)、实体定义(entity declaration)、注释定义(notation declaration),是目前支持和应用最广泛的一种标记扩展工具。例如,一个用于描述MARC元数据的XML文档的DTD可以定义如下: <!DOCTYPE mare [ <!ELEMENT marc (record) *><!ATTLIST mare TYPE (CN |US| UN11) # REQUIRED> <!ELEMENT record (datafield) *> <!ATTLIST record type CDATA # REQURED info CDATA # REQUIRED> <!ELEMENT datafield (subdatafield) *> <!ATTLIST datafield tag CDATA # REQUIRED ind1 CDATA # IMPLIED ind2 CDATA # IMPLIED> <!ELEMENT subdatafield (# PCDATA)> <!ATTLIST subfield code CDATA # REQUIRED> ]> 各个标记和属性的作用如下: <MARC>:用于标记内容的开始和结束,属性“type”用于标记MARC类型,如CNMARC,USMARC,UNIMARC。 <RECORD>:用于标记MARC记录的24byte定长头标区,属性有“type”和“info”。 <DATAFIELD>:MARC记录数据字段区的数据字段标记,对应MARC记录中每个字段的内容,属性“tag”、“ind1”和“ind2”分别代表字段标识、第一和第二指示符。<SUBDATAFIELD>:MARC记录数据字段区中数据字段的子字段标记,属性“code”为子字段标识。 通过该例和我们学习中所看到了例子,我们可以了解到DTD较好地完成了XML的标记扩展(即元数据描述)的任务,目前在Internet上已有大量使用DTD描述的元数据存在。但是DTD提出较早,人们在使用过程中也发现它有很多的不足之处。其主要特点如下: ①难以理解和书写。由于采用的是不同于XML的名为EBNF的语法,因为需要先了解EBNF,这对于人们的阅读和书写都带来了困难。我们在学习的过程中,在初步接触到XML之后,才另外进行了DTD的分析和结构学习,其中涉及到的语法和结构尽管与XML有所相似,但是也是一个新的了解过程.太多的程序标记,需要理解和记忆,很难一下子把握好DTD的编写并将它运用到XML中去。 ②难以使用程序进行元数据的自动处理。由于使用EBNF语法,这给DTD的自动处理也带来了麻烦。通常情况下,我们需要对DTD进行验证,这时使用DOM就不可能对使用EBNF语法书写的DTD进行分析,而必须使用专门的分析程序进行分析验证。 ③DTD不支持数据类型。DTD只支持包括文档类型在内的少数几种数据类型,这意味着在实际使用过程中经常需要进行类型的转换才能达到预想的效果。 ④DTD不支持Namespaces。由于必须把所有的元数据放在一个DTD文件中,如果需要对已有的DTD进行扩充则只能在原文件的基础上进行重写,这对于元数据的维护和扩充都十分不方便。 总之,DTD在简单的文档结构定义方面是较出色的,如果考虑到XML,是源自同样使用DTD的SGML的话,理解在XML1.0中选择了DTD就不难了。但XML的用途现在已不仅局限于文档处理,那么DTD的这些缺点就变得日趋严重。因此W3C(World Wide Web Consortium)在看到了DTD的诸多问题之后,提出了一系列用来代替DTD的建议(Recommendation,即正式标准),包括RDF、XML-Data、DCD、XML Schema等,其中以RDF和XML Schema的影响较大. 2. XML Schema 通过学习我们了解到,Schema是一种描述信息结构的模型,它是借用数据库中一种描述相关表格内容的机制,为一类文件建立一个模式。从这一层意义上讲,DTD实际上也是一种Schema,只不过这种Schema使用了古怪的EBNF语法,因而带来了诸多的不便。RDF Schema可能是由于RDF的原因,W3C最终只推出了RDF Schema的草案,一直未能更进一步推出正式的建议(即标准)。XML Schema是2001年5月由W3C推荐的用于描述XML文件结构的一个框架,我们通过学习了解到,它的语法与XML相同,但Schema文件所描述的是引用它的XML文件中的元素和属性的具体类型。以前面所描述的MARC元数据定义为例,使用XML Schema可以定义如下: <xsd:schema xmlns:xsd=“http://www.w3.org/2001/ XML Schema”>
<xsd:element name=“mare” type=“marc”/> <xsd:complexType name=“marc”> <xsd:sequence> <xsd:element name=“recurd” minOccurs=“0” maxOccurs=“unbounded”> <xsd:complexType> <xsd:sequence> <xsd:element name=“datafield” type=“datafield”minOccurs= “0” maxOccurs=“unbounded” /> </xsd:sequence> <xsd:attribute name=“rectype” type=“xsd:string”/> <xsd:attribute name=“recinfo” type=“xsd: string”/> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name=“marctype” type= “xsd: string”/> </xsd:complexType> <xsd:complexType name=“datafield”> <xsd:sequence><xsd:element name=“subdatafield” type=xsd: string”minOccurs=“0”maxOccurs=“unbounded”content =“textOnly”>
<xds:attribute name=“code” type=“xsd: string”/> </xsd:element> </xsd:sequence> <xsd:attribute name=“tag” type=“xsd:string”/> <xsd:attribute name=“ind1” type=“xsd:string”/> <xsd:attribute name=“ind2” type=“xsd:string”/> </xsd:complexType> </xsd:schema> 通过上例,也通过我们学习过程中了解到的例子,我们可以看到XML Schema本身就是一个XML文件,但不同的是,Schema文件所描述的是引用它的XML文件中的元素和属性的具体类型。与DTD相比,XML Schema具有以下优点: ①一致性。Schema使得对XML的定义不必再利用一种特定的形式化的语言,而是直接借助XML自身的特性,利用XML的基本语法规则采定义XML文档的结构,使得XML达到了从内到外的完美统一,也为XML的进一步发展奠定了坚实的基础。 ②扩展性。Schema对DTD进行了扩充,引入了数据类型、命名空间,从而使其具备较强的可扩展性。 ③互换性。利用Schema,我们能够书写XML文档以及验证文档的合法性。另外,通过特定的映射机制,还可以将不同的Schema进行转换,以实现更高层次的数据交换。 ④规范性。同DTD一样,XML Schema也提供了一套完整的机制以约束XML文档中置标的使用,但相比之下,后者基于XML,更具有规范性。Schema利用元素的内容和属性来定义XML文档的整体结构,如哪些元素可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性、以及元素出现的顺序和次数等等,都可一目了然。3.RDF RDF是W3C在1999年2月颁布的一个关于元数据的建议,它主要解决如何采用XML标准语法无二义性地描述资源对象的问题,使得所描述资源的元数据信息成为机器可理解的信息。RDF不仅可以象DTD一样允许设计者定义对象,并可以加入属性以对对象进行描述和定义,还可以作出有关对象的复杂的陈述,例如申明资源之间的关系等。RDF的基本对象类型有:资源(Resources)、属性(Properties)、陈述(Statements)。每一个资源都有属性,每个资源通过唯一资源标识符URI来标识,它的属性由属性类型来作标识,每一个属性类型都有对应的属性值。属性类型表示出这些属性值与资源之间的关系。在RDF中,属性值要么是一些被认为具有原子性的事物(如字符中或数字符),要么是其他的资源,而这些资源本身又拥有自身的属性。所有指向同一资源的陈述的集合就是描述。但是在学习中我们没有用到,因此仅作大略了解.由于XML Schema的种种优点,现在Schema取代DTD已成大势所趋。在这种情况下,国际上一些知名企业和组织审时度势纷纷在战略上向XML Schema倾斜,提供对XML Schema的支持。其中最为典型的当然要数微软的BizTalk和xml.org组织的注册/资源库。更加值得一提的是:微软在其浏览器软件Internet Explorer 5.0中率先提供对Schema的支持。尽管微软支持的Schema也只是过渡性“标准”,但今后肯定还会不断修改。 虽然我们说XML Schema终将代替DTD,但在短期内DTD还是有着它的优势的,例如广泛的工具支持,广泛的应用经验等。因此,短期内DTD会与XML Schema共存,而RDF则会在一些需要它的强大的元数据描述能力的领域找到它的位置。
参考资料
1 XML教程 高怡新 人民邮电出版社
2 黄伟红,张福炎.基于XML/RDF的MARC元数据描述技术.情报学报,2000(4)
3 XML Schema Requirements.http://www.w3.org/TR/ NOTE—xml—schema—req