“用libxml2来写程式就像是异国的陌生人给你的一个扣人心弦的拥抱那样。” Mark Pilgrim
Libxml2 是Gnome专案开发的XML C 剖析器跟工具包(但是Gnome平台外也可以使用),它是根据MIT License的免费软体,XML本身是一种元语言(metalanguage)用来设计标记语言,例如, to design markup languages, i.e. 具语意和结构的文字语言会加到两个角括号内使用额外的”标记”讯息内容内,HTML是最有名的标记语言,虽然这个函式库是用C写的,现在有很多的语言系结 使得它在其它的环境下也可以使用。
据了解Libxml2很容易移植,函式库可以在很多的系统(Linux, Unix, Windows, CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, VxWorks, …)下建构跟工作都不会有严重的问题。
Libxml2 实作了很多跟标记语言相关的标准:
- XML 标准:http://www.w3.org/TR/REC-xml
- XML命名空间: http://www.w3.org/TR/REC-xml-names/
- XML 基础: http://www.w3.org/TR/xmlbase/
- RFC 2396 : 统一资源标识符 http://www.ietf.org/rfc/rfc2396.txt
- XML 路径语言 (XPath) 1.0: http://www.w3.org/TR/xpath
- HTML4 剖析器: http://www.w3.org/TR/html401/
- XML 指针语言 (XPointer) 1.0版: http://www.w3.org/TR/xptr
- XML Inclusions (XInclude) 1.0版: http://www.w3.org/TR/xinclude/
- ISO-8859-x 编码,以及 rfc2044 [UTF-8] 跟 rfc2781 [UTF-16] Unicode 编码,和更多使用iconv的支援
- SGML 开放的技术解决方案TR9401的部份:1997
- XML 目录的工作草案2001/08/06:http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
- 规范的XML 1.0版:http://www.w3.org/TR/xml-c14n 以及专用的XML规范的公约与草案http://www.w3.org/TR/xml-exc-c14n
- Relax NG, ISO/IEC 19757-2:2003, http://www.oasis-open.org/committees/relax-ng/spec-20011203.html
- W3C XML 架构 Part 2:资料型态 REC 02 May 2001
- W3C xml:id 工作草案 2004/4/7
在大多数的情况下libxml2尝试用相对一致严格地方式来实作规格,截至2.4.16版的释出,libxml2通过了OASIS XML Tests Suite所有的1800以上的测试。
在一些程度上libxml2提供了下列额外规格的支援但是没有完整实作的宣布:
- 文件物件模型(Document Object Model,DOM) http://www.w3.org/TR/DOM-Level-2-Core/ 文件模型,但是它没有实作自己的API,gdome2在libxml2之上做了这个模型
- RFC 959 :libxml2 实作一个基本的FTP 客户端程式码
- RFC 1945 : HTTP/1.0, 这也是一个基本的 HTTP 客户端程式码
- SAX:SAX2很像是跟早期expat版本相容的介面跟最小的SAX1实作
XML Schemas Part 1: Structure 的部份实作正在努力但是当时过早做出一致性声明。
单独文件:
- libxslt page 提供了XSLT 1.0的实作跟像EXSLT一样的libxml2的常用扩充
- the gdome2 page:libxml2的标准DOM2实作
- the XMLSec page:libxml2的W3C XML Digital Signature实作也检查了更多相关的连结跟启用的专案。