利用开源软件创建和管理XML外文翻译资料

 2022-10-31 14:52:29

英语原文共 16 页,剩余内容已隐藏,支付完成后下载完整资料


利用开源软件创建和管理XML

摘 要

目标:回顾一些开源XML应用程序和系统,包括编辑器、验证器,原生XML数据库及发布系统;描述作者如何为了特定需求而组合其中一些工具来创建特定系统。

设计/方法/方式:提供XML概述,对大量开源XML应用程序/系统进行综述,并描述由作者使用这些工具创建的系统

成果:使用XML的开放源码工具日趋成熟,并且这些工具为图书馆行业很容易地利用开放标准在互联网发布库内容提供了手段。

创意/价值:XML提供了一种将数据转化为信息的商定方式。结果非专有且独立于应用程序。开源软件操作按照类似的原则。这些技术的理解和结合可以帮助图书馆行业在这个全球联网计算机时代和不断变化的用户期望中实现其目标。

关键词:可扩展标记语言、计算机软件

论文类型:一般性综述

简介

简而言之,可扩展标记语言(XML)是一种促进在电脑和计算机程序之间共享数据和信息的手段的开放标准。传播之后,由接收计算机程序来解释一些有用的数据从而将数据转化为信息。

有时,数据被呈现为HTML。其他时候它可能被用于更新和/或查询数据库。XML最初被用作一种网络发布方式,其优势已被证明有用因为发布内容未曾以网页形式呈现。

将XML和其他书面语言比较很有帮助。和其他语言一样,XML有一定的语法。一方面语法是非常简单的。你只需要知道六、七条规则就可以创建结构健全的通常被称为“格式良好的”XML文档。另一方面,由于XML也由电脑阅读,这些规则是特定的。如果你犯了即使是最轻微的语法错误也会毁了整件事。以下是规则:

(1)XML文档总是有且只有一个根元素。

(2)元素名称是区分大小写的。

(3)元素总是关闭的。

(4)元素必须被正确嵌套。

(5)元素的属性必须始终被引用。

(6)只有五个默认定义的实体(lt;, gt;, amp;, “和rsquo;)。

(7)必要时,必须使用名称空间来消除词汇冲突。

下面是一份XHTML文件形式的“格式良好”的XML文档。它作为一个例子说明了上述七个规则。详细阐述每条规则都超出了文本的范围。

创建结构健全-语法正确的XML只是蓝图的一部分。为了有意义,还需要语义正确的XML文档。XML文档的元素必须相互结合,它们的数据编码方式必须有意义且能被理解。有很多套语义规则,他们至少可以在几种不同的形式下编码。XML产生于SGML领域,因此文档类型定义(DTDs)是一种流行的和得到广泛支持的编码XML文档语义结构的方式。DTDs有利有弊。优点是它常见且易于理解。但它的弊端是DTDs不写成XML文档,因此需要不同的工具来处理。这一点很讽刺。此外,dtd并不擅长数据输入。没有办法区分数值数据和字符数据。而且没有办法规定这些数据的形状是日期,范围,体现特定模式等。针对这些局限性,一些其他描述XML语义结构的方法被引进。其中最引人注目的是W3C schema文件和RelaxNG模式文件。二者各有优缺点,但二者都基于XML并且解决了DTDS的不足。

话虽如此,下面是一份非常简单的包括DTD 的XML文件。通过阅读文件应该很容易辨别它描述的内容。此外,由于XML文件语法是正确的——它相对DTD或者schema格式良好而且有效--电脑读取和处理它应该不会有太大困难(图2)。

简介的最后一部分是呈现和转换。虽然XML是人类可读的文件,尤其是阅读者不一定要阅读,考虑某些设备和输出。此外,分析,总结,重新整理和提取XML文件的各个部分是很值得的。这就是层叠样式表(CSS)和可扩展样式表语言(XSL)发挥作用的时候了。

CSS的优势在于其演示能力。它擅长布局,排版和色彩。通过利用XML元素创建样式特性(称为“声明”)并结合XML文件,产生的结果是更容易阅读的原始XML文档报告。可以将这些报告设计应用于各种web浏览器、印刷、甚至口语设备。例如,CSS提供了文本对齐,插入文本框,规定段落间隔,指定使用不同的字体等的方式。

