diff --git a/ChangeLog b/ChangeLog
index b2d41bd4f97a9c97491d54e3fa553031af2b04cc_Q2hhbmdlTG9n..a415cb19418c767224f64a23e1ceb9952aa7594f_Q2hhbmdlTG9n 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Dec 11 19:18:45 CET 2002 Daniel Veillard <daniel@veillard.com>
+
+	* doc/Makefile.am doc/apibuild.py doc/libexslt-api.xml: added
+	  the generation of libexslt-api.xml
+        * libexslt/exslt.h: small cleanup.
+
 Wed Dec 11 18:45:09 CET 2002 Daniel Veillard <daniel@veillard.com>
 
 	* doc/Makefile.am doc/apibuild.py doc/libxslt-api.xml:
diff --git a/doc/Makefile.am b/doc/Makefile.am
index b2d41bd4f97a9c97491d54e3fa553031af2b04cc_ZG9jL01ha2VmaWxlLmFt..a415cb19418c767224f64a23e1ceb9952aa7594f_ZG9jL01ha2VmaWxlLmFt 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,6 +1,7 @@
 ## Process this file with automake to produce Makefile.in
 EXTRA_DIST = 			\
 	libxslt-api.xml		\
+	libexslt-api.xml		\
 	libxslt-decl.txt	\
 	xsltproc.xml		\
 	apibuild.py
