这是 Expat,一个用于解析 XML 的 C 语言库,由 James Clark 于 1997 年启动。Expat 是一个面向流的 XML 解析器。这意味着你可以在开始解析之前向解析器注册处理程序。当解析器发现被解析文档中相关的结构时,这些处理程序会被调用。开始标签就是你可以注册处理程序的结构之一。
Windows 用户应使用 expat_win32 包,该包包含预编译的库和可执行文件,以及供开发者使用的源代码。
Expat 是自由软件。你可以根据该软件包附带的 COPYING 文件中包含的许可证条款进行复制、分发和修改。此许可证与 MIT/X Consortium 许可证相同。
如果你是从 Git 仓库 检出构建 Expat,则需要运行一个脚本,该脚本使用 GNU autoconf 和 libtool 工具生成 configure 脚本。为此,你需要有 autoconf 2.58 或更新版本。按如下方式运行脚本:
./buildconf.sh
完成后,按照与从源码分发版构建相同的说明进行操作。
要从源码分发版构建 Expat,首先在顶层分发目录中运行配置 shell 脚本:
./configure
有许多选项可以提供给 configure(你可以通过运行 configure --help 来发现)。但最有趣的是设置安装目录的选项。默认情况下,configure 脚本会将 libexpat 安装到 /usr/local/lib,expat.h 安装到 /usr/local/include,xmlwf 安装到 /usr/local/bin。例如,如果你更希望安装到 /home/me/mystuff/lib、/home/me/mystuff/include 和 /home/me/mystuff/bin,你可以这样告诉 configure:
./configure --prefix=/home/me/mystuff
另一个有趣的选项是启用 64 位整数支持行号和列号以及总字节索引:
./configure CPPFLAGS=-DXML_LARGE_SIZE
不过,这样的修改会对 ABI 造成破坏性变更,因此不建议用于一般用途(例如作为 Linux 发行版的一部分),而仅供具有特殊需求的构建使用。
运行 configure 脚本后,make 命令将构建所有内容,make install 会将内容安装到适当的位置。查看 Makefile 以了解额外的 make 选项。请注意,你需要具有对安装目录的写权限。
如果你有兴趣构建 Expat 以提供 UTF-16 编码的文档信息,而不是默认的 UTF-8,请按照以下说明操作(在运行 make distclean 之后)。请注意,我们配置时使用了 --without-xmlwf,因为 xmlwf 目前尚不支持此编译模式:
批量修改 Makefile.am 文件,将库名改为 libexpatw.la:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
运行 automake 以重写 Makefile.in 文件:
automake
对于作为无符号短整型(unsigned short)的 UTF-16 输出(及版本/错误字符串作为 char),运行:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
对于作为 wchar_t 的 UTF-16 输出(包括版本/错误字符串),运行:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
注意:后者需要 libc 使用 -fshort-wchar 编译。
运行 make(这将排除 xmlwf)。
运行 make install(同样排除 xmlwf)。
支持使用 DESTDIR。其工作方式如下:
make install DESTDIR=/path/to/image
这会覆盖 Makefile 中设置的 DESTDIR,因为变量设置优先级为:
注意:这仅适用于 Expat 库本身;目前不支持构建 xmlwf 和测试的 UTF-16 版本。
当在使用了 autoconf 进行配置的项目中使用 Expat 时,你可以使用 conftools/expat.m4 中的探测宏来确定如何包含 Expat。有关更多信息,请参阅该文件顶部的注释。
本分发版中提供了一个参考手册,位于 doc/reference.html 文件中。