通过结合辅助技术,特别是XSL转换(XSLT),可以实现CSS plus的所有功能。操纵XML,排序XML,执行针对XML的数字和字符串函数功能,从而将XML转换为其他(统一的字符编码标准/“纯文本”)文件。这意味着有可能利用XML文件作为输入,并通过XSLT文件转换成用于印刷的格式化对象(FO)文档,用于显示在浏览器中的HTML文档,用于电子表格应用程序中的逗号分隔文件,导入到或查询关系数据库的SQL文件等等。

所有这些额外的功能的成本是一种更大程度的复杂性。实现XSL及其补充技术类似于编程。举个例子,下面是一份简单的创建宠物内容的基本HTML流的XML文件。

在配有文本编辑器,相对现代化的web浏览器(知道如何实现标准化的CSS和XSLT)和上述知识的情况下完全可以实现各种基于xml的图书馆馆藏和服务。举个例子,有可能使用TEI标记公共领域文档集(文本编码倡议)并使它们成为网络上的浏览器友好型HTML文档。TEI文档集可能被编码为使用EDA(编码档案描述)的查询工具来引导用户收集(信息)。TEI或EDA文件可以转换为SQL(结构化查询语言)或MARCXML文件,然后导入到数据库维护和/或搜索。

处理XML的开源工具

虽然只使用文本编辑器和 web浏览器加上你的知识是一种了解XML的很好的方法,但它不是很可扩展的。仅使用这些工具很难创建任何规模的集合和服务。开发人员理解这一点,这也就是为什么已经创建了一批应用程序来促进大规模的创建和维护XML数据/信息。其中一些工具将在以下各部分介绍到。

解析器

在XML工具箱中所有的内容里,我发现XML解析器(验证器)是最有用的。这些工具检查文档是否良好,并确保它们根据DTD或模式进行验证。它们就像拼写检查和文字处理应用程序的语法检查,幸运的是,它们更准确。因为XML的规则相比纯人工的口头或书面语言“规则”更简单。

Xmllint

