# The XML C parser and toolkit of Gnome

## libxml

Main Menu

- Home
- Reference Manual
- Introduction
- FAQ
- Developer Menu
- Reporting bugs and getting help
- How to help
- Downloads
- Releases
- XML
- XSLT
- Validation & DTDs
- Encodings support
- Catalog support
- Namespaces
- Contributions
- Code Examples
- API Menu
- XML Guidelines
- Recent Changes

Related links

- Mail archive
- XSLT libxslt
- DOM gdome2
- XML-DSig xmlsec
- FTP
- Windows binaries
- Solaris binaries
- MacOsX binaries
- lxml Python bindings
- Perl bindings
- C++ bindings
- PHP bindings
- Pascal bindings
- Ruby bindings
- Tcl bindings
- Bug Tracker

"Programming with libxml2 is like the thrilling embrace of an exotic stranger." Mark Pilgrim Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform), it is free software available under the MIT License. XML itself is a metalanguage to design markup languages, i.e. text language where semantic and structure are added to the content using extra "markup" information enclosed between angle brackets. HTML is the most well-known markup language. Though the library is written in C a variety of language bindings make it available in other environments.

Libxml2 is known to be very portable, the library should build and work without serious troubles on a variety of systems (Linux, Unix, Windows, CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)

Libxml2 implements a number of existing standards related to markup languages:

- the XML standard: http://www.w3.org/TR/REC-xml
- Namespaces in XML: http://www.w3.org/TR/REC-xml-names/
- XML Base: http://www.w3.org/TR/xmlbase/
- RFC 2396 : Uniform Resource Identifiers http://www.ietf.org/rfc/rfc2396.txt
- XML Path Language (XPath) 1.0: http://www.w3.org/TR/xpath
- HTML4 parser: http://www.w3.org/TR/html401/
- XML Pointer Language (XPointer) Version 1.0: http://www.w3.org/TR/xptr
- XML Inclusions (XInclude) Version 1.0: http://www.w3.org/TR/xinclude/
- ISO-8859-x encodings, as well as rfc2044 [UTF-8] and rfc2781 [UTF-16] Unicode encodings, and more if using iconv support
- part of SGML Open Technical Resolution TR9401:1997
- XML Catalogs Working Draft 06 August 2001: http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
- Canonical XML Version 1.0: http://www.w3.org/TR/xml-c14n and the Exclusive XML Canonicalization CR draft 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 Schemas Part 2: Datatypes REC 02 May 2001
- W3C xml:id Working Draft 7 April 2004

In most cases libxml2 tries to implement the specifications in a relatively strictly compliant way. As of release 2.4.16, libxml2 passed all 1800+ tests from the OASIS XML Tests Suite.

To some extent libxml2 provides support for the following additional specifications but doesn't claim to implement them completely:

- Document Object Model (DOM) http://www.w3.org/TR/DOM-Level-2-Core/ the document model, but it doesn't implement the API itself, gdome2 does this on top of libxml2
- RFC 959 : libxml2 implements a basic FTP client code
- RFC 1945 : HTTP/1.0, again a basic HTTP client code
- SAX: a SAX2 like interface and a minimal SAX1 implementation compatible with early expat versions

A partial implementation of XML Schemas Part 1: Structure is being worked on but it would be far too early to make any conformance statement about it at the moment.

Separate documents:

- the libxslt page providing an implementation of XSLT 1.0 and common extensions like EXSLT for libxml2
- the gdome2 page : a standard DOM2 implementation for libxml2
- the XMLSec page: an implementation of W3C XML Digital Signature for libxml2
- also check the related links section below for more related and active projects.

Logo designed by Marc Liyanage.

Daniel Veillard