@@ -57,7 +58,7 @@
 	-@(for s in sgml/*.sgml ; do name=`basename $$s .sgml` ; \
 	   xmllint --sgml $$s > xml/"$$name".xml ; done)
 	   
-libxslt-api.xml: apibuild.py ../libxslt/*.h ../libxslt/*.c
+libxslt-api.xml libexslt-api.xml: apibuild.py ../libxslt/*.h ../libxslt/*.c ../libexslt/*.h ../libexslt/*.c
 	-(./apibuild.py)
 
 api: libxslt-api.xml libxslt-refs.xml
diff --git a/doc/apibuild.py b/doc/apibuild.py
index b2d41bd4f97a9c97491d54e3fa553031af2b04cc_ZG9jL2FwaWJ1aWxkLnB5..a415cb19418c767224f64a23e1ceb9952aa7594f_ZG9jL2FwaWJ1aWxkLnB5 100755
--- a/doc/apibuild.py
+++ b/doc/apibuild.py
@@ -225,6 +225,8 @@
   "LIBXML_DLL_IMPORT": (0, "Special macro to flag external keywords"),
   "__declspec": (3, "Windows keyword"),
   "ATTRIBUTE_UNUSED": (0, "macro keyword"),
+  "LIBEXSLT_PUBLIC": (0, "macro keyword"),
+  "X_IN_Y": (5, "macro function builder"),
 }
 
 class CLexer:
@@ -1449,6 +1451,11 @@
     builder.scan()
     builder.analyze()
     builder.serialize()
+    if glob.glob("../libexslt/exslt.c") != [] :
+        extra = docBuilder("libexslt", ["../libexslt"], ["libexslt.h"])
+	extra.scan()
+	extra.analyze()
+	extra.serialize()
     return builder
 
 #
diff --git a/doc/libexslt-api.xml b/doc/libexslt-api.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a415cb19418c767224f64a23e1ceb9952aa7594f_ZG9jL2xpYmV4c2x0LWFwaS54bWw=
--- /dev/null
+++ b/doc/libexslt-api.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<api name='libexslt'>
+  <files>
+    <file name='exslt'>
+     <exports symbol='EXSLT_COMMON_NAMESPACE'/>
+     <exports symbol='EXSLT_DATE_NAMESPACE'/>
+     <exports symbol='EXSLT_DYNAMIC_NAMESPACE'/>
+     <exports symbol='EXSLT_FUNCTIONS_NAMESPACE'/>
+     <exports symbol='EXSLT_MATH_NAMESPACE'/>
+     <exports symbol='EXSLT_SETS_NAMESPACE'/>
+     <exports symbol='EXSLT_STRINGS_NAMESPACE'/>
+     <exports symbol='SAXON_NAMESPACE'/>
+     <exports symbol='exsltCommonRegister'/>
+     <exports symbol='exsltDateRegister'/>
+     <exports symbol='exsltDynRegister'/>
+     <exports symbol='exsltFuncRegister'/>
+     <exports symbol='exsltLibexsltVersion'/>
+     <exports symbol='exsltLibraryVersion'/>
+     <exports symbol='exsltLibxmlVersion'/>
+     <exports symbol='exsltLibxsltVersion'/>
+     <exports symbol='exsltMathRegister'/>
+     <exports symbol='exsltRegisterAll'/>
+     <exports symbol='exsltSaxonRegister'/>
+     <exports symbol='exsltSetsRegister'/>
+     <exports symbol='exsltStrRegister'/>
+    </file>
+  </files>
+  <symbols>
+    <macro name='EXSLT_COMMON_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT common functions</info>
+    </macro>
+    <macro name='EXSLT_DATE_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT date functions</info>
+    </macro>
+    <macro name='EXSLT_DYNAMIC_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT dynamic functions</info>
+    </macro>
+    <macro name='EXSLT_FUNCTIONS_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT functions extension functions</info>
+    </macro>
+    <macro name='EXSLT_MATH_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT math functions</info>
+    </macro>
+    <macro name='EXSLT_SETS_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT set functions</info>
+    </macro>
+    <macro name='EXSLT_STRINGS_NAMESPACE' file='exslt'>
+      <info>Namespace for EXSLT strings functions</info>
+    </macro>
+    <macro name='SAXON_NAMESPACE' file='exslt'>
+      <info>Namespace for SAXON extensions functions</info>
+    </macro>
+    <function name='exsltCommonRegister' file='exslt'>
+      <info>Registers the EXSLT - Common module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltDateRegister' file='exslt'>
+      <info>Registers the EXSLT - Dates and Times module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltDynRegister' file='exslt'>
+      <info>Registers the EXSLT - Dynamic module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltFuncRegister' file='exslt'>
+      <info>Registers the EXSLT - Functions module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltMathRegister' file='exslt'>
+      <info>Registers the EXSLT - Math module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltRegisterAll' file='exslt'>
+      <info>Registers all available EXSLT extensions</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltSaxonRegister' file='exslt'>
+      <info>Registers the SAXON extension module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltSetsRegister' file='exslt'>
+      <info>Registers the EXSLT - Sets module</info>
+      <return type='void'/>
+    </function>
+    <function name='exsltStrRegister' file='exslt'>
+      <info>Registers the EXSLT - Strings module</info>
+      <return type='void'/>
+    </function>
+  </symbols>
+</api>
diff --git a/libexslt/exslt.h b/libexslt/exslt.h
index b2d41bd4f97a9c97491d54e3fa553031af2b04cc_bGliZXhzbHQvZXhzbHQuaA==..a415cb19418c767224f64a23e1ceb9952aa7594f_bGliZXhzbHQvZXhzbHQuaA== 100644
--- a/libexslt/exslt.h
+++ b/libexslt/exslt.h
@@ -14,4 +14,9 @@
 LIBEXSLT_PUBLIC extern const int exsltLibxsltVersion;
 LIBEXSLT_PUBLIC extern const int exsltLibxmlVersion;
 
+/**
+ * EXSLT_COMMON_NAMESPACE:
+ *
+ * Namespace for EXSLT common functions
+ */
 #define EXSLT_COMMON_NAMESPACE ((const xmlChar *) "http://exslt.org/common")
@@ -17,2 +22,7 @@
 #define EXSLT_COMMON_NAMESPACE ((const xmlChar *) "http://exslt.org/common")
+/**
+ * EXSLT_MATH_NAMESPACE:
+ *
+ * Namespace for EXSLT math functions
+ */
 #define EXSLT_MATH_NAMESPACE ((const xmlChar *) "http://exslt.org/math")
@@ -18,2 +28,7 @@
 #define EXSLT_MATH_NAMESPACE ((const xmlChar *) "http://exslt.org/math")
+/**
+ * EXSLT_SETS_NAMESPACE:
+ *
+ * Namespace for EXSLT set functions
+ */
 #define EXSLT_SETS_NAMESPACE ((const xmlChar *) "http://exslt.org/sets")
@@ -19,2 +34,7 @@
 #define EXSLT_SETS_NAMESPACE ((const xmlChar *) "http://exslt.org/sets")
+/**
+ * EXSLT_FUNCTIONS_NAMESPACE:
+ *
+ * Namespace for EXSLT functions extension functions
+ */
 #define EXSLT_FUNCTIONS_NAMESPACE ((const xmlChar *) "http://exslt.org/functions")
@@ -20,2 +40,7 @@
 #define EXSLT_FUNCTIONS_NAMESPACE ((const xmlChar *) "http://exslt.org/functions")
+/**
+ * EXSLT_STRINGS_NAMESPACE:
+ *
+ * Namespace for EXSLT strings functions
+ */
 #define EXSLT_STRINGS_NAMESPACE ((const xmlChar *) "http://exslt.org/strings")
@@ -21,2 +46,7 @@
 #define EXSLT_STRINGS_NAMESPACE ((const xmlChar *) "http://exslt.org/strings")
+/**
+ * EXSLT_DATE_NAMESPACE:
+ *
+ * Namespace for EXSLT date functions
+ */
 #define EXSLT_DATE_NAMESPACE ((const xmlChar *) "http://exslt.org/dates-and-times")
@@ -22,2 +52,14 @@
 #define EXSLT_DATE_NAMESPACE ((const xmlChar *) "http://exslt.org/dates-and-times")
+/**
+ * EXSLT_DYNAMIC_NAMESPACE:
+ *
+ * Namespace for EXSLT dynamic functions
+ */
+#define EXSLT_DYNAMIC_NAMESPACE ((const xmlChar *) "http://exslt.org/dynamic")
+
+/**
+ * SAXON_NAMESPACE:
+ *
+ * Namespace for SAXON extensions functions
+ */
 #define SAXON_NAMESPACE ((const xmlChar *) "http://icl.com/saxon")
@@ -23,5 +65,4 @@
 #define SAXON_NAMESPACE ((const xmlChar *) "http://icl.com/saxon")
-#define EXSLT_DYNAMIC_NAMESPACE ((const xmlChar *) "http://exslt.org/dynamic")
 
 void LIBEXSLT_PUBLIC exsltCommonRegister (void);
 void LIBEXSLT_PUBLIC exsltMathRegister (void);