fixed one internal function applied patch from Joel Reed regenerated

* xmlschemas.c: fixed one internal function
* doc/Makefile.am doc/wiki.xsl: applied patch from Joel Reed
* testapi.c doc/libxml2-api.xml doc/libxml2-refs.xml: regenerated
daniel
diff --git a/ChangeLog b/ChangeLog
index c6cd375..b909e4d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Feb  4 18:26:43 CET 2005 Daniel Veillard <daniel@veillard.com>
+
+	* xmlschemas.c: fixed one internal function
+	* doc/Makefile.am doc/wiki.xsl: applied patch from Joel Reed
+	* testapi.c doc/libxml2-api.xml doc/libxml2-refs.xml: regenerated
+
 Fri Feb  4 00:25:43 CET 2005 Daniel Veillard <daniel@veillard.com>
 
 	* Makefile.am: use the walker to test the patterns instead of
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 926135e..8c96a7b 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -75,6 +75,11 @@
 	  echo "Validating the resulting XHTML pages" ; \
 	  $(XMLLINT) --nonet --valid --noout html/*.html ; fi );
 
+wiki: libxml2-api.xml $(srcdir)/wiki.xsl
+	-@(if [ -x $(XSLTPROC) ] ; then \
+		echo "Rebuilding the wiki HTML pages from the XML API" ; \
+		$(XSLTPROC) --nonet $(srcdir)/wiki.xsl libxml2-api.xml; fi )
+
 $(WIN32_DIR)/libxml2.def.src: libxml2-api.xml
 	-@(if [ -x $(XSLTPROC) ] ; then \
 	  $(XSLTPROC) -o $(WIN32_DIR)/libxml2.def.src \
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index e9fc2df..2af30ee 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -951,12 +951,18 @@
      <summary>pattern expression handling</summary>
      <description>allows to compile and test pattern expressions for nodes either in a tree or based on a parser state. </description>
      <author>Daniel Veillard </author>
+     <exports symbol='xmlStreamCtxt' type='typedef'/>
+     <exports symbol='xmlStreamCtxtPtr' type='typedef'/>
      <exports symbol='xmlPattern' type='typedef'/>
      <exports symbol='xmlPatternPtr' type='typedef'/>
-     <exports symbol='xmlPatterncompile' type='function'/>
-     <exports symbol='xmlFreePattern' type='function'/>
-     <exports symbol='xmlPatternMatch' type='function'/>
+     <exports symbol='xmlPatternGetStreamCtxt' type='function'/>
+     <exports symbol='xmlFreeStreamCtxt' type='function'/>
      <exports symbol='xmlFreePatternList' type='function'/>
+     <exports symbol='xmlPatternMatch' type='function'/>
+     <exports symbol='xmlFreePattern' type='function'/>
+     <exports symbol='xmlStreamPush' type='function'/>
+     <exports symbol='xmlStreamPop' type='function'/>
+     <exports symbol='xmlPatterncompile' type='function'/>
     </file>
     <file name='relaxng'>
      <summary>implementation of the Relax-NG validation</summary>
@@ -1102,6 +1108,7 @@
      <exports symbol='XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION' type='macro'/>
      <exports symbol='XML_SCHEMAS_TYPE_FINAL_UNION' type='macro'/>
      <exports symbol='XML_SCHEMAS_TYPE_FINAL_DEFAULT' type='macro'/>
+     <exports symbol='XML_SCHEMAS_TYPE_FACETSNEEDVALUE' type='macro'/>
      <exports symbol='XML_SCHEMAS_FINAL_DEFAULT_UNION' type='macro'/>
      <exports symbol='XML_SCHEMAS_ELEM_BLOCK_RESTRICTION' type='macro'/>
      <exports symbol='XML_SCHEMAS_FACET_REPLACE' type='macro'/>
@@ -1133,14 +1140,14 @@
      <exports symbol='XML_SCHEMAS_NINTEGER' type='enum'/>
      <exports symbol='XML_SCHEMAS_NORMSTRING' type='enum'/>
      <exports symbol='XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS' type='enum'/>
-     <exports symbol='XML_SCHEMAS_GYEARMONTH' type='enum'/>
+     <exports symbol='XML_SCHEMA_TYPE_SIMPLE' type='enum'/>
      <exports symbol='XML_SCHEMAS_NCNAME' type='enum'/>
      <exports symbol='XML_SCHEMAS_LONG' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_FRACTIONDIGITS' type='enum'/>
      <exports symbol='XML_SCHEMAS_BOOLEAN' type='enum'/>
      <exports symbol='XML_SCHEMAS_ENTITY' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_GROUP' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_SIMPLE' type='enum'/>
+     <exports symbol='XML_SCHEMAS_GYEARMONTH' type='enum'/>
      <exports symbol='XML_SCHEMAS_BASE64BINARY' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_ANY_ATTRIBUTE' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_WHITESPACE' type='enum'/>
@@ -1159,6 +1166,7 @@
      <exports symbol='XML_SCHEMAS_GYEAR' type='enum'/>
      <exports symbol='XML_SCHEMAS_BYTE' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_ALL' type='enum'/>
+     <exports symbol='XML_SCHEMA_TYPE_IDC_KEYREF' type='enum'/>
      <exports symbol='XML_SCHEMAS_NOTATION' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_MAXINCLUSIVE' type='enum'/>
      <exports symbol='XML_SCHEMAS_NAME' type='enum'/>
@@ -1170,6 +1178,7 @@
      <exports symbol='XML_SCHEMA_TYPE_ATTRIBUTEGROUP' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_BASIC' type='enum'/>
      <exports symbol='XML_SCHEMAS_IDREFS' type='enum'/>
+     <exports symbol='XML_SCHEMA_TYPE_IDC_UNIQUE' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_LENGTH' type='enum'/>
      <exports symbol='XML_SCHEMA_CONTENT_SIMPLE' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_PATTERN' type='enum'/>
@@ -1185,6 +1194,7 @@
      <exports symbol='XML_SCHEMAS_INTEGER' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_COMPLEX_CONTENT' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_MINEXCLUSIVE' type='enum'/>
+     <exports symbol='XML_SCHEMA_TYPE_IDC_KEY' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_SIMPLE_CONTENT' type='enum'/>
      <exports symbol='XML_SCHEMAS_FLOAT' type='enum'/>
      <exports symbol='XML_SCHEMAS_ENTITIES' type='enum'/>
@@ -2006,6 +2016,7 @@
      <exports symbol='XML_ERR_UNSUPPORTED_ENCODING' type='enum'/>
      <exports symbol='XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME' type='enum'/>
      <exports symbol='XML_ERR_ENTITYREF_IN_PROLOG' type='enum'/>
+     <exports symbol='XML_SCHEMAV_CVC_IDC' type='enum'/>
      <exports symbol='XML_IO_ENOTTY' type='enum'/>
      <exports symbol='XML_DTD_UNKNOWN_NOTATION' type='enum'/>
      <exports symbol='XML_FROM_DATATYPE' type='enum'/>
@@ -3993,6 +4004,9 @@
     <macro name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION' file='schemasInternals'>
       <info>the simple or complex type has a derivation method of &quot;restriction&quot;.</info>
     </macro>
+    <macro name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE' file='schemasInternals'>
+      <info>indicates if the facets need a computed value</info>
+    </macro>
     <macro name='XML_SCHEMAS_TYPE_FINAL_DEFAULT' file='schemasInternals'>
       <info>the simpleType has a final of &quot;default&quot;.</info>
     </macro>
@@ -5171,6 +5185,7 @@
     <enum name='XML_SCHEMAV_CVC_ENUMERATION_VALID' file='xmlerror' value='1840' type='xmlParserErrors' info='1840'/>
     <enum name='XML_SCHEMAV_CVC_FACET_VALID' file='xmlerror' value='1829' type='xmlParserErrors' info='1829'/>
     <enum name='XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID' file='xmlerror' value='1838' type='xmlParserErrors' info='1838'/>
+    <enum name='XML_SCHEMAV_CVC_IDC' file='xmlerror' value='1877' type='xmlParserErrors' info='1877'/>
     <enum name='XML_SCHEMAV_CVC_LENGTH_VALID' file='xmlerror' value='1830' type='xmlParserErrors' info='1830'/>
     <enum name='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID' file='xmlerror' value='1836' type='xmlParserErrors' info='1836'/>
     <enum name='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID' file='xmlerror' value='1834' type='xmlParserErrors' info='1834'/>
@@ -5239,6 +5254,9 @@
     <enum name='XML_SCHEMA_TYPE_EXTENSION' file='schemasInternals' value='13' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_FACET' file='schemasInternals' value='3' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_GROUP' file='schemasInternals' value='17' type='xmlSchemaTypeType'/>
+    <enum name='XML_SCHEMA_TYPE_IDC_KEY' file='schemasInternals' value='23' type='xmlSchemaTypeType'/>
+    <enum name='XML_SCHEMA_TYPE_IDC_KEYREF' file='schemasInternals' value='24' type='xmlSchemaTypeType'/>
+    <enum name='XML_SCHEMA_TYPE_IDC_UNIQUE' file='schemasInternals' value='22' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_LIST' file='schemasInternals' value='19' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_NOTATION' file='schemasInternals' value='18' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_RESTRICTION' file='schemasInternals' value='12' type='xmlSchemaTypeType'/>
@@ -5999,6 +6017,7 @@
       <field name='includes' type='void *' info=' the includes, this is opaque for now'/>
       <field name='preserve' type='int' info=' whether to free the document'/>
       <field name='counter' type='int' info=' used to give ononymous components unique names'/>
+      <field name='idcDef' type='xmlHashTablePtr' info=''/>
     </struct>
     <struct name='xmlSchemaAnnot' file='schemasInternals' type='struct _xmlSchemaAnnot'>
       <field name='next' type='struct _xmlSchemaAnnot *' info=''/>
@@ -6076,6 +6095,7 @@
       <field name='contentType' type='xmlSchemaContentType' info=''/>
       <field name='refPrefix' type='const xmlChar *' info=''/>
       <field name='defVal' type='xmlSchemaValPtr' info=''/>
+      <field name='idcs' type='void *' info=''/>
     </struct>
     <typedef name='xmlSchemaElementPtr' file='schemasInternals' type='xmlSchemaElement *'/>
     <struct name='xmlSchemaFacet' file='schemasInternals' type='struct _xmlSchemaFacet'>
@@ -6181,6 +6201,8 @@
       <field name='input' type='xmlShellReadlineFunc' info=''/>
     </struct>
     <typedef name='xmlShellCtxtPtr' file='debugXML' type='xmlShellCtxt *'/>
+    <struct name='xmlStreamCtxt' file='pattern' type='struct _xmlStreamCtxt'/>
+    <typedef name='xmlStreamCtxtPtr' file='pattern' type='xmlStreamCtxt *'/>
     <struct name='xmlTextReader' file='xmlreader' type='struct _xmlTextReader'/>
     <typedef name='xmlTextReaderLocatorPtr' file='xmlreader' type='void *'/>
     <typedef name='xmlTextReaderMode' file='xmlreader' type='enum'/>
@@ -9115,6 +9137,12 @@
       <return type='void'/>
       <arg name='table' type='xmlRefTablePtr' info='An ref table'/>
     </function>
+    <function name='xmlFreeStreamCtxt' file='pattern'>
+      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
+      <info>Free the stream context</info>
+      <return type='void'/>
+      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
+    </function>
     <function name='xmlFreeTextReader' file='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Deallocate all the resources associated to the reader</info>
@@ -11527,6 +11555,12 @@
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </function>
+    <function name='xmlPatternGetStreamCtxt' file='pattern'>
+      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
+      <info>Get a streaming context for that pattern Use xmlFreeStreamCtxt to free the context.</info>
+      <return type='xmlStreamCtxtPtr' info='a pointer to the context or NULL in case of failure'/>
+      <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
+    </function>
     <function name='xmlPatternMatch' file='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Test wether the node matches the pattern</info>
@@ -13207,6 +13241,20 @@
       <return type='char *' info='the copy of the string or NULL in case of error.'/>
       <arg name='str' type='const char *' info='a zero terminated string'/>
     </functype>
+    <function name='xmlStreamPop' file='pattern'>
+      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
+      <info>push one level from the stream.</info>
+      <return type='int' info='-1 in case of error, 0 otherwise.'/>
+      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
+    </function>
+    <function name='xmlStreamPush' file='pattern'>
+      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
+      <info>push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionnary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset.</info>
+      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
+      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
+      <arg name='name' type='const xmlChar *' info='the current name'/>
+      <arg name='ns' type='const xmlChar *' info='the namespace name'/>
+    </function>
     <function name='xmlStringCurrentChar' file='parserInternals'>
       <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer.</info>
       <return type='int' info='the current char value and its length'/>
diff --git a/doc/libxml2-refs.xml b/doc/libxml2-refs.xml
index 6e38779..9e9f2af 100644
--- a/doc/libxml2-refs.xml
+++ b/doc/libxml2-refs.xml
@@ -1044,6 +1044,7 @@
     <reference name='XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE'/>
     <reference name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION'/>
     <reference name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION'/>
+    <reference name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
     <reference name='XML_SCHEMAS_TYPE_FINAL_DEFAULT' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_DEFAULT'/>
     <reference name='XML_SCHEMAS_TYPE_FINAL_EXTENSION' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_EXTENSION'/>
     <reference name='XML_SCHEMAS_TYPE_FINAL_LIST' href='html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_LIST'/>
@@ -1104,6 +1105,7 @@
     <reference name='XML_SCHEMAV_CVC_ENUMERATION_VALID' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_ENUMERATION_VALID'/>
     <reference name='XML_SCHEMAV_CVC_FACET_VALID' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_FACET_VALID'/>
     <reference name='XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID'/>
+    <reference name='XML_SCHEMAV_CVC_IDC' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_IDC'/>
     <reference name='XML_SCHEMAV_CVC_LENGTH_VALID' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_LENGTH_VALID'/>
     <reference name='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID'/>
     <reference name='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID' href='html/libxml-xmlerror.html#XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID'/>
@@ -1172,6 +1174,9 @@
     <reference name='XML_SCHEMA_TYPE_EXTENSION' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_EXTENSION'/>
     <reference name='XML_SCHEMA_TYPE_FACET' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_FACET'/>
     <reference name='XML_SCHEMA_TYPE_GROUP' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_GROUP'/>
+    <reference name='XML_SCHEMA_TYPE_IDC_KEY' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_IDC_KEY'/>
+    <reference name='XML_SCHEMA_TYPE_IDC_KEYREF' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_IDC_KEYREF'/>
+    <reference name='XML_SCHEMA_TYPE_IDC_UNIQUE' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_IDC_UNIQUE'/>
     <reference name='XML_SCHEMA_TYPE_LIST' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_LIST'/>
     <reference name='XML_SCHEMA_TYPE_NOTATION' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_NOTATION'/>
     <reference name='XML_SCHEMA_TYPE_RESTRICTION' href='html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_RESTRICTION'/>
@@ -1838,6 +1843,7 @@
     <reference name='xmlFreePropList' href='html/libxml-tree.html#xmlFreePropList'/>
     <reference name='xmlFreeRMutex' href='html/libxml-threads.html#xmlFreeRMutex'/>
     <reference name='xmlFreeRefTable' href='html/libxml-valid.html#xmlFreeRefTable'/>
+    <reference name='xmlFreeStreamCtxt' href='html/libxml-pattern.html#xmlFreeStreamCtxt'/>
     <reference name='xmlFreeTextReader' href='html/libxml-xmlreader.html#xmlFreeTextReader'/>
     <reference name='xmlFreeTextWriter' href='html/libxml-xmlwriter.html#xmlFreeTextWriter'/>
     <reference name='xmlFreeURI' href='html/libxml-uri.html#xmlFreeURI'/>
@@ -2311,6 +2317,7 @@
     <reference name='xmlParserVersion' href='html/libxml-globals.html#xmlParserVersion'/>
     <reference name='xmlParserWarning' href='html/libxml-xmlerror.html#xmlParserWarning'/>
     <reference name='xmlPattern' href='html/libxml-pattern.html#xmlPattern'/>
+    <reference name='xmlPatternGetStreamCtxt' href='html/libxml-pattern.html#xmlPatternGetStreamCtxt'/>
     <reference name='xmlPatternMatch' href='html/libxml-pattern.html#xmlPatternMatch'/>
     <reference name='xmlPatternPtr' href='html/libxml-pattern.html#xmlPatternPtr'/>
     <reference name='xmlPatterncompile' href='html/libxml-pattern.html#xmlPatterncompile'/>
@@ -2619,6 +2626,10 @@
     <reference name='xmlStrcmp' href='html/libxml-xmlstring.html#xmlStrcmp'/>
     <reference name='xmlStrdup' href='html/libxml-xmlstring.html#xmlStrdup'/>
     <reference name='xmlStrdupFunc' href='html/libxml-xmlmemory.html#xmlStrdupFunc'/>
+    <reference name='xmlStreamCtxt' href='html/libxml-pattern.html#xmlStreamCtxt'/>
+    <reference name='xmlStreamCtxtPtr' href='html/libxml-pattern.html#xmlStreamCtxtPtr'/>
+    <reference name='xmlStreamPop' href='html/libxml-pattern.html#xmlStreamPop'/>
+    <reference name='xmlStreamPush' href='html/libxml-pattern.html#xmlStreamPush'/>
     <reference name='xmlStringComment' href='html/libxml-parserInternals.html#xmlStringComment'/>
     <reference name='xmlStringCurrentChar' href='html/libxml-parserInternals.html#xmlStringCurrentChar'/>
     <reference name='xmlStringDecodeEntities' href='html/libxml-parserInternals.html#xmlStringDecodeEntities'/>
@@ -4328,6 +4339,7 @@
       <ref name='XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE'/>
       <ref name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION'/>
       <ref name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION'/>
+      <ref name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
       <ref name='XML_SCHEMAS_TYPE_FINAL_DEFAULT'/>
       <ref name='XML_SCHEMAS_TYPE_FINAL_EXTENSION'/>
       <ref name='XML_SCHEMAS_TYPE_FINAL_LIST'/>
@@ -4388,6 +4400,7 @@
       <ref name='XML_SCHEMAV_CVC_ENUMERATION_VALID'/>
       <ref name='XML_SCHEMAV_CVC_FACET_VALID'/>
       <ref name='XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID'/>
+      <ref name='XML_SCHEMAV_CVC_IDC'/>
       <ref name='XML_SCHEMAV_CVC_LENGTH_VALID'/>
       <ref name='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID'/>
       <ref name='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID'/>
@@ -4456,6 +4469,9 @@
       <ref name='XML_SCHEMA_TYPE_EXTENSION'/>
       <ref name='XML_SCHEMA_TYPE_FACET'/>
       <ref name='XML_SCHEMA_TYPE_GROUP'/>
+      <ref name='XML_SCHEMA_TYPE_IDC_KEY'/>
+      <ref name='XML_SCHEMA_TYPE_IDC_KEYREF'/>
+      <ref name='XML_SCHEMA_TYPE_IDC_UNIQUE'/>
       <ref name='XML_SCHEMA_TYPE_LIST'/>
       <ref name='XML_SCHEMA_TYPE_NOTATION'/>
       <ref name='XML_SCHEMA_TYPE_RESTRICTION'/>
@@ -5158,6 +5174,7 @@
       <ref name='xmlFreePropList'/>
       <ref name='xmlFreeRMutex'/>
       <ref name='xmlFreeRefTable'/>
+      <ref name='xmlFreeStreamCtxt'/>
       <ref name='xmlFreeTextReader'/>
       <ref name='xmlFreeTextWriter'/>
       <ref name='xmlFreeURI'/>
@@ -5631,6 +5648,7 @@
       <ref name='xmlParserVersion'/>
       <ref name='xmlParserWarning'/>
       <ref name='xmlPattern'/>
+      <ref name='xmlPatternGetStreamCtxt'/>
       <ref name='xmlPatternMatch'/>
       <ref name='xmlPatternPtr'/>
       <ref name='xmlPatterncompile'/>
@@ -5939,6 +5957,10 @@
       <ref name='xmlStrcmp'/>
       <ref name='xmlStrdup'/>
       <ref name='xmlStrdupFunc'/>
+      <ref name='xmlStreamCtxt'/>
+      <ref name='xmlStreamCtxtPtr'/>
+      <ref name='xmlStreamPop'/>
+      <ref name='xmlStreamPush'/>
       <ref name='xmlStringComment'/>
       <ref name='xmlStringCurrentChar'/>
       <ref name='xmlStringDecodeEntities'/>
@@ -7213,6 +7235,9 @@
     <type name='xmlSchemaValidCtxtPtr'>
       <ref name='xmlSchemaNewValidCtxt'/>
     </type>
+    <type name='xmlStreamCtxtPtr'>
+      <ref name='xmlPatternGetStreamCtxt'/>
+    </type>
     <type name='xmlTextReaderPtr'>
       <ref name='xmlNewTextReader'/>
       <ref name='xmlNewTextReaderFilename'/>
@@ -7680,6 +7705,7 @@
       <ref name='xmlStrchr'/>
       <ref name='xmlStrcmp'/>
       <ref name='xmlStrdup'/>
+      <ref name='xmlStreamPush'/>
       <ref name='xmlStringCurrentChar'/>
       <ref name='xmlStringDecodeEntities'/>
       <ref name='xmlStringGetNodeList'/>
@@ -9249,6 +9275,7 @@
     <type name='xmlPatternPtr'>
       <ref name='xmlFreePattern'/>
       <ref name='xmlFreePatternList'/>
+      <ref name='xmlPatternGetStreamCtxt'/>
       <ref name='xmlPatternMatch'/>
     </type>
     <type name='xmlRMutexPtr'>
@@ -9469,6 +9496,11 @@
       <ref name='xmlGcMemGet'/>
       <ref name='xmlMemGet'/>
     </type>
+    <type name='xmlStreamCtxtPtr'>
+      <ref name='xmlFreeStreamCtxt'/>
+      <ref name='xmlStreamPop'/>
+      <ref name='xmlStreamPush'/>
+    </type>
     <type name='xmlStructuredErrorFunc'>
       <ref name='xmlSetStructuredErrorFunc'/>
       <ref name='xmlTextReaderSetStructuredErrorHandler'/>
@@ -10700,10 +10732,16 @@
     <file name='pattern'>
       <ref name='xmlFreePattern'/>
       <ref name='xmlFreePatternList'/>
+      <ref name='xmlFreeStreamCtxt'/>
       <ref name='xmlPattern'/>
+      <ref name='xmlPatternGetStreamCtxt'/>
       <ref name='xmlPatternMatch'/>
       <ref name='xmlPatternPtr'/>
       <ref name='xmlPatterncompile'/>
+      <ref name='xmlStreamCtxt'/>
+      <ref name='xmlStreamCtxtPtr'/>
+      <ref name='xmlStreamPop'/>
+      <ref name='xmlStreamPush'/>
     </file>
     <file name='relaxng'>
       <ref name='XML_RELAXNGP_CRNG'/>
@@ -10879,6 +10917,7 @@
       <ref name='XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE'/>
       <ref name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION'/>
       <ref name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION'/>
+      <ref name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
       <ref name='XML_SCHEMAS_TYPE_FINAL_DEFAULT'/>
       <ref name='XML_SCHEMAS_TYPE_FINAL_EXTENSION'/>
       <ref name='XML_SCHEMAS_TYPE_FINAL_LIST'/>
@@ -10931,6 +10970,9 @@
       <ref name='XML_SCHEMA_TYPE_EXTENSION'/>
       <ref name='XML_SCHEMA_TYPE_FACET'/>
       <ref name='XML_SCHEMA_TYPE_GROUP'/>
+      <ref name='XML_SCHEMA_TYPE_IDC_KEY'/>
+      <ref name='XML_SCHEMA_TYPE_IDC_KEYREF'/>
+      <ref name='XML_SCHEMA_TYPE_IDC_UNIQUE'/>
       <ref name='XML_SCHEMA_TYPE_LIST'/>
       <ref name='XML_SCHEMA_TYPE_NOTATION'/>
       <ref name='XML_SCHEMA_TYPE_RESTRICTION'/>
@@ -12157,6 +12199,7 @@
       <ref name='XML_SCHEMAV_CVC_ENUMERATION_VALID'/>
       <ref name='XML_SCHEMAV_CVC_FACET_VALID'/>
       <ref name='XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID'/>
+      <ref name='XML_SCHEMAV_CVC_IDC'/>
       <ref name='XML_SCHEMAV_CVC_LENGTH_VALID'/>
       <ref name='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID'/>
       <ref name='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID'/>
@@ -13509,6 +13552,7 @@
         </word>
         <word name='Both'>
           <ref name='XML_SUBSTITUTE_BOTH'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='BoxDrawing'>
           <ref name='xmlUCSIsBoxDrawing'/>
@@ -15393,6 +15437,7 @@
           <ref name='xmlParseExternalID'/>
           <ref name='xmlParsePEReference'/>
           <ref name='xmlParserHandlePEReference'/>
+          <ref name='xmlStreamPush'/>
           <ref name='xmlTextReaderCurrentDoc'/>
         </word>
         <word name='NRK'>
@@ -16929,6 +16974,7 @@
           <ref name='xmlNewNodeEatName'/>
           <ref name='xmlNewPI'/>
           <ref name='xmlNewTextChild'/>
+          <ref name='xmlPatternGetStreamCtxt'/>
           <ref name='xmlTextReaderRelaxNGSetSchema'/>
           <ref name='xmlTextReaderRelaxNGValidate'/>
         </word>
@@ -17420,6 +17466,9 @@
           <ref name='xmlParserHandleReference'/>
           <ref name='xmlValidCtxtNormalizeAttributeValue'/>
         </word>
+        <word name='act'>
+          <ref name='xmlStreamPush'/>
+        </word>
         <word name='activate'>
           <ref name='xmlTextReaderSetParserProp'/>
         </word>
@@ -17727,6 +17776,7 @@
           <ref name='xmlHasProp'/>
           <ref name='xmlKeepBlanksDefault'/>
           <ref name='xmlNanoFTPProxy'/>
+          <ref name='xmlStreamPush'/>
           <ref name='xmlTextReaderPreserve'/>
           <ref name='xmlTextReaderPreservePattern'/>
           <ref name='xmlXPathStringEvalNumber'/>
@@ -18388,6 +18438,7 @@
           <ref name='xmlSaveFileTo'/>
           <ref name='xmlSaveFormatFileTo'/>
           <ref name='xmlSetEntityReferenceFunc'/>
+          <ref name='xmlStreamPush'/>
           <ref name='xmlTextReaderCurrentDoc'/>
           <ref name='xmlTextReaderExpand'/>
           <ref name='xmlTextReaderSetErrorHandler'/>
@@ -18801,6 +18852,9 @@
         <word name='combining'>
           <ref name='IS_COMBINING_CH'/>
         </word>
+        <word name='come'>
+          <ref name='xmlStreamPush'/>
+        </word>
         <word name='coment'>
           <ref name='xmlTextWriterEndComment'/>
         </word>
@@ -19056,6 +19110,7 @@
           <ref name='xmlUTF8Strlen'/>
         </word>
         <word name='computed'>
+          <ref name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
           <ref name='_xmlEntity'/>
           <ref name='xmlByteConsumed'/>
           <ref name='xmlSchemaValPredefTypeNode'/>
@@ -19955,6 +20010,7 @@
           <ref name='xmlDictCreateSub'/>
           <ref name='xmlDictReference'/>
           <ref name='xmlHashCreateDict'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='dictionnary'>
           <ref name='_xmlParserCtxt'/>
@@ -19969,6 +20025,7 @@
           <ref name='xmlDictReference'/>
           <ref name='xmlDictSize'/>
           <ref name='xmlPatterncompile'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='did'>
           <ref name='XML_SCHEMAS_TYPE_BLOCK_DEFAULT'/>
@@ -20780,6 +20837,7 @@
           <ref name='xmlSchemaNewMemParserCtxt'/>
           <ref name='xmlSchemaNewParserCtxt'/>
           <ref name='xmlSchemaValidateListSimpleTypeFacet'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='explicitly'>
           <ref name='xmlSAXDefaultVersion'/>
@@ -20866,6 +20924,7 @@
           <ref name='xmlSchemaValidateListSimpleTypeFacet'/>
         </word>
         <word name='facets'>
+          <ref name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
           <ref name='xmlSchemaCheckFacet'/>
         </word>
         <word name='fail'>
@@ -20925,6 +20984,7 @@
           <ref name='xmlNanoHTTPOpenRedir'/>
           <ref name='xmlNanoHTTPSave'/>
           <ref name='xmlNewAutomata'/>
+          <ref name='xmlPatternGetStreamCtxt'/>
           <ref name='xmlPatternMatch'/>
           <ref name='xmlRelaxNGGetParserErrors'/>
           <ref name='xmlSaveFile'/>
@@ -22057,8 +22117,10 @@
           <ref name='xmlNanoHTTPMethodRedir'/>
           <ref name='xmlNanoHTTPOpen'/>
           <ref name='xmlNanoHTTPOpenRedir'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='indicates'>
+          <ref name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
           <ref name='xmlHasNsProp'/>
           <ref name='xmlNanoFTPRead'/>
           <ref name='xmlNanoFTPScanProxy'/>
@@ -22687,6 +22749,7 @@
           <ref name='xmlNodeDump'/>
           <ref name='xmlNodeDumpOutput'/>
           <ref name='xmlShellPwd'/>
+          <ref name='xmlStreamPop'/>
           <ref name='xmlXPathDebugDumpCompExpr'/>
           <ref name='xmlXPathDebugDumpObject'/>
         </word>
@@ -23143,6 +23206,7 @@
         <word name='means'>
           <ref name='xmlSetGenericErrorFunc'/>
           <ref name='xmlSetStructuredErrorFunc'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='mechanism'>
           <ref name='_xmlXPathContext'/>
@@ -23469,6 +23533,7 @@
         </word>
         <word name='need'>
           <ref name='WITH_TRIO'/>
+          <ref name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE'/>
           <ref name='XML_SUBSTITUTE_BOTH'/>
           <ref name='XML_SUBSTITUTE_NONE'/>
           <ref name='XML_SUBSTITUTE_PEREF'/>
@@ -23937,6 +24002,7 @@
         </word>
         <word name='onto'>
           <ref name='xmlParserInputBufferGrow'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='opaque'>
           <ref name='_xmlSchema'/>
@@ -24327,6 +24393,7 @@
           <ref name='xmlTextReaderRelaxNGValidate'/>
         </word>
         <word name='pattern'>
+          <ref name='xmlPatternGetStreamCtxt'/>
           <ref name='xmlPatternMatch'/>
           <ref name='xmlPatterncompile'/>
           <ref name='xmlTextReaderPreservePattern'/>
@@ -24543,6 +24610,7 @@
         </word>
         <word name='precompiled'>
           <ref name='_xmlXPathParserContext'/>
+          <ref name='xmlPatternGetStreamCtxt'/>
           <ref name='xmlPatternMatch'/>
           <ref name='xmlRegNewExecCtxt'/>
           <ref name='xmlRelaxNGNewValidCtxt'/>
@@ -24914,6 +24982,8 @@
           <ref name='xmlCreatePushParserCtxt'/>
           <ref name='xmlCtxtResetPush'/>
           <ref name='xmlParserInputBufferPush'/>
+          <ref name='xmlStreamPop'/>
+          <ref name='xmlStreamPush'/>
           <ref name='xmlXPathEvalExpr'/>
         </word>
         <word name='pushed'>
@@ -25562,6 +25632,7 @@
           <ref name='xmlSetNsProp'/>
           <ref name='xmlSetProp'/>
           <ref name='xmlSetStructuredErrorFunc'/>
+          <ref name='xmlStreamPush'/>
         </word>
         <word name='resides'>
           <ref name='xmlTextReaderConstXmlLang'/>
@@ -25729,6 +25800,7 @@
           <ref name='xmlSAX2ExternalSubset'/>
           <ref name='xmlSAX2InternalSubset'/>
           <ref name='xmlShellPwd'/>
+          <ref name='xmlStreamPush'/>
           <ref name='xmlValidateRoot'/>
           <ref name='xmlXPathNewValueTree'/>
           <ref name='xmlXPathRoot'/>
@@ -26616,25 +26688,8 @@
           <ref name='xmlStrdup'/>
           <ref name='xmlStrdupFunc'/>
         </word>
-        <word name='stream'>
-          <ref name='_xmlParserCtxt'/>
-          <ref name='xmlCheckHTTPInput'/>
-          <ref name='xmlCreateIOParserCtxt'/>
-          <ref name='xmlFreeInputStream'/>
-          <ref name='xmlHandleEntity'/>
-          <ref name='xmlNewEntityInputStream'/>
-          <ref name='xmlNewIOInputStream'/>
-          <ref name='xmlNewInputFromFile'/>
-          <ref name='xmlNewInputStream'/>
-          <ref name='xmlNewStringInputStream'/>
-          <ref name='xmlParsePEReference'/>
-          <ref name='xmlParserHandlePEReference'/>
-          <ref name='xmlParserHandleReference'/>
-          <ref name='xmlPrintURI'/>
-          <ref name='xmlPushInput'/>
-          <ref name='xmlSwitchInputEncoding'/>
-          <ref name='xmlTextReaderGetRemainder'/>
-          <ref name='xmlTextReaderRead'/>
+        <word name='streaming'>
+          <ref name='xmlPatternGetStreamCtxt'/>
         </word>
         <word name='streams'>
           <ref name='_xmlParserCtxt'/>
@@ -26667,6 +26722,7 @@
           <ref name='xmlRegExecErrInfo'/>
           <ref name='xmlRegExecNextValues'/>
           <ref name='xmlRegexpCompile'/>
+          <ref name='xmlStreamPush'/>
           <ref name='xmlStrncatNew'/>
         </word>
         <word name='stripping'>
@@ -28466,6 +28522,9 @@
         <word name='xmlFreeMutex'>
           <ref name='xmlFreeMutex'/>
         </word>
+        <word name='xmlFreeStreamCtxt'>
+          <ref name='xmlPatternGetStreamCtxt'/>
+        </word>
         <word name='xmlGetGlobalState'>
           <ref name='xmlGetGlobalState'/>
         </word>
@@ -28767,6 +28826,9 @@
         <word name='xmlPattern'>
           <ref name='LIBXML_PATTERN_ENABLED'/>
         </word>
+        <word name='xmlPatterncompile'>
+          <ref name='xmlStreamPush'/>
+        </word>
         <word name='xmlPopInput:'>
           <ref name='xmlPopInput'/>
         </word>
diff --git a/doc/wiki.xsl b/doc/wiki.xsl
new file mode 100644
index 0000000..8f707bb
--- /dev/null
+++ b/doc/wiki.xsl
@@ -0,0 +1,589 @@
+<?xml version="1.0"?>
+<!--
+  Stylesheet to generate the HTML documentation from an XML API descriptions:
+  xsltproc wiki.xsl libxml2-api.xml
+
+  Daniel Veillard
+-->
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:exsl="http://exslt.org/common"
+  xmlns:str="http://exslt.org/strings"
+  extension-element-prefixes="exsl str"
+  exclude-result-prefixes="exsl str">
+
+  <!-- Generate XHTML-1.0 transitional -->
+  <xsl:output method="xml" encoding="ISO-8859-1" indent="yes"
+      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+
+  <!-- Build keys for all symbols -->
+  <xsl:key name="symbols" match="/api/symbols/*" use="@name"/>
+
+  <!-- the target directory for the HTML output -->
+  <xsl:variable name="htmldir">wiki</xsl:variable>
+  <xsl:variable name="href_base">../</xsl:variable>
+
+  <xsl:template name="style">
+    <link rel="SHORTCUT ICON" href="/favicon.ico"/> 
+    <style type="text/css">
+TD {font-family: Verdana,Arial,Helvetica}
+BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
+H1 {font-family: Verdana,Arial,Helvetica}
+H2 {font-family: Verdana,Arial,Helvetica}
+H3 {font-family: Verdana,Arial,Helvetica}
+A:link, A:visited, A:active { text-decoration: underline }
+</style>
+  </xsl:template>
+
+  <xsl:template name="docstyle">
+    <style type="text/css">
+      div.deprecated pre.programlisting {border-style: double;border-color:red}
+      pre.programlisting {border-style: double;}
+    </style>
+  </xsl:template>
+
+  <!-- This is convoluted but needed to force the current document to
+       be the API one and not the result tree from the tokenize() result,
+       because the keys are only defined on the main document -->
+  <xsl:template mode="dumptoken" match='*'>
+    <xsl:param name="token"/>
+    <xsl:variable name="ref" select="key('symbols', $token)"/>
+    <xsl:choose>
+      <xsl:when test="$ref">
+        <a href="libxml-{$ref/@file}.html#{$ref/@name}"><xsl:value-of select="$token"/></a>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$token"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!-- dumps a string, making cross-reference links -->
+  <xsl:template name="dumptext">
+    <xsl:param name="text"/>
+    <xsl:variable name="ctxt" select='.'/>
+    <!-- <xsl:value-of select="$text"/> -->
+    <xsl:for-each select="str:tokenize($text, ' &#9;')">
+      <xsl:apply-templates select="$ctxt" mode='dumptoken'>
+        <xsl:with-param name="token" select="string(.)"/>
+      </xsl:apply-templates>
+      <xsl:if test="position() != last()">
+        <xsl:text> </xsl:text>
+      </xsl:if>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="macro" mode="toc">
+    <pre class="programlisting">
+    <xsl:text>#define </xsl:text><a href="#{@name}"><xsl:value-of select="@name"/></a>
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="variable" mode="toc">
+    <pre class="programlisting">
+    <xsl:text>Variable </xsl:text>
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="string(@type)"/>
+    </xsl:call-template>
+    <xsl:text> </xsl:text>
+    <a name="{@name}"></a>
+    <xsl:value-of select="@name"/>
+    <xsl:text>
+
+</xsl:text>
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="typedef" mode="toc">
+    <xsl:variable name="name" select="string(@name)"/>
+    <pre class="programlisting">
+    <xsl:choose>
+      <xsl:when test="@type = 'enum'">
+	<xsl:text>Enum </xsl:text>
+	<a href="#{$name}"><xsl:value-of select="$name"/></a>
+	<xsl:text>
+</xsl:text>
+      </xsl:when>
+      <xsl:otherwise>
+	<xsl:text>Typedef </xsl:text>
+	<xsl:call-template name="dumptext">
+	  <xsl:with-param name="text" select="@type"/>
+	</xsl:call-template>
+	<xsl:text> </xsl:text>
+	<a name="{$name}"><xsl:value-of select="$name"/></a>
+	<xsl:text>
+</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="typedef[@type = 'enum']">
+    <xsl:variable name="name" select="string(@name)"/>
+    <h3>Enum <a name="{$name}"><xsl:value-of select="$name"/></a></h3>
+    <pre class="programlisting">
+      <xsl:text>Enum </xsl:text>
+      <xsl:value-of select="$name"/>
+      <xsl:text> {
+</xsl:text>
+      <xsl:for-each select="/api/symbols/enum[@type = $name]">
+        <xsl:sort select="@value" data-type="number" order="ascending"/>
+        <xsl:text>    </xsl:text>
+        <a name="{@name}"><xsl:value-of select="@name"/></a>
+        <xsl:text> = </xsl:text>
+        <xsl:value-of select="@value"/>
+        <xsl:if test="@info != ''">
+	  <xsl:text> : </xsl:text>
+	  <xsl:call-template name="dumptext">
+	    <xsl:with-param name="text" select="@info"/>
+	  </xsl:call-template>
+        </xsl:if>
+        <xsl:text>
+</xsl:text>
+      </xsl:for-each>
+      <xsl:text>}
+</xsl:text>
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="struct" mode="toc">
+    <pre class="programlisting">
+    <xsl:text>Structure </xsl:text><a href="#{@name}"><xsl:value-of select="@name"/></a><br/>
+    <xsl:value-of select="@type"/><xsl:text>
+</xsl:text>
+    <xsl:if test="not(field)">
+      <xsl:text>The content of this structure is not made public by the API.
+</xsl:text>
+    </xsl:if>
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="struct">
+    <h3><a name="{@name}">Structure <xsl:value-of select="@name"/></a></h3>
+    <pre class="programlisting">
+    <xsl:text>Structure </xsl:text><xsl:value-of select="@name"/><br/>
+    <xsl:value-of select="@type"/><xsl:text> {
+</xsl:text>
+    <xsl:if test="not(field)">
+      <xsl:text>The content of this structure is not made public by the API.
+</xsl:text>
+    </xsl:if>
+    <xsl:for-each select="field">
+        <xsl:text>    </xsl:text>
+	<xsl:call-template name="dumptext">
+	  <xsl:with-param name="text" select="@type"/>
+	</xsl:call-template>
+	<xsl:text>&#9;</xsl:text>
+	<xsl:value-of select="@name"/>
+	<xsl:if test="@info != ''">
+	  <xsl:text>&#9;: </xsl:text>
+	  <xsl:call-template name="dumptext">
+	    <xsl:with-param name="text" select="substring(@info, 1, 40)"/>
+	  </xsl:call-template>
+	</xsl:if>
+	<xsl:text>
+</xsl:text>
+    </xsl:for-each>
+    <xsl:text>}</xsl:text>
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="macro">
+    <xsl:variable name="name" select="string(@name)"/>
+    <h3><a name="{$name}"></a>Macro: <xsl:value-of select="$name"/></h3>
+    <pre><xsl:text>#define </xsl:text><xsl:value-of select="$name"/></pre>
+    <p>
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="info"/>
+    </xsl:call-template>
+    </p><xsl:text>
+</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="function" mode="toc">
+    <xsl:variable name="name" select="string(@name)"/>
+    <xsl:variable name="nlen" select="string-length($name)"/>
+    <xsl:variable name="tlen" select="string-length(return/@type)"/>
+    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
+    <pre class="programlisting">
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="return/@type"/>
+    </xsl:call-template>
+    <xsl:text>&#9;</xsl:text>
+    <a href="#{@name}"><xsl:value-of select="@name"/></a>
+    <xsl:if test="$blen - 40 &lt; -8">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:if test="$blen - 40 &lt; 0">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:text>&#9;(</xsl:text>
+    <xsl:if test="not(arg)">
+      <xsl:text>void</xsl:text>
+    </xsl:if>
+    <xsl:for-each select="arg">
+      <xsl:call-template name="dumptext">
+        <xsl:with-param name="text" select="@type"/>
+      </xsl:call-template>
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="@name"/>
+      <xsl:if test="position() != last()">
+        <xsl:text>, </xsl:text><br/>
+	<xsl:if test="$blen - 40 &gt; 8">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:if test="$blen - 40 &gt; 0">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
+      </xsl:if>
+    </xsl:for-each>
+    <xsl:text>)</xsl:text>
+    </pre><xsl:text>
+</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="functype" mode="toc">
+    <xsl:variable name="name" select="string(@name)"/>
+    <xsl:variable name="nlen" select="string-length($name)"/>
+    <xsl:variable name="tlen" select="string-length(return/@type)"/>
+    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
+    <pre class="programlisting">
+    <xsl:text>Function type: </xsl:text>
+    <a href="#{$name}"><xsl:value-of select="$name"/></a>
+    <xsl:text>
+</xsl:text>
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="return/@type"/>
+    </xsl:call-template>
+    <xsl:text>&#9;</xsl:text>
+    <a href="#{$name}"><xsl:value-of select="$name"/></a>
+    <xsl:if test="$blen - 40 &lt; -8">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:if test="$blen - 40 &lt; 0">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:text>&#9;(</xsl:text>
+    <xsl:if test="not(arg)">
+      <xsl:text>void</xsl:text>
+    </xsl:if>
+    <xsl:for-each select="arg">
+      <xsl:call-template name="dumptext">
+        <xsl:with-param name="text" select="@type"/>
+      </xsl:call-template>
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="@name"/>
+      <xsl:if test="position() != last()">
+        <xsl:text>, </xsl:text><br/>
+	<xsl:if test="$blen - 40 &gt; 8">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:if test="$blen - 40 &gt; 0">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
+      </xsl:if>
+    </xsl:for-each>
+    <xsl:text>)
+</xsl:text>
+    </pre>
+    <xsl:text>
+</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="functype">
+    <xsl:variable name="name" select="string(@name)"/>
+    <xsl:variable name="nlen" select="string-length($name)"/>
+    <xsl:variable name="tlen" select="string-length(return/@type)"/>
+    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
+    <h3>
+      <a name="{$name}"></a>
+      <xsl:text>Function type: </xsl:text>
+      <xsl:value-of select="$name"/>
+    </h3>
+    <pre class="programlisting">
+    <xsl:text>Function type: </xsl:text>
+    <xsl:value-of select="$name"/>
+    <xsl:text>
+</xsl:text>
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="return/@type"/>
+    </xsl:call-template>
+    <xsl:text>&#9;</xsl:text>
+    <xsl:value-of select="@name"/>
+    <xsl:if test="$blen - 40 &lt; -8">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:if test="$blen - 40 &lt; 0">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:text>&#9;(</xsl:text>
+    <xsl:if test="not(arg)">
+      <xsl:text>void</xsl:text>
+    </xsl:if>
+    <xsl:for-each select="arg">
+      <xsl:call-template name="dumptext">
+        <xsl:with-param name="text" select="@type"/>
+      </xsl:call-template>
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="@name"/>
+      <xsl:if test="position() != last()">
+        <xsl:text>, </xsl:text><br/>
+	<xsl:if test="$blen - 40 &gt; 8">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:if test="$blen - 40 &gt; 0">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
+      </xsl:if>
+    </xsl:for-each>
+    <xsl:text>)
+</xsl:text>
+    </pre>
+    <p>
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="info"/>
+    </xsl:call-template>
+    </p>
+    <xsl:if test="arg | return">
+      <div class="variablelist"><table border="0"><col align="left"/><tbody>
+      <xsl:for-each select="arg">
+        <tr>
+          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
+	  <td>
+	    <xsl:call-template name="dumptext">
+	      <xsl:with-param name="text" select="@info"/>
+	    </xsl:call-template>
+	  </td>
+        </tr>
+      </xsl:for-each>
+      <xsl:if test="return/@info">
+        <tr>
+          <td><span class="term"><i><tt>Returns</tt></i>:</span></td>
+	  <td>
+	    <xsl:call-template name="dumptext">
+	      <xsl:with-param name="text" select="return/@info"/>
+	    </xsl:call-template>
+	  </td>
+        </tr>
+      </xsl:if>
+      </tbody></table></div>
+    </xsl:if>
+    <br/>
+    <xsl:text>
+</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="function">
+    <xsl:variable name="name" select="string(@name)"/>
+    <xsl:variable name="nlen" select="string-length($name)"/>
+    <xsl:variable name="tlen" select="string-length(return/@type)"/>
+    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
+    <h3><a name="{$name}"></a>Function: <xsl:value-of select="$name"/></h3>
+    <pre class="programlisting">
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="return/@type"/>
+    </xsl:call-template>
+    <xsl:text>&#9;</xsl:text>
+    <xsl:value-of select="@name"/>
+    <xsl:if test="$blen - 40 &lt; -8">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:if test="$blen - 40 &lt; 0">
+      <xsl:text>&#9;</xsl:text>
+    </xsl:if>
+    <xsl:text>&#9;(</xsl:text>
+    <xsl:if test="not(arg)">
+      <xsl:text>void</xsl:text>
+    </xsl:if>
+    <xsl:for-each select="arg">
+      <xsl:call-template name="dumptext">
+        <xsl:with-param name="text" select="@type"/>
+      </xsl:call-template>
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="@name"/>
+      <xsl:if test="position() != last()">
+        <xsl:text>, </xsl:text><br/>
+	<xsl:if test="$blen - 40 &gt; 8">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:if test="$blen - 40 &gt; 0">
+	  <xsl:text>&#9;</xsl:text>
+	</xsl:if>
+	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
+      </xsl:if>
+    </xsl:for-each>
+    <xsl:text>)</xsl:text><br/>
+    <xsl:text>
+</xsl:text>
+    </pre>
+    <p>
+    <xsl:call-template name="dumptext">
+      <xsl:with-param name="text" select="info"/>
+    </xsl:call-template>
+    </p><xsl:text>
+</xsl:text>
+    <xsl:if test="arg | return/@info">
+      <div class="variablelist"><table border="0"><col align="left"/><tbody>
+      <xsl:for-each select="arg">
+        <tr>
+          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
+	  <td>
+	    <xsl:call-template name="dumptext">
+	      <xsl:with-param name="text" select="@info"/>
+	    </xsl:call-template>
+	  </td>
+        </tr>
+      </xsl:for-each>
+      <xsl:if test="return/@info">
+        <tr>
+          <td><span class="term"><i><tt>Returns</tt></i>:</span></td>
+	  <td>
+	    <xsl:call-template name="dumptext">
+	      <xsl:with-param name="text" select="return/@info"/>
+	    </xsl:call-template>
+	  </td>
+        </tr>
+      </xsl:if>
+      </tbody></table></div>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="exports" mode="toc">
+    <xsl:apply-templates select="key('symbols', string(@symbol))[1]" mode="toc"/>
+  </xsl:template>
+
+  <xsl:template match="exports">
+    <xsl:apply-templates select="key('symbols', string(@symbol))[1]"/>
+  </xsl:template>
+
+  <xsl:template name="description">
+    <xsl:if test="deprecated">
+      <h2 style="font-weight:bold;color:red;text-align:center">This module is deprecated</h2>
+    </xsl:if>
+    <xsl:if test="description">
+      <p><xsl:value-of select="description"/></p>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template name="docomponents">
+    <xsl:param name="mode"/>
+    <xsl:apply-templates select="exports[@type='macro']" mode="$mode">
+      <xsl:sort select='@symbol'/>
+    </xsl:apply-templates>
+    <xsl:apply-templates select="exports[@type='enum']" mode="$mode">
+      <xsl:sort select='@symbol'/>
+    </xsl:apply-templates>
+    <xsl:apply-templates select="exports[@type='typedef']" mode="$mode">
+      <xsl:sort select='@symbol'/>
+    </xsl:apply-templates>
+    <xsl:apply-templates select="exports[@type='struct']" mode="$mode">
+      <xsl:sort select='@symbol'/>
+    </xsl:apply-templates>
+    <xsl:apply-templates select="exports[@type='function']" mode="$mode">
+      <xsl:sort select='@symbol'/>
+    </xsl:apply-templates>
+  </xsl:template>
+  
+  <xsl:template match="file">
+    <xsl:variable name="name" select="@name"/>
+    <xsl:variable name="title">Module <xsl:value-of select="$name"/> from <xsl:value-of select="/api/@name"/></xsl:variable>
+    <xsl:document href="{$htmldir}/libxml-{$name}.html" method="xml" encoding="ISO-8859-1"
+      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+	    <xsl:call-template name="style"/>
+	    <xsl:call-template name="docstyle"/>
+      <table border="0" cellpadding="3" cellspacing="1" width="100%">
+        <tr>
+          <td>
+	    <xsl:call-template name="description"/>
+	    <xsl:choose>
+	      <xsl:when test="deprecated">
+	        <div class="deprecated">
+		  <h2>Table of Contents</h2>
+		  <xsl:apply-templates select="exports" mode="toc"/>
+		  <h2>Description</h2>
+		  <xsl:text>
+</xsl:text>
+		  <xsl:apply-templates select="exports"/>
+		</div>
+	      </xsl:when>
+	      <xsl:otherwise>
+		<h2>Table of Contents</h2>
+		<xsl:apply-templates select="exports[@type='macro']" mode="toc">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='enum']" mode="toc">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='typedef']" mode="toc">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='struct']" mode="toc">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='function']" mode="toc">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<h2>Description</h2>
+		<xsl:text>
+</xsl:text>
+		<xsl:apply-templates select="exports[@type='macro']">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='enum']">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='typedef']">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='struct']">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+		<xsl:apply-templates select="exports[@type='function']">
+		  <xsl:sort select='@symbol'/>
+		</xsl:apply-templates>
+	      </xsl:otherwise>
+	    </xsl:choose>
+    </td>
+  </tr>
+</table>
+    </xsl:document>
+  </xsl:template>
+
+  <xsl:template match="file" mode="toc">
+    <xsl:variable name="name" select="@name"/>
+    <b><a href="http://xmlsoft.org/wiki/index.php?title=Libxml2:Api:{$name}"><xsl:value-of select="$name"/></a></b><br/>
+      <xsl:value-of select="summary"/>
+      <br/><br/>
+  </xsl:template>
+
+  <xsl:template name="mainpage">
+    <xsl:param name="file" select="concat($htmldir, '/libxml-index.html')"/>
+    <xsl:variable name="title">Reference Manual for <xsl:value-of select="/api/@name"/></xsl:variable>
+    <xsl:document href="{$file}" method="xml" encoding="ISO-8859-1"
+      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+      <xsl:call-template name="style"/>
+      <xsl:call-template name="docstyle"/>
+      <table border="0" cellpadding="3" cellspacing="1" width="100%">
+        <tr>
+          <td>
+            <xsl:apply-templates select="/api/files/file" mode="toc"/>
+          </td>
+        </tr>
+      </table>
+    </xsl:document>
+  </xsl:template>
+
+  <xsl:template match="/">
+    <!-- Save the main libxml-index.html as well as a couple of copies -->
+    <xsl:call-template name="mainpage"/>
+    <!-- now build the file for each of the modules -->
+    <xsl:apply-templates select="/api/files/file"/>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/testapi.c b/testapi.c
index bf829dc..1442137 100644
--- a/testapi.c
+++ b/testapi.c
@@ -16692,6 +16692,16 @@
 }
 
 static int
+test_xmlPatternGetStreamCtxt(void) {
+    int test_ret = 0;
+
+
+    /* missing type support */
+    return(test_ret);
+}
+
+
+static int
 test_xmlPatternMatch(void) {
     int test_ret = 0;
 
@@ -16741,13 +16751,105 @@
     return(test_ret);
 }
 
