libxml2 r3804 - in trunk: . doc doc/devhelp doc/html include/libxml python win32



Author: veillard
Date: Thu Nov 27 15:26:28 2008
New Revision: 3804
URL: http://svn.gnome.org/viewvc/libxml2?rev=3804&view=rev

Log:
* include/libxml/tree.h tree.c python/generator.py: adds
  element traversal support
* valid.c: avoid a warning
* doc/*: regenerated
daniel


Modified:
   trunk/ChangeLog
   trunk/doc/APIchunk11.html
   trunk/doc/APIchunk12.html
   trunk/doc/APIchunk13.html
   trunk/doc/APIchunk16.html
   trunk/doc/APIchunk2.html
   trunk/doc/APIchunk22.html
   trunk/doc/APIchunk24.html
   trunk/doc/APIchunk25.html
   trunk/doc/APIchunk3.html
   trunk/doc/APIchunk9.html
   trunk/doc/APIconstructors.html
   trunk/doc/APIfiles.html
   trunk/doc/APIfunctions.html
   trunk/doc/APIsymbols.html
   trunk/doc/devhelp/libxml2-tree.html
   trunk/doc/devhelp/libxml2.devhelp
   trunk/doc/html/libxml-tree.html
   trunk/doc/libxml2-api.xml
   trunk/doc/libxml2-refs.xml
   trunk/elfgcchack.h
   trunk/include/libxml/tree.h
   trunk/python/generator.py
   trunk/python/libxml2class.txt
   trunk/testapi.c
   trunk/tree.c
   trunk/valid.c
   trunk/win32/libxml2.def.src

Modified: trunk/doc/APIchunk11.html
==============================================================================
--- trunk/doc/APIchunk11.html	(original)
+++ trunk/doc/APIchunk11.html	Thu Nov 27 15:26:28 2008
@@ -37,10 +37,15 @@
 <a href="APIchunk27.html">w-w</a>
 <a href="APIchunk28.html">x-x</a>
 <a href="APIchunk29.html">y-z</a>
-</h2><h2>Letter b:</h2><dl><dt>back</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+</h2><h2>Letter b:</h2><dl><dt>back</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
 <a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-relaxng.html#xmlRelaxNGDump">xmlRelaxNGDump</a><br />
 <a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br />
 </dd><dt>badly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />

Modified: trunk/doc/APIchunk12.html
==============================================================================
--- trunk/doc/APIchunk12.html	(original)
+++ trunk/doc/APIchunk12.html	Thu Nov 27 15:26:28 2008
@@ -302,7 +302,9 @@
 <a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br />
 </dd><dt>closes</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPClose">xmlNanoHTTPClose</a><br />
 <a href="html/libxml-nanohttp.html#xmlNanoHTTPSave">xmlNanoHTTPSave</a><br />
-</dd><dt>closest</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
+</dd><dt>closest</dt><dd><a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
+<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br />
 </dd><dt>closing</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br />
@@ -793,6 +795,7 @@
 <a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br />
 </dd><dt>count</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
 <a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
 <a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br />
 <a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br />
 <a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br />

Modified: trunk/doc/APIchunk13.html
==============================================================================
--- trunk/doc/APIchunk13.html	(original)
+++ trunk/doc/APIchunk13.html	Thu Nov 27 15:26:28 2008
@@ -408,7 +408,12 @@
 <a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br />
 <a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br />
 <a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br />
 </dd><dt>differentiate</dt><dd><a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
@@ -538,11 +543,16 @@
 <a href="html/libxml-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a><br />
 </dd><dt>don</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a><br />
 <a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
 <a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br />
 <a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br />
 <a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br />

Modified: trunk/doc/APIchunk16.html
==============================================================================
--- trunk/doc/APIchunk16.html	(original)
+++ trunk/doc/APIchunk16.html	Thu Nov 27 15:26:28 2008
@@ -201,15 +201,20 @@
 <a href="html/libxml-SAX.html#attribute">attribute</a><br />
 <a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br />
 <a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
 <a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br />
 <a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br />
 <a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
 <a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameDefault">xmlOutputBufferCreateFilenameDefault</a><br />
 <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
 <a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
 <a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameDefault">xmlParserInputBufferCreateFilenameDefault</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br />
 <a href="html/libxml-xmlIO.html#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a><br />
 <a href="html/libxml-xmlIO.html#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a><br />

Modified: trunk/doc/APIchunk2.html
==============================================================================
--- trunk/doc/APIchunk2.html	(original)
+++ trunk/doc/APIchunk2.html	Thu Nov 27 15:26:28 2008
@@ -62,34 +62,6 @@
 <a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br />
 <a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br />
 </dd><dt>DOCTYPE</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br />
-</dd><dt>DOM</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br />
-<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
-<a href="html/libxml-SAX.html#attribute">attribute</a><br />
-<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br />
-<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br />
-<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br />
-<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br />
-<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br />
-<a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br />
-<a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br />
-<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
-<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br />
-<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
-<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br />
-<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
-<a href="html/libxml-SAX2.html#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a><br />
-<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br />
-<a href="html/libxml-xpath.html#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a><br />
-<a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br />
 </dd><dt>DOM-wrapper</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapFreeCtxt">xmlDOMWrapFreeCtxt</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br />
 </dd><dt>DTDs</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br />
@@ -260,6 +232,8 @@
 <a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br />
 <a href="html/libxml-tree.html#_xmlElementContent">_xmlElementContent</a><br />
 <a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br />

Modified: trunk/doc/APIchunk22.html
==============================================================================
--- trunk/doc/APIchunk22.html	(original)
+++ trunk/doc/APIchunk22.html	Thu Nov 27 15:26:28 2008
@@ -344,6 +344,7 @@
 <a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
 <a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
 <a href="html/libxml-parser.html#xmlPedanticParserDefault">xmlPedanticParserDefault</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br />
 <a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br />
 <a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br />

Modified: trunk/doc/APIchunk24.html
==============================================================================
--- trunk/doc/APIchunk24.html	(original)
+++ trunk/doc/APIchunk24.html	Thu Nov 27 15:26:28 2008
@@ -315,6 +315,8 @@
 <a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br />
 <a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
 <a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br />
@@ -364,10 +366,15 @@
 <a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
 </dd><dt>since</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br />
 <a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br />
 </dd><dt>single</dt><dd><a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br />
 <a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
@@ -486,7 +493,12 @@
 </dd><dt>span</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
 <a href="html/libxml-parserInternals.html#xmlStringCurrentChar">xmlStringCurrentChar</a><br />
 </dd><dt>spec</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 </dd><dt>spec:</dt><dd><a href="html/libxml-parserInternals.html#IS_BASECHAR">IS_BASECHAR</a><br />
 <a href="html/libxml-parserInternals.html#IS_BLANK">IS_BLANK</a><br />
 <a href="html/libxml-parserInternals.html#IS_BYTE_CHAR">IS_BYTE_CHAR</a><br />

Modified: trunk/doc/APIchunk25.html
==============================================================================
--- trunk/doc/APIchunk25.html	(original)
+++ trunk/doc/APIchunk25.html	Thu Nov 27 15:26:28 2008
@@ -109,25 +109,6 @@
 <a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br />
 </dd><dt>text-node</dt><dd><a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
 </dd><dt>textDecl?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br />
-</dd><dt>than</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</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-tree.html#xmlNewNs">xmlNewNs</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br />
-<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
-<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
-<a href="html/libxml-xmlreader.html#xmlTextReaderIsNamespaceDecl">xmlTextReaderIsNamespaceDecl</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br />
 </dd><dt>their</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br />
 <a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
 <a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />
@@ -316,7 +297,12 @@
 <a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br />
 <a href="html/libxml-xmlerror.html#xmlParserWarning">xmlParserWarning</a><br />
 </dd><dt>transport</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br />
-</dd><dt>traversal</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
+</dd><dt>traversal</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
+<a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNextAttribute">xmlXPathNextAttribute</a><br />

Modified: trunk/doc/APIchunk3.html
==============================================================================
--- trunk/doc/APIchunk3.html	(original)
+++ trunk/doc/APIchunk3.html	Thu Nov 27 15:26:28 2008
@@ -72,7 +72,12 @@
 <a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br />
 <a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br />
 <a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
-</dd><dt>Finds</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
+</dd><dt>Finds</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 </dd><dt>First</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FIXUP_1">XML_SCHEMAS_TYPE_FIXUP_1</a><br />
 <a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
 </dd><dt>Fixed</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br />

Modified: trunk/doc/APIchunk9.html
==============================================================================
--- trunk/doc/APIchunk9.html	(original)
+++ trunk/doc/APIchunk9.html	Thu Nov 27 15:26:28 2008
@@ -71,7 +71,12 @@
 </dd><dt>VersionInfo?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br />
 </dd><dt>VersionNum</dt><dd><a href="html/libxml-parserInternals.html#xmlParseVersionInfo">xmlParseVersionInfo</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br />
-</dd></dl><h2>Letter W:</h2><dl><dt>W3C</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br />
+</dd></dl><h2>Letter W:</h2><dl><dt>W3C</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
+<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
 </dd><dt>WARNING:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />

Modified: trunk/doc/APIconstructors.html
==============================================================================
--- trunk/doc/APIconstructors.html	(original)
+++ trunk/doc/APIconstructors.html	Thu Nov 27 15:26:28 2008
@@ -89,7 +89,8 @@
 <a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br />
 <a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
-</p><h2>Type unsigned long:</h2><p><a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
+</p><h2>Type unsigned long:</h2><p><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
 </p><h2>Type void *:</h2><p><a href="html/libxml-catalog.html#xmlCatalogAddLocal">xmlCatalogAddLocal</a><br />
 <a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br />
@@ -363,7 +364,9 @@
 <a href="html/libxml-tree.html#xmlDocCopyNodeList">xmlDocCopyNodeList</a><br />
 <a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br />
 <a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
 <a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br />
 <a href="html/libxml-tree.html#xmlNewCharRef">xmlNewCharRef</a><br />
 <a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
@@ -383,6 +386,8 @@
 <a href="html/libxml-tree.html#xmlNewText">xmlNewText</a><br />
 <a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
 <a href="html/libxml-tree.html#xmlNewTextLen">xmlNewTextLen</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br />
 <a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br />
 <a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br />

Modified: trunk/doc/APIfiles.html
==============================================================================
--- trunk/doc/APIfiles.html	(original)
+++ trunk/doc/APIfiles.html	Thu Nov 27 15:26:28 2008
@@ -1382,6 +1382,7 @@
 <a href="html/libxml-tree.html#xmlBufferWriteChar">xmlBufferWriteChar</a><br />
 <a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br />
 <a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
 <a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br />
 <a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br />
 <a href="html/libxml-tree.html#xmlCopyDtd">xmlCopyDtd</a><br />
@@ -1429,6 +1430,7 @@
 <a href="html/libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a><br />
 <a href="html/libxml-tree.html#xmlEnumeration">xmlEnumeration</a><br />
 <a href="html/libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
 <a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br />
 <a href="html/libxml-tree.html#xmlFreeDtd">xmlFreeDtd</a><br />
 <a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
@@ -1454,6 +1456,7 @@
 <a href="html/libxml-tree.html#xmlIDPtr">xmlIDPtr</a><br />
 <a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
 <a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br />
 <a href="html/libxml-tree.html#xmlNewCharRef">xmlNewCharRef</a><br />
 <a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
@@ -1481,6 +1484,7 @@
 <a href="html/libxml-tree.html#xmlNewText">xmlNewText</a><br />
 <a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
 <a href="html/libxml-tree.html#xmlNewTextLen">xmlNewTextLen</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlNode">xmlNode</a><br />
 <a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
 <a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
@@ -1514,6 +1518,7 @@
 <a href="html/libxml-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a><br />
 <a href="html/libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a><br />
 <a href="html/libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
 <a href="html/libxml-tree.html#xmlRef">xmlRef</a><br />
 <a href="html/libxml-tree.html#xmlRefPtr">xmlRefPtr</a><br />

Modified: trunk/doc/APIfunctions.html
==============================================================================
--- trunk/doc/APIfunctions.html	(original)
+++ trunk/doc/APIfunctions.html	Thu Nov 27 15:26:28 2008
@@ -1437,6 +1437,7 @@
 <a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
 <a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br />
 <a href="html/libxml-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
 <a href="html/libxml-tree.html#xmlCopyProp">xmlCopyProp</a><br />
 <a href="html/libxml-tree.html#xmlCopyPropList">xmlCopyPropList</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
@@ -1451,6 +1452,7 @@
 <a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
 <a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
 <a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
 <a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
 <a href="html/libxml-tree.html#xmlFreeNodeList">xmlFreeNodeList</a><br />
 <a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br />
@@ -1465,6 +1467,7 @@
 <a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
 <a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br />
 <a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br />
 <a href="html/libxml-debugXML.html#xmlLsOneNode">xmlLsOneNode</a><br />
 <a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
@@ -1474,6 +1477,7 @@
 <a href="html/libxml-tree.html#xmlNewProp">xmlNewProp</a><br />
 <a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
 <a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
 <a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
 <a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
@@ -1494,6 +1498,7 @@
 <a href="html/libxml-tree.html#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a><br />
 <a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br />
 <a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
 <a href="html/libxml-globals.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a><br />
 <a href="html/libxml-relaxng.html#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a><br />

Modified: trunk/doc/APIsymbols.html
==============================================================================
--- trunk/doc/APIsymbols.html	(original)
+++ trunk/doc/APIsymbols.html	Thu Nov 27 15:26:28 2008
@@ -1820,6 +1820,7 @@
 <a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
 <a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
 <a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
 <a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br />
 <a href="html/libxml-encoding.html#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a><br />
 <a href="html/libxml-encoding.html#xmlCleanupEncodingAliases">xmlCleanupEncodingAliases</a><br />
@@ -1998,6 +1999,7 @@
 <a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br />
 <a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br />
 <a href="html/libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
 <a href="html/libxml-globals.html#xmlFree">xmlFree</a><br />
 <a href="html/libxml-valid.html#xmlFreeAttributeTable">xmlFreeAttributeTable</a><br />
 <a href="html/libxml-xmlautomata.html#xmlFreeAutomata">xmlFreeAutomata</a><br />
@@ -2172,6 +2174,7 @@
 <a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br />
 <a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
 <a href="html/libxml-globals.html#xmlKeepBlanksDefaultValue">xmlKeepBlanksDefaultValue</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
 <a href="html/libxml-globals.html#xmlLastError">xmlLastError</a><br />
 <a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
 <a href="html/libxml-globals.html#xmlLineNumbersDefaultValue">xmlLineNumbersDefaultValue</a><br />
@@ -2342,6 +2345,7 @@
 <a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br />
 <a href="html/libxml-valid.html#xmlNewValidCtxt">xmlNewValidCtxt</a><br />
 <a href="html/libxml-parserInternals.html#xmlNextChar">xmlNextChar</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
 <a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br />
 <a href="html/libxml-tree.html#xmlNode">xmlNode</a><br />
 <a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
@@ -2519,6 +2523,7 @@
 <a href="html/libxml-globals.html#xmlPedanticParserDefaultValue">xmlPedanticParserDefaultValue</a><br />
 <a href="html/libxml-parserInternals.html#xmlPopInput">xmlPopInput</a><br />
 <a href="html/libxml-xmlIO.html#xmlPopInputCallbacks">xmlPopInputCallbacks</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
 <a href="html/libxml-uri.html#xmlPrintURI">xmlPrintURI</a><br />
 <a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br />
 <a href="html/libxml-threads.html#xmlRMutex">xmlRMutex</a><br />

Modified: trunk/doc/devhelp/libxml2-tree.html
==============================================================================
--- trunk/doc/devhelp/libxml2-tree.html	(original)
+++ trunk/doc/devhelp/libxml2-tree.html	Thu Nov 27 15:26:28 2008
@@ -125,11 +125,12 @@
 int	<a href="#xmlBufferAddHead">xmlBufferAddHead</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/>					 int len);
 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewPI">xmlNewPI</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
 void	<a href="#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br/>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br/>					 int * doc_txt_len, <br/>					 const char * txt_encoding, <br/>					 int format);
-int	<a href="#xmlUnsetNsProp">xmlUnsetNsProp</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+unsigned long	<a href="#xmlChildElementCount">xmlChildElementCount</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
 void	<a href="#xmlElemDump">xmlElemDump</a>			(FILE * f, <br/>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
 int	<a href="#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br/>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/>					 const char * encoding, <br/>					 int format);
 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlGetIntSubset">xmlGetIntSubset</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
 int	<a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNextElementSibling">xmlNextElementSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
 void	<a href="#xmlBufferWriteChar">xmlBufferWriteChar</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/>					 const char * string);
 void	<a href="#xmlBufferFree">xmlBufferFree</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
 int	<a href="#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a>		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * resNode, <br/>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br/>					 int deep, <br/>					 int options);
@@ -159,6 +160,8 @@
 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlGetNodePath">xmlGetNodePath</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
 void	<a href="#xmlFreePropList">xmlFreePropList</a>			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
 void	<a href="#xmlNodeAddContent">xmlNodeAddContent</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
+int	<a href="#xmlUnsetNsProp">xmlUnsetNsProp</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlFirstElementChild">xmlFirstElementChild</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlAddNextSibling">xmlAddNextSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
 int	<a href="#xmlIsBlankNode">xmlIsBlankNode</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlNewGlobalNs">xmlNewGlobalNs</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
@@ -179,6 +182,7 @@
 int	<a href="#xmlTextConcat">xmlTextConcat</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/>					 int len);
 int	<a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
 int	<a href="#xmlBufferShrink">xmlBufferShrink</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/>					 unsigned int len);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlPreviousElementSibling">xmlPreviousElementSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
 void	<a href="#xmlNodeSetContentLen">xmlNodeSetContentLen</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/>					 int len);
 void	<a href="#xmlNodeAddContentLen">xmlNodeAddContentLen</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/>					 int len);
 void	<a href="#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a>	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
@@ -193,6 +197,7 @@
 long	<a href="#xmlGetLineNo">xmlGetLineNo</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBufferContent">xmlBufferContent</a>	(const <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
 int	<a href="#xmlRemoveProp">xmlRemoveProp</a>			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlLastElementChild">xmlLastElementChild</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNodeGetLang">xmlNodeGetLang</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
 int	<a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlGetNsProp">xmlGetNsProp</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
@@ -1003,6 +1008,10 @@
 </pre><p>Builds the QName @prefix:@ncname in @memory if there is enough space and prefix is not NULL nor empty, otherwise allocate a new string. If prefix is NULL or empty it returns ncname.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ncname</tt></i>:</span></td><td>the Name</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>preallocated memory</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>preallocated memory length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td></tr></tbody></table></div></div>
         <hr/>
+        <div class="refsect2" lang="en"><h3><a name="xmlChildElementCount"/>xmlChildElementCount ()</h3><pre class="programlisting">unsigned long	xmlChildElementCount	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+</pre><p>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the count of element child or 0 if not available</td></tr></tbody></table></div></div>
+        <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlCopyDoc"/>xmlCopyDoc ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCopyDoc		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/>					 int recursive)<br/>
 </pre><p>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>recursive</tt></i>:</span></td><td>if not zero do a recursive copy.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlDocPtr, or NULL in case of error.</td></tr></tbody></table></div></div>
@@ -1107,6 +1116,10 @@
 </pre><p>Dump an XML/HTML node, recursive behaviour, children are printed too.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE * for the output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr></tbody></table></div></div>
         <hr/>
+        <div class="refsect2" lang="en"><h3><a name="xmlFirstElementChild"/>xmlFirstElementChild ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlFirstElementChild	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+</pre><p>Finds the first child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the first element child or NULL if not available</td></tr></tbody></table></div></div>
+        <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlFreeDoc"/>xmlFreeDoc ()</h3><pre class="programlisting">void	xmlFreeDoc			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br/>
 </pre><p>Free up all the structures used by a document, tree included.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>pointer to the document</td></tr></tbody></table></div></div>
@@ -1199,6 +1212,10 @@
 </pre><p>Try to find if the document correspond to an XHTML DTD</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>systemID</tt></i>:</span></td><td>the system identifier</td></tr><tr><td><span class="term"><i><tt>publicID</tt></i>:</span></td><td>the public identifier</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true, 0 if not and -1 in case of error</td></tr></tbody></table></div></div>
         <hr/>
+        <div class="refsect2" lang="en"><h3><a name="xmlLastElementChild"/>xmlLastElementChild ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlLastElementChild	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+</pre><p>Finds the last child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last element child or NULL if not available</td></tr></tbody></table></div></div>
+        <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlNewCDataBlock"/>xmlNewCDataBlock ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewCDataBlock	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/>					 int len)<br/>
 </pre><p>Creation of a new node containing a CDATA block.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the CDATA block content content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the block</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
@@ -1307,6 +1324,10 @@
 </pre><p>Creation of a new text node with an extra parameter for the content's length</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the text len.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
         <hr/>
+        <div class="refsect2" lang="en"><h3><a name="xmlNextElementSibling"/>xmlNextElementSibling ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNextElementSibling	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+</pre><p>Finds the first closest next sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the next element sibling or NULL if not available</td></tr></tbody></table></div></div>
+        <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlNodeAddContent"/>xmlNodeAddContent ()</h3><pre class="programlisting">void	xmlNodeAddContent		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br/>
 </pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr></tbody></table></div></div>
@@ -1379,6 +1400,10 @@
 </pre><p>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the xml:space value ("0": default, 1: "preserve")</td></tr></tbody></table></div></div>
         <hr/>
+        <div class="refsect2" lang="en"><h3><a name="xmlPreviousElementSibling"/>xmlPreviousElementSibling ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlPreviousElementSibling	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+</pre><p>Finds the first closest previous sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous element sibling or NULL if not available</td></tr></tbody></table></div></div>
+        <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlReconciliateNs"/>xmlReconciliateNs ()</h3><pre class="programlisting">int	xmlReconciliateNs		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br/>
 </pre><p>This function checks that all the namespaces declared within the given tree are properly declared. This is needed for example after Copy or Cut and then paste operations. The subtree may still hold pointers to namespace declarations outside the subtree or invalid/masked. As much as possible the function try to reuse the existing namespaces found in the new environment. If not possible the new namespaces are redeclared on @tree at the top of the given subtree.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>tree</tt></i>:</span></td><td>a node defining the subtree to reconciliate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of namespace declarations created or -1 in case of error.</td></tr></tbody></table></div></div>

Modified: trunk/doc/devhelp/libxml2.devhelp
==============================================================================
--- trunk/doc/devhelp/libxml2.devhelp	(original)
+++ trunk/doc/devhelp/libxml2.devhelp	Thu Nov 27 15:26:28 2008
@@ -2134,6 +2134,7 @@
     <function name="xmlCheckLanguageID ()" link="libxml2-parserInternals.html#xmlCheckLanguageID"/>
     <function name="xmlCheckUTF8 ()" link="libxml2-xmlstring.html#xmlCheckUTF8"/>
     <function name="xmlCheckVersion ()" link="libxml2-xmlversion.html#xmlCheckVersion"/>
+    <function name="xmlChildElementCount ()" link="libxml2-tree.html#xmlChildElementCount"/>
     <function name="xmlCleanupCharEncodingHandlers ()" link="libxml2-encoding.html#xmlCleanupCharEncodingHandlers"/>
     <function name="xmlCleanupEncodingAliases ()" link="libxml2-encoding.html#xmlCleanupEncodingAliases"/>
     <function name="xmlCleanupGlobals ()" link="libxml2-globals.html#xmlCleanupGlobals"/>
@@ -2266,6 +2267,7 @@
     <function name="xmlFileOpen ()" link="libxml2-xmlIO.html#xmlFileOpen"/>
     <function name="xmlFileRead ()" link="libxml2-xmlIO.html#xmlFileRead"/>
     <function name="xmlFindCharEncodingHandler ()" link="libxml2-encoding.html#xmlFindCharEncodingHandler"/>
+    <function name="xmlFirstElementChild ()" link="libxml2-tree.html#xmlFirstElementChild"/>
     <function name="xmlFreeAttributeTable ()" link="libxml2-valid.html#xmlFreeAttributeTable"/>
     <function name="xmlFreeAutomata ()" link="libxml2-xmlautomata.html#xmlFreeAutomata"/>
     <function name="xmlFreeCatalog ()" link="libxml2-catalog.html#xmlFreeCatalog"/>
@@ -2395,6 +2397,7 @@
     <function name="xmlIsRef ()" link="libxml2-valid.html#xmlIsRef"/>
     <function name="xmlIsXHTML ()" link="libxml2-tree.html#xmlIsXHTML"/>
     <function name="xmlKeepBlanksDefault ()" link="libxml2-parser.html#xmlKeepBlanksDefault"/>
+    <function name="xmlLastElementChild ()" link="libxml2-tree.html#xmlLastElementChild"/>
     <function name="xmlLineNumbersDefault ()" link="libxml2-parser.html#xmlLineNumbersDefault"/>
     <function name="xmlLinkGetData ()" link="libxml2-list.html#xmlLinkGetData"/>
     <function name="xmlListAppend ()" link="libxml2-list.html#xmlListAppend"/>
@@ -2544,6 +2547,7 @@
     <function name="xmlNewTextWriterTree ()" link="libxml2-xmlwriter.html#xmlNewTextWriterTree"/>
     <function name="xmlNewValidCtxt ()" link="libxml2-valid.html#xmlNewValidCtxt"/>
     <function name="xmlNextChar ()" link="libxml2-parserInternals.html#xmlNextChar"/>
+    <function name="xmlNextElementSibling ()" link="libxml2-tree.html#xmlNextElementSibling"/>
     <function name="xmlNoNetExternalEntityLoader ()" link="libxml2-xmlIO.html#xmlNoNetExternalEntityLoader"/>
     <function name="xmlNodeAddContent ()" link="libxml2-tree.html#xmlNodeAddContent"/>
     <function name="xmlNodeAddContentLen ()" link="libxml2-tree.html#xmlNodeAddContentLen"/>
@@ -2676,6 +2680,7 @@
     <function name="xmlPedanticParserDefault ()" link="libxml2-parser.html#xmlPedanticParserDefault"/>
     <function name="xmlPopInput ()" link="libxml2-parserInternals.html#xmlPopInput"/>
     <function name="xmlPopInputCallbacks ()" link="libxml2-xmlIO.html#xmlPopInputCallbacks"/>
+    <function name="xmlPreviousElementSibling ()" link="libxml2-tree.html#xmlPreviousElementSibling"/>
     <function name="xmlPrintURI ()" link="libxml2-uri.html#xmlPrintURI"/>
     <function name="xmlPushInput ()" link="libxml2-parserInternals.html#xmlPushInput"/>
     <function name="xmlRMutexLock ()" link="libxml2-threads.html#xmlRMutexLock"/>

Modified: trunk/doc/html/libxml-tree.html
==============================================================================
--- trunk/doc/html/libxml-tree.html	(original)
+++ trunk/doc/html/libxml-tree.html	Thu Nov 27 15:26:28 2008
@@ -87,6 +87,7 @@
 <pre class="programlisting">void	<a href="#xmlBufferWriteChar">xmlBufferWriteChar</a>		(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br />					 const char * string)</pre>
 <pre class="programlisting">void	<a href="#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a>	(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * string)</pre>
 <pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBuildQName">xmlBuildQName</a>		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br />					 <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * memory, <br />					 int len)</pre>
+<pre class="programlisting">unsigned long	<a href="#xmlChildElementCount">xmlChildElementCount</a>	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCopyDoc">xmlCopyDoc</a>		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 int recursive)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlCopyDtd">xmlCopyDtd</a>		(<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlCopyNamespace">xmlCopyNamespace</a>	(<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> cur)</pre>
@@ -116,6 +117,7 @@
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlDocGetRootElement">xmlDocGetRootElement</a>	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlDocSetRootElement">xmlDocSetRootElement</a>	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> root)</pre>
 <pre class="programlisting">void	<a href="#xmlElemDump">xmlElemDump</a>			(FILE * f, <br />					 <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlFirstElementChild">xmlFirstElementChild</a>	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeDoc">xmlFreeDoc</a>			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeDtd">xmlFreeDtd</a>			(<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeNode">xmlFreeNode</a>			(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -139,6 +141,7 @@
 <pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlHasProp">xmlHasProp</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
 <pre class="programlisting">int	<a href="#xmlIsBlankNode">xmlIsBlankNode</a>			(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
 <pre class="programlisting">int	<a href="#xmlIsXHTML">xmlIsXHTML</a>			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * publicID)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlLastElementChild">xmlLastElementChild</a>	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewCDataBlock">xmlNewCDataBlock</a>	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewCharRef">xmlNewCharRef</a>		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewChild">xmlNewChild</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br />					 <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
@@ -166,6 +169,7 @@
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewText">xmlNewText</a>		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewTextChild">xmlNewTextChild</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br />					 <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewTextLen">xmlNewTextLen</a>		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNextElementSibling">xmlNextElementSibling</a>	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
 <pre class="programlisting">void	<a href="#xmlNodeAddContent">xmlNodeAddContent</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
 <pre class="programlisting">void	<a href="#xmlNodeAddContentLen">xmlNodeAddContentLen</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)</pre>
 <pre class="programlisting">int	<a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a>		(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -184,6 +188,7 @@
 <pre class="programlisting">void	<a href="#xmlNodeSetLang">xmlNodeSetLang</a>			(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * lang)</pre>
 <pre class="programlisting">void	<a href="#xmlNodeSetName">xmlNodeSetName</a>			(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
 <pre class="programlisting">void	<a href="#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 int val)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlPreviousElementSibling">xmlPreviousElementSibling</a>	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
 <pre class="programlisting">int	<a href="#xmlReconciliateNs">xmlReconciliateNs</a>		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree)</pre>
 <pre class="programlisting">int	<a href="#xmlRemoveProp">xmlRemoveProp</a>			(<a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlReplaceNode">xmlReplaceNode</a>		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> old, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -681,7 +686,9 @@
 </pre><p>routine which manage and grows an output buffer. This one writes a quoted or double quoted #xmlChar string, checking first if it holds quote or double-quotes internally</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>the string to add</td></tr></tbody></table></div><h3><a name="xmlBuildQName" id="xmlBuildQName"></a>Function: xmlBuildQName</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlBuildQName		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br />					 <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * memory, <br />					 int len)<br />
 </pre><p>Builds the QName @prefix:@ncname in @memory if there is enough space and prefix is not NULL nor empty, otherwise allocate a new string. If prefix is NULL or empty it returns ncname.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ncname</tt></i>:</span></td><td>the Name</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>preallocated memory</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>preallocated memory length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlCopyDoc" id="xmlCopyDoc"></a>Function: xmlCopyDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCopyDoc		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 int recursive)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ncname</tt></i>:</span></td><td>the Name</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>preallocated memory</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>preallocated memory length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlChildElementCount" id="xmlChildElementCount"></a>Function: xmlChildElementCount</h3><pre class="programlisting">unsigned long	xmlChildElementCount	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+</pre><p>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the count of element child or 0 if not available</td></tr></tbody></table></div><h3><a name="xmlCopyDoc" id="xmlCopyDoc"></a>Function: xmlCopyDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCopyDoc		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 int recursive)<br />
 </pre><p>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>recursive</tt></i>:</span></td><td>if not zero do a recursive copy.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlDocPtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyDtd" id="xmlCopyDtd"></a>Function: xmlCopyDtd</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlCopyDtd		(<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)<br />
 </pre><p>Do a copy of the dtd.</p>
@@ -736,7 +743,9 @@
 </pre><p>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>root</tt></i>:</span></td><td>the new document root element, if root is NULL no action is taken, to remove a node from a document use xmlUnlinkNode(root) instead.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the old root element if any was found, NULL if root was NULL</td></tr></tbody></table></div><h3><a name="xmlElemDump" id="xmlElemDump"></a>Function: xmlElemDump</h3><pre class="programlisting">void	xmlElemDump			(FILE * f, <br />					 <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
 </pre><p>Dump an XML/HTML node, recursive behaviour, children are printed too.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE * for the output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr></tbody></table></div><h3><a name="xmlFreeDoc" id="xmlFreeDoc"></a>Function: xmlFreeDoc</h3><pre class="programlisting">void	xmlFreeDoc			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE * for the output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr></tbody></table></div><h3><a name="xmlFirstElementChild" id="xmlFirstElementChild"></a>Function: xmlFirstElementChild</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlFirstElementChild	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+</pre><p>Finds the first child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the first element child or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlFreeDoc" id="xmlFreeDoc"></a>Function: xmlFreeDoc</h3><pre class="programlisting">void	xmlFreeDoc			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br />
 </pre><p>Free up all the structures used by a document, tree included.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>pointer to the document</td></tr></tbody></table></div><h3><a name="xmlFreeDtd" id="xmlFreeDtd"></a>Function: xmlFreeDtd</h3><pre class="programlisting">void	xmlFreeDtd			(<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur)<br />
 </pre><p>Free a DTD structure.</p>
@@ -782,7 +791,9 @@
 </pre><p>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div><h3><a name="xmlIsXHTML" id="xmlIsXHTML"></a>Function: xmlIsXHTML</h3><pre class="programlisting">int	xmlIsXHTML			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * publicID)<br />
 </pre><p>Try to find if the document correspond to an XHTML DTD</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>systemID</tt></i>:</span></td><td>the system identifier</td></tr><tr><td><span class="term"><i><tt>publicID</tt></i>:</span></td><td>the public identifier</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlNewCDataBlock" id="xmlNewCDataBlock"></a>Function: xmlNewCDataBlock</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewCDataBlock	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>systemID</tt></i>:</span></td><td>the system identifier</td></tr><tr><td><span class="term"><i><tt>publicID</tt></i>:</span></td><td>the public identifier</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlLastElementChild" id="xmlLastElementChild"></a>Function: xmlLastElementChild</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlLastElementChild	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+</pre><p>Finds the last child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last element child or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlNewCDataBlock" id="xmlNewCDataBlock"></a>Function: xmlNewCDataBlock</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewCDataBlock	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)<br />
 </pre><p>Creation of a new node containing a CDATA block.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the CDATA block content content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the block</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewCharRef" id="xmlNewCharRef"></a>Function: xmlNewCharRef</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewCharRef		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
 </pre><p>Creation of a new character <a href="libxml-SAX.html#reference">reference</a> node.</p>
@@ -836,7 +847,9 @@
 </pre><p>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If @ns is NULL, the newly created element inherits the namespace of @parent. If @content is non NULL, a child TEXT node will be created containing the string @content. NOTE: Use xmlNewChild() if @content will contain entities that need to be preserved. Use this function, xmlNewTextChild(), if you need to ensure that reserved XML chars that might appear in @content, such as the ampersand, greater-than or less-than signs, are automatically replaced by their XML escaped entity representations.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>a namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the child</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content of the child if any.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewTextLen" id="xmlNewTextLen"></a>Function: xmlNewTextLen</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewTextLen		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)<br />
 </pre><p>Creation of a new text node with an extra parameter for the content's length</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the text len.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNodeAddContent" id="xmlNodeAddContent"></a>Function: xmlNodeAddContent</h3><pre class="programlisting">void	xmlNodeAddContent		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the text len.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNextElementSibling" id="xmlNextElementSibling"></a>Function: xmlNextElementSibling</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNextElementSibling	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+</pre><p>Finds the first closest next sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the next element sibling or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlNodeAddContent" id="xmlNodeAddContent"></a>Function: xmlNodeAddContent</h3><pre class="programlisting">void	xmlNodeAddContent		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
 </pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr></tbody></table></div><h3><a name="xmlNodeAddContentLen" id="xmlNodeAddContentLen"></a>Function: xmlNodeAddContentLen</h3><pre class="programlisting">void	xmlNodeAddContentLen		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br />					 int len)<br />
 </pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
@@ -872,7 +885,9 @@
 </pre><p>Set (or reset) the name of a node.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the new tag name</td></tr></tbody></table></div><h3><a name="xmlNodeSetSpacePreserve" id="xmlNodeSetSpacePreserve"></a>Function: xmlNodeSetSpacePreserve</h3><pre class="programlisting">void	xmlNodeSetSpacePreserve		(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br />					 int val)<br />
 </pre><p>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the xml:space value ("0": default, 1: "preserve")</td></tr></tbody></table></div><h3><a name="xmlReconciliateNs" id="xmlReconciliateNs"></a>Function: xmlReconciliateNs</h3><pre class="programlisting">int	xmlReconciliateNs		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the xml:space value ("0": default, 1: "preserve")</td></tr></tbody></table></div><h3><a name="xmlPreviousElementSibling" id="xmlPreviousElementSibling"></a>Function: xmlPreviousElementSibling</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlPreviousElementSibling	(<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+</pre><p>Finds the first closest previous sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous element sibling or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlReconciliateNs" id="xmlReconciliateNs"></a>Function: xmlReconciliateNs</h3><pre class="programlisting">int	xmlReconciliateNs		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br />
 </pre><p>This function checks that all the namespaces declared within the given tree are properly declared. This is needed for example after Copy or Cut and then paste operations. The subtree may still hold pointers to namespace declarations outside the subtree or invalid/masked. As much as possible the function try to reuse the existing namespaces found in the new environment. If not possible the new namespaces are redeclared on @tree at the top of the given subtree.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>tree</tt></i>:</span></td><td>a node defining the subtree to reconciliate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of namespace declarations created or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlRemoveProp" id="xmlRemoveProp"></a>Function: xmlRemoveProp</h3><pre class="programlisting">int	xmlRemoveProp			(<a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br />
 </pre><p>Unlink and free one attribute, all the content is freed too Note this doesn't work for namespace definition attributes</p>

Modified: trunk/doc/libxml2-api.xml
==============================================================================
--- trunk/doc/libxml2-api.xml	(original)
+++ trunk/doc/libxml2-api.xml	Thu Nov 27 15:26:28 2008
@@ -1543,11 +1543,12 @@
      <exports symbol='xmlBufferAddHead' type='function'/>
      <exports symbol='xmlNewPI' type='function'/>
      <exports symbol='xmlDocDumpFormatMemoryEnc' type='function'/>
-     <exports symbol='xmlUnsetNsProp' type='function'/>
+     <exports symbol='xmlChildElementCount' type='function'/>
      <exports symbol='xmlElemDump' type='function'/>
      <exports symbol='xmlSaveFormatFileTo' type='function'/>
      <exports symbol='xmlGetIntSubset' type='function'/>
      <exports symbol='xmlNodeBufGetContent' type='function'/>
+     <exports symbol='xmlNextElementSibling' type='function'/>
      <exports symbol='xmlBufferWriteChar' type='function'/>
      <exports symbol='xmlBufferFree' type='function'/>
      <exports symbol='xmlDOMWrapCloneNode' type='function'/>
@@ -1577,6 +1578,8 @@
      <exports symbol='xmlGetNodePath' type='function'/>
      <exports symbol='xmlFreePropList' type='function'/>
      <exports symbol='xmlNodeAddContent' type='function'/>
+     <exports symbol='xmlUnsetNsProp' type='function'/>
+     <exports symbol='xmlFirstElementChild' type='function'/>
      <exports symbol='xmlAddNextSibling' type='function'/>
      <exports symbol='xmlIsBlankNode' type='function'/>
      <exports symbol='xmlNewGlobalNs' type='function'/>
@@ -1597,6 +1600,7 @@
      <exports symbol='xmlTextConcat' type='function'/>
      <exports symbol='xmlNodeGetSpacePreserve' type='function'/>
      <exports symbol='xmlBufferShrink' type='function'/>
+     <exports symbol='xmlPreviousElementSibling' type='function'/>
      <exports symbol='xmlNodeSetContentLen' type='function'/>
      <exports symbol='xmlNodeAddContentLen' type='function'/>
      <exports symbol='xmlBufferWriteQuotedString' type='function'/>
@@ -1611,6 +1615,7 @@
      <exports symbol='xmlGetLineNo' type='function'/>
      <exports symbol='xmlBufferContent' type='function'/>
      <exports symbol='xmlRemoveProp' type='function'/>
+     <exports symbol='xmlLastElementChild' type='function'/>
      <exports symbol='xmlNodeGetLang' type='function'/>
      <exports symbol='xmlGetDocCompressMode' type='function'/>
      <exports symbol='xmlGetNsProp' type='function'/>
@@ -8824,6 +8829,12 @@
       <return type='void'/>
       <arg name='version' type='int' info='the include version number'/>
     </function>
+    <function name='xmlChildElementCount' file='tree' module='tree'>
+      <cond>defined(LIBXML_TREE_ENABLED)</cond>
+      <info>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+      <return type='unsigned long' info='the count of element child or 0 if not available'/>
+      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+    </function>
     <function name='xmlCleanupCharEncodingHandlers' file='encoding' module='encoding'>
       <info>Cleanup the memory allocated for the char encoding support, it unregisters all the encoding handlers and the aliases.</info>
       <return type='void'/>
@@ -9718,6 +9729,12 @@
       <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if not found'/>
       <arg name='name' type='const char *' info='a string describing the char encoding.'/>
     </function>
+    <function name='xmlFirstElementChild' file='tree' module='tree'>
+      <cond>defined(LIBXML_TREE_ENABLED)</cond>
+      <info>Finds the first child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+      <return type='xmlNodePtr' info='the first element child or NULL if not available'/>
+      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+    </function>
     <function name='xmlFreeAttributeTable' file='valid' module='valid'>
       <info>Deallocate the memory used by an entities hash table.</info>
       <return type='void'/>
@@ -10550,6 +10567,12 @@
       <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
       <arg name='val' type='int' info='int 0 or 1'/>
     </function>
+    <function name='xmlLastElementChild' file='tree' module='tree'>
+      <cond>defined(LIBXML_TREE_ENABLED)</cond>
+      <info>Finds the last child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+      <return type='xmlNodePtr' info='the last element child or NULL if not available'/>
+      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+    </function>
     <function name='xmlLineNumbersDefault' file='parser' module='parserInternals'>
       <info>Set and return the previous value for enabling line numbers in elements contents. This may break on old application and is turned off by default.</info>
       <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
@@ -11515,6 +11538,12 @@
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
     </function>
+    <function name='xmlNextElementSibling' file='tree' module='tree'>
+      <cond>defined(LIBXML_TREE_ENABLED)</cond>
+      <info>Finds the first closest next sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+      <return type='xmlNodePtr' info='the next element sibling or NULL if not available'/>
+      <arg name='node' type='xmlNodePtr' info='the current node'/>
+    </function>
     <function name='xmlNoNetExternalEntityLoader' file='xmlIO' module='xmlIO'>
       <info>A specific entity loader disabling network accesses, though still allowing local catalog accesses for resolution.</info>
       <return type='xmlParserInputPtr' info='a new allocated xmlParserInputPtr, or NULL.'/>
@@ -12375,6 +12404,12 @@
       <info>Clear the top input callback from the input stack. this includes the compiled-in I/O.</info>
       <return type='int' info='the number of input callback registered or -1 in case of error.'/>
     </function>
+    <function name='xmlPreviousElementSibling' file='tree' module='tree'>
+      <cond>defined(LIBXML_TREE_ENABLED)</cond>
+      <info>Finds the first closest previous sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+      <return type='xmlNodePtr' info='the previous element sibling or NULL if not available'/>
+      <arg name='node' type='xmlNodePtr' info='the current node'/>
+    </function>
     <function name='xmlPrintURI' file='uri' module='uri'>
       <info>Prints the URI in the stream @stream.</info>
       <return type='void'/>

Modified: trunk/doc/libxml2-refs.xml
==============================================================================
--- trunk/doc/libxml2-refs.xml	(original)
+++ trunk/doc/libxml2-refs.xml	Thu Nov 27 15:26:28 2008
@@ -1814,6 +1814,7 @@
     <reference name='xmlCheckLanguageID' href='html/libxml-parserInternals.html#xmlCheckLanguageID'/>
     <reference name='xmlCheckUTF8' href='html/libxml-xmlstring.html#xmlCheckUTF8'/>
     <reference name='xmlCheckVersion' href='html/libxml-xmlversion.html#xmlCheckVersion'/>
+    <reference name='xmlChildElementCount' href='html/libxml-tree.html#xmlChildElementCount'/>
     <reference name='xmlChildrenNode' href='html/libxml-tree.html#xmlChildrenNode'/>
     <reference name='xmlCleanupCharEncodingHandlers' href='html/libxml-encoding.html#xmlCleanupCharEncodingHandlers'/>
     <reference name='xmlCleanupEncodingAliases' href='html/libxml-encoding.html#xmlCleanupEncodingAliases'/>
@@ -1992,6 +1993,7 @@
     <reference name='xmlFileOpen' href='html/libxml-xmlIO.html#xmlFileOpen'/>
     <reference name='xmlFileRead' href='html/libxml-xmlIO.html#xmlFileRead'/>
     <reference name='xmlFindCharEncodingHandler' href='html/libxml-encoding.html#xmlFindCharEncodingHandler'/>
+    <reference name='xmlFirstElementChild' href='html/libxml-tree.html#xmlFirstElementChild'/>
     <reference name='xmlFree' href='html/libxml-globals.html#xmlFree'/>
     <reference name='xmlFreeAttributeTable' href='html/libxml-valid.html#xmlFreeAttributeTable'/>
     <reference name='xmlFreeAutomata' href='html/libxml-xmlautomata.html#xmlFreeAutomata'/>
@@ -2166,6 +2168,7 @@
     <reference name='xmlIsXHTML' href='html/libxml-tree.html#xmlIsXHTML'/>
     <reference name='xmlKeepBlanksDefault' href='html/libxml-parser.html#xmlKeepBlanksDefault'/>
     <reference name='xmlKeepBlanksDefaultValue' href='html/libxml-globals.html#xmlKeepBlanksDefaultValue'/>
+    <reference name='xmlLastElementChild' href='html/libxml-tree.html#xmlLastElementChild'/>
     <reference name='xmlLastError' href='html/libxml-globals.html#xmlLastError'/>
     <reference name='xmlLineNumbersDefault' href='html/libxml-parser.html#xmlLineNumbersDefault'/>
     <reference name='xmlLineNumbersDefaultValue' href='html/libxml-globals.html#xmlLineNumbersDefaultValue'/>
@@ -2336,6 +2339,7 @@
     <reference name='xmlNewTextWriterTree' href='html/libxml-xmlwriter.html#xmlNewTextWriterTree'/>
     <reference name='xmlNewValidCtxt' href='html/libxml-valid.html#xmlNewValidCtxt'/>
     <reference name='xmlNextChar' href='html/libxml-parserInternals.html#xmlNextChar'/>
+    <reference name='xmlNextElementSibling' href='html/libxml-tree.html#xmlNextElementSibling'/>
     <reference name='xmlNoNetExternalEntityLoader' href='html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader'/>
     <reference name='xmlNode' href='html/libxml-tree.html#xmlNode'/>
     <reference name='xmlNodeAddContent' href='html/libxml-tree.html#xmlNodeAddContent'/>
@@ -2513,6 +2517,7 @@
     <reference name='xmlPedanticParserDefaultValue' href='html/libxml-globals.html#xmlPedanticParserDefaultValue'/>
     <reference name='xmlPopInput' href='html/libxml-parserInternals.html#xmlPopInput'/>
     <reference name='xmlPopInputCallbacks' href='html/libxml-xmlIO.html#xmlPopInputCallbacks'/>
+    <reference name='xmlPreviousElementSibling' href='html/libxml-tree.html#xmlPreviousElementSibling'/>
     <reference name='xmlPrintURI' href='html/libxml-uri.html#xmlPrintURI'/>
     <reference name='xmlPushInput' href='html/libxml-parserInternals.html#xmlPushInput'/>
     <reference name='xmlRMutex' href='html/libxml-threads.html#xmlRMutex'/>
@@ -5390,6 +5395,7 @@
       <ref name='xmlCheckLanguageID'/>
       <ref name='xmlCheckUTF8'/>
       <ref name='xmlCheckVersion'/>
+      <ref name='xmlChildElementCount'/>
       <ref name='xmlChildrenNode'/>
       <ref name='xmlCleanupCharEncodingHandlers'/>
       <ref name='xmlCleanupEncodingAliases'/>
@@ -5568,6 +5574,7 @@
       <ref name='xmlFileOpen'/>
       <ref name='xmlFileRead'/>
       <ref name='xmlFindCharEncodingHandler'/>
+      <ref name='xmlFirstElementChild'/>
       <ref name='xmlFree'/>
       <ref name='xmlFreeAttributeTable'/>
       <ref name='xmlFreeAutomata'/>
@@ -5742,6 +5749,7 @@
       <ref name='xmlIsXHTML'/>
       <ref name='xmlKeepBlanksDefault'/>
       <ref name='xmlKeepBlanksDefaultValue'/>
+      <ref name='xmlLastElementChild'/>
       <ref name='xmlLastError'/>
       <ref name='xmlLineNumbersDefault'/>
       <ref name='xmlLineNumbersDefaultValue'/>
@@ -5912,6 +5920,7 @@
       <ref name='xmlNewTextWriterTree'/>
       <ref name='xmlNewValidCtxt'/>
       <ref name='xmlNextChar'/>
+      <ref name='xmlNextElementSibling'/>
       <ref name='xmlNoNetExternalEntityLoader'/>
       <ref name='xmlNode'/>
       <ref name='xmlNodeAddContent'/>
@@ -6089,6 +6098,7 @@
       <ref name='xmlPedanticParserDefaultValue'/>
       <ref name='xmlPopInput'/>
       <ref name='xmlPopInputCallbacks'/>
+      <ref name='xmlPreviousElementSibling'/>
       <ref name='xmlPrintURI'/>
       <ref name='xmlPushInput'/>
       <ref name='xmlRMutex'/>
@@ -7200,6 +7210,7 @@
       <ref name='xmlXPathOrderDocElems'/>
     </type>
     <type name='unsigned long'>
+      <ref name='xmlChildElementCount'/>
       <ref name='xmlParserFindNodeInfoIndex'/>
       <ref name='xmlSchemaGetFacetValueAsULong'/>
     </type>
@@ -7558,7 +7569,9 @@
       <ref name='xmlDocCopyNodeList'/>
       <ref name='xmlDocGetRootElement'/>
       <ref name='xmlDocSetRootElement'/>
+      <ref name='xmlFirstElementChild'/>
       <ref name='xmlGetLastChild'/>
+      <ref name='xmlLastElementChild'/>
       <ref name='xmlNewCDataBlock'/>
       <ref name='xmlNewCharRef'/>
       <ref name='xmlNewChild'/>
@@ -7578,6 +7591,8 @@
       <ref name='xmlNewText'/>
       <ref name='xmlNewTextChild'/>
       <ref name='xmlNewTextLen'/>
+      <ref name='xmlNextElementSibling'/>
+      <ref name='xmlPreviousElementSibling'/>
       <ref name='xmlReplaceNode'/>
       <ref name='xmlStringGetNodeList'/>
       <ref name='xmlStringLenGetNodeList'/>
@@ -9527,6 +9542,7 @@
       <ref name='xmlAddPrevSibling'/>
       <ref name='xmlAddSibling'/>
       <ref name='xmlC14NIsVisibleCallback'/>
+      <ref name='xmlChildElementCount'/>
       <ref name='xmlCopyProp'/>
       <ref name='xmlCopyPropList'/>
       <ref name='xmlDOMWrapAcquireNsFunction'/>
@@ -9541,6 +9557,7 @@
       <ref name='xmlDocSetRootElement'/>
       <ref name='xmlElemDump'/>
       <ref name='xmlEntityReferenceFunc'/>
+      <ref name='xmlFirstElementChild'/>
       <ref name='xmlFreeNode'/>
       <ref name='xmlFreeNodeList'/>
       <ref name='xmlGetLastChild'/>
@@ -9555,6 +9572,7 @@
       <ref name='xmlIsBlankNode'/>
       <ref name='xmlIsID'/>
       <ref name='xmlIsRef'/>
+      <ref name='xmlLastElementChild'/>
       <ref name='xmlLsCountNode'/>
       <ref name='xmlLsOneNode'/>
       <ref name='xmlNewChild'/>
@@ -9564,6 +9582,7 @@
       <ref name='xmlNewProp'/>
       <ref name='xmlNewTextChild'/>
       <ref name='xmlNewTextWriterTree'/>
+      <ref name='xmlNextElementSibling'/>
       <ref name='xmlNodeAddContent'/>
       <ref name='xmlNodeAddContentLen'/>
       <ref name='xmlNodeBufGetContent'/>
@@ -9584,6 +9603,7 @@
       <ref name='xmlNodeSetSpacePreserve'/>
       <ref name='xmlParseInNodeContext'/>
       <ref name='xmlPatternMatch'/>
+      <ref name='xmlPreviousElementSibling'/>
       <ref name='xmlReconciliateNs'/>
       <ref name='xmlRegisterNodeFunc'/>
       <ref name='xmlRelaxNGValidateFullElement'/>
@@ -11979,6 +11999,7 @@
       <ref name='xmlBufferWriteChar'/>
       <ref name='xmlBufferWriteQuotedString'/>
       <ref name='xmlBuildQName'/>
+      <ref name='xmlChildElementCount'/>
       <ref name='xmlChildrenNode'/>
       <ref name='xmlCopyDoc'/>
       <ref name='xmlCopyDtd'/>
@@ -12026,6 +12047,7 @@
       <ref name='xmlEntityPtr'/>
       <ref name='xmlEnumeration'/>
       <ref name='xmlEnumerationPtr'/>
+      <ref name='xmlFirstElementChild'/>
       <ref name='xmlFreeDoc'/>
       <ref name='xmlFreeDtd'/>
       <ref name='xmlFreeNode'/>
@@ -12051,6 +12073,7 @@
       <ref name='xmlIDPtr'/>
       <ref name='xmlIsBlankNode'/>
       <ref name='xmlIsXHTML'/>
+      <ref name='xmlLastElementChild'/>
       <ref name='xmlNewCDataBlock'/>
       <ref name='xmlNewCharRef'/>
       <ref name='xmlNewChild'/>
@@ -12078,6 +12101,7 @@
       <ref name='xmlNewText'/>
       <ref name='xmlNewTextChild'/>
       <ref name='xmlNewTextLen'/>
+      <ref name='xmlNextElementSibling'/>
       <ref name='xmlNode'/>
       <ref name='xmlNodeAddContent'/>
       <ref name='xmlNodeAddContentLen'/>
@@ -12111,6 +12135,7 @@
       <ref name='xmlParserInputBuffer'/>
       <ref name='xmlParserInputBufferPtr'/>
       <ref name='xmlParserInputPtr'/>
+      <ref name='xmlPreviousElementSibling'/>
       <ref name='xmlReconciliateNs'/>
       <ref name='xmlRef'/>
       <ref name='xmlRefPtr'/>
@@ -15075,36 +15100,6 @@
         <word name='DOCTYPE'>
           <ref name='xmlParseDocTypeDecl'/>
         </word>
-        <word name='DOM'>
-          <ref name='LIBXML_TREE_ENABLED'/>
-          <ref name='_xmlParserCtxt'/>
-          <ref name='attribute'/>
-          <ref name='attributeSAXFunc'/>
-          <ref name='docbSAXParseDoc'/>
-          <ref name='docbSAXParseFile'/>
-          <ref name='htmlSAXParseDoc'/>
-          <ref name='htmlSAXParseFile'/>
-          <ref name='ignorableWhitespace'/>
-          <ref name='ignorableWhitespaceSAXFunc'/>
-          <ref name='resolveEntity'/>
-          <ref name='resolveEntitySAXFunc'/>
-          <ref name='xmlDOMWrapAcquireNsFunction'/>
-          <ref name='xmlDOMWrapReconcileNamespaces'/>
-          <ref name='xmlDOMWrapRemoveNode'/>
-          <ref name='xmlDocDumpFormatMemoryEnc'/>
-          <ref name='xmlDocDumpMemoryEnc'/>
-          <ref name='xmlKeepBlanksDefault'/>
-          <ref name='xmlSAX2IgnorableWhitespace'/>
-          <ref name='xmlSAX2ResolveEntity'/>
-          <ref name='xmlSAXParseDoc'/>
-          <ref name='xmlSAXParseEntity'/>
-          <ref name='xmlSAXParseFile'/>
-          <ref name='xmlSAXParseFileWithData'/>
-          <ref name='xmlSAXParseMemory'/>
-          <ref name='xmlSAXParseMemoryWithData'/>
-          <ref name='xmlXPathNodeSetGetLength'/>
-          <ref name='xmlXPathNodeSetItem'/>
-        </word>
         <word name='DOM-wrapper'>
           <ref name='xmlDOMWrapFreeCtxt'/>
           <ref name='xmlDOMWrapNewCtxt'/>
@@ -15368,6 +15363,8 @@
           <ref name='_xmlElement'/>
           <ref name='_xmlElementContent'/>
           <ref name='htmlNodeStatus'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
           <ref name='xmlParseAttributeType'/>
           <ref name='xmlParseDocTypeDecl'/>
           <ref name='xmlParseElement'/>
@@ -15659,7 +15656,12 @@
           <ref name='xmlParserFindNodeInfoIndex'/>
         </word>
         <word name='Finds'>
+          <ref name='xmlChildElementCount'/>
           <ref name='xmlExpIsNillable'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
+          <ref name='xmlNextElementSibling'/>
+          <ref name='xmlPreviousElementSibling'/>
         </word>
         <word name='First'>
           <ref name='XML_SCHEMAS_TYPE_FIXUP_1'/>
@@ -18130,6 +18132,11 @@
       </letter>
       <letter name='W'>
         <word name='W3C'>
+          <ref name='xmlChildElementCount'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
+          <ref name='xmlNextElementSibling'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlTextReaderSchemaValidate'/>
           <ref name='xmlTextReaderSchemaValidateCtxt'/>
         </word>
@@ -19308,10 +19315,15 @@
     <chunk name='chunk11'>
       <letter name='b'>
         <word name='back'>
+          <ref name='xmlChildElementCount'/>
           <ref name='xmlEntityReferenceFunc'/>
+          <ref name='xmlFirstElementChild'/>
           <ref name='xmlKeepBlanksDefault'/>
+          <ref name='xmlLastElementChild'/>
           <ref name='xmlNanoFTPGet'/>
           <ref name='xmlNanoFTPList'/>
+          <ref name='xmlNextElementSibling'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlRelaxNGDump'/>
           <ref name='xmlSetEntityReferenceFunc'/>
         </word>
@@ -20059,6 +20071,8 @@
           <ref name='xmlNanoHTTPSave'/>
         </word>
         <word name='closest'>
+          <ref name='xmlNextElementSibling'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlXPathCeilingFunction'/>
           <ref name='xmlXPathFloorFunction'/>
           <ref name='xmlXPathRoundFunction'/>
@@ -20776,6 +20790,7 @@
         <word name='count'>
           <ref name='_xmlEntity'/>
           <ref name='ftpListCallback'/>
+          <ref name='xmlChildElementCount'/>
           <ref name='xmlExpRef'/>
           <ref name='xmlLsCountNode'/>
           <ref name='xmlSaveDoc'/>
@@ -21396,7 +21411,12 @@
           <ref name='xmlACatalogAdd'/>
           <ref name='xmlBuildQName'/>
           <ref name='xmlCatalogAdd'/>
+          <ref name='xmlChildElementCount'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
+          <ref name='xmlNextElementSibling'/>
           <ref name='xmlNodeGetBase'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlStrEqual'/>
           <ref name='xmlStrQEqual'/>
         </word>
@@ -21594,11 +21614,16 @@
         <word name='don'>
           <ref name='XML_SCHEMAS_ANY_LAX'/>
           <ref name='xlinkIsLink'/>
+          <ref name='xmlChildElementCount'/>
           <ref name='xmlCreatePushParserCtxt'/>
           <ref name='xmlDOMWrapCloneNode'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
           <ref name='xmlNewDocNode'/>
           <ref name='xmlNewDocNodeEatName'/>
+          <ref name='xmlNextElementSibling'/>
           <ref name='xmlParseStartTag'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlRegExecErrInfo'/>
           <ref name='xmlRegExecNextValues'/>
           <ref name='xmlSearchNs'/>
@@ -23130,15 +23155,20 @@
           <ref name='attribute'/>
           <ref name='attributeSAXFunc'/>
           <ref name='htmlHandleOmittedElem'/>
+          <ref name='xmlChildElementCount'/>
+          <ref name='xmlFirstElementChild'/>
           <ref name='xmlHandleEntity'/>
+          <ref name='xmlLastElementChild'/>
           <ref name='xmlNamespaceParseNCName'/>
           <ref name='xmlNamespaceParseNSDef'/>
           <ref name='xmlNamespaceParseQName'/>
+          <ref name='xmlNextElementSibling'/>
           <ref name='xmlNodeListGetRawString'/>
           <ref name='xmlOutputBufferCreateFilenameDefault'/>
           <ref name='xmlParserHandlePEReference'/>
           <ref name='xmlParserHandleReference'/>
           <ref name='xmlParserInputBufferCreateFilenameDefault'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlRegNewExecCtxt'/>
           <ref name='xmlRegisterInputCallbacks'/>
           <ref name='xmlRegisterOutputCallbacks'/>
@@ -26371,6 +26401,7 @@
           <ref name='xmlKeepBlanksDefault'/>
           <ref name='xmlLineNumbersDefault'/>
           <ref name='xmlPedanticParserDefault'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlPushInput'/>
           <ref name='xmlSAXDefaultVersion'/>
           <ref name='xmlSubstituteEntitiesDefault'/>
@@ -27993,6 +28024,8 @@
           <ref name='_xmlNode'/>
           <ref name='xmlAddNextSibling'/>
           <ref name='xmlAddPrevSibling'/>
+          <ref name='xmlNextElementSibling'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlSchemaValueAppend'/>
           <ref name='xmlSchemaValueGetNext'/>
           <ref name='xmlXPathNextPrecedingSibling'/>
@@ -28062,10 +28095,15 @@
         <word name='since'>
           <ref name='XML_SCHEMAS_TYPE_VARIETY_ABSENT'/>
           <ref name='xmlBuildRelativeURI'/>
+          <ref name='xmlChildElementCount'/>
           <ref name='xmlDOMWrapAdoptNode'/>
           <ref name='xmlDOMWrapCloneNode'/>
           <ref name='xmlDOMWrapReconcileNamespaces'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
+          <ref name='xmlNextElementSibling'/>
           <ref name='xmlParseExternalID'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlRelaxNGNewDocParserCtxt'/>
         </word>
         <word name='single'>
@@ -28232,7 +28270,12 @@
         </word>
         <word name='spec'>
           <ref name='xmlCatalogSetDefaultPrefer'/>
+          <ref name='xmlChildElementCount'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
+          <ref name='xmlNextElementSibling'/>
           <ref name='xmlParseComment'/>
+          <ref name='xmlPreviousElementSibling'/>
         </word>
         <word name='spec:'>
           <ref name='IS_BASECHAR'/>
@@ -29013,27 +29056,6 @@
         <word name='textDecl?'>
           <ref name='xmlParseExternalSubset'/>
         </word>
-        <word name='than'>
-          <ref name='xmlCheckUTF8'/>
-          <ref name='xmlExpExpDerive'/>
-          <ref name='xmlExpGetLanguage'/>
-          <ref name='xmlExpGetStart'/>
-          <ref name='xmlNewNs'/>
-          <ref name='xmlParseAttribute'/>
-          <ref name='xmlParseAttributeType'/>
-          <ref name='xmlParseElementDecl'/>
-          <ref name='xmlParseElementMixedContentDecl'/>
-          <ref name='xmlParseSDDecl'/>
-          <ref name='xmlParseStartTag'/>
-          <ref name='xmlSetGenericErrorFunc'/>
-          <ref name='xmlStrEqual'/>
-          <ref name='xmlTextReaderIsNamespaceDecl'/>
-          <ref name='xmlXPathCeilingFunction'/>
-          <ref name='xmlXPathCompareValues'/>
-          <ref name='xmlXPathFloorFunction'/>
-          <ref name='xmlXPathSubstringFunction'/>
-          <ref name='xmlXPathTranslateFunction'/>
-        </word>
         <word name='their'>
           <ref name='xmlCharEncOutFunc'/>
           <ref name='xmlEncodeEntities'/>
@@ -29297,6 +29319,11 @@
           <ref name='xmlNanoFTPClose'/>
         </word>
         <word name='traversal'>
+          <ref name='xmlChildElementCount'/>
+          <ref name='xmlFirstElementChild'/>
+          <ref name='xmlLastElementChild'/>
+          <ref name='xmlNextElementSibling'/>
+          <ref name='xmlPreviousElementSibling'/>
           <ref name='xmlXPathAxisFunc'/>
           <ref name='xmlXPathNextAncestor'/>
           <ref name='xmlXPathNextAncestorOrSelf'/>

Modified: trunk/elfgcchack.h
==============================================================================
--- trunk/elfgcchack.h	(original)
+++ trunk/elfgcchack.h	Thu Nov 27 15:26:28 2008
@@ -1991,6 +1991,18 @@
 #endif
 #endif
 
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlChildElementCount
+extern __typeof (xmlChildElementCount) xmlChildElementCount __attribute((alias("xmlChildElementCount__internal_alias")));
+#else
+#ifndef xmlChildElementCount
+extern __typeof (xmlChildElementCount) xmlChildElementCount__internal_alias __attribute((visibility("hidden")));
+#define xmlChildElementCount xmlChildElementCount__internal_alias
+#endif
+#endif
+#endif
+
 #ifdef bottom_encoding
 #undef xmlCleanupCharEncodingHandlers
 extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers __attribute((alias("xmlCleanupCharEncodingHandlers__internal_alias")));
@@ -3419,6 +3431,18 @@
 #endif
 #endif
 
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlFirstElementChild
+extern __typeof (xmlFirstElementChild) xmlFirstElementChild __attribute((alias("xmlFirstElementChild__internal_alias")));
+#else
+#ifndef xmlFirstElementChild
+extern __typeof (xmlFirstElementChild) xmlFirstElementChild__internal_alias __attribute((visibility("hidden")));
+#define xmlFirstElementChild xmlFirstElementChild__internal_alias
+#endif
+#endif
+#endif
+
 #ifdef bottom_valid
 #undef xmlFreeAttributeTable
 extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable __attribute((alias("xmlFreeAttributeTable__internal_alias")));
@@ -4759,6 +4783,18 @@
 #endif
 #endif
 
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlLastElementChild
+extern __typeof (xmlLastElementChild) xmlLastElementChild __attribute((alias("xmlLastElementChild__internal_alias")));
+#else
+#ifndef xmlLastElementChild
+extern __typeof (xmlLastElementChild) xmlLastElementChild__internal_alias __attribute((visibility("hidden")));
+#define xmlLastElementChild xmlLastElementChild__internal_alias
+#endif
+#endif
+#endif
+
 #ifdef bottom_parserInternals
 #undef xmlLineNumbersDefault
 extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault __attribute((alias("xmlLineNumbersDefault__internal_alias")));
@@ -5162,6 +5198,16 @@
 #endif
 
 #ifdef bottom_xmlmemory
+#undef xmlMemDisplayLast
+extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast __attribute((alias("xmlMemDisplayLast__internal_alias")));
+#else
+#ifndef xmlMemDisplayLast
+extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast__internal_alias __attribute((visibility("hidden")));
+#define xmlMemDisplayLast xmlMemDisplayLast__internal_alias
+#endif
+#endif
+
+#ifdef bottom_xmlmemory
 #undef xmlMemFree
 extern __typeof (xmlMemFree) xmlMemFree __attribute((alias("xmlMemFree__internal_alias")));
 #else
@@ -6043,6 +6089,16 @@
 #endif
 #endif
 
+#ifdef bottom_entities
+#undef xmlNewEntity
+extern __typeof (xmlNewEntity) xmlNewEntity __attribute((alias("xmlNewEntity__internal_alias")));
+#else
+#ifndef xmlNewEntity
+extern __typeof (xmlNewEntity) xmlNewEntity__internal_alias __attribute((visibility("hidden")));
+#define xmlNewEntity xmlNewEntity__internal_alias
+#endif
+#endif
+
 #ifdef bottom_parserInternals
 #undef xmlNewEntityInputStream
 extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream __attribute((alias("xmlNewEntityInputStream__internal_alias")));
@@ -6367,6 +6423,18 @@
 #endif
 #endif
 
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNextElementSibling
+extern __typeof (xmlNextElementSibling) xmlNextElementSibling __attribute((alias("xmlNextElementSibling__internal_alias")));
+#else
+#ifndef xmlNextElementSibling
+extern __typeof (xmlNextElementSibling) xmlNextElementSibling__internal_alias __attribute((visibility("hidden")));
+#define xmlNextElementSibling xmlNextElementSibling__internal_alias
+#endif
+#endif
+#endif
+
 #ifdef bottom_xmlIO
 #undef xmlNoNetExternalEntityLoader
 extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader __attribute((alias("xmlNoNetExternalEntityLoader__internal_alias")));
@@ -7769,6 +7837,18 @@
 #endif
 #endif
 
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlPreviousElementSibling
+extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling __attribute((alias("xmlPreviousElementSibling__internal_alias")));
+#else
+#ifndef xmlPreviousElementSibling
+extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling__internal_alias __attribute((visibility("hidden")));
+#define xmlPreviousElementSibling xmlPreviousElementSibling__internal_alias
+#endif
+#endif
+#endif
+
 #ifdef bottom_uri
 #undef xmlPrintURI
 extern __typeof (xmlPrintURI) xmlPrintURI __attribute((alias("xmlPrintURI__internal_alias")));

Modified: trunk/include/libxml/tree.h
==============================================================================
--- trunk/include/libxml/tree.h	(original)
+++ trunk/include/libxml/tree.h	Thu Nov 27 15:26:28 2008
@@ -1225,6 +1225,22 @@
 					 int deep,
 					 int options);
 
+#ifdef LIBXML_TREE_ENABLED
+/*
+ * 5 interfaces from DOM ElementTraversal, but different in entities
+ * traversal.
+ */
+XMLPUBFUN unsigned long XMLCALL
+            xmlChildElementCount        (xmlNodePtr parent);
+XMLPUBFUN xmlNodePtr XMLCALL
+            xmlNextElementSibling       (xmlNodePtr node);
+XMLPUBFUN xmlNodePtr XMLCALL
+            xmlFirstElementChild        (xmlNodePtr parent);
+XMLPUBFUN xmlNodePtr XMLCALL
+            xmlLastElementChild         (xmlNodePtr parent);
+XMLPUBFUN xmlNodePtr XMLCALL
+            xmlPreviousElementSibling   (xmlNodePtr node);
+#endif
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/python/generator.py
==============================================================================
--- trunk/python/generator.py	(original)
+++ trunk/python/generator.py	Thu Nov 27 15:26:28 2008
@@ -725,6 +725,10 @@
     "xmlDocSetRootElement": 1,
     "xmlNodeGetNs": 1,
     "xmlNodeGetNsDefs": 1,
