improving some documentation comments found and fixed a mem leak with

* tree.c: improving some documentation comments
* xmlregexp.c: found and fixed a mem leak with python regression tests
* doc/*: rebuilt the doc and the API XML file including the
  xmlregexp.h xmlautomata.h and xmlunicode.h headers
* python/generator.py python/libxml2class.txt python/libxml_wrap.h
  python/types.c: added access to the XML Schemas regexps from
  python
* python/tests/Makefile.am python/tests/regexp.py: added a
  simple regexp bindings test
Daniel
diff --git a/python/generator.py b/python/generator.py
index e2a4204..ed3196d 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -270,6 +270,7 @@
     'xmlURIPtr': ('O', "URI", "xmlURIPtr", "xmlURIPtr"),
     'xmlOutputBufferPtr': ('O', "outputBuffer", "xmlOutputBufferPtr", "xmlOutputBufferPtr"),
     'xmlParserInputBufferPtr': ('O', "inputBuffer", "xmlParserInputBufferPtr", "xmlParserInputBufferPtr"),
+    'xmlRegexpPtr': ('O', "xmlReg", "xmlRegexpPtr", "xmlRegexpPtr"),
 }
 
 py_return_types = {
@@ -409,6 +410,10 @@
         include.write("#ifdef LIBXML_XINCLUDE_ENABLED\n");
         export.write("#ifdef LIBXML_XINCLUDE_ENABLED\n");
         output.write("#ifdef LIBXML_XINCLUDE_ENABLED\n");
+    elif file == "xmlregexp":
+        include.write("#ifdef LIBXML_REGEXP_ENABLED\n");
+        export.write("#ifdef LIBXML_REGEXP_ENABLED\n");
+        output.write("#ifdef LIBXML_REGEXP_ENABLED\n");
 
     include.write("PyObject * ")
     include.write("libxml_%s(PyObject *self, PyObject *args);\n" % (name));
@@ -468,6 +473,10 @@
         include.write("#endif /* LIBXML_XINCLUDE_ENABLED */\n");
         export.write("#endif /* LIBXML_XINCLUDE_ENABLED */\n");
         output.write("#endif /* LIBXML_XINCLUDE_ENABLED */\n");
+    elif file == "xmlregexp":
+        include.write("#endif /* LIBXML_REGEXP_ENABLED */\n");
+        export.write("#endif /* LIBXML_REGEXP_ENABLED */\n");
+        output.write("#endif /* LIBXML_REGEXP_ENABLED */\n");
     return 1
 
 def buildStubs():
@@ -587,6 +596,7 @@
     "xmlURIPtr": ("._o", "URI(_obj=%s)", "URI"),
     "xmlOutputBufferPtr": ("._o", "outputBuffer(_obj=%s)", "outputBuffer"),
     "xmlParserInputBufferPtr": ("._o", "inputBuffer(_obj=%s)", "inputBuffer"),
+    "xmlRegexpPtr": ("._o", "xmlReg(_obj=%s)", "xmlReg"),
 }
 
 converter_type = {
@@ -613,6 +623,7 @@
     "URI": "xmlFreeURI",
 #    "outputBuffer": "xmlOutputBufferClose",
     "inputBuffer": "xmlFreeParserInputBuffer",
+    "xmlReg": "xmlRegFreeRegexp",
 }
 
 functions_noexcept = {
@@ -661,6 +672,10 @@
     elif name[0:20] == "xmlParserInputBuffer" and file != "python":
         func = name[20:]
         func = string.lower(func[0:1]) + func[1:]
+    elif name[0:9] == "xmlRegexp":
+        func = "regexp" + name[9:]
+    elif name[0:6] == "xmlReg":
+        func = "regexp" + name[6:]
     elif name[0:11] == "xmlACatalog":
         func = name[11:]
         func = string.lower(func[0:1]) + func[1:]