+
+#define gen_nb_xmlStreamCtxtPtr 1
+static xmlStreamCtxtPtr gen_xmlStreamCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+    return(NULL);
+}
+static void des_xmlStreamCtxtPtr(int no ATTRIBUTE_UNUSED, xmlStreamCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+}
+
+static int
+test_xmlStreamPop(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_PATTERN_ENABLED)
+    int mem_base;
+    int ret_val;
+    xmlStreamCtxtPtr stream; /* the stream context */
+    int n_stream;
+
+    for (n_stream = 0;n_stream < gen_nb_xmlStreamCtxtPtr;n_stream++) {
+        mem_base = xmlMemBlocks();
+        stream = gen_xmlStreamCtxtPtr(n_stream, 0);
+
+        ret_val = xmlStreamPop(stream);
+        desret_int(ret_val);
+        call_tests++;
+        des_xmlStreamCtxtPtr(n_stream, stream, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlStreamPop",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_stream);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
+test_xmlStreamPush(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_PATTERN_ENABLED)
+    int mem_base;
+    int ret_val;
+    xmlStreamCtxtPtr stream; /* the stream context */
+    int n_stream;
+    xmlChar * name; /* the current name */
+    int n_name;
+    xmlChar * ns; /* the namespace name */
+    int n_ns;
+
+    for (n_stream = 0;n_stream < gen_nb_xmlStreamCtxtPtr;n_stream++) {
+    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
+    for (n_ns = 0;n_ns < gen_nb_const_xmlChar_ptr;n_ns++) {
+        mem_base = xmlMemBlocks();
+        stream = gen_xmlStreamCtxtPtr(n_stream, 0);
+        name = gen_const_xmlChar_ptr(n_name, 1);
+        ns = gen_const_xmlChar_ptr(n_ns, 2);
+
+        ret_val = xmlStreamPush(stream, (const xmlChar *)name, (const xmlChar *)ns);
+        desret_int(ret_val);
+        call_tests++;
+        des_xmlStreamCtxtPtr(n_stream, stream, 0);
+        des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
+        des_const_xmlChar_ptr(n_ns, (const xmlChar *)ns, 2);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlStreamPush",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_stream);
+            printf(" %d", n_name);
+            printf(" %d", n_ns);
+            printf("\n");
+        }
+    }
+    }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
 static int
 test_pattern(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing pattern : 1 of 4 functions ...\n");
+    if (quiet == 0) printf("Testing pattern : 3 of 8 functions ...\n");
+    test_ret += test_xmlPatternGetStreamCtxt();
     test_ret += test_xmlPatternMatch();
     test_ret += test_xmlPatterncompile();
+    test_ret += test_xmlStreamPop();
+    test_ret += test_xmlStreamPush();
 
     if (test_ret != 0)
 	printf("Module pattern: %d errors\n", test_ret);
diff --git a/xmlschemas.c b/xmlschemas.c
index 8e291d0..800d1a8 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -16439,6 +16439,7 @@
  * Frees an IDC binding. Note that the node table-items
  * are not freed.
  */
+static void 
 xmlSchemaIDCFreeBinding(xmlSchemaPSVIIDCBindingPtr bind)
 {
     if (bind->nodeTable != NULL) {