+    "xmlNextElementSibling": 1,
+    "xmlPreviousElementSibling": 1,
+    "xmlFirstElementChild": 1,
+    "xmlLastElementChild": 1,
 }
 
 reference_keepers = {

Modified: trunk/python/libxml2class.txt
==============================================================================
--- trunk/python/libxml2class.txt	(original)
+++ trunk/python/libxml2class.txt	Thu Nov 27 15:26:28 2008
@@ -457,6 +457,7 @@
     docCopyNode()
     docCopyNodeList()
     docSetRootElement()
+    firstElementChild()
     freeNode()
     freeNodeList()
     getBase()
@@ -468,6 +469,7 @@
     isBlankNode()
     isText()
     lastChild()
+    lastElementChild()
     lineNo()
     listGetRawString()
     listGetString()
@@ -477,9 +479,11 @@
     newNsPropEatName()
     newProp()
     newTextChild()
+    nextElementSibling()
     noNsProp()
     nodePath()
     nsProp()
+    previousElementSibling()
     prop()
     reconciliateNs()
     replaceNode()

Modified: trunk/testapi.c
==============================================================================
--- trunk/testapi.c	(original)
+++ trunk/testapi.c	Thu Nov 27 15:26:28 2008
@@ -19057,6 +19057,40 @@
 
 
 static int
+test_xmlChildElementCount(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+    int mem_base;
+    unsigned long ret_val;
+    xmlNodePtr parent; /* the parent node */
+    int n_parent;
+
+    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+        mem_base = xmlMemBlocks();
+        parent = gen_xmlNodePtr(n_parent, 0);
+
+        ret_val = xmlChildElementCount(parent);
+        desret_unsigned_long(ret_val);
+        call_tests++;
+        des_xmlNodePtr(n_parent, parent, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlChildElementCount",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_parent);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlCopyDoc(void) {
     int test_ret = 0;
 
@@ -20171,6 +20205,40 @@
 
 
 static int
+test_xmlFirstElementChild(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+    int mem_base;
+    xmlNodePtr ret_val;
+    xmlNodePtr parent; /* the parent node */
+    int n_parent;
+
+    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+        mem_base = xmlMemBlocks();
+        parent = gen_xmlNodePtr(n_parent, 0);
+
+        ret_val = xmlFirstElementChild(parent);
+        desret_xmlNodePtr(ret_val);
+        call_tests++;
+        des_xmlNodePtr(n_parent, parent, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlFirstElementChild",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_parent);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlGetBufferAllocationScheme(void) {
     int test_ret = 0;
 
@@ -20673,6 +20741,40 @@
 
 
 static int
+test_xmlLastElementChild(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+    int mem_base;
+    xmlNodePtr ret_val;
+    xmlNodePtr parent; /* the parent node */
+    int n_parent;
+
+    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+        mem_base = xmlMemBlocks();
+        parent = gen_xmlNodePtr(n_parent, 0);
+
+        ret_val = xmlLastElementChild(parent);
+        desret_xmlNodePtr(ret_val);
+        call_tests++;
+        des_xmlNodePtr(n_parent, parent, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlLastElementChild",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_parent);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlNewCDataBlock(void) {
     int test_ret = 0;
 
@@ -21832,6 +21934,40 @@
 
 
 static int
+test_xmlNextElementSibling(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+    int mem_base;
+    xmlNodePtr ret_val;
+    xmlNodePtr node; /* the current node */
+    int n_node;
+
+    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+        mem_base = xmlMemBlocks();
+        node = gen_xmlNodePtr(n_node, 0);
+
+        ret_val = xmlNextElementSibling(node);
+        desret_xmlNodePtr(ret_val);
+        call_tests++;
+        des_xmlNodePtr(n_node, node, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlNextElementSibling",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_node);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlNodeAddContent(void) {
     int test_ret = 0;
 
@@ -22581,6 +22717,40 @@
 
 
 static int
+test_xmlPreviousElementSibling(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+    int mem_base;
+    xmlNodePtr ret_val;
+    xmlNodePtr node; /* the current node */
+    int n_node;
+
+    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+        mem_base = xmlMemBlocks();
+        node = gen_xmlNodePtr(n_node, 0);
+
+        ret_val = xmlPreviousElementSibling(node);
+        desret_xmlNodePtr(ret_val);
+        call_tests++;
+        des_xmlNodePtr(n_node, node, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlPreviousElementSibling",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_node);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlReconciliateNs(void) {
     int test_ret = 0;
 
@@ -23845,7 +24015,7 @@
 test_tree(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing tree : 133 of 152 functions ...\n");
+    if (quiet == 0) printf("Testing tree : 138 of 157 functions ...\n");
     test_ret += test_xmlAddChild();
     test_ret += test_xmlAddChildList();
     test_ret += test_xmlAddNextSibling();
@@ -23870,6 +24040,7 @@
     test_ret += test_xmlBufferWriteChar();
     test_ret += test_xmlBufferWriteQuotedString();
     test_ret += test_xmlBuildQName();
+    test_ret += test_xmlChildElementCount();
     test_ret += test_xmlCopyDoc();
     test_ret += test_xmlCopyDtd();
     test_ret += test_xmlCopyNamespace();
@@ -23895,6 +24066,7 @@
     test_ret += test_xmlDocGetRootElement();
     test_ret += test_xmlDocSetRootElement();
     test_ret += test_xmlElemDump();
+    test_ret += test_xmlFirstElementChild();
     test_ret += test_xmlGetBufferAllocationScheme();
     test_ret += test_xmlGetCompressMode();
     test_ret += test_xmlGetDocCompressMode();
@@ -23910,6 +24082,7 @@
     test_ret += test_xmlHasProp();
     test_ret += test_xmlIsBlankNode();
     test_ret += test_xmlIsXHTML();
+    test_ret += test_xmlLastElementChild();
     test_ret += test_xmlNewCDataBlock();
     test_ret += test_xmlNewCharRef();
     test_ret += test_xmlNewChild();
@@ -23936,6 +24109,7 @@
     test_ret += test_xmlNewText();
     test_ret += test_xmlNewTextChild();
     test_ret += test_xmlNewTextLen();
+    test_ret += test_xmlNextElementSibling();
     test_ret += test_xmlNodeAddContent();
     test_ret += test_xmlNodeAddContentLen();
     test_ret += test_xmlNodeBufGetContent();
@@ -23954,6 +24128,7 @@
     test_ret += test_xmlNodeSetLang();
     test_ret += test_xmlNodeSetName();
     test_ret += test_xmlNodeSetSpacePreserve();
+    test_ret += test_xmlPreviousElementSibling();
     test_ret += test_xmlReconciliateNs();
     test_ret += test_xmlRemoveProp();
     test_ret += test_xmlReplaceNode();

Modified: trunk/tree.c
==============================================================================
--- trunk/tree.c	(original)
+++ trunk/tree.c	Thu Nov 27 15:26:28 2008
@@ -3367,6 +3367,199 @@
     return(parent->last);
 }
 
+#ifdef LIBXML_TREE_ENABLED
+/*
+ * 5 interfaces from DOM ElementTraversal
+ */
+
+/**
+ * xmlChildElementCount:
+ * @parent: the parent node
+ *
+ * Finds the current number of child nodes of that element which are
+ * element nodes.
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the count of element child or 0 if not available
+ */
+unsigned long
+xmlChildElementCount(xmlNodePtr parent) {
+    unsigned long ret = 0;
+    xmlNodePtr cur = NULL;
+
+    if (parent == NULL)
+        return(0);
+    switch (parent->type) {
+        case XML_ELEMENT_NODE:
+        case XML_ENTITY_NODE:
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            cur = parent->children;
+            break;
+        default:
+            return(0);
+    }
+    while (cur != NULL) {
+        if (cur->type == XML_ELEMENT_NODE)
+            ret++;
+        cur = cur->next;
+    }
+    return(ret);
+}
+
+/**
+ * xmlFirstElementChild:
+ * @parent: the parent node
+ *
+ * Finds the first child node of that element which is a Element node
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the first element child or NULL if not available
+ */
+xmlNodePtr
+xmlFirstElementChild(xmlNodePtr parent) {
+    xmlNodePtr cur = NULL;
+
+    if (parent == NULL)
+        return(NULL);
+    switch (parent->type) {
+        case XML_ELEMENT_NODE:
+        case XML_ENTITY_NODE:
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            cur = parent->children;
+            break;
+        default:
+            return(NULL);
+    }
+    while (cur != NULL) {
+        if (cur->type == XML_ELEMENT_NODE)
+            return(cur);
+        cur = cur->next;
+    }
+    return(NULL);
+}
+
+/**
+ * xmlLastElementChild:
+ * @parent: the parent node
+ *
+ * Finds the last child node of that element which is a Element node
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the last element child or NULL if not available
+ */
+xmlNodePtr
+xmlLastElementChild(xmlNodePtr parent) {
+    xmlNodePtr cur = NULL;
+
+    if (parent == NULL)
+        return(NULL);
+    switch (parent->type) {
+        case XML_ELEMENT_NODE:
+        case XML_ENTITY_NODE:
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            cur = parent->last;
+            break;
+        default:
+            return(NULL);
+    }
+    while (cur != NULL) {
+        if (cur->type == XML_ELEMENT_NODE)
+            return(cur);
+        cur = cur->prev;
+    }
+    return(NULL);
+}
+
+/**
+ * xmlPreviousElementSibling:
+ * @node: the current node
+ *
+ * Finds the first closest previous sibling of the node which is an
+ * element node.
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the previous element sibling or NULL if not available
+ */
+xmlNodePtr
+xmlPreviousElementSibling(xmlNodePtr node) {
+    if (node == NULL)
+        return(NULL);
+    switch (node->type) {
+        case XML_ELEMENT_NODE:
+        case XML_TEXT_NODE:
+        case XML_CDATA_SECTION_NODE:
+        case XML_ENTITY_REF_NODE:
+        case XML_ENTITY_NODE:
+        case XML_PI_NODE:
+        case XML_COMMENT_NODE:
+        case XML_XINCLUDE_START:
+        case XML_XINCLUDE_END:
+            node = node->prev;
+            break;
+        default:
+            return(NULL);
+    }
+    while (node != NULL) {
+        if (node->type == XML_ELEMENT_NODE)
+            return(node);
+        node = node->next;
+    }
+    return(NULL);
+}
+
+/**
+ * xmlNextElementSibling:
+ * @node: the current node
+ *
+ * Finds the first closest next sibling of the node which is an
+ * element node.
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the next element sibling or NULL if not available
+ */
+xmlNodePtr
+xmlNextElementSibling(xmlNodePtr node) {
+    if (node == NULL)
+        return(NULL);
+    switch (node->type) {
+        case XML_ELEMENT_NODE:
+        case XML_TEXT_NODE:
+        case XML_CDATA_SECTION_NODE:
+        case XML_ENTITY_REF_NODE:
+        case XML_ENTITY_NODE:
+        case XML_PI_NODE:
+        case XML_COMMENT_NODE:
+        case XML_DTD_NODE:
+        case XML_XINCLUDE_START:
+        case XML_XINCLUDE_END:
+            node = node->next;
+            break;
+        default:
+            return(NULL);
+    }
+    while (node != NULL) {
+        if (node->type == XML_ELEMENT_NODE)
+            return(node);
+        node = node->next;
+    }
+    return(NULL);
+}
+
+#endif /* LIBXML_TREE_ENABLED */
+
 /**
  * xmlFreeNodeList:
  * @cur:  the first node in the list

Modified: trunk/valid.c
==============================================================================
--- trunk/valid.c	(original)
+++ trunk/valid.c	Thu Nov 27 15:26:28 2008
@@ -3792,27 +3792,13 @@
 }
 
 /**
- * xmlValidateAttributeValue:
+ * xmlValidateAttributeValueInternal:
+ * @doc: the document
  * @type:  an attribute type
  * @value:  an attribute value
  *
  * Validate that the given attribute value match  the proper production
  *
- * [ VC: ID ]
- * Values of type ID must match the Name production....
- *
- * [ VC: IDREF ]
- * Values of type IDREF must match the Name production, and values
- * of type IDREFS must match Names ...
- *
- * [ VC: Entity Name ]
- * Values of type ENTITY must match the Name production, values
- * of type ENTITIES must match Names ...
- *
- * [ VC: Name Token ]
- * Values of type NMTOKEN must match the Nmtoken production; values
- * of type NMTOKENS must match Nmtokens. 
- *
  * returns 1 if valid or 0 otherwise
  */
 
@@ -3839,6 +3825,30 @@
     return(1);
 }
 
+/**
+ * xmlValidateAttributeValue:
+ * @type:  an attribute type
+ * @value:  an attribute value
+ *
+ * Validate that the given attribute value match  the proper production
+ *
+ * [ VC: ID ]
+ * Values of type ID must match the Name production....
+ *
+ * [ VC: IDREF ]
+ * Values of type IDREF must match the Name production, and values
+ * of type IDREFS must match Names ...
+ *
+ * [ VC: Entity Name ]
+ * Values of type ENTITY must match the Name production, values
+ * of type ENTITIES must match Names ...
+ *
+ * [ VC: Name Token ]
+ * Values of type NMTOKEN must match the Nmtoken production; values
+ * of type NMTOKENS must match Nmtokens. 
+ *
+ * returns 1 if valid or 0 otherwise
+ */
 int
 xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value) {
     return(xmlValidateAttributeValueInternal(NULL, type, value));

Modified: trunk/win32/libxml2.def.src
==============================================================================
Binary files. No diff available.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]