regenerated fixed a compilation problem some cleanups and one bug fix

* elfgcchack.h testapi.c doc/*: regenerated
* schematron.c: fixed a compilation problem
* xmlregexp.c include/libxml/xmlregexp.h: some cleanups and one bug fix
* result/expr/base: slightly changes the number of Cons.
Daniel
diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html
index e4dba2d..161b4ef 100644
--- a/doc/APIchunk10.html
+++ b/doc/APIchunk10.html
@@ -517,6 +517,10 @@
 </dd><dt>assuming</dt><dd><a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br />
 <a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br />
 </dd><dt>assure</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
+</dd><dt>atom</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 </dd><dt>atomic</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br />
 <a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br />
 </dd><dt>attached</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
diff --git a/doc/APIchunk11.html b/doc/APIchunk11.html
index c1be632..763623f 100644
--- a/doc/APIchunk11.html
+++ b/doc/APIchunk11.html
@@ -187,6 +187,7 @@
 <a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br />
+</dd><dt>bound</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
 </dd><dt>boundaries</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
 <a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br />
 </dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
diff --git a/doc/APIchunk12.html b/doc/APIchunk12.html
index a0771d6..e818ee7 100644
--- a/doc/APIchunk12.html
+++ b/doc/APIchunk12.html
@@ -237,7 +237,8 @@
 </dd><dt>childs</dt><dd><a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br />
 <a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br />
 <a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
-</dd><dt>choice</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
+</dd><dt>choice</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
 </dd><dt>choices</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
 </dd><dt>choices:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNotationDecl">xmlParseNotationDecl</a><br />
@@ -598,6 +599,9 @@
 <a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br />
 <a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br />
 <a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
 <a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br />
@@ -827,6 +831,9 @@
 </dd><dt>cshema</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a><br />
 </dd><dt>ctrio</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br />
 <a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br />
+</dd><dt>ctxt</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 </dd><dt>ctxt-</dt><dd><a href="html/libxml-DOCBparser.html#docbFreeParserCtxt">docbFreeParserCtxt</a><br />
 <a href="html/libxml-HTMLparser.html#htmlFreeParserCtxt">htmlFreeParserCtxt</a><br />
 <a href="html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a><br />
diff --git a/doc/APIchunk14.html b/doc/APIchunk14.html
index 246bbbb..78fd4a8 100644
--- a/doc/APIchunk14.html
+++ b/doc/APIchunk14.html
@@ -302,6 +302,9 @@
 <a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
 </dd><dt>evaulation</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a><br />
 </dd><dt>even</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
 <a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br />
 <a href="html/libxml-xmlwriter.html#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a><br />
diff --git a/doc/APIchunk17.html b/doc/APIchunk17.html
index afaff84..b797ffd 100644
--- a/doc/APIchunk17.html
+++ b/doc/APIchunk17.html
@@ -247,6 +247,7 @@
 <a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br />
 <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
 </dd><dt>infinite</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
 </dd><dt>infinity</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br />
diff --git a/doc/APIchunk18.html b/doc/APIchunk18.html
index 40fc604..f02b4d0 100644
--- a/doc/APIchunk18.html
+++ b/doc/APIchunk18.html
@@ -54,7 +54,10 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathNewParserContext">xmlXPathNewParserContext</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br />
 <a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br />
-</dd></dl><h2>Letter k:</h2><dl><dt>keep</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br />
+</dd></dl><h2>Letter k:</h2><dl><dt>keep</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
+<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br />
 <a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
 <a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br />
@@ -147,7 +150,9 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
 </dd><dt>least</dt><dd><a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
-</dd><dt>left</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
+</dd><dt>left</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
+<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
 </dd><dt>legacy</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
 </dd><dt>len</dt><dd><a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
 <a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
@@ -166,6 +171,7 @@
 <a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br />
 </dd><dt>lenght</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
 <a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a><br />
 <a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br />
 <a href="html/libxml-valid.html#xmlValidatePushCData">xmlValidatePushCData</a><br />
@@ -384,6 +390,7 @@
 </dd><dt>lossless</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br />
 <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br />
 <a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br />
+</dd><dt>lower</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
 </dd><dt>lowercase</dt><dd><a href="html/libxml-HTMLparser.html#htmlTagLookup">htmlTagLookup</a><br />
 <a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
diff --git a/doc/APIchunk19.html b/doc/APIchunk19.html
index c618478..ade6618 100644
--- a/doc/APIchunk19.html
+++ b/doc/APIchunk19.html
@@ -149,7 +149,8 @@
 <a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
 <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br />
-</dd><dt>means</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
+</dd><dt>means</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
 <a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
 <a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br />
 <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br />
diff --git a/doc/APIchunk21.html b/doc/APIchunk21.html
index fc2c376..6789f9d 100644
--- a/doc/APIchunk21.html
+++ b/doc/APIchunk21.html
@@ -190,6 +190,9 @@
 <a href="html/libxml-xmlIO.html#xmlParserInputBufferPush">xmlParserInputBufferPush</a><br />
 </dd><dt>operation</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
 <a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderConstValue">xmlTextReaderConstValue</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
diff --git a/doc/APIchunk23.html b/doc/APIchunk23.html
index 709c780..8b31bf5 100644
--- a/doc/APIchunk23.html
+++ b/doc/APIchunk23.html
@@ -73,6 +73,7 @@
 <a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
 <a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
 <a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br />
 <a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br />
 <a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br />
@@ -328,6 +329,9 @@
 </dd><dt>release</dt><dd><a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br />
 <a href="html/libxml-parser.html#xmlClearParserCtxt">xmlClearParserCtxt</a><br />
 <a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br />
 </dd><dt>releases</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br />
 </dd><dt>reliable</dt><dd><a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br />
@@ -379,6 +383,8 @@
 </dd><dt>removing</dt><dd><a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br />
 </dd><dt>rename</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
 </dd><dt>repeat</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
+</dd><dt>repeated</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+</dd><dt>repetition</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
 </dd><dt>replace</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</a><br />
 <a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
@@ -564,6 +570,8 @@
 </dd><dt>rewrite</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
 </dd><dt>right</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br />
 <a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br />
 <a href="html/libxml-tree.html#xmlSetListDoc">xmlSetListDoc</a><br />
 <a href="html/libxml-tree.html#xmlSetTreeDoc">xmlSetTreeDoc</a><br />
diff --git a/doc/APIchunk24.html b/doc/APIchunk24.html
index 49df4ba..0ce15fb 100644
--- a/doc/APIchunk24.html
+++ b/doc/APIchunk24.html
@@ -192,6 +192,7 @@
 <a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br />
 <a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br />
 <a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
 <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
 <a href="html/libxml-parser.html#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a><br />
diff --git a/doc/APIchunk25.html b/doc/APIchunk25.html
index 2715338..98b46a8 100644
--- a/doc/APIchunk25.html
+++ b/doc/APIchunk25.html
@@ -139,6 +139,8 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br />
 </dd><dt>them</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br />
 <a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />
diff --git a/doc/APIchunk26.html b/doc/APIchunk26.html
index 1afcc10..cff6ce4 100644
--- a/doc/APIchunk26.html
+++ b/doc/APIchunk26.html
@@ -89,6 +89,9 @@
 <a href="html/libxml-xmlunicode.html#xmlUCSIsCat">xmlUCSIsCat</a><br />
 </dd><dt>unless</dt><dd><a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br />
 <a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br />
 <a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br />
 <a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
@@ -172,7 +175,8 @@
 <a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br />
 </dd><dt>upon</dt><dd><a href="html/libxml-SAX.html#checkNamespace">checkNamespace</a><br />
 <a href="html/libxml-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a><br />
-</dd><dt>upper</dt><dd><a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
+</dd><dt>upper</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
 </dd><dt>uri</dt><dd><a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br />
 </dd><dt>usage</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
 <a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br />
diff --git a/doc/APIchunk4.html b/doc/APIchunk4.html
index 19521d9..b6dce45 100644
--- a/doc/APIchunk4.html
+++ b/doc/APIchunk4.html
@@ -298,6 +298,9 @@
 <a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
 <a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br />
 <a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br />
 <a href="html/libxml-nanohttp.html#xmlNanoHTTPContentLength">xmlNanoHTTPContentLength</a><br />
 <a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
diff --git a/doc/APIconstructors.html b/doc/APIconstructors.html
index d2c8907..9598e49 100644
--- a/doc/APIconstructors.html
+++ b/doc/APIconstructors.html
@@ -327,6 +327,10 @@
 <a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br />
 </p><h2>Type xmlExpCtxtPtr:</h2><p><a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
 </p><h2>Type xmlExpNodePtr:</h2><p><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br />
 </p><h2>Type xmlExternalEntityLoader:</h2><p><a href="html/libxml-parser.html#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a><br />
diff --git a/doc/APIfiles.html b/doc/APIfiles.html
index 9bd4181..35c224b 100644
--- a/doc/APIfiles.html
+++ b/doc/APIfiles.html
@@ -2673,7 +2673,11 @@
 <a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNode">xmlExpNode</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNodeType">xmlExpNodeType</a><br />
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index 639de11..9b25ce2 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -221,6 +221,7 @@
 <a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
 <a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />
 <a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br />
 <a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br />
 <a href="html/libxml-valid.html#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a><br />
@@ -1268,6 +1269,10 @@
 <a href="html/libxml-xmlregexp.html#xmlExpFreeCtxt">xmlExpFreeCtxt</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br />
@@ -1278,6 +1283,9 @@
 <a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br />
diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html
index a3ec3a6..faa8d7b 100644
--- a/doc/APIsymbols.html
+++ b/doc/APIsymbols.html
@@ -1887,7 +1887,11 @@
 <a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNode">xmlExpNode</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpNodeType">xmlExpNodeType</a><br />
diff --git a/doc/html/libxml-xmlregexp.html b/doc/html/libxml-xmlregexp.html
index 5b2bd9d..761e105 100644
--- a/doc/html/libxml-xmlregexp.html
+++ b/doc/html/libxml-xmlregexp.html
@@ -33,7 +33,11 @@
 <pre class="programlisting">int	<a href="#xmlExpGetStart">xmlExpGetStart</a>			(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** list, <br />					 int len)</pre>
 <pre class="programlisting">int	<a href="#xmlExpIsNillable">xmlExpIsNillable</a>		(<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)</pre>
 <pre class="programlisting">int	<a href="#xmlExpMaxToken">xmlExpMaxToken</a>			(<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)</pre>
+<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	<a href="#xmlExpNewAtom">xmlExpNewAtom</a>		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)</pre>
 <pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a>	<a href="#xmlExpNewCtxt">xmlExpNewCtxt</a>		(int maxNodes, <br />					 <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
+<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	<a href="#xmlExpNewOr">xmlExpNewOr</a>		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)</pre>
+<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	<a href="#xmlExpNewRange">xmlExpNewRange</a>		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> subset, <br />					 int min, <br />					 int max)</pre>
+<pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	<a href="#xmlExpNewSeq">xmlExpNewSeq</a>		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)</pre>
 <pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	<a href="#xmlExpParse">xmlExpParse</a>		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 const char * expr)</pre>
 <pre class="programlisting">void	<a href="#xmlExpRef">xmlExpRef</a>			(<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)</pre>
 <pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	<a href="#xmlExpStringDerive">xmlExpStringDerive</a>	(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br />					 int len)</pre>
@@ -89,9 +93,17 @@
 </pre><p>Finds if the expression is nillable, i.e. if it accepts the empty sequqnce</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if nillable, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpMaxToken" id="xmlExpMaxToken"></a>Function: xmlExpMaxToken</h3><pre class="programlisting">int	xmlExpMaxToken			(<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)<br />
 </pre><p>Indicate the maximum number of input a expression can accept</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>a compiled expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the maximum length or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewCtxt" id="xmlExpNewCtxt"></a>Function: xmlExpNewCtxt</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a>	xmlExpNewCtxt		(int maxNodes, <br />					 <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>a compiled expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the maximum length or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewAtom" id="xmlExpNewAtom"></a>Function: xmlExpNewAtom</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewAtom		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)<br />
+</pre><p>Get the atom associated to this name from that context</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name lenght in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewCtxt" id="xmlExpNewCtxt"></a>Function: xmlExpNewCtxt</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a>	xmlExpNewCtxt		(int maxNodes, <br />					 <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
 </pre><p>Creates a new context for manipulating expressions</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionnary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpParse" id="xmlExpParse"></a>Function: xmlExpParse</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpParse		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 const char * expr)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionnary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewOr" id="xmlExpNewOr"></a>Function: xmlExpNewOr</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewOr		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br />
+</pre><p>Get the atom associated to the choice @left | @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>left</tt></i>:</span></td><td>left expression</td></tr><tr><td><span class="term"><i><tt>right</tt></i>:</span></td><td>right expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewRange" id="xmlExpNewRange"></a>Function: xmlExpNewRange</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewRange		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> subset, <br />					 int min, <br />					 int max)<br />
+</pre><p>Get the atom associated to the range (@subset){@min, @max} Note that @subset is consumed in the operation, to keep an handle on it use xmlExpRef() and use xmlExpFree() to release it, this is true even in case of failure (unless ctxt == NULL).</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>subset</tt></i>:</span></td><td>the expression to be repeated</td></tr><tr><td><span class="term"><i><tt>min</tt></i>:</span></td><td>the lower bound for the repetition</td></tr><tr><td><span class="term"><i><tt>max</tt></i>:</span></td><td>the upper bound for the repetition, -1 means infinite</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewSeq" id="xmlExpNewSeq"></a>Function: xmlExpNewSeq</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewSeq		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br />
+</pre><p>Get the atom associated to the sequence @left , @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>left</tt></i>:</span></td><td>left expression</td></tr><tr><td><span class="term"><i><tt>right</tt></i>:</span></td><td>right expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpParse" id="xmlExpParse"></a>Function: xmlExpParse</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpParse		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 const char * expr)<br />
 </pre><p>Minimal parser for regexps, it understand the following constructs - string terminals - choice operator | - sequence operator , - subexpressions (...) - usual cardinality operators + * and ? - finite sequences { min, max } - infinite sequences { min, * } There is minimal checkings made especially no checking on strings values</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expressions context</td></tr><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>the 0 terminated string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new expression or NULL in case of failure</td></tr></tbody></table></div><h3><a name="xmlExpRef" id="xmlExpRef"></a>Function: xmlExpRef</h3><pre class="programlisting">void	xmlExpRef			(<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br />
 </pre><p>Increase the <a href="libxml-SAX.html#reference">reference</a> count of the expression</p>
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index d527467..38c15fd 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -2852,6 +2852,7 @@
      <exports symbol='emptyExp' type='variable'/>
      <exports symbol='xmlRegExecCallbacks' type='function'/>
      <exports symbol='xmlRegNewExecCtxt' type='function'/>
+     <exports symbol='xmlExpNewOr' type='function'/>
      <exports symbol='xmlRegFreeRegexp' type='function'/>
      <exports symbol='xmlExpRef' type='function'/>
      <exports symbol='xmlRegexpIsDeterminist' type='function'/>
@@ -2865,17 +2866,20 @@
      <exports symbol='xmlExpIsNillable' type='function'/>
      <exports symbol='xmlExpFreeCtxt' type='function'/>
      <exports symbol='xmlExpDump' type='function'/>
+     <exports symbol='xmlExpNewSeq' type='function'/>
      <exports symbol='xmlExpFree' type='function'/>
+     <exports symbol='xmlExpNewRange' type='function'/>
      <exports symbol='xmlRegexpCompile' type='function'/>
+     <exports symbol='xmlExpNewAtom' type='function'/>
      <exports symbol='xmlRegexpExec' type='function'/>
-     <exports symbol='xmlExpMaxToken' type='function'/>
+     <exports symbol='xmlRegExecPushString' type='function'/>
      <exports symbol='xmlExpGetStart' type='function'/>
      <exports symbol='xmlExpParse' type='function'/>
      <exports symbol='xmlExpNewCtxt' type='function'/>
      <exports symbol='xmlExpGetLanguage' type='function'/>
      <exports symbol='xmlExpStringDerive' type='function'/>
      <exports symbol='xmlExpCtxtNbNodes' type='function'/>
-     <exports symbol='xmlRegExecPushString' type='function'/>
+     <exports symbol='xmlExpMaxToken' type='function'/>
      <exports symbol='xmlRegexpPrint' type='function'/>
     </file>
     <file name='xmlsave'>
@@ -9315,6 +9319,14 @@
       <return type='int' info='the maximum length or -1 in case of error'/>
       <arg name='expr' type='xmlExpNodePtr' info='a compiled expression'/>
     </function>
+    <function name='xmlExpNewAtom' file='xmlregexp' module='xmlregexp'>
+      <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
+      <info>Get the atom associated to this name from that context</info>
+      <return type='xmlExpNodePtr' info='the node or NULL in case of error'/>
+      <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
+      <arg name='name' type='const xmlChar *' info='the atom name'/>
+      <arg name='len' type='int' info='the atom name lenght in byte (or -1);'/>
+    </function>
     <function name='xmlExpNewCtxt' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
       <info>Creates a new context for manipulating expressions</info>
@@ -9322,6 +9334,31 @@
       <arg name='maxNodes' type='int' info='the maximum number of nodes'/>
       <arg name='dict' type='xmlDictPtr' info='optional dictionnary to use internally'/>
     </function>
+    <function name='xmlExpNewOr' file='xmlregexp' module='xmlregexp'>
+      <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
+      <info>Get the atom associated to the choice @left | @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</info>
+      <return type='xmlExpNodePtr' info='the node or NULL in case of error'/>
+      <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
+      <arg name='left' type='xmlExpNodePtr' info='left expression'/>
+      <arg name='right' type='xmlExpNodePtr' info='right expression'/>
+    </function>
+    <function name='xmlExpNewRange' file='xmlregexp' module='xmlregexp'>
+      <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
+      <info>Get the atom associated to the range (@subset){@min, @max} Note that @subset is consumed in the operation, to keep an handle on it use xmlExpRef() and use xmlExpFree() to release it, this is true even in case of failure (unless ctxt == NULL).</info>
+      <return type='xmlExpNodePtr' info='the node or NULL in case of error'/>
+      <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
+      <arg name='subset' type='xmlExpNodePtr' info='the expression to be repeated'/>
+      <arg name='min' type='int' info='the lower bound for the repetition'/>
+      <arg name='max' type='int' info='the upper bound for the repetition, -1 means infinite'/>
+    </function>
+    <function name='xmlExpNewSeq' file='xmlregexp' module='xmlregexp'>
+      <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
+      <info>Get the atom associated to the sequence @left , @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</info>
+      <return type='xmlExpNodePtr' info='the node or NULL in case of error'/>
+      <arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
+      <arg name='left' type='xmlExpNodePtr' info='left expression'/>
+      <arg name='right' type='xmlExpNodePtr' info='right expression'/>
+    </function>
     <function name='xmlExpParse' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
       <info>Minimal parser for regexps, it understand the following constructs - string terminals - choice operator | - sequence operator , - subexpressions (...) - usual cardinality operators + * and ? - finite sequences  { min, max } - infinite sequences { min, * } There is minimal checkings made especially no checking on strings values</info>
diff --git a/doc/libxml2-refs.xml b/doc/libxml2-refs.xml
index 95cf123..39b02c8 100644
--- a/doc/libxml2-refs.xml
+++ b/doc/libxml2-refs.xml
@@ -1881,7 +1881,11 @@
     <reference name='xmlExpGetStart' href='html/libxml-xmlregexp.html#xmlExpGetStart'/>
     <reference name='xmlExpIsNillable' href='html/libxml-xmlregexp.html#xmlExpIsNillable'/>
     <reference name='xmlExpMaxToken' href='html/libxml-xmlregexp.html#xmlExpMaxToken'/>
+    <reference name='xmlExpNewAtom' href='html/libxml-xmlregexp.html#xmlExpNewAtom'/>
     <reference name='xmlExpNewCtxt' href='html/libxml-xmlregexp.html#xmlExpNewCtxt'/>
+    <reference name='xmlExpNewOr' href='html/libxml-xmlregexp.html#xmlExpNewOr'/>
+    <reference name='xmlExpNewRange' href='html/libxml-xmlregexp.html#xmlExpNewRange'/>
+    <reference name='xmlExpNewSeq' href='html/libxml-xmlregexp.html#xmlExpNewSeq'/>
     <reference name='xmlExpNode' href='html/libxml-xmlregexp.html#xmlExpNode'/>
     <reference name='xmlExpNodePtr' href='html/libxml-xmlregexp.html#xmlExpNodePtr'/>
     <reference name='xmlExpNodeType' href='html/libxml-xmlregexp.html#xmlExpNodeType'/>
@@ -5346,7 +5350,11 @@
       <ref name='xmlExpGetStart'/>
       <ref name='xmlExpIsNillable'/>
       <ref name='xmlExpMaxToken'/>
+      <ref name='xmlExpNewAtom'/>
       <ref name='xmlExpNewCtxt'/>
+      <ref name='xmlExpNewOr'/>
+      <ref name='xmlExpNewRange'/>
+      <ref name='xmlExpNewSeq'/>
       <ref name='xmlExpNode'/>
       <ref name='xmlExpNodePtr'/>
       <ref name='xmlExpNodeType'/>
@@ -7280,6 +7288,10 @@
     </type>
     <type name='xmlExpNodePtr'>
       <ref name='xmlExpExpDerive'/>
+      <ref name='xmlExpNewAtom'/>
+      <ref name='xmlExpNewOr'/>
+      <ref name='xmlExpNewRange'/>
+      <ref name='xmlExpNewSeq'/>
       <ref name='xmlExpParse'/>
       <ref name='xmlExpStringDerive'/>
     </type>
@@ -7876,6 +7888,7 @@
       <ref name='xmlEncodeEntities'/>
       <ref name='xmlEncodeEntitiesReentrant'/>
       <ref name='xmlEncodeSpecialChars'/>
+      <ref name='xmlExpNewAtom'/>
       <ref name='xmlExpStringDerive'/>
       <ref name='xmlGetDocEntity'/>
       <ref name='xmlGetDtdAttrDesc'/>
@@ -9063,6 +9076,10 @@
       <ref name='xmlExpFreeCtxt'/>
       <ref name='xmlExpGetLanguage'/>
       <ref name='xmlExpGetStart'/>
+      <ref name='xmlExpNewAtom'/>
+      <ref name='xmlExpNewOr'/>
+      <ref name='xmlExpNewRange'/>
+      <ref name='xmlExpNewSeq'/>
       <ref name='xmlExpParse'/>
       <ref name='xmlExpStringDerive'/>
       <ref name='xmlExpSubsume'/>
@@ -9075,6 +9092,9 @@
       <ref name='xmlExpGetStart'/>
       <ref name='xmlExpIsNillable'/>
       <ref name='xmlExpMaxToken'/>
+      <ref name='xmlExpNewOr'/>
+      <ref name='xmlExpNewRange'/>
+      <ref name='xmlExpNewSeq'/>
       <ref name='xmlExpRef'/>
       <ref name='xmlExpStringDerive'/>
       <ref name='xmlExpSubsume'/>
@@ -13020,7 +13040,11 @@
       <ref name='xmlExpGetStart'/>
       <ref name='xmlExpIsNillable'/>
       <ref name='xmlExpMaxToken'/>
+      <ref name='xmlExpNewAtom'/>
       <ref name='xmlExpNewCtxt'/>
+      <ref name='xmlExpNewOr'/>
+      <ref name='xmlExpNewRange'/>
+      <ref name='xmlExpNewSeq'/>
       <ref name='xmlExpNode'/>
       <ref name='xmlExpNodePtr'/>
       <ref name='xmlExpNodeType'/>
@@ -16193,6 +16217,9 @@
           <ref name='xmlDocDumpFormatMemoryEnc'/>
           <ref name='xmlDocDumpMemoryEnc'/>
           <ref name='xmlDocFormatDump'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlHasNsProp'/>
           <ref name='xmlNanoHTTPContentLength'/>
           <ref name='xmlNodeDump'/>
@@ -18731,6 +18758,12 @@
         <word name='assure'>
           <ref name='xmlGetUTF8Char'/>
         </word>
+        <word name='atom'>
+          <ref name='xmlExpNewAtom'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
+        </word>
         <word name='atomic'>
           <ref name='xmlGcMemGet'/>
           <ref name='xmlGcMemSetup'/>
@@ -19018,6 +19051,9 @@
           <ref name='xmlXPathCompareValues'/>
           <ref name='xmlXPathIntersection'/>
         </word>
+        <word name='bound'>
+          <ref name='xmlExpNewRange'/>
+        </word>
         <word name='boundaries'>
           <ref name='_xmlParserCtxt'/>
           <ref name='xmlSearchNs'/>
@@ -19435,6 +19471,7 @@
           <ref name='xmlValidGetValidElements'/>
         </word>
         <word name='choice'>
+          <ref name='xmlExpNewOr'/>
           <ref name='xmlExpParse'/>
           <ref name='xmlParseElementChildrenContentDecl'/>
         </word>
@@ -19976,6 +20013,9 @@
           <ref name='isolat1ToUTF8'/>
           <ref name='xmlCharEncodingInputFunc'/>
           <ref name='xmlCharEncodingOutputFunc'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlGetUTF8Char'/>
           <ref name='xmlParserInputBufferRead'/>
           <ref name='xmlSchemaNewNOTATIONValue'/>
@@ -20294,6 +20334,11 @@
           <ref name='xmlXPathIsInf'/>
           <ref name='xmlXPathIsNaN'/>
         </word>
+        <word name='ctxt'>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
+        </word>
         <word name='ctxt-'>
           <ref name='docbFreeParserCtxt'/>
           <ref name='htmlFreeParserCtxt'/>
@@ -21541,6 +21586,9 @@
         </word>
         <word name='even'>
           <ref name='_xmlParserInput'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlNodeGetBase'/>
           <ref name='xmlParseBalancedChunkMemoryRecover'/>
           <ref name='xmlTextWriterFullEndElement'/>
@@ -23026,6 +23074,7 @@
         </word>
         <word name='infinite'>
           <ref name='xmlExpExpDerive'/>
+          <ref name='xmlExpNewRange'/>
           <ref name='xmlExpParse'/>
         </word>
         <word name='infinity'>
@@ -23459,6 +23508,9 @@
       </letter>
       <letter name='k'>
         <word name='keep'>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlParseURIRaw'/>
           <ref name='xmlParserInputGrow'/>
           <ref name='xmlSubstituteEntitiesDefault'/>
@@ -23596,6 +23648,8 @@
           <ref name='xmlXPathStringFunction'/>
         </word>
         <word name='left'>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlTextReaderGetRemainder'/>
         </word>
         <word name='legacy'>
@@ -23621,6 +23675,7 @@
         <word name='lenght'>
           <ref name='xmlExpGetLanguage'/>
           <ref name='xmlExpGetStart'/>
+          <ref name='xmlExpNewAtom'/>
           <ref name='xmlRelaxNGValidatePushCData'/>
           <ref name='xmlSplitQName3'/>
           <ref name='xmlValidatePushCData'/>
@@ -23938,6 +23993,9 @@
           <ref name='xmlOutputBufferWriteEscape'/>
           <ref name='xmlOutputBufferWriteString'/>
         </word>
+        <word name='lower'>
+          <ref name='xmlExpNewRange'/>
+        </word>
         <word name='lowercase'>
           <ref name='htmlTagLookup'/>
           <ref name='xmlIsRef'/>
@@ -24125,6 +24183,7 @@
           <ref name='xmlPatternMaxDepth'/>
         </word>
         <word name='means'>
+          <ref name='xmlExpNewRange'/>
           <ref name='xmlSetGenericErrorFunc'/>
           <ref name='xmlSetStructuredErrorFunc'/>
           <ref name='xmlStreamPush'/>
@@ -25022,6 +25081,9 @@
         <word name='operation'>
           <ref name='xmlBuildRelativeURI'/>
           <ref name='xmlCatalogSetDebug'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlTextReaderConstValue'/>
           <ref name='xmlXPathAddValues'/>
           <ref name='xmlXPathCompareValues'/>
@@ -26054,6 +26116,7 @@
           <ref name='xmlBufferAdd'/>
           <ref name='xmlBufferAddHead'/>
           <ref name='xmlCharInRange'/>
+          <ref name='xmlExpNewRange'/>
           <ref name='xmlTextReaderNormalization'/>
           <ref name='xmlXPathNodeSetItem'/>
           <ref name='xmlXPtrLocationSetAdd'/>
@@ -26435,6 +26498,9 @@
           <ref name='xmlClearNodeInfoSeq'/>
           <ref name='xmlClearParserCtxt'/>
           <ref name='xmlDecodeEntities'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlUnlockLibrary'/>
         </word>
         <word name='releases'>
@@ -26515,6 +26581,12 @@
         <word name='repeat'>
           <ref name='xmlXPathAxisFunc'/>
         </word>
+        <word name='repeated'>
+          <ref name='xmlExpNewRange'/>
+        </word>
+        <word name='repetition'>
+          <ref name='xmlExpNewRange'/>
+        </word>
         <word name='replace'>
           <ref name='XML_SCHEMAS_FACET_REPLACE'/>
           <ref name='XML_SCHEMAS_TYPE_WHITESPACE_REPLACE'/>
@@ -26793,6 +26865,8 @@
         <word name='right'>
           <ref name='xmlAutomataNewCounterTrans'/>
           <ref name='xmlCheckFilename'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlParseCharData'/>
           <ref name='xmlSetListDoc'/>
           <ref name='xmlSetTreeDoc'/>
@@ -27095,6 +27169,7 @@
           <ref name='xmlCharEncOutFunc'/>
           <ref name='xmlClearNodeInfoSeq'/>
           <ref name='xmlCurrentChar'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlExpParse'/>
           <ref name='xmlGetUTF8Char'/>
           <ref name='xmlInitNodeInfoSeq'/>
@@ -28256,6 +28331,8 @@
         <word name='them'>
           <ref name='xmlExpGetLanguage'/>
           <ref name='xmlExpGetStart'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlNanoFTPRead'/>
           <ref name='xmlNanoHTTPRead'/>
           <ref name='xmlParseAttValue'/>
@@ -28727,6 +28804,9 @@
         <word name='unless'>
           <ref name='htmlSAXParseDoc'/>
           <ref name='htmlSAXParseFile'/>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
           <ref name='xmlGetNoNsProp'/>
           <ref name='xmlGetNsProp'/>
           <ref name='xmlGetProp'/>
@@ -28846,6 +28926,7 @@
           <ref name='xlinkNodeDetectFunc'/>
         </word>
         <word name='upper'>
+          <ref name='xmlExpNewRange'/>
           <ref name='xmlIsRef'/>
         </word>
         <word name='uri'>
@@ -29641,6 +29722,16 @@
           <ref name='xmlCopyEnumeration'/>
           <ref name='xmlCreateEnumeration'/>
         </word>
+        <word name='xmlExpFree'>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
+        </word>
+        <word name='xmlExpRef'>
+          <ref name='xmlExpNewOr'/>
+          <ref name='xmlExpNewRange'/>
+          <ref name='xmlExpNewSeq'/>
+        </word>
         <word name='xmlExternalEntityLoader'>
           <ref name='xmlGetExternalEntityLoader'/>
         </word>