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 |
Perl 因其在与各种类型的旧有系统的连接中拥有丰富的选项而闻名。 利用这些连接和将 Perl 数据结构转换成 XML 的设施,Perl 成为一个为现有系统创建 XML 接口的出色平台。 诸如 XML::Edifact、DBIx::XML_RDB、XML::CSV、XML::Generator、XML::Dumper 和 XML::Writer 等扩展都可以对 Perl 数据结构、XML 和其它格式之间的数据进行各个方面的序列化和非序列化处理。
| XML::Generator | 在 Perl 内生成 XML 的模块 |
| XML::Dumper | 将 Perl 数据序列化和非序列化为 XML 的模块 |
| XML::Writer | 编写 XML 文档的 Perl 程序的帮助器模块。该模块处理所有属性值和字符数据的转义,并构造各种标记。 |
| XML::Edifact | 将 UN/Edifact 文档转换成 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 为以文本分隔的文件(如通用的以逗号分隔的值和以制表符定界的格式)提供了类似支持。
| DBIx::XML_RDB | Perl 扩展,用于从诸如数据库的现有 DBI 数据源创建 XML |
| XML::CSV | 将以逗号分隔的值转换为 XML |
- 您可以参阅本文在 developerWorks 全球站点上的
英文原文.
- 通过单击本文顶部或底部的
论坛,可以参加本文的
论坛。
- CPAN 一直是
查找 Perl XML
模块的优秀资源
- 要了解有关用 Perl 和其它脚本语言操纵 XML 文档的详细信息,请参阅
developerWorks 上的
XML
and scripting languages。
-
要想了解提供了创建高性能、由数据库驱动的动态网站的框架的联机系统,请参阅
Alex Shah 和 Parand T. Darugar 在 1998 Perl 会议发表的
High Performance Web Applications using Perl, Display Templates,
XML, and Database Content
。
- 在
Perl
XML FAQ处获取常见问题的解答。
- 通过将消息为 SUBSCRIBE Perl-XML 的电子邮件发送至
Lyris@ActiveState.com,订阅
perl-xml
邮递列表。
- 如果想知道 IBM 的 WebSphere Application Server (WAS) 是如何支持
XML 开发的, 请参阅
WAS 高级版 3.5 联机帮助中关于 XML 的技术背景信息。

Parand Tony Darugar 是 Binary Evolution Inc. 的总裁和创始人之一。他从 1992 年起就投身于因特网创业之中。他的兴趣包括因特网商业、数据库和旧有系统到 Web 的连接、XML 及人工智能。他是多个开放源码的产品(包括 Tcl-Mysql 接口)的程序设计者。 可以通过 tdarugar@velocigen.com 与他联系。