级别: 初级 Parand Tony Darugar (tdarugar@velocigen.com), 首席软件设计师, VelociGen Inc.
2001 年 6 月 01 日 到 2001 年 6 月更新本文为止,可以找到 20 多个使用 Perl 进行 XML 开发所需的必备工具、库和模块。使用资源表可以快速找到允许组成强大的 XML 操纵工具箱的元素。
Perl 为 XML
开发人员提供了一套非常丰富的模块和库,足以与其它语言相媲美。Perl
社区早期曾快速开发出 XML 工具。Perl/XML
社区现在仍保持着相当的活力,它不仅以惊人地速度支持新的协议和标准,
还在 XML 的常规发展中起到了积极作用。Perl 的可扩展性使 C 和 C++
模块能够简便地集成到 Perl
框架中,从而提供了一种速度和易用性的组合。
下列工具是我从开发 Perl/XML
工具和应用程序的经历中选出的比较中意的工具,也有从各种邮递列表、杂志和
Web 页面中收集的广受欢迎的工具。 这些工具将帮助您立即开发专业的基于
XML 的应用程序。
语法分析器和对象模型
从 XML 早期开始,XML 语法分析器就已经可用于 Perl。XML::Parser
模块是一个用于 James Clark 的出色的 expat 语法分析器的 Perl
接口,它是大多数其它分析和操纵模块的基础。XML::Simple 为简单的 XML
文件提供了一个直观的纯 Perl 语法分析器,而且大多数分析模块都支持
SAX API。
Perl 还对各种 XML 对象模型(包括 DOM、Grove 和
Twig)有很好的支持。各种各样的软件包提供了 DOM 或类似 DOM
的处理选项, 包括纯 Perl XML::DOM
模型、XML::LibXML、XML::XPath、Orchard 和即将发行的 Sablotron::DOM
软件包。 通过 Grove、Twig 和 PYX 模型,也可使用备用的处理模型。Twig
对大型文档尤其有用,它允许处理文档的各个段而无需对整个文档进行分析。
|
XML::Parser
| 用于 James Clark 的 XML 语法分析器 expat 的 Perl 接口 | |
XML::Simple
| 用于读写 XML 的普通 API,最好与 XML 格式的配置文件一起使用 | |
XML::XPath
| XPath 规范的完整实现。 | |
XML::DOM
| XML::Parser 的 Perl 扩展,构建面向对象的数据结构并具有遵从 DOM
级别 1 的接口。作为 libxml-enno 的一部分分发。 | |
XML::LibXML
| gnome libxml2 库的 Perl 接口,用于高性能的 DOM 处理。 | |
XML::Grove
| 使用 Perl 散列树对已分析的 XML、HTML 或 SGML
实例组成的信息集进行简单访问 | |
XML::Twig
| XML 文档的树型接口,允许对超大型文档一段段地处理 | |
libxml-perl
| Perl 模块、脚本和文档的集合,用于在 Perl 中使用
XML。libxml-perl 软件与 XML::Parser、PerlSAX、XML::DOM、XML::Grove
等一起工作。 | |
XML::Schematron
| 基于 XSLT 的 XML 验证模块 | |
Orchard
| 用于 XML 和 XML 表示的数据的事件流和树型视图的轻量级 API | |
Xerces Perl
| “Apache XML 项目”中的 Xerces XML 语法分析器的 Perl 接口 | |
REX
| 对有常规表达式的 XML 文档进行初步分析 | |
PYX
| 至 PYX 生成器的 XML |
XML
转换器、编写器和读取器
Perl 因其在与各种类型的旧有系统的连接中拥有丰富的选项而闻名。
利用这些连接和将 Perl 数据结构转换成 XML 的设施,Perl
成为一个为现有系统创建 XML 接口的出色平台。 诸如
XML::Edifact、DBIx::XML_RDB、XML::CSV、XML::Generator、XML::Dumper
和 XML::Writer 等扩展都可以对 Perl 数据结构、XML
和其它格式之间的数据进行各个方面的序列化和非序列化处理。
协议和库
通常,Perl 会迅速支持新的协议和标准。 对于 SOAP、WDDX、RSS、XML-RPC
和 Microsoft 的 BizTalk 都有扩展。
|
SOAP::Lite
| SOAP 协议的卓越实现 | |
SOAP/Perl
| 基于 XML
的协议,用于以与平台无关的方式访问服务、对象和服务器 | |
WDDX.pm
| 在 Perl、Java 和 Cold Fusion
等各种语言之间交换数据的协议。该模块将 Perl 变量和 WDDX
信息包互相转换。 | |
XML::RSS
| 创建和维护 Rich Site Summary (RSS) 文件的基本框架。RSS
主要用来分发新闻标题(通常称为通道)。 |
商业产品
大多数 Perl 扩展都在开发源码的模型下享有社区支持。Perl
的商业系统和软件包支持比 Java 等语言的系统和软件包要少得多。
VelociGen XML Server 是一种商业产品(出自我工作的公司),它使用
Perl 作为一种交换和处理 XML 文档并创建基于 Web
服务的应用程序的语言。 Open Source Axkit 也使用了商业支持,它使用
XML 提供 Web 发布和内容管理。
|
AxKit
| 开放源码的 XML Web 发布和内容管理 | |
VelociGenX
| Web 服务平台,具有数据库和旧系统连接性。使 Perl
接口用于分析、操纵和变换 XML 文档。 |
样式表和查询语言
XML
已有一套查询和变换数据的相关标准。其中两个最常用的是:“可扩展样式表语言变换
(XSLT)”和“XML 路径语言 (XPath)”。 XPath
提供了一种公共语法和功能来寻址和搜索 XML 文档各个部分。XSLT 使用
XPath 来实现 XML 文档到其它 XML 文档的变换。
|
XML::XSLT
| XSL 模板处理的 Perl 实现。XML::XSLT 执行在 XSL 样式表中指定的到
XML 文件的变换。 | |
XML::XPath
| W3C 的 XPath 规范的实现 | |
XML::QL
| 称为“XML-QL: XML 查询语言”的 W3C
注释的实现。使用户能够象数据库那样查询 XML
文档,并描述输出的构造。 | |
XML::XQL
| XQL 规范的 Perl 实现,允许对 XML 树型结构(如 XML::DOM)进行
XQL 查询。作为 libxml-enno 的一部分分发。 | |
XML::LibXSLT
| gnome libxslt 库的 Perl 接口,用于高性能的 XSLT 处理。 | |
XML::XSLT::Wrapper
| 各种 XSLT 模块的通用封装器 | |
XML::Xalan
| Apache Xalan XSLT 库的 Perl 接口 |
数据库接口
Perl 长期以来一直通过 DBD/DBI
模块享有卓越的数据库支持。DBIx::XML_RDB
使用这些模块构建所有流行数据库的 XML 封装器。XML::CSV
为以文本分隔的文件(如通用的以逗号分隔的值和以制表符定界的格式)提供了类似支持。
参考资料
关于作者  | 
|  | Parand Tony Darugar 是 Binary Evolution Inc.
的总裁和创始人之一。他从 1992
年起就投身于因特网创业之中。他的兴趣包括因特网商业、数据库和旧有系统到
Web 的连接、XML 及人工智能。他是多个开放源码的产品(包括 Tcl-Mysql
接口)的程序设计者。 可以通过
tdarugar@velocigen.com
与他联系。
|
对本文的评价
|