Xmllint是一种XML解析器,它由一个叫做libxml 2的C库构建,是Linux Gnome项目的一部分(http://xmlsoft.org/)。(Gnome是Linux的用户界面)。因为libxml2是用C编写的而且也有大量精力投入使它没有任何特定的操作特性,所以它几乎可以在所有电脑运作。你可以获得源代码或预编译二进制文件获取libxml2。Xmllint从命令行运行。假设在XML的根源文档指定一个DTD,如下所示的命令将使XML生效:xmllint——有效pets.xml。如果XML格式良好且有效,那么XML会被反馈到解析表单。如果XML未生效,XML会被反馈到解析表单并且会有消息描述解析器发现的东西和它的预期。有时,这些消息可能很隐晦,但所有的验证器都会反馈相对隐晦的结果。Libxml2(因此xmllint)也将在外部DTDS和XML模式(W3C和RelaxNG模式文件)下使XML生效。如果你的XML在功能上优于XInclude,那么xmllint也会处理这些。最后,其他一些针对libxml2库的库/模块也被编写出来,从而允许人们以Perl、Python和PHP脚本使用libxml2功能。XML::LibXML2是实施这类功能的Perl模块。在这篇文章中列出所有的工具里,xmllint工具具有最大价值。

MSV.

尽管非开源,但可以免费下载,有完整的源代码,Sun Microsystems Multi-Schema XML验证器(MSV)是一种正规的XML验证器。这类工具由Java编写,能在很多语法下生效,包括Relax NG,TREX和XML DTDrsquo;s。一旦安装了Java,设置了类路径中的环境变量,你可以输入java -jar msv.jar pets.dtd pets.xml来使名为pets.xml的文件生效。它简单而直接。因为用Java编写的它应该在任意数量的操作系统上运行。MSV似乎很多年没更新了。

xerces-c.

如同libxml2一样,xerces-c是一种解析XML的C库。它由Apache基金会支持开发,而且为创建特定目的的二进制文件以及为诸如Perl的解释语言创建引子提供了手段。XML::Xerces就是个例子。建库过程虽不标准但功能齐全。这同样适用于构建样本应用程序。比这更有用的有StdInParse。通过给StdInParse XML传输XML文件,此应用程序将读取数据并报告它所发现的错误。调用一个例子包括./ StdInParse./ pets.xml。它将用大量可选标志检查命名空间、模式和模式约束。即使考虑到这些特性,xmllint应用程序更具功能性。与此同时,应该牢记StdInParse是示例应用程序。Xerces-c对C程序员来说真的是一个库,而不是一组二进制文件。XML::Xerces是一种Perl模块,就是基于此库建立。实施者需要知道如何阅读C指令才能实现大部分的模块。

编辑器

有相当多的XML编辑器,但是大多数都不是开源的。我不知道为什么。也许这是因为一个“真正的”XML编辑器不仅要提供完成基本文本编辑任务的能力,也需要将自身与XML整合,如果是这种情况,那么你不妨拼凑你需要的工具而不是采用一刀切的解决方案。此外,XML不一定用于显示,所以它不会在一个所见即所得的环境工作。

JEdit

JEdit是一种相当漂亮的XML编辑器。它用Java编写,应该能在几乎任何安装了Java虚拟机的计算机运行。它的界面有点特别,但不要因此反感它,毕竟它正试图适用于三种不同的用户界面:Windows、Linux和mac。给定一个DTD或模式,jEdit很聪明。它将检查给定的XML语法,当你开始键入它将在你的文档创建一个可用的元素列表。如果元素包含属性,它也会对其创建一个列表。然后你可以选择元素和属性以减少输入量和可能的错误数量。如果你导入文件进行编辑,和/或当你保存正在编辑的文件,jEdit将验证文档和报告任何已经犯了的错误。它非常方便,还避免了使用解析器,比如xmllint或Saxon(后文会说到)。 JEdit也支持XSLT。给定一个XSLT样式表,jEdit将改变文档,同样地,不使用xsltproc和Saxon。

JEdit不仅是XML编辑器,还是文本编辑器。因此,它包含文本创建标记功能,文本包装,广泛查找/替换功能,宏,单词计数等。它能够通过多组“插件”提供XML功能,而且有几十种其他插件可供选择。

JEdit是一个说明最初设计Java用来做什么的例子。一次编写,多次使用。如果你愿意使用不太习惯的界面,编辑XML与jEdit会充满乐趣。

Emacs

你们可能不知道,emacs更像计算环境,而不是只是编辑器。如果你经常使用emacs,那么你可能觉得它很棒。另一方面,大多数人发现无数的击键组合,模式,缓冲区很难学习和记忆。对于那些喜欢emacs和想要编辑XML的人,首选是psgml。

Psgml会读取dtds并允许你使用它们编辑XML文件。像JEdit一样,它包括崩溃选项和扩展元素,选择插入的元素和整体验证。即便不是全部,大多数psgml的可执行操作位于菜单。这使记忆变容易,但也使界面变得更加繁琐。

Nxml是emacs的另一种XML编辑模式。默认情况下它知道如何验证DocBook, RDF, XHTML, XSLT dtds /模式。你也可以指定一个自己设计的RELAX NG模式。它也将列出在文档的特定部分有效的元素。不同于psgml,它可以有色编码XML。Nxml可以配置为不断的验证文档。当错误发生时你可以将鼠标停留在突出显示错误的位置,nxml会给你提示如何修复它们。很好。

如果你特别需要/想要编辑TEI文件而且你是一个emacs迷,那么可以考虑考虑TEI Emacs。 被TEI财团的人放在一起,这套软件可以安装psgml,nxml,TEI模式和一些XSLT样式表。

数据库

由于XML文件高度结构化的性质,使用XML作为存储数据和信息的技术往往是探索的。这些探索最终成为“本地”XML数据库——数据库应用程序将XML文件整块存储并提供类似数据库的功能。这些功能包括全球查找/替换程序、报告、进口和出口。这些都是有趣的探索,但他们似乎并未在计算界流行起来。

Exist

Exist是一组写成Java archive(jar)文件的原生XML数据库。这些文件以多种方式组合在一起来创建数据库应用程序。例如,有一个基本的web界面,但是也有一个很好看的窗口/桌面界面。这意味着你可以安装exist作为Java servlette。你可以以另一种方式启动客户端并在自己的主机上通过web访问它。或者你可以使用窗口的客户机应用程序。使用exist需要在文件系统上创建目录形式的“数据库”。然后导入任何类型的XML文件到目录。一旦导入,就可以在数据库编写和运行XQuery脚本。(或多或少,XQuery是一种XPath的提高版,它有if - then等条件语句结构。在这方面,它类似于XSLT,但XQuery脚本不是XML文件。) 之后你会发现在数据库里的东西,(可能是整个XML文件,在元素里的文本,或函数的返回结果)你有机会导出数据或把它们变成别的东西。

正如我机器上的很多窗口的Java程序,exist不是很时髦。它需要你对XPath和XQuery有很好的理解才能有效使用。除非你电脑上没有安装Java,否则没有理由不能在你的机器上运行, 而且因为它的图形性质,它会是一个优越的学习XPa

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[141604],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付