基于XML的信息组织与处理:1.XML技术体系,本文主要内容关键词为:体系论文,组织论文,技术论文,信息论文,XML论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
1 用户信息服务和基于XML的信息组织与信息处理
1.1 用户信息过程
用户信息过程指用户获取和处理信息以解决自己面临的某个特定问题的全过程。在此过程中,用户需要对信息进行多方面多层次甚至反复的检索、处理、组织和传递,来帮助自己提炼信息、创造知识、组织解决方案、并组织实施过程[1]。为此,用户需要:对任何系统中的任何可能有关的信息内容运用多种语义、语法和逻辑方法进行检索;对检索到的任何信息内容进行识别、过滤、抽取、合并、重组、集成,以形成新的信息集合;对信息内容进行批注、修改、增删,与其它信息内容进行链接,或将其它信息内容链入特定信息集合或其指定部份;对信息内容格式、结构、组织方式和表现方式进行定义、描述、识别和转换,以适应不同内容成份、不同使用对象、不同表征媒介、不同应用环境的信息表征或呈现需要;对信息内容及其集合的物理、主题、应用和技术特征,以及其使用管理条件、知识产权规定、保存要求等进行定义、描述、组织、识别、提取和转换;向可能具有不同技术和管理要求的对象登记、传递、送存、发表指定的信息内容和信息集合。
而且,用户希望这些信息检索、组织和处理任务能覆盖所有可能的数据类别,能不受任何技术或系统形式的限制,能灵活方便地进行、并具有与思维同步的速度和与专家媲美的能力。
1.2 以用户为中心的信息服务
信息服务的目的正是支持用户获取和处理信息来有效地解决用户的特定问题,其有效性从根本上取决于它在整个用户信息过程中灵活组织和处理信息来全面支持用户的检索、处理和传递信息的各方面各层次需要的能力。而且,通过这种能力,信息服务系统将直接支持用户的智力和决策活动,极大提高对用户的作用层次和作用力度,使信息服务系统真正成为用户的核心合作伙伴。但是,这种深入到整个用户信息过程的信息服务不仅需要新的信息服务范式和信息系统结构,而且需要一种全新的信息组织和处理能力层次,例如:
能够对任何或多种数据类别组成的任何文献的结构及其元素和元素属性进行定义、确认、解释和解析;能够运用逻辑、语义或语法方法对这些文献及其任何部份或集合进行确认、检索和获取;能够对这些文献及其任何部份或集合进行过滤、抽取、链接、合并、重组或集成;能够对各种组织格式和表现形式的文献进行定义、识别、解释和转换;能够与各种信息系统交换任何形式或格式的文献及其任何部份或集合;能够将上述能力嵌入任何信息系统;能够在多语种、多时序和分布式信息环境中实现上述能力;能够根据用户或用户群的具体需要和应用环境调整上述能力及其实现方式;能够根据新的媒体形式、文献形式、技术能力和系统形态调整和发展上述能力及其实现方式;能够以方便、经济和灵活的方式实现上述能力及其调整。
通过这样的开放、灵活组织和处理信息的技术机制,现代信息服务系统希望能真正根据用户在其信息处理全过程任何阶段的要求来动态地获取、组织、抽取、转换、集成、传递信息。
1.3 XML技术体系的意义
所谓XML技术体系,指以 XML语言为代表和基础的一系列信息组织和信息处理技术[2-3]。
XML(Extensible Markup Language)[4]是基于SCML(标准通用标记语言,ISO8879)的一种简单灵活的文本形式标记语言,最初主要是提供一个独立于系统平台和处理语言的开放性电子出版机制。但随着XML相关标准的发展,XML及其相关技术正日益成为全球网络化信息资源和数字化信息环境中各种信息的定义、组织、处理和交换的核心基础。通过XML技术体系,我们能够:定义和标记由任何数据类型或多数据类型组成的信息集合模式;定义和标记任何信息集合模式的元数据、元数据语义关系和逻辑关系体系、语义或逻辑关系推理、语义或逻辑知识交换机制;定义和标记任何信息集合模式或其内部任何部份的命名、抽取、链接、合并、集成;定义和标记在任何不同信息集合模式间进行转换机制和在任何输出介质上呈现这些信息模式的机制;定义和标记这些信息集合的数字签名机制和加密机制;定义和标记各种数据库系统和信息处理系统处理基于上述信息模式的信息资源的开放式界面机制;定义和标记对上述信息模式、基于这些信息模式的信息资源系统、提供上述信息模式界面的其它信息系统进行查询的机制。
由此,基于标准的 XML结构、语言和方法,各种信息模式及由它们定义和表示的文献及其部份、各种信息处理模块和信息处理过程及在此基础上的信息服务系统,都可成为开放、可互操作、可即插即用的信息环境的一部份,从而保证灵活、方便地进行整个用户信息过程涉及的各种复杂信息组织和处理。
需要指出,XML技术体系是由一系列标准组成,构成一个逐步完善的信息处理环境。本文着重分析XML技术体系的主要标准及其功能、相互关系及由它们组成的综合信息组织与处理能力机制。
2 作为开放式信息模式(文献)定义、组织和标记机制的XML技术
2.1 信息模式定义语言XML
XML语言[4]定义一种文本形式的信息模式(广义文献或Document格式,以下简称文献)标记语言,提供底层语法来定义和组织结构化文献。同时,它还是其它XML相关标准的表述语言。
(1)XML定义文献的逻辑结构。 XML将任何文献的逻辑结构定义为由层级化的元素构成的树型结构;这些元素具有定义的名称,某些元素可能包含子元素,某些子元素可能还包含下层子元素;元素或子元素具有若干属性,这些属性具有定义的名称,可以按照一定方式取值;逻辑结构里可包含实体和记号。XML通过“文献类型定义”来为应用领域定义特定类别文献的逻辑结构及所包含的元素、属性、实体和记号。
(2)XML语言定义基于上述逻辑结构的文献的物理结构。这种按照XML逻辑结构和物理结构定义、用 XML语言标记的文献被称为基于XML的文献,或简称XML文献。XML文献由XML前言和XML实例构成,XML前言包含XML标志和XML文献类型定义,而XML实例是按照DTD定义、用XML语言标记的实际文献内容。
(3)XML定义DTD的语法规则是文献标记时采用的语法规则。按照XML语法,任何元素都可用由起始标记和结束标记符组成的元素标记符表示,元素名称及其属性位于起始标记符内,元素所标记的实际内容位于两个标记符之间,例如:
<title type="proper"lang="de">Habe num,ach!Philosophie</title>
XML规定了定义不同元素、属性时的有关限制性条件。如果整个XML文献匹配XML语言规定的文件结构规则,所定义和应用的各种标记满足规定的限制性条件,所参照的所有实体也满足相关的所有限制条件,这个文献被称为“规则化XML文献”,如果这个规则化XML文献包含相应的DTD,它被称为“有效XML文献”。当然,我们后面将指出,XML文献可通过指向和链接外部文献类型定义文件作为自己的DTD。XML还规定采用的字符编码标准(Unicodede和ISO/IEC 10646)、语言代码标准(Internet RFC 1766)、语言名称标准(ISO 639)和国家名称代码标准 (ISO 3166)。
通过上述定义和规定,XML建立了一种文献定义和组织的标准语言,利用这种语言人们可以定义和标记任何文献,可以通过这种定义来识别和解析相应文献,并通过特定转换机制在任何输出介质上实际显示或打印相应文献。这种定义和标记本身不受系统平台、计算机程序语言、内容自然语言和文献呈现与应用具体方式的限制,表面上,XML所采用的标记形式与HTML相似,但两者有本质的不同。HTML是一种事先定义和相对固化的文献结构和格式语言,相当于一种专门的DTD。XML则是一种定义DTD的语言,从而可以根据需要定义不同的DTD,而且通过 DTD使 XML文献具有开放处理能力。
2.2 文献模式和元素集复用机制:XML Schema和XML Namespace
前面提到,XML语言通过 DTD来定义文献结构及所含的元素、属性、实体等。DTD就象一种自定义机制,任何能理解XML语言的系统将能够阅读和解析DTD所定义的文献结构,对文献内容进行识别和处理,从而使得XML文献具有自定义能力和计算机自动处理能力。但是,XML的文献类型定义(DTD)总是针对一类文献的,这个定义在一定范围内重复使用,因此可建立一种 XML DTD登记和存放机制,让XML文献不必重复定义而是链接所适用的DTD,在读入该文献时同时读入所链接的DTD,从而提高文献类型定义的复用度,也提高XML文献的组织效率。XML Schema和XML Namespace就是提供这种机制。
(1)XML Schema是文献模式定义语言[5],提供用于定义和描述文献模式的基本规则和标记工具。利用这些规则和工具,可以定义文献模式的结构、所包含的数据类型、元素类型、元素属性、属性取值规定等。用XML Schema语言定义并标记的具体文献模式被称为模式文件。从一定程度讲,文献模式与XML DTD相似。一个XML文献可指向和链接一个模式文件,并通过它来定义自己的文献结构。但是, XML Schema语言扩展和重组了XML DTD的文献结构定义能力,例如定义了多种数据类型、构造复杂数据类型的方式、为元素或属性指定数据类型的方式,并且支持XML名字域,支持更为丰富的文献内容结构。
而且, XML Schema还提供在当前文献模式中包含其它文献模式的某些定义的方法。
XML Schema本身使用XML语言来描述,而且在网络上,模式文件由XML标记,具有MIME类型 text/xml,因此 XML模式文件也可由任何理解XML语言的系统所阅读和解析。
(2)XML Namespace[6]通过将XML文献中的元素或属性名称与特定的名称域相联系来限定这些元素或属性的含义和用途。所谓名称域,是一个事先定义的元素或属性名称的名称集合,代表已经定义的特定元素或属性集,例如“都柏林核心集”的15个元素名称[7]。这个名称域可以由一个URL予以参照、确认和链接。
一个XML文献可以将外部名称域的元素或属性名称作为限定名称来使用,从而不必重新定义所有元素或属性名称。这个限定名称用一个前缀来代表所指向和参照的外部名称域,用这个名称域中的特定元素或属性名称作为本地名称,两者用冒号连接构成全局名称。在XML文献中,通过专门的名称域定义和URL将名称前缀与名称域联系起来,例如:
通过这种方法XML文献可准确无误地使用多个名称域的名字来命名自己的有关元素或属性,例如:
<dc:title>Gong with Wind</title>
2.3 文献内容体系抽象描述和组合机制:XMLInfoSet、 XMLFragment和XInclude
XML技术体系通过相关标准分析和描述XML文献结构,并利用这些结构信息来组织和组合新的 XML文献,也为指向和处理 XML文献中指定部份提供标准方法。
(1)XML Information Set(XML Inforset)[8]为XML文献定义一个树形结构的抽象数据集,称为XML文献信息集。XML文献信息集由一系列信息项构成,每个信息项具有一组相关属性,某些信息项可含子信息项。 XML Infoset规定了17种信息项,任何实际XML文献的信息集必须有一个“文献”信息项。另外,可根据实际XML文献内容包含其它信息项,例如元素信息项、属性信息项、注释信息项、DTD信息项、内部实体信息项、外部实体信息项、名称域信息项等。XML文献信息集中信息项类别、数量、名称、相互关系都与实际XML文献内容结构一致,相当于一种结构化目次,可以抽象地表征 XML文献的结构和内容,可用来指向和处理 XML文献中的特定内容。
(2)XML Fragment Interchange(XML Fragment)[9]主要解决在抽取和传递XML文献片段时如何保存和传递该片段与整个XML文献的位置与关系信息。XML技术体系允许一个应用系统抽取XML文献中的部份内容进行处理,但这个片段在XML文献中并不是独立存在的,因此在处理这个片段时必须了解它与整个XML文献及该文献其它部份的关系,否则应用系统可能难以解析该片段。XMLFragment将规定一个片段环境关系信息集,包括该片段的各上层信息项、同级信息项、相关实体信息项、相关DTD和名称域信息项等。发送端应用系统在抽取XML片段时同时构造片段环境关系信息集,并将这个信息集与XML片段本身一起传递。接受端应用系统将利用这个信息集来解析片段,就象解析完整的XML文献一样。XMLFragment还规定了哪些XML文献内容可以作为XML片段、如何构造和标记这个信息集、如何连接XML片段和相应信息集的方法。利用XMLFragment,应用系统可方便地抽取XML文献中的片段,可以用标准方式表示其环境关系信息,从而支持开放、准确地抽取、传递和处理文献内容。
(3)XML Inclusions(XInclude)[10]建立基于文献信息集的合并XML文献的标准方法。利用XInclude,应用系统可以将其它XML文献的信息集中的指定信息项引入、包括进指定XML文献的信息集中,构造新的XML文献信息集,从而组成新XML文献。具体地,XInclude通过在源信息集的合适位置嵌入“引入”元素来表征引入操作,通过该元素中包含的 URL来指向要引入的信息集和信息项。当引入操作结束时,引入元素被所引入的信息项取代,源信息集将包括本身的信息项和引入的信息项。
XML Infoset、Fragment和包含Inclusions的Infoset都用 XML语言描述,形成专门的 XML文献。
3 作为开放式信息处理机制的XML技术
除了利用上述技术来定义、组织、描述和重组XML文献外,XML技术体系还提供一个开放的信息处理机制,帮助应用系统灵活地操作和处理XML文献或其中内容。
3.1 指向和链接文献或文献片段的机制:XPath、XPointer、XLink
在实际应用中,我们需要能够定义、查找、指向和链接XML文献或文献片段,XPath、XPointet、XLink等技术就为我们提供灵活实现这些操作的能力。
(1)XML Path Language(XPath)[11]为其它XML技术提供一种确定和指向XML文献内部任何部份的标准路径语法和语义定义。它将XML文献看成是一个抽象的树形逻辑结构,根据XML文献结构来定义和标记任一内容节点的路径信息,并通过这个节点路径标记来穿寻XML文献的层级结构,查找、确认和指向该文献包含的任何一个节点。具体地,XPath标记所要指向的节点与XML文献中某个起始节点(当前节点)的关系和过滤条件,允许从当前节点开始查找确定与它具有指定关系的所有节点(例如起始节点的前辈关系节点、父关系节点、兄妹关系节点、子女关系节点、后代关系节点、属性关系节点等),继而根据一定条件从中选择符合条件的具体节点。当查找到这个节点后,XPath又可将它作为当前节点继续查找确认新的文献内容节点。这样,利用XPath,应用系统可以在不知道具体XML文献结构和实际内容的情况下灵活地查找、确认和指向任何XML文献的特定内容节点。例如,XPath路径标记:
"following-sibling::chapter[position()=1]"
表示:选择当前节点后面的兄妹节点,从这些兄妹节点中选择"chapter"节点,从chapter节点中选择第一个chapter节点。如果当前节点是章节点,这个路径标记即是要求选择当前章后紧接着的一章。
(2)XML Pointer Language(Xpointer)[12]基于XPath,定义在URI(Uniform Resource Identifier统一资源标识符)[13]中嵌入文献节点路径标记的方法,从而实现指向和链接XML文献内部任何片段的能力。而且,XPointer还扩展了 XPath的能力,例如允许将文献中某一点或可能跨多个逻辑节点的某一范围作为文献内容节点,允许通过匹配元素或属性实际名称来寻找文献中指定内容,例如下面的XPointer:
表示:寻找WWW.W3.org站点/TR/1998/目录路径下REC.xml文件中后代节点中的第一个语言元素,但这个语言元素必须是它父节点的第二个子女节点。
表示:寻找www.example.org站点/TR/PUB/目录路径下REC.xml文件中后代节点中的REVST元素,并寻找紧接其后的第一个REVEND元素,将两者之间的所有内容作为一个内容范围整体(REVST和REVEND可看成修改起始标记和修改结束标记,可跨越文献中多种关系的多个节点来标记被修改内容的边界)。
(3)XML Linking Language(Xlinks)[14]利用XML语法定义在 XML文献中建立超文本链接的方式,提供远比HTML超链方式更灵活、更具伸缩性、更容易维护的资源链接结构。它能够象HTML那样定义单向链接,可以使用XPath和XPointer指向和链接文献片段,同时还能够定义以下复杂链接结构:
指向多个资源或资源片段的多向链接;双向链接,并允许利用源文献的双向链接在没有先链接到目标文献的情况下从目标文献链进源文献;批注型链接结构,允许对只读文献内节点或片段进行链接、并在浏览该只读文献时显示或启动链接,从而允许对自己并不拥有或不能修改的文献进行批注、评论、评鉴等处理;具备功能角色和描述性标题的链接,并允许在多向链接时有多重角色和标题;具备专门行为方式的链接,例如在激励链接时替代当前文件、开启新窗口显示被链接文件、在当前文件的当前链接位置展开等。
具体地,XLink定义简单链接和扩展链接,链接关系可有标题、角色、行为方式等若干属性。扩展链接可以是内向链接(链接关系终点在当前XML文献内)或第三方链接(链接起点和终点都不在当前XML文献中),具体链接信息可组织在称为链接数据库的 XML文件中。 XIink定义了相关语义,允许当前文献中的扩展链接去查找和载入链接数据库中的信息。这些链接数据库可在载入时或单独对这些链接关系进行过滤、排序、分析、修改和其它处理,从而可对复杂资源间链接关系进行管理。
3.2 XML文献转换和表现机制:XSL和XSLT
XML文献在呈现给用户时需要根据不同的输出介质特点或不同应用所需的表现格式来显示或打印,这时往往需要将XML文献按照一定格式单转换成特定的输出格式。XML技术体系通过XSL(Extensible Stylesheet Language[15])定义和描述用于 XML文献的格式单,类似于 CCS[16]定义和描述用于 HTML文件的格式单。 XSL还通过 XSTL(XSL Transformations[17])定义 XML文献转换方式的描述方法。通过这些语言和方法所建立的格式单本身用XML语言编码,可被任何理解XML语言的应用系统释读,从而使这些应用系统可方便地根据自己应用需要建立相应的格式单,也可直接利用别人的格式单来转换和表现任何XML文献。
(1)XSL基本过程。作为格式单定义语言,XSL实际上包含两部分内容,一是对XML文献转换方式进行定义的语言(即XSLT),一是建立实际表现格式的定义语言(即XSL本身),两者结合来转换XML文献和建立XML文献的具体表现格式。例如在打印一个XML文献时,我们首先将该源 XML文献与一个用XSLT定义的转换格式单匹配,产生一个新的用XSL格式语言描述的目标XML文献;然后我们将该目标XML文献与用XSL定义的表现格式单匹配,建立一个基于表现格式对象的XML文献,继而建立一个符合格式单要求的、详细描述各个格式对象具体打印要求的文件,最后在打印机上打出符合要求的文件内容和格式。
实际上,XSLT可以单独应用,将一种结构的XML文献转换为另一种结构的XML文献。
(2)XSLT可以理解为通用的XML文献转换方式定义语言。利用XSLT语言,应用系统可定义一系列转换模板,通过这些模板可以从源 XML文献中匹配和选择指定的内容节点,将它们转换成新的内容节点;转换模板还可能在转换过程中,根据源文献数据或转换操作,增加一些新的内容或新的标记;XSLT还可定义有关规则,规定在什么条件下使用什么转换模板或如何限制转换操作;由针对某类源XML文献的转换模板集和规则集构成的文件称为XSLT转换格式单。XSLT用XML语言描述模板和规则,用XPath指向和选择节点。
转换过程可看成源XML文献经过XSLT转换格式单过滤甚至重组以形成新XML文献的过程,可将一种结构的XML文献转换成另一种结构的XML文献,也可从源文献中提取部分内容节点形成新XML文献内容,例如将用XML标记的MARC记录转换为同样用XML标记的Dublin Core记录。技术上,XSLT将源XML文献看成由一系列内容节点组成的源节点树,转换过程中利用XSLT转换格式单扫瞄源节点树,查找与转换模板相匹配的节点,并按照模板要求将被匹配的节点(以及可能增加的新数据和标记)输出到结果文献中,形成结果节点树,即新XML文献。
(3)XSL作为建立表现格式单的语言,定义对表现格式的描述方式。XSL实际上将XML文献各内容节点转换为输出介质上的具有一定属性的几何区域,并定义了相应的区域模式及其结构、类型、属性类别、属性描述方法,以及将文献内容节点描述为对应几何输出区域的过程、方法和标准描述语法。XSL也用XML语言来实现这些定义。
逻辑上,XSL将格式化分为若干步骤,首先通过 XSLT转换过程,将源 XML文献转换为用 XSL格式语言描述的结果节点树;然后XSL将结果节点树中的元素及其属性表示为格式化对象及其属性规定,构成格式化对象树;继而,XSL将这些格式化对象细化,解析和计算它们的表现要求及相应指标;最后,XSL将格式化对象用显示区域予以表示,用详细技术指标具体说明各个格式化对象在输出介质上的显示或打印技术要求,将格式化对象树变成几何区域树,说明整个文献及其各具体部分在指定输出介质上的呈现形式,从而将XML文献格式化为可以在输出介质上直接呈现的形式。
3.3 对基于XML的信息资源进行处理的机制:DOM、XML Query、XML Protocol
面对用XML语言定义和标记的各种文献(包括模式文献、信息集文献、格式单文献等),我们当然希望各种系统能够直接在网络环境下对它们进行检索、对其中内容进行处理。 DOM、XML Query及XML Protocol等就提供这方面的部分功能。
(1)Document Object Model(DOM)[18]定义一系列与系统平台和程序语言无关的应用编程界面(API),通过这些界面,应用系统可以方便地对XML文献及HTML文献的逻辑树型结构及这个结构中包含的各个内容节点进行动态操作,例如更新指定内容节点、修改文献或某个节点的结构等。无论应用系统使用什么应用程序语言来具体实现这些界面,由DOM定义的界面逻辑模式不变。
具体地,DOM定义一组标准对象来代表 XML和HTML文献及其内部内容节点,定义一种标准模式来组合这些对象,定义一组标准API来获取和处理这些对象。例如DOM定义了文献对象、文献片段对象、元素对象、属性对象、实体对象等;同时为这些对象定义了相应的API,这些API具有一定属性和操作方法。例如,文献对象的API就有创建属性、创建文献片段create、创建元素、创建元素名称域、通过标识符提取元素、通过标记名称提取元素、输入节点等操作方法。而元素对象API有提取属性、提取属性名称域、通过标记名称提取元素、确认是否有某属性、删除指定属性、增加新属性等操作方法。
DOM采用CORBA IDL(CORBA界面定义语言)来定义这些 API。通过这些 API所提供的方法,应用系统可以方便准确地表达自己的处理要求,从而跨系统、跨具体程序语言地对XML文献及其内容节点进行灵活的处理。
DOM定义了若干层界面,第零层用于处理HTML文献,第一层提供处理 XML和 HTML文件的界面功能,第二层增加格式单模式、过滤器、事件模式和对名称域的支持,第三层增加文献模式、文献视图、格式化、键盘事件、载入与存储、XPath等方面的功能。
(2)XML Query[19]提供 XML文献的标准查询语言,主要用于对XML文献及其集合进行查询、过滤和管理,对分布的XML资源进行查询和集成,为其它数据库提供基于 XML的查询界面和集成界面。对于XML资源来说,XML Query就相当于数据库环境的SQL。利用XML Query,应用系统可提供动态、基于文献内容的检索,可提供对文献复杂嵌入内容或链接内容的灵活检索;应用系统也可将XML查询语句直接嵌入XML文献、URL、JAP或ASP页面,或者嵌入到其它检索协议(例如DASL[20]和Z39.50[21])的检索语句中;XML Query还可将查询结果用XML方式标记,形成XML文献。作为基于网络的查询语言,XML Query正与IETF DASL工作组密切合作,以保证它能被方便地融合进DASL检索协议。
从技术上讲, XML Query首先定义了一种基于XML文献信息集的数据模型。支持查询语言根据XML文献结构来确定作为检索条件或输出条件的元素或子元素或某个属性。在此基础上,定义该数据模型的查询操作模式,最后定义具体的查询语法。在本文写作时,XML Query已完成对数据模型和查询操作模式的初步定义,并正分析现已提交的多种查询语法方案。未来 XML Query可能具有以下形式:
即从bib.xml中查询Addison-Weslcy出版社图书著录记录,输出作者和书名,将结果组织为XML文献。
(3)XML Protocol[22]致力于提供一种技术手段,能允许多个系统在分布式环境中利用XML作为封装语言来进行通信,尤其是传递远程程序调用(RPC)。XML Protocol具体将建立:基于 XML的封装层,用以封装被传递数据;用XML语言标记独立于任何系统平台的封装内容表达方式;利用XML Schema数据类型对被封装数据序列化的方法;以及在HTTP传输协议上承载XML封装层的方法。整个技术利用XML和承载传输协议的开放性,来促进分布式程序调用及其它分布式操作的可互操作性、可扩展性和灵活性。
3.4 XML文献的数字签名和加密机制:XML Signature和XML Encryption
在许多环境(例如商业交易)中应用XML文献存在信息内容的安全传输和验证等问题,XML技术体系正在探讨如何建立相关安全机制和如何在XML文献中嵌入、表达和利用其它安全措施的方法。
(1)XML Signature Syntax and Processing(XML Signature)[23]定义利用 XML语言建立和表达数字签名的语法和规则。如此建立的数字签名称为 XML数字签名,本身也是一个XML文件,可用于对XML文献或其它形式的数字内容进行签名。XML数字签名可作为源文献(被签名内容)的一个组成部分(称为Enveloped signatures),可将源文献作为自己的一个组成部分(称为 Enveloping signatures),或作为与源文献分离的一个单独文献(称为Detached signatures)。一个XML数字签名可能用于多个源文献。
按照数字签名原理,源文献首先被规范化,然后利用HASH程序产生用于签名的文献摘要,该摘要被私钥加密形成数字签名。基于这个过程,XML Signature具体定义 XML数字签名需要哪些信息、这些信息应该如何组织或链接,以及整个XML数字签名的结构。从总体上,XML数字签名分为两个部分,一是关于被签名对象的部分,一是实际数字签名部分。前一部分具体指出规范化方法、摘要数据产生方法和可能的文献转换方法及相关程序的链接信息,并在此存放文献摘要数据。在实际数字签名部分,可数字签名和密钥信息,或者存放它们的链接信息。
(2) Canonical XML[24]主要解决将实质上相同但在标记上不同的XML文献转换成物理表示上完全相同的XML文献,从而保证相同文献的数字签名也相同。因为,由于在使用DTD或Schema、使用名称域、使用内部或外部实体、使用规范或简化标记格式、甚至编码方式等方面的可能不同(而这恰好体现XML的灵活性),两个实质上完全相同且在应用上也无区别的文献在物理表征上可能有很大差异,由此直接产生的文献摘要和数字签名就可能完全不同。考虑到这种情况,在进行数字签名前有必要建立一种统一了所允许的各种格式和标记变化的规范XML文献,再在它的基础上产生摘要数据。两个 XML文献,无论它们的原始物理表征格式如何不同,只要它们的规范形式相同,它们就被认为逻辑上是相同文献,它们的数字签名也就相同。Canonical XML标准定义产生规范文献的方法,并由具体的规范化程序支持来实际进行规范化操作(称为XML canonicalization)。这个方法和相应程序将作为被签名内容的一部分在XML数字签名文件中被指出和链接。
(3)XML Encryption[25]是2000年刚开展的一项标准化工作,建立一种加密XML格式并确定加密时的具体技术要求。它实际上将加密过程看成是特殊的XML文献转换过程,在这个过程中可对整个XML文献或其中指定部分(例如某个或某些元素)进行加密,转换为对应的加密数据元素,这些加密数据元素构成加密XML文献。每个加密数据元素中将包含有关加密方法和被加密数据等,也可能直接在加密数据元素中载入密钥,或者提供密钥链接,或者由通信双方通过其它渠道交换密钥。XMLEncryption还可对非XML数据进行加密,然后用XML进行标记,以XML文献形式传递被加密数据。