我一直在研究如何在VOS和OpenVOS上处理XML(可扩展标记语言)数据,我认为与更多的人分享我所学到的东西是有用的。
什么是XML?
以下关于XML的描述摘自Dave Mercer的"XML:A Beginner's Guide",由Dave Mercer编写,(Osborne/McGraw Hill,2001)。(Osborne/McGraw Hill, 2001)。
"SGML(标准通用标记语言)是一个国际标准(ISO 8879),用于定义独立于设备、独立于系统的表示人和机器可读信息的方法。符合SGML规则的语言被称为应用程序,而HTML就是一个SGML应用程序。[......]HTML没有规定以标准的方式将自己扩展到新的标签、属性、数据结构或内容类型......XML,而不是像HTML那样的预定义语言,它是一种预定义的方式来定义新的语言,同时避免了SGML的过于复杂的性质。从技术上讲,XML包括了SGML中的能力的一个子集。"
XML Schema是一种定义特定的XML文档(或文档类别)的方法,它描述了文档的结构,包括元素、属性、数据类型和可以使用的约束条件。它描述了文档的结构,包括元素、属性、数据类型和可使用的约束,就像定义数据库一样。
XML文档类型定义(DTD)的作用与模式类似。
XML已经有10多年的历史了,有很多竞争的产品和方法,也有很多相关的标准。也有许多关于XML的贸易书籍。O'Reilly出版了一本名为"Learning XML"的书,可能会有帮助。参见www.oreilly.com。 由O'Reilly维护的http://xml.com/网站有许多有用的文章和链接。
XML标准是由万维网联盟发布的,网址是http://www.w3.org。这些标准非常枯燥,所以我不建议尝试阅读它们。
XML类似于HTML,它与HTML有着相似的传承,但却是一种更通用的编码。 HTML描述了数据在网页上显示时的样子。 HTML本身并不记录一个数字是代表数量、价格还是股票号。 另一方面,XML通常不关心数据的外观,它描述的是数据的含义。 XML的一个常见应用是创建一个特定数据库的文本编码。 XML能够说这个字段是一个数字价格,那个字段是一个字母数字股票号,等等。 XML文档中的所有数据都被编码为文本,这意味着像无序性或浮点数字的二进制表示这样的粘性问题会消失。因此,XML作为一种很好的计算机对计算机的数据交流语言,正逐渐被人们所接受。
处理XML的工具
我知道有两个常用的处理XML的开放源码包。 第一个是Expat,第二个是Xerces。这两个软件包都是在1999年创建的。Expat是一个人的作品;Xerces来自IBM。
在处理XML方面有两种相互竞争的模式。一个是文档对象模型(DOM),另一个是简单的XML API(SAX)。SAX方法(Expat使用)以线性方式读取XML文档,每当出现一个标记元素时就调用一个处理函数。DOM方法读取整个XML文档,并创建一个树状结构的层次。你可以把SAX看作是一种顺序访问方法,而DOM是一种随机访问方法。Xerces同时支持SAX和DOM API。有一些第三方的软件包为expat提供了DOM API(参见"simkin")。
虽然我们使用"XML文档"这个术语,但实际上,XML编码的文本可以是一个文件或一个数据流。 通常情况下,你提供收集文本并将其交给解析器的函数,因此它可以来自任何来源。
EXPAT
Expat是设计用来读取XML,并在每次XML元素出现时采取一些行动。我没有看到任何文档表明它可以创建基于XML的数据流。Expat是用C语言编写的,还有一个Perl和Java的Xerces版本。
外籍人士到VOS的端口可在:
外籍人士的主网站是:
和
在sourceforge的主页上可以找到一个很好的关于expat的介绍,这里是链接。
你可以在http://www.libexpat.org/ 找到使用 expat 的其他开源软件包的链接。
XERCES
Xerces既可以读也可以写XML数据流。Xerces是用C++语言编写的,它被设计成可以被C++程序调用。
Tom Mallory和我在2008年中为一个Stratus 客户移植了Xerces 2.8.0版本。 我们的目标是V系列平台。 目前Xerces的版本是3.0.1。 如果您有兴趣获得这个移植版本,请联系您的客户团队。
xerces的主站是:
使用哪一个?
如果你只是想解析XML编码的文档,而且你的处理方式是兼容顺序读取数据流的,那么我推荐你使用expat。 虽然它是用C语言编写的,但由于所有的VOS编程语言都可以调用用其他任何编程语言编写的函数和子程序,你可以从任何VOS语言中调用expat。
如果你的要求包括对XML文档进行随机访问操作的能力,或者你想创建XML,而且你对用C++编程很满意,那么我建议你使用Xerces。
如果您需要协助将处理 XML 文档的功能添加到您的应用程序中,请联系您当地的Stratus 客户团队。