libxml-clisp --- an interface from CLISP to libxml2

Overview
--------

Libxml-clisp is an interface from CLISP to libxml2.  The following
paragraphs briefly describe the two sides of the interface, and
libxml-clisp itself.  Libxml-clisp is under development, and provides
only rather basic facilities at the moment.

Libxml2
-------

Libxml2 is a powerful XML toolkit, developed as a part of the GNOME
project.  It is written in C, and is widely portable.  The library
implements many standards related to XML, such as XML Namespaces,
XPath, XInclude, XML Catalogs, and Relax NG.  It can process documents
encoded in a variety of character encodings.

CLISP
-----

CLISP is a well-known implementation of the ANSI Common Lisp standard.
It mostly conforms to the standard, and in addition provides several
extensions to the standard.  These include support for Unicode, and a
dynamic foreign function interface (FFI), which enables the user to
call functions implemented in C, and to manipulate memory structures
defined and created by C functions.

Libxml-clisp
------------

Libxml-clisp seeks to provide an interface from CLISP to the XML
processors in libxml2, using the CLISP FFI.  It is hoped that once
complete, it will provide a reasonably high-level interface to
libxml2, freeing the CLISP user from dealing with low-level problems
that arise when using C libraries, such as manually managing memory
and other resources.

There are several native Common Lisp libraries that provide tools to
process XML documents.  However, it is not clear that these native
Common Lisp libraries provide all the features that libxml2 supports.
According to the author of libxml2, it has passed all the tests in the
OASIS XML Test Suite.  Libxml2 has good documentation, including an
excellent tutorial.  Therefore, it is not unreasonable to interface to
libxml2, instead of using a native Common Lisp library.

The usual practice when interfacing to C from Common Lisp is to use
CFFI, the Common Foreign Function Interface, which provides an FFI
that seeks to be portable across several Common Lisp implementations.
Indeed, there is already an interface, cl-libxml2, from CFFI to
libxml2.  One drawback of CFFI is that it depends on other libraries,
which also need to be installed and maintained.  Interfacing from a
specific implementation, as is done in libxml-clisp, bypasses that
difficulty, albeit at the cost of portability.



Copyright (C) 2009 N. Raghavendra.  All rights reserved.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without any warranty.

$Hg: README,v 0719f64f2db1 2009-09-02T16:29:45+05:30 raghu $
