1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-21 14:53:44 +03:00

preparing release of 2.6.25 Daniel

* configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.25
Daniel
This commit is contained in:
Daniel Veillard
2006-06-06 13:27:03 +00:00
parent 080152c901
commit 69839ba197
58 changed files with 4945 additions and 4732 deletions

View File

@@ -1,3 +1,7 @@
Tue Jun 6 15:19:57 CEST 2006 Daniel Veillard <daniel@veillard.com>
* configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.25
Tue Jun 6 11:28:15 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
* xpath.c: Enabled the compound traversal again; I added a

View File

@@ -5,7 +5,7 @@ AC_CANONICAL_HOST
LIBXML_MAJOR_VERSION=2
LIBXML_MINOR_VERSION=6
LIBXML_MICRO_VERSION=24
LIBXML_MICRO_VERSION=25
LIBXML_MICRO_VERSION_SUFFIX=
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION

View File

@@ -81,6 +81,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>CJKUnifiedIdeographsExtensionB</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKUnifiedIdeographsExtensionB">xmlUCSIsCJKUnifiedIdeographsExtensionB</a><br />
</dd><dt>CVS</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a><br />
</dd><dt>CWD</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br />
</dd><dt>Cache</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
</dd><dt>Call</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br />
<a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br />
<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
@@ -309,6 +310,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
<a href="html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a><br />
<a href="html/libxml-xinclude.html#xmlXIncludeNewContext">xmlXIncludeNewContext</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>Creation</dt><dd><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 />

View File

@@ -123,6 +123,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br />
</dd><dt>activates</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>activation</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>acts</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
</dd><dt>actual</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />

View File

@@ -37,7 +37,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk27.html">w-w</a>
<a href="APIchunk28.html">x-x</a>
<a href="APIchunk29.html">y-z</a>
</h2><h2>Letter c:</h2><dl><dt>calculated</dt><dd><a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br />
</h2><h2>Letter c:</h2><dl><dt>cache</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>cached</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>caching:</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>calculated</dt><dd><a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br />
</dd><dt>calculates</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Size">xmlUTF8Size</a><br />
</dd><dt>calling</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
@@ -839,6 +842,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a><br />
<a href="html/libxml-uri.html#xmlCreateURI">xmlCreateURI</a><br />
<a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>creating</dt><dd><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 />
@@ -869,6 +873,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemUsed">xmlMemUsed</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>custom</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
<a href="html/libxml-xmlsave.html#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a><br />

View File

@@ -221,6 +221,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>delegation</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br />
</dd><dt>delete</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br />
</dd><dt>deletion</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br />
</dd><dt>dependant</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>depending</dt><dd><a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br />
<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
<a href="html/libxml-list.html#xmlListDataCompare">xmlListDataCompare</a><br />
@@ -455,6 +456,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>disabled</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br />
</dd><dt>disables</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>disabling</dt><dd><a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br />
</dd><dt>disallowed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a><br />

View File

@@ -50,6 +50,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
</dd><dt>edition</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
</dd><dt>effect</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>effective</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
</dd><dt>efficiency</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
@@ -118,6 +119,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>enable</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br />
</dd><dt>enabled</dt><dd><a href="html/libxml-tree.html#xmlSaveFile">xmlSaveFile</a><br />
<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br />
</dd><dt>enables</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>enabling</dt><dd><a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
<a href="html/libxml-parser.html#xmlPedanticParserDefault">xmlPedanticParserDefault</a><br />
</dd><dt>enc</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br />

View File

@@ -243,6 +243,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>fonctionnalities</dt><dd><a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br />
</dd><dt>for:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>forbid</dt><dd><a href="html/libxml-xpath.html#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a><br />
</dd><dt>force</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
@@ -320,6 +321,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>freeing</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br />
<a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br />
</dd><dt>frees</dt><dd><a href="html/libxml-tree.html#xmlBufferFree">xmlBufferFree</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>front</dt><dd><a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br />
<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br />
<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br />

View File

@@ -464,6 +464,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br />
<a href="html/libxml-valid.html#xmlRemoveID">xmlRemoveID</a><br />
<a href="html/libxml-valid.html#xmlRemoveRef">xmlRemoveRef</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>interned</dt><dd><a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br />
</dd><dt>interning</dt><dd><a href="html/libxml-tree.html#xmlCopyNodeList">xmlCopyNodeList</a><br />

View File

@@ -148,6 +148,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
<a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>maybe</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br />
</dd><dt>mean</dt><dd><a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br />
</dd><dt>means</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
@@ -238,6 +239,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br />
</dd><dt>minus</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
</dd><dt>minute</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
</dd><dt>misc</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>misleading</dt><dd><a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
</dd><dt>mixed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a><br />

View File

@@ -39,7 +39,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk29.html">y-z</a>
</h2><h2>Letter o:</h2><dl><dt>object?</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNumberFunction">xmlXPathNumberFunction</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
</dd><dt>objects</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
</dd><dt>objects</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathEqualValues">xmlXPathEqualValues</a><br />
<a href="html/libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a><br />
@@ -236,6 +238,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br />
<a href="html/libxml-xmlsave.html#xmlSaveToIO">xmlSaveToIO</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>ordered</dt><dd><a href="html/libxml-list.html#xmlListAppend">xmlListAppend</a><br />
<a href="html/libxml-list.html#xmlListInsert">xmlListInsert</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br />

View File

@@ -146,6 +146,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>per</dt><dd><a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>performance</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br />
</dd><dt>performed</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />

View File

@@ -541,9 +541,11 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br />
</dd><dt>retry</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
</dd><dt>returning</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
</dd><dt>reusal</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
</dd><dt>reuse</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br />
</dd><dt>reused</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>reuses</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadDoc">htmlCtxtReadDoc</a><br />
<a href="html/libxml-HTMLparser.html#htmlCtxtReadFd">htmlCtxtReadFd</a><br />
<a href="html/libxml-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a><br />

View File

@@ -180,6 +180,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>self</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br />
</dd><dt>semantic</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br />
</dd><dt>semantics</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>sense</dt><dd><a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
</dd><dt>separated</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
</dd><dt>separately</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
@@ -261,6 +262,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br />
</dd><dt>setting</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>setups</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEncodingDecl">xmlParseEncodingDecl</a><br />
</dd><dt>sgmlsource</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br />
<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br />
@@ -388,6 +390,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>skipped</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br />
</dd><dt>slot</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>slots</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>smallest</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
</dd><dt>socket</dt><dd><a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPGetSocket">xmlNanoFTPGetSocket</a><br />
@@ -797,6 +801,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>succeeds</dt><dd><a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br />
<a href="html/libxml-xmlwriter.html#xmlNewTextWriterPushParser">xmlNewTextWriterPushParser</a><br />
</dd><dt>successful</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br />

View File

@@ -71,6 +71,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>Optional</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
</dd><dt>Oriya</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsOriya">xmlUCSIsOriya</a><br />
</dd><dt>Osmanya</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsOsmanya">xmlUCSIsOsmanya</a><br />
</dd><dt>Other</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>Otherwise</dt><dd><a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br />
<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br />
</dd><dt>Output</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a><br />

View File

@@ -114,6 +114,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br />
</dd><dt>Then</dt><dd><a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br />
</dd><dt>There</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>Those</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
</dd><dt>Thus:</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
</dd><dt>Tibetan</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsTibetan">xmlUCSIsTibetan</a><br />
@@ -249,6 +250,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>Used</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a><br />

View File

@@ -2457,6 +2457,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_INVALIDATTR">XML_SCHEMAV_INVALIDATTR</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_INVALIDELEM">XML_SCHEMAV_INVALIDELEM</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_ISABSTRACT">XML_SCHEMAV_ISABSTRACT</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_MISC">XML_SCHEMAV_MISC</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_MISSING">XML_SCHEMAV_MISSING</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_NOROLLBACK">XML_SCHEMAV_NOROLLBACK</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_NOROOT">XML_SCHEMAV_NOROOT</a><br />
@@ -3274,6 +3275,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathCompiledEval">xmlXPathCompiledEval</a><br />
<a href="html/libxml-xpath.html#xmlXPathContext">xmlXPathContext</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertFunc">xmlXPathConvertFunc</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br />

View File

@@ -2164,6 +2164,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a><br />
<a href="html/libxml-xpath.html#xmlXPathFreeCompExpr">xmlXPathFreeCompExpr</a><br />
</p><h2>Type xmlXPathContextPtr:</h2><p><a href="html/libxml-xpath.html#xmlXPathCompiledEval">xmlXPathCompiledEval</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
<a href="html/libxml-xpath.html#xmlXPathCtxtCompile">xmlXPathCtxtCompile</a><br />
<a href="html/libxml-xpath.html#xmlXPathEval">xmlXPathEval</a><br />
<a href="html/libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a><br />

View File

@@ -1199,6 +1199,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_INVALIDATTR">XML_SCHEMAV_INVALIDATTR</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_INVALIDELEM">XML_SCHEMAV_INVALIDELEM</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_ISABSTRACT">XML_SCHEMAV_ISABSTRACT</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_MISC">XML_SCHEMAV_MISC</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_MISSING">XML_SCHEMAV_MISSING</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_NOROLLBACK">XML_SCHEMAV_NOROLLBACK</a><br />
<a href="html/libxml-xmlerror.html#XML_SCHEMAV_NOROOT">XML_SCHEMAV_NOROOT</a><br />
@@ -3292,6 +3293,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathContainsFunction">xmlXPathContainsFunction</a><br />
<a href="html/libxml-xpath.html#xmlXPathContext">xmlXPathContext</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertFunc">xmlXPathConvertFunc</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br />

File diff suppressed because one or more lines are too long

View File

@@ -12,53 +12,51 @@ A:link, A:visited, A:active { text-decoration: underline }
<li><a href="FAQ.html#Compilatio">Compilation</a></li>
<li><a href="FAQ.html#Developer">Developer corner</a></li>
</ul><h3><a name="License" id="License">License</a>(s)</h3><ol><li><em>Licensing Terms for libxml</em>
<p>libxml2 is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
License</a>; see the file Copyright in the distribution for the precise
wording</p>
<p>libxml2 is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MITLicense</a>;
see the file Copyright in the distribution for the precisewording</p>
</li>
<li><em>Can I embed libxml2 in a proprietary application ?</em>
<p>Yes. The MIT License allows you to keep proprietary the changes you
made to libxml, but it would be graceful to send-back bug fixes and
improvements as patches for possible incorporation in the main
development tree.</p>
<p>Yes. The MIT License allows you to keep proprietary the changes
youmade to libxml, but it would be graceful to send-back bug fixes
andimprovements as patches for possible incorporation in the
maindevelopment tree.</p>
</li>
</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol><li><strong><span style="background-color: #FF0000">Do Not Use
libxml1</span></strong>, use libxml2</li>
<li><em>Where can I get libxml</em> ?
<p>The original distribution comes from <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a> or <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">gnome.org</a></p>
<p>Most Linux and BSD distributions include libxml, this is probably the
safer way for end-users to use libxml.</p>
</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol><li><strong><span style="background-color: #FF0000">Do Not
Uselibxml1</span></strong>, use libxml2</li>
<li><em>Where can I get libxml</em>?
<p>The original distribution comes from <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>or <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">gnome.org</a></p>
<p>Most Linux and BSD distributions include libxml, this is probably
thesafer way for end-users to use libxml.</p>
<p>David Doolin provides precompiled Windows versions at <a href="http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/ ">http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/</a></p>
</li>
<li><em>I see libxml and libxml2 releases, which one should I install ?</em>
<ul><li>If you are not constrained by backward compatibility issues with
existing applications, install libxml2 only</li>
<li>If you are not doing development, you can safely install both.
Usually the packages <a href="http://rpmfind.net/linux/RPM/libxml.html">libxml</a> and <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a> are
compatible (this is not the case for development packages).</li>
<li>If you are a developer and your system provides separate packaging
for shared libraries and the development components, it is possible
to install libxml and libxml2, and also <a href="http://rpmfind.net/linux/RPM/libxml-devel.html">libxml-devel</a>
and <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>
too for libxml2 &gt;= 2.3.0</li>
<li>If you are developing a new application, please develop against
libxml2(-devel)</li>
<ul><li>If you are not constrained by backward compatibility issues
withexisting applications, install libxml2 only</li>
<li>If you are not doing development, you can safely install
both.Usually the packages <a href="http://rpmfind.net/linux/RPM/libxml.html">libxml</a>and <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>arecompatible
(this is not the case for development packages).</li>
<li>If you are a developer and your system provides separate
packagingfor shared libraries and the development components, it is
possibleto install libxml and libxml2, and also <a href="http://rpmfind.net/linux/RPM/libxml-devel.html">libxml-devel</a>and
<a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>too
for libxml2 &gt;= 2.3.0</li>
<li>If you are developing a new application, please develop
againstlibxml2(-devel)</li>
</ul></li>
<li><em>I can't install the libxml package, it conflicts with libxml0</em>
<p>You probably have an old libxml0 package used to provide the shared
library for libxml.so.0, you can probably safely remove it. The libxml
packages provided on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a> provide
libxml.so.0</p>
<p>You probably have an old libxml0 package used to provide the
sharedlibrary for libxml.so.0, you can probably safely remove it. The
libxmlpackages provided on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>providelibxml.so.0</p>
</li>
<li><em>I can't install the libxml(2) RPM package due to failed
dependencies</em>
<p>The most generic solution is to re-fetch the latest src.rpm , and
rebuild it locally with</p>
<li><em>I can't install the libxml(2) RPM package due to
faileddependencies</em>
<p>The most generic solution is to re-fetch the latest src.rpm ,
andrebuild it locally with</p>
<p><code>rpm --rebuild libxml(2)-xxx.src.rpm</code>.</p>
<p>If everything goes well it will generate two binary rpm packages (one
providing the shared libs and xmllint, and the other one, the -devel
package, providing includes, static libraries and scripts needed to build
applications with libxml(2)) that you can install locally.</p>
<p>If everything goes well it will generate two binary rpm packages
(oneproviding the shared libs and xmllint, and the other one, the
-develpackage, providing includes, static libraries and scripts needed to
buildapplications with libxml(2)) that you can install locally.</p>
</li>
</ol><h3><a name="Compilatio" id="Compilatio">Compilation</a></h3><ol><li><em>What is the process to compile libxml2 ?</em>
<p>As most UNIX libraries libxml2 follows the "standard":</p>
@@ -69,109 +67,107 @@ A:link, A:visited, A:active { text-decoration: underline }
<p><code>./configure [possible options]</code></p>
<p><code>make</code></p>
<p><code>make install</code></p>
<p>At that point you may have to rerun ldconfig or a similar utility to
update your list of installed shared libs.</p>
<p>At that point you may have to rerun ldconfig or a similar utility
toupdate your list of installed shared libs.</p>
</li>
<li><em>What other libraries are needed to compile/install libxml2 ?</em>
<p>Libxml2 does not require any other library, the normal C ANSI API
should be sufficient (please report any violation to this rule you may
find).</p>
<p>However if found at configuration time libxml2 will detect and use the
following libs:</p>
<ul><li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a> : a
highly portable and available widely compression library.</li>
<li>iconv: a powerful character encoding conversion library. It is
included by default in recent glibc libraries, so it doesn't need to
be installed specifically on Linux. It now seems a <a href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part
of the official UNIX</a> specification. Here is one <a href="http://www.gnu.org/software/libiconv/">implementation of the
library</a> which source can be found <a href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
<p>Libxml2 does not require any other library, the normal C ANSI
APIshould be sufficient (please report any violation to this rule you
mayfind).</p>
<p>However if found at configuration time libxml2 will detect and use
thefollowing libs:</p>
<ul><li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a>:
ahighly portable and available widely compression library.</li>
<li>iconv: a powerful character encoding conversion library. It
isincluded by default in recent glibc libraries, so it doesn't need
tobe installed specifically on Linux. It now seems a <a href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">partof
the official UNIX</a>specification. Here is one <a href="http://www.gnu.org/software/libiconv/">implementation of
thelibrary</a>which source can be found <a href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
</ul></li>
<li><em>Make check fails on some platforms</em>
<p>Sometimes the regression tests' results don't completely match the
value produced by the parser, and the makefile uses diff to print the
delta. On some platforms the diff return breaks the compilation process;
if the diff is small this is probably not a serious problem.</p>
<p>Sometimes (especially on Solaris) make checks fail due to limitations
in make. Try using GNU-make instead.</p>
<p>Sometimes the regression tests' results don't completely match
thevalue produced by the parser, and the makefile uses diff to print
thedelta. On some platforms the diff return breaks the compilation
process;if the diff is small this is probably not a serious problem.</p>
<p>Sometimes (especially on Solaris) make checks fail due to
limitationsin make. Try using GNU-make instead.</p>
</li>
<li><em>I use the CVS version and there is no configure script</em>
<p>The configure script (and other Makefiles) are generated. Use the
autogen.sh script to regenerate the configure script and Makefiles,
like:</p>
<p>The configure script (and other Makefiles) are generated. Use
theautogen.sh script to regenerate the configure script and
Makefiles,like:</p>
<p><code>./autogen.sh --prefix=/usr --disable-shared</code></p>
</li>
<li><em>I have troubles when running make tests with gcc-3.0</em>
<p>It seems the initial release of gcc-3.0 has a problem with the
optimizer which miscompiles the URI module. Please use another
compiler.</p>
<p>It seems the initial release of gcc-3.0 has a problem with
theoptimizer which miscompiles the URI module. Please use
anothercompiler.</p>
</li>
</ol><h3><a name="Developer" id="Developer">Developer</a> corner</h3><ol><li><em>Troubles compiling or linking programs using libxml2</em>
<p>Usually the problem comes from the fact that the compiler doesn't get
the right compilation or linking flags. There is a small shell script
<code>xml2-config</code> which is installed as part of libxml2 usual
install process which provides those flags. Use</p>
</ol><h3><a name="Developer" id="Developer">Developer</a>corner</h3><ol><li><em>Troubles compiling or linking programs using libxml2</em>
<p>Usually the problem comes from the fact that the compiler doesn't
getthe right compilation or linking flags. There is a small shell
script<code>xml2-config</code>which is installed as part of libxml2
usualinstall process which provides those flags. Use</p>
<p><code>xml2-config --cflags</code></p>
<p>to get the compilation flags and</p>
<p><code>xml2-config --libs</code></p>
<p>to get the linker flags. Usually this is done directly from the
Makefile as:</p>
<p>to get the linker flags. Usually this is done directly from
theMakefile as:</p>
<p><code>CFLAGS=`xml2-config --cflags`</code></p>
<p><code>LIBS=`xml2-config --libs`</code></p>
</li>
<li><em>I want to install my own copy of libxml2 in my home directory and
link my programs against it, but it doesn't work</em>
<p>There are many different ways to accomplish this. Here is one way to
do this under Linux. Suppose your home directory is <code>/home/user.
</code>Then:</p>
<li><em>I want to install my own copy of libxml2 in my home directory
andlink my programs against it, but it doesn't work</em>
<p>There are many different ways to accomplish this. Here is one way
todo this under Linux. Suppose your home directory is
<code>/home/user.</code>Then:</p>
<ul><li>Create a subdirectory, let's call it <code>myxml</code></li>
<li>unpack the libxml2 distribution into that subdirectory</li>
<li>chdir into the unpacked distribution
(<code>/home/user/myxml/libxml2 </code>)</li>
<li>configure the library using the "<code>--prefix</code>" switch,
specifying an installation subdirectory in
<code>/home/user/myxml</code>, e.g.
<p><code>./configure --prefix /home/user/myxml/xmlinst</code> {other
configuration options}</p>
<li>chdir into the unpacked distribution(<code>/home/user/myxml/libxml2
</code>)</li>
<li>configure the library using the "<code>--prefix</code>"
switch,specifying an installation subdirectory
in<code>/home/user/myxml</code>, e.g.
<p><code>./configure --prefix
/home/user/myxml/xmlinst</code>{otherconfiguration options}</p>
</li>
<li>now run <code>make</code> followed by <code>make install</code></li>
<li>At this point, the installation subdirectory contains the complete
"private" include files, library files and binary program files (e.g.
xmllint), located in
<p><code>/home/user/myxml/xmlinst/lib,
/home/user/myxml/xmlinst/include </code> and <code>
/home/user/myxml/xmlinst/bin</code></p>
<li>now run <code>make</code>followed by <code>make install</code></li>
<li>At this point, the installation subdirectory contains the
complete"private" include files, library files and binary program
files (e.g.xmllint), located in
<p><code>/home/user/myxml/xmlinst/lib,/home/user/myxml/xmlinst/include
</code>and <code>/home/user/myxml/xmlinst/bin</code></p>
respectively.</li>
<li>In order to use this "private" library, you should first add it to
the beginning of your default PATH (so that your own private program
files such as xmllint will be used instead of the normal system
ones). To do this, the Bash command would be
<li>In order to use this "private" library, you should first add it
tothe beginning of your default PATH (so that your own private
programfiles such as xmllint will be used instead of the normal
systemones). To do this, the Bash command would be
<p><code>export PATH=/home/user/myxml/xmlinst/bin:$PATH</code></p>
</li>
<li>Now suppose you have a program <code>test1.c</code> that you would
like to compile with your "private" library. Simply compile it using
the command
<li>Now suppose you have a program <code>test1.c</code>that you
wouldlike to compile with your "private" library. Simply compile it
usingthe command
<p><code>gcc `xml2-config --cflags --libs` -o test test.c</code></p>
Note that, because your PATH has been set with <code>
/home/user/myxml/xmlinst/bin</code> at the beginning, the xml2-config
program which you just installed will be used instead of the system
default one, and this will <em>automatically</em> get the correct
libraries linked with your program.</li>
Note that, because your PATH has been set with
<code>/home/user/myxml/xmlinst/bin</code>at the beginning, the
xml2-configprogram which you just installed will be used instead of
the systemdefault one, and this will <em>automatically</em>get the
correctlibraries linked with your program.</li>
</ul></li>
<p></p>
<li><em>xmlDocDump() generates output on one line.</em>
<p>Libxml2 will not <strong>invent</strong> spaces in the content of a
document since <strong>all spaces in the content of a document are
significant</strong>. If you build a tree from the API and want
indentation:</p>
<p>Libxml2 will not <strong>invent</strong>spaces in the content of
adocument since <strong>all spaces in the content of a document
aresignificant</strong>. If you build a tree from the API and
wantindentation:</p>
<ol><li>the correct way is to generate those yourself too.</li>
<li>the dangerous way is to ask libxml2 to add those blanks to your
content <strong>modifying the content of your document in the
process</strong>. The result may not be what you expect. There is
<strong>NO</strong> way to guarantee that such a modification won't
affect other parts of the content of your document. See <a href="http://xmlsoft.org/html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault
()</a> and <a href="http://xmlsoft.org/html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile
()</a></li>
<li>the dangerous way is to ask libxml2 to add those blanks to
yourcontent <strong>modifying the content of your document in
theprocess</strong>. The result may not be what you expect. There
is<strong>NO</strong>way to guarantee that such a modification
won'taffect other parts of the content of your document. See <a href="http://xmlsoft.org/html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault()</a>and
<a href="http://xmlsoft.org/html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile()</a></li>
</ol></li>
<li>Extra nodes in the document:
<p><em>For a XML file as below:</em></p>
@@ -180,10 +176,10 @@ A:link, A:visited, A:active { text-decoration: underline }
&lt;NODE CommFlag="0"/&gt;
&lt;NODE CommFlag="1"/&gt;
&lt;/PLAN&gt;</pre>
<p><em>after parsing it with the function
pxmlDoc=xmlParseFile(...);</em></p>
<p><em>I want to the get the content of the first node (node with the
CommFlag="0")</em></p>
<p><em>after parsing it with the
functionpxmlDoc=xmlParseFile(...);</em></p>
<p><em>I want to the get the content of the first node (node with
theCommFlag="0")</em></p>
<p><em>so I did it as following;</em></p>
<pre>xmlNodePtr pnode;
pnode=pxmlDoc-&gt;children-&gt;children;</pre>
@@ -191,63 +187,64 @@ pnode=pxmlDoc-&gt;children-&gt;children;</pre>
<pre>pnode=pxmlDoc-&gt;children-&gt;children-&gt;next;</pre>
<p><em>then it works. Can someone explain it to me.</em></p>
<p></p>
<p>In XML all characters in the content of the document are significant
<strong>including blanks and formatting line breaks</strong>.</p>
<p>The extra nodes you are wondering about are just that, text nodes with
the formatting spaces which are part of the document but that people tend
to forget. There is a function <a href="http://xmlsoft.org/html/libxml-parser.html">xmlKeepBlanksDefault
()</a> to remove those at parse time, but that's an heuristic, and its
use should be limited to cases where you are certain there is no
mixed-content in the document.</p>
<p>In XML all characters in the content of the document are
significant<strong>including blanks and formatting line
breaks</strong>.</p>
<p>The extra nodes you are wondering about are just that, text nodes
withthe formatting spaces which are part of the document but that people
tendto forget. There is a function <a href="http://xmlsoft.org/html/libxml-parser.html">xmlKeepBlanksDefault()</a>to
remove those at parse time, but that's an heuristic, and itsuse should be
limited to cases where you are certain there is nomixed-content in the
document.</p>
</li>
<li><em>I get compilation errors of existing code like when accessing
<strong>root</strong> or <strong>child fields</strong> of nodes.</em>
<p>You are compiling code developed for libxml version 1 and using a
libxml2 development environment. Either switch back to libxml v1 devel or
even better fix the code to compile with libxml2 (or both) by <a href="upgrade.html">following the instructions</a>.</p>
<li><em>I get compilation errors of existing code like when
accessing<strong>root</strong>or <strong>child fields</strong>of
nodes.</em>
<p>You are compiling code developed for libxml version 1 and using
alibxml2 development environment. Either switch back to libxml v1 devel
oreven better fix the code to compile with libxml2 (or both) by <a href="upgrade.html">following the instructions</a>.</p>
</li>
<li><em>I get compilation errors about non existing
<strong>xmlRootNode</strong> or <strong>xmlChildrenNode</strong>
fields.</em>
<p>The source code you are using has been <a href="upgrade.html">upgraded</a> to be able to compile with both libxml
and libxml2, but you need to install a more recent version:
libxml(-devel) &gt;= 1.8.8 or libxml2(-devel) &gt;= 2.1.0</p>
<li><em>I get compilation errors about non
existing<strong>xmlRootNode</strong>or
<strong>xmlChildrenNode</strong>fields.</em>
<p>The source code you are using has been <a href="upgrade.html">upgraded</a>to be able to compile with both libxmland
libxml2, but you need to install a more recent version:libxml(-devel)
&gt;= 1.8.8 or libxml2(-devel) &gt;= 2.1.0</p>
</li>
<li><em>XPath implementation looks seriously broken</em>
<p>XPath implementation prior to 2.3.0 was really incomplete. Upgrade to
a recent version, there are no known bugs in the current version.</p>
<p>XPath implementation prior to 2.3.0 was really incomplete. Upgrade toa
recent version, there are no known bugs in the current version.</p>
</li>
<li><em>The example provided in the web page does not compile.</em>
<p>It's hard to maintain the documentation in sync with the code
&lt;grin/&gt; ...</p>
<p>Check the previous points 1/ and 2/ raised before, and please send
patches.</p>
<p>It's hard to maintain the documentation in sync with the
code&lt;grin/&gt; ...</p>
<p>Check the previous points 1/ and 2/ raised before, and please
sendpatches.</p>
</li>
<li><em>Where can I get more examples and information than provided on the
web page?</em>
<p>Ideally a libxml2 book would be nice. I have no such plan ... But you
can:</p>
<ul><li>check more deeply the <a href="html/libxml-lib.html">existing
generated doc</a></li>
<li>have a look at <a href="examples/index.html">the set of
examples</a>.</li>
<li>look for examples of use for libxml2 function using the Gnome code.
For example the following will query the full Gnome CVS base for the
use of the <strong>xmlAddChild()</strong> function:
<li><em>Where can I get more examples and information than provided on
theweb page?</em>
<p>Ideally a libxml2 book would be nice. I have no such plan ... But
youcan:</p>
<ul><li>check more deeply the <a href="html/libxml-lib.html">existinggenerated doc</a></li>
<li>have a look at <a href="examples/index.html">the set
ofexamples</a>.</li>
<li>look for examples of use for libxml2 function using the Gnome
code.For example the following will query the full Gnome CVS base for
theuse of the <strong>xmlAddChild()</strong>function:
<p><a href="http://cvs.gnome.org/lxr/search?string=xmlAddChild">http://cvs.gnome.org/lxr/search?string=xmlAddChild</a></p>
<p>This may be slow, a large hardware donation to the gnome project
could cure this :-)</p>
<p>This may be slow, a large hardware donation to the gnome
projectcould cure this :-)</p>
</li>
<li><a href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&amp;dir=gnome-xml">Browse
the libxml2 source</a> , I try to write code as clean and documented
as possible, so looking at it may be helpful. In particular the code
of xmllint.c and of the various testXXX.c test programs should
provide good examples of how to do things with the library.</li>
<li><a href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&amp;dir=gnome-xml">Browsethe
libxml2 source</a>, I try to write code as clean and documentedas
possible, so looking at it may be helpful. In particular the codeof
xmllint.c and of the various testXXX.c test programs shouldprovide
good examples of how to do things with the library.</li>
</ul></li>
<li>What about C++ ?
<p>libxml2 is written in pure C in order to allow easy reuse on a number
of platforms, including embedded systems. I don't intend to convert to
C++.</p>
<p>libxml2 is written in pure C in order to allow easy reuse on a
numberof platforms, including embedded systems. I don't intend to convert
toC++.</p>
<p>There is however a C++ wrapper which may fulfill your needs:</p>
<ul><li>by Ari Johnson &lt;ari@btigate.com&gt;:
<p>Website: <a href="http://libxmlplusplus.sourceforge.net/">http://libxmlplusplus.sourceforge.net/</a></p>
@@ -261,11 +258,10 @@ pnode=pxmlDoc-&gt;children-&gt;children;</pre>
-->
</ul></li>
<li>How to validate a document a posteriori ?
<p>It is possible to validate documents which had not been validated at
initial parsing time or documents which have been built from scratch
using the API. Use the <a href="http://xmlsoft.org/html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd()</a>
function. It is also possible to simply add a DTD to an existing
document:</p>
<p>It is possible to validate documents which had not been validated
atinitial parsing time or documents which have been built from
scratchusing the API. Use the <a href="http://xmlsoft.org/html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd()</a>function.
It is also possible to simply add a DTD to an existingdocument:</p>
<pre>xmlDocPtr doc; /* your existing document */
xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
@@ -277,10 +273,10 @@ xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
</pre>
</li>
<li>So what is this funky "xmlChar" used all the time?
<p>It is a null terminated sequence of utf-8 characters. And only utf-8!
You need to convert strings encoded in different ways to utf-8 before
passing them to the API. This can be accomplished with the iconv library
for instance.</p>
<p>It is a null terminated sequence of utf-8 characters. And only
utf-8!You need to convert strings encoded in different ways to utf-8
beforepassing them to the API. This can be accomplished with the iconv
libraryfor instance.</p>
</li>
<li>etc ...</li>
</ol><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -7,9 +7,8 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>XML</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XML</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p><a href="http://www.w3.org/TR/REC-xml">XML is a standard</a> for
markup-based structured documents. Here is <a name="example" id="example">an example XML
document</a>:</p><pre>&lt;?xml version="1.0"?&gt;
</style><title>XML</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XML</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p><a href="http://www.w3.org/TR/REC-xml">XML is a
standard</a>formarkup-based structured documents. Here is <a name="example" id="example">an example XMLdocument</a>:</p><pre>&lt;?xml version="1.0"?&gt;
&lt;EXAMPLE prop1="gnome is great" prop2="&amp;amp; linux too"&gt;
&lt;head&gt;
&lt;title&gt;Welcome to Gnome&lt;/title&gt;
@@ -20,16 +19,16 @@ document</a>:</p><pre>&lt;?xml version="1.0"?&gt;
&lt;image href="linus.gif"/&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;/chapter&gt;
&lt;/EXAMPLE&gt;</pre><p>The first line specifies that it is an XML document and gives useful
information about its encoding. Then the rest of the document is a text
format whose structure is specified by tags between brackets. <strong>Each
tag opened has to be closed</strong>. XML is pedantic about this. However, if
a tag is empty (no content), a single tag can serve as both the opening and
closing tag if it ends with <code>/&gt;</code> rather than with
<code>&gt;</code>. Note that, for example, the image tag has no content (just
an attribute) and is closed by ending the tag with <code>/&gt;</code>.</p><p>XML can be applied successfully to a wide range of tasks, ranging from
long term structured document maintenance (where it follows the steps of
SGML) to simple data encoding mechanisms like configuration file formatting
(glade), spreadsheets (gnumeric), or even shorter lived documents such as
WebDAV where it is used to encode remote calls between a client and a
server.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
&lt;/EXAMPLE&gt;</pre><p>The first line specifies that it is an XML document and gives
usefulinformation about its encoding. Then the rest of the document is a
textformat whose structure is specified by tags between brackets.
<strong>Eachtag opened has to be closed</strong>. XML is pedantic about this.
However, ifa tag is empty (no content), a single tag can serve as both the
opening andclosing tag if it ends with <code>/&gt;</code>rather than
with<code>&gt;</code>. Note that, for example, the image tag has no content
(justan attribute) and is closed by ending the tag with
<code>/&gt;</code>.</p><p>XML can be applied successfully to a wide range of tasks, ranging fromlong
term structured document maintenance (where it follows the steps ofSGML) to
simple data encoding mechanisms like configuration file formatting(glade),
spreadsheets (gnumeric), or even shorter lived documents such asWebDAV where
it is used to encode remote calls between a client and aserver.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -7,7 +7,7 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>XSLT</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XSLT</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Check <a href="http://xmlsoft.org/XSLT">the separate libxslt page</a></p><p><a href="http://www.w3.org/TR/xslt">XSL Transformations</a>, is a
language for transforming XML documents into other XML documents (or
HTML/textual output).</p><p>A separate library called libxslt is available implementing XSLT-1.0 for
libxml2. This module "libxslt" too can be found in the Gnome CVS base.</p><p>You can check the progresses on the libxslt <a href="http://xmlsoft.org/XSLT/ChangeLog.html">Changelog</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
</style><title>XSLT</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XSLT</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Check <a href="http://xmlsoft.org/XSLT">the separate libxslt page</a></p><p><a href="http://www.w3.org/TR/xslt">XSL Transformations</a>, is alanguage
for transforming XML documents into other XML documents (orHTML/textual
output).</p><p>A separate library called libxslt is available implementing XSLT-1.0
forlibxml2. This module "libxslt" too can be found in the Gnome CVS base.</p><p>You can check the progresses on the libxslt <a href="http://xmlsoft.org/XSLT/ChangeLog.html">Changelog</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -7,62 +7,60 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Reporting bugs and getting help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Reporting bugs and getting help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Well, bugs or missing features are always possible, and I will make a
point of fixing them in a timely fashion. The best way to report a bug is to
use the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnome
bug tracking database</a> (make sure to use the "libxml2" module name). I
look at reports there regularly and it's good to have a reminder when a bug
is still open. Be sure to specify that the bug is for the package libxml2.</p><p>For small problems you can try to get help on IRC, the #xml channel on
irc.gnome.org (port 6667) usually have a few person subscribed which may help
(but there is no garantee and if a real issue is raised it should go on the
mailing-list for archival).</p><p>There is also a mailing-list <a href="mailto:xml@gnome.org">xml@gnome.org</a> for libxml, with an <a href="http://mail.gnome.org/archives/xml/">on-line archive</a> (<a href="http://xmlsoft.org/messages">old</a>). To subscribe to this list,
please visit the <a href="http://mail.gnome.org/mailman/listinfo/xml">associated Web</a> page and
follow the instructions. <strong>Do not send code, I won't debug it</strong>
(but patches are really appreciated!).</p><p>Please note that with the current amount of virus and SPAM, sending mail
to the list without being subscribed won't work. There is *far too many
bounces* (in the order of a thousand a day !) I cannot approve them manually
anymore. If your mail to the list bounced waiting for administrator approval,
it is LOST ! Repost it and fix the problem triggering the error. Also please
note that <span style="color: #FF0000; background-color: #FFFFFF">emails with
a legal warning asking to not copy or redistribute freely the informations
they contain</span> are <strong>NOT</strong> acceptable for the mailing-list,
such mail will as much as possible be discarded automatically, and are less
likely to be answered if they made it to the list, <strong>DO NOT</strong>
post to the list from an email address where such legal requirements are
automatically added, get private paying support if you can't share
informations.</p><p>Check the following <strong><span style="color: #FF0000">before
posting</span></strong>:</p><ul><li>Read the <a href="FAQ.html">FAQ</a> and <a href="search.php">use the
search engine</a> to get information related to your problem.</li>
<li>Make sure you are <a href="ftp://xmlsoft.org/libxml2/">using a recent
version</a>, and that the problem still shows up in a recent version.</li>
<li>Check the <a href="http://mail.gnome.org/archives/xml/">list
archives</a> to see if the problem was reported already. In this case
there is probably a fix available, similarly check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">registered
open bugs</a>.</li>
<li>Make sure you can reproduce the bug with xmllint or one of the test
programs found in source in the distribution.</li>
<li>Please send the command showing the error as well as the input (as an
attachment)</li>
</ul><p>Then send the bug with associated information to reproduce it to the <a href="mailto:xml@gnome.org">xml@gnome.org</a> list; if it's really libxml
related I will approve it. Please do not send mail to me directly, it makes
things really hard to track and in some cases I am not the best person to
answer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul><li>Support or help <span style="color: #E50000">requests MUST be sent to
the list or on bugzilla</span> in case of problems, so that the Question
and Answers can be shared publicly. Failing to do so carries the implicit
message "I want free support but I don't want to share the benefits with
others" and is not welcome. I will automatically Carbon-Copy the
xml@gnome.org mailing list for any technical reply made about libxml2 or
libxslt.</li>
<li>There is <span style="color: #E50000">no garantee of support</span>, if
your question remains unanswered after a week, repost it, making sure you
gave all the detail needed and the information requested.</li>
<li>Failing to provide information as requested or double checking first
for prior feedback also carries the implicit message "the time of the
library maintainers is less valuable than my time" and might not be
welcome.</li>
</ul><p>Of course, bugs reported with a suggested patch for fixing them will
probably be processed faster than those without.</p><p>If you're looking for help, a quick look at <a href="http://mail.gnome.org/archives/xml/">the list archive</a> may actually
provide the answer. I usually send source samples when answering libxml2
usage questions. The <a href="http://xmlsoft.org/html/book1.html">auto-generated documentation</a> is
not as polished as I would like (i need to learn more about DocBook), but
it's a good starting point.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
</style><title>Reporting bugs and getting help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Reporting bugs and getting help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Well, bugs or missing features are always possible, and I will make apoint
of fixing them in a timely fashion. The best way to report a bug is touse the
<a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnomebug
tracking database</a>(make sure to use the "libxml2" module name). Ilook at
reports there regularly and it's good to have a reminder when a bugis still
open. Be sure to specify that the bug is for the package libxml2.</p><p>For small problems you can try to get help on IRC, the #xml channel
onirc.gnome.org (port 6667) usually have a few person subscribed which may
help(but there is no garantee and if a real issue is raised it should go on
themailing-list for archival).</p><p>There is also a mailing-list <a href="mailto:xml@gnome.org">xml@gnome.org</a>for libxml, with an <a href="http://mail.gnome.org/archives/xml/">on-line archive</a>(<a href="http://xmlsoft.org/messages">old</a>). To subscribe to this list,please
visit the <a href="http://mail.gnome.org/mailman/listinfo/xml">associated
Web</a>page andfollow the instructions. <strong>Do not send code, I won't
debug it</strong>(but patches are really appreciated!).</p><p>Please note that with the current amount of virus and SPAM, sending mailto
the list without being subscribed won't work. There is *far too manybounces*
(in the order of a thousand a day !) I cannot approve them manuallyanymore.
If your mail to the list bounced waiting for administrator approval,it is
LOST ! Repost it and fix the problem triggering the error. Also pleasenote
that <span style="color: #FF0000; background-color: #FFFFFF">emails witha
legal warning asking to not copy or redistribute freely the informationsthey
contain</span>are <strong>NOT</strong>acceptable for the mailing-list,such
mail will as much as possible be discarded automatically, and are lesslikely
to be answered if they made it to the list, <strong>DO NOT</strong>post to
the list from an email address where such legal requirements areautomatically
added, get private paying support if you can't shareinformations.</p><p>Check the following <strong><span style="color: #FF0000">beforeposting</span></strong>:</p><ul><li>Read the <a href="FAQ.html">FAQ</a>and <a href="search.php">use
thesearch engine</a>to get information related to your problem.</li>
<li>Make sure you are <a href="ftp://xmlsoft.org/libxml2/">using a
recentversion</a>, and that the problem still shows up in a recent
version.</li>
<li>Check the <a href="http://mail.gnome.org/archives/xml/">listarchives</a>to see if the
problem was reported already. In this casethere is probably a fix
available, similarly check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">registeredopen
bugs</a>.</li>
<li>Make sure you can reproduce the bug with xmllint or one of the
testprograms found in source in the distribution.</li>
<li>Please send the command showing the error as well as the input (as
anattachment)</li>
</ul><p>Then send the bug with associated information to reproduce it to the <a href="mailto:xml@gnome.org">xml@gnome.org</a>list; if it's really
libxmlrelated I will approve it. Please do not send mail to me directly, it
makesthings really hard to track and in some cases I am not the best person
toanswer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul><li>Support or help <span style="color: #E50000">requests MUST be sent
tothe list or on bugzilla</span>in case of problems, so that the
Questionand Answers can be shared publicly. Failing to do so carries the
implicitmessage "I want free support but I don't want to share the
benefits withothers" and is not welcome. I will automatically Carbon-Copy
thexml@gnome.org mailing list for any technical reply made about libxml2
orlibxslt.</li>
<li>There is <span style="color: #E50000">no garantee of support</span>,
ifyour question remains unanswered after a week, repost it, making sure
yougave all the detail needed and the information requested.</li>
<li>Failing to provide information as requested or double checking firstfor
prior feedback also carries the implicit message "the time of thelibrary
maintainers is less valuable than my time" and might not bewelcome.</li>
</ul><p>Of course, bugs reported with a suggested patch for fixing them
willprobably be processed faster than those without.</p><p>If you're looking for help, a quick look at <a href="http://mail.gnome.org/archives/xml/">the list archive</a>may
actuallyprovide the answer. I usually send source samples when answering
libxml2usage questions. The <a href="http://xmlsoft.org/html/book1.html">auto-generated
documentation</a>isnot as polished as I would like (i need to learn more
about DocBook), butit's a good starting point.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -14,77 +14,77 @@ A:link, A:visited, A:active { text-decoration: underline }
<li><a href="#reference">How to tune catalog usage</a></li>
<li><a href="#validate">How to debug catalog processing</a></li>
<li><a href="#Declaring">How to create and maintain catalogs</a></li>
<li><a href="#implemento">The implementor corner quick review of the
API</a></li>
<li><a href="#implemento">The implementor corner quick review of
theAPI</a></li>
<li><a href="#Other">Other resources</a></li>
</ol><h3><a name="General2" id="General2">General overview</a></h3><p>What is a catalog? Basically it's a lookup mechanism used when an entity
(a file or a remote resource) references another entity. The catalog lookup
is inserted between the moment the reference is recognized by the software
(XML parser, stylesheet processing, or even images referenced for inclusion
in a rendering) and the time where loading that resource is actually
started.</p><p>It is basically used for 3 things:</p><ul><li>mapping from "logical" names, the public identifiers and a more
concrete name usable for download (and URI). For example it can associate
the logical name
</ol><h3><a name="General2" id="General2">General overview</a></h3><p>What is a catalog? Basically it's a lookup mechanism used when an entity(a
file or a remote resource) references another entity. The catalog lookupis
inserted between the moment the reference is recognized by the software(XML
parser, stylesheet processing, or even images referenced for inclusionin a
rendering) and the time where loading that resource is actuallystarted.</p><p>It is basically used for 3 things:</p><ul><li>mapping from "logical" names, the public identifiers and a moreconcrete
name usable for download (and URI). For example it can associatethe
logical name
<p>"-//OASIS//DTD DocBook XML V4.1.2//EN"</p>
<p>of the DocBook 4.1.2 XML DTD with the actual URL where it can be
downloaded</p>
<p>of the DocBook 4.1.2 XML DTD with the actual URL where it can
bedownloaded</p>
<p>http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd</p>
</li>
<li>remapping from a given URL to another one, like an HTTP indirection
saying that
<li>remapping from a given URL to another one, like an HTTP
indirectionsaying that
<p>"http://www.oasis-open.org/committes/tr.xsl"</p>
<p>should really be looked at</p>
<p>"http://www.oasis-open.org/committes/entity/stylesheets/base/tr.xsl"</p>
</li>
<li>providing a local cache mechanism allowing to load the entities
associated to public identifiers or remote resources, this is a really
important feature for any significant deployment of XML or SGML since it
allows to avoid the aleas and delays associated to fetching remote
resources.</li>
</ul><h3><a name="definition" id="definition">The definitions</a></h3><p>Libxml, as of 2.4.3 implements 2 kind of catalogs:</p><ul><li>the older SGML catalogs, the official spec is SGML Open Technical
Resolution TR9401:1997, but is better understood by reading <a href="http://www.jclark.com/sp/catalog.htm">the SP Catalog page</a> from
James Clark. This is relatively old and not the preferred mode of
operation of libxml.</li>
<li><a href="http://www.oasis-open.org/committees/entity/spec.html">XML
Catalogs</a> is far more flexible, more recent, uses an XML syntax and
should scale quite better. This is the default option of libxml.</li>
</ul><p></p><h3><a name="Simple" id="Simple">Using catalog</a></h3><p>In a normal environment libxml2 will by default check the presence of a
catalog in /etc/xml/catalog, and assuming it has been correctly populated,
the processing is completely transparent to the document user. To take a
concrete example, suppose you are authoring a DocBook document, this one
starts with the following DOCTYPE definition:</p><pre>&lt;?xml version='1.0'?&gt;
<li>providing a local cache mechanism allowing to load the
entitiesassociated to public identifiers or remote resources, this is a
reallyimportant feature for any significant deployment of XML or SGML
since itallows to avoid the aleas and delays associated to fetching
remoteresources.</li>
</ul><h3><a name="definition" id="definition">The definitions</a></h3><p>Libxml, as of 2.4.3 implements 2 kind of catalogs:</p><ul><li>the older SGML catalogs, the official spec is SGML Open
TechnicalResolution TR9401:1997, but is better understood by reading <a href="http://www.jclark.com/sp/catalog.htm">the SP Catalog
page</a>fromJames Clark. This is relatively old and not the preferred
mode ofoperation of libxml.</li>
<li><a href="http://www.oasis-open.org/committees/entity/spec.html">XMLCatalogs</a>is
far more flexible, more recent, uses an XML syntax andshould scale quite
better. This is the default option of libxml.</li>
</ul><p></p><h3><a name="Simple" id="Simple">Using catalog</a></h3><p>In a normal environment libxml2 will by default check the presence of
acatalog in /etc/xml/catalog, and assuming it has been correctly
populated,the processing is completely transparent to the document user. To
take aconcrete example, suppose you are authoring a DocBook document, this
onestarts with the following DOCTYPE definition:</p><pre>&lt;?xml version='1.0'?&gt;
&lt;!DOCTYPE book PUBLIC "-//Norman Walsh//DTD DocBk XML V3.1.4//EN"
"http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd"&gt;</pre><p>When validating the document with libxml, the catalog will be
automatically consulted to lookup the public identifier "-//Norman Walsh//DTD
DocBk XML V3.1.4//EN" and the system identifier
"http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd", and if these entities have
been installed on your system and the catalogs actually point to them, libxml
will fetch them from the local disk.</p><p style="font-size: 10pt"><strong>Note</strong>: Really don't use this
DOCTYPE example it's a really old version, but is fine as an example.</p><p>Libxml2 will check the catalog each time that it is requested to load an
entity, this includes DTD, external parsed entities, stylesheets, etc ... If
your system is correctly configured all the authoring phase and processing
should use only local files, even if your document stays portable because it
uses the canonical public and system ID, referencing the remote document.</p><h3><a name="Some" id="Some">Some examples:</a></h3><p>Here is a couple of fragments from XML Catalogs used in libxml2 early
regression tests in <code>test/catalogs</code> :</p><pre>&lt;?xml version="1.0"?&gt;
"http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd"&gt;</pre><p>When validating the document with libxml, the catalog will beautomatically
consulted to lookup the public identifier "-//Norman Walsh//DTDDocBk XML
V3.1.4//EN" and the system
identifier"http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd", and if these
entities havebeen installed on your system and the catalogs actually point to
them, libxmlwill fetch them from the local disk.</p><p style="font-size: 10pt"><strong>Note</strong>: Really don't use
thisDOCTYPE example it's a really old version, but is fine as an example.</p><p>Libxml2 will check the catalog each time that it is requested to load
anentity, this includes DTD, external parsed entities, stylesheets, etc ...
Ifyour system is correctly configured all the authoring phase and
processingshould use only local files, even if your document stays portable
because ituses the canonical public and system ID, referencing the remote
document.</p><h3><a name="Some" id="Some">Some examples:</a></h3><p>Here is a couple of fragments from XML Catalogs used in libxml2
earlyregression tests in <code>test/catalogs</code>:</p><pre>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC
"-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"&gt;
&lt;public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/&gt;
...</pre><p>This is the beginning of a catalog for DocBook 4.1.2, XML Catalogs are
written in XML, there is a specific namespace for catalog elements
"urn:oasis:names:tc:entity:xmlns:xml:catalog". The first entry in this
catalog is a <code>public</code> mapping it allows to associate a Public
Identifier with an URI.</p><pre>...
...</pre><p>This is the beginning of a catalog for DocBook 4.1.2, XML Catalogs
arewritten in XML, there is a specific namespace for catalog
elements"urn:oasis:names:tc:entity:xmlns:xml:catalog". The first entry in
thiscatalog is a <code>public</code>mapping it allows to associate a
PublicIdentifier with an URI.</p><pre>...
&lt;rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/"
rewritePrefix="file:///usr/share/xml/docbook/"/&gt;
...</pre><p>A <code>rewriteSystem</code> is a very powerful instruction, it says that
any URI starting with a given prefix should be looked at another URI
constructed by replacing the prefix with an new one. In effect this acts like
a cache system for a full area of the Web. In practice it is extremely useful
with a file prefix if you have installed a copy of those resources on your
local system.</p><pre>...
...</pre><p>A <code>rewriteSystem</code>is a very powerful instruction, it says
thatany URI starting with a given prefix should be looked at another
URIconstructed by replacing the prefix with an new one. In effect this acts
likea cache system for a full area of the Web. In practice it is extremely
usefulwith a file prefix if you have installed a copy of those resources on
yourlocal system.</p><pre>...
&lt;delegatePublic publicIdStartString="-//OASIS//DTD XML Catalog //"
catalog="file:///usr/share/xml/docbook.xml"/&gt;
&lt;delegatePublic publicIdStartString="-//OASIS//ENTITIES DocBook XML"
@@ -95,21 +95,21 @@ local system.</p><pre>...
catalog="file:///usr/share/xml/docbook.xml"/&gt;
&lt;delegateURI uriStartString="http://www.oasis-open.org/docbook/"
catalog="file:///usr/share/xml/docbook.xml"/&gt;
...</pre><p>Delegation is the core features which allows to build a tree of catalogs,
easier to maintain than a single catalog, based on Public Identifier, System
Identifier or URI prefixes it instructs the catalog software to look up
entries in another resource. This feature allow to build hierarchies of
catalogs, the set of entries presented should be sufficient to redirect the
resolution of all DocBook references to the specific catalog in
<code>/usr/share/xml/docbook.xml</code> this one in turn could delegate all
references for DocBook 4.2.1 to a specific catalog installed at the same time
as the DocBook resources on the local machine.</p><h3><a name="reference" id="reference">How to tune catalog usage:</a></h3><p>The user can change the default catalog behaviour by redirecting queries
to its own set of catalogs, this can be done by setting the
<code>XML_CATALOG_FILES</code> environment variable to a list of catalogs, an
empty one should deactivate loading the default <code>/etc/xml/catalog</code>
default catalog</p><h3><a name="validate" id="validate">How to debug catalog processing:</a></h3><p>Setting up the <code>XML_DEBUG_CATALOG</code> environment variable will
make libxml2 output debugging informations for each catalog operations, for
example:</p><pre>orchis:~/XML -&gt; xmllint --memory --noout test/ent2
...</pre><p>Delegation is the core features which allows to build a tree of
catalogs,easier to maintain than a single catalog, based on Public
Identifier, SystemIdentifier or URI prefixes it instructs the catalog
software to look upentries in another resource. This feature allow to build
hierarchies ofcatalogs, the set of entries presented should be sufficient to
redirect theresolution of all DocBook references to the specific catalog
in<code>/usr/share/xml/docbook.xml</code>this one in turn could delegate
allreferences for DocBook 4.2.1 to a specific catalog installed at the same
timeas the DocBook resources on the local machine.</p><h3><a name="reference" id="reference">How to tune catalog usage:</a></h3><p>The user can change the default catalog behaviour by redirecting queriesto
its own set of catalogs, this can be done by setting
the<code>XML_CATALOG_FILES</code>environment variable to a list of catalogs,
anempty one should deactivate loading the default
<code>/etc/xml/catalog</code>default catalog</p><h3><a name="validate" id="validate">How to debug catalog processing:</a></h3><p>Setting up the <code>XML_DEBUG_CATALOG</code>environment variable willmake
libxml2 output debugging informations for each catalog operations,
forexample:</p><pre>orchis:~/XML -&gt; xmllint --memory --noout test/ent2
warning: failed to load external entity "title.xml"
orchis:~/XML -&gt; export XML_DEBUG_CATALOG=
orchis:~/XML -&gt; xmllint --memory --noout test/ent2
@@ -117,26 +117,26 @@ Failed to parse catalog /etc/xml/catalog
Failed to parse catalog /etc/xml/catalog
warning: failed to load external entity "title.xml"
Catalogs cleanup
orchis:~/XML -&gt; </pre><p>The test/ent2 references an entity, running the parser from memory makes
the base URI unavailable and the the "title.xml" entity cannot be loaded.
Setting up the debug environment variable allows to detect that an attempt is
made to load the <code>/etc/xml/catalog</code> but since it's not present the
resolution fails.</p><p>But the most advanced way to debug XML catalog processing is to use the
<strong>xmlcatalog</strong> command shipped with libxml2, it allows to load
catalogs and make resolution queries to see what is going on. This is also
used for the regression tests:</p><pre>orchis:~/XML -&gt; ./xmlcatalog test/catalogs/docbook.xml \
orchis:~/XML -&gt; </pre><p>The test/ent2 references an entity, running the parser from memory
makesthe base URI unavailable and the the "title.xml" entity cannot be
loaded.Setting up the debug environment variable allows to detect that an
attempt ismade to load the <code>/etc/xml/catalog</code>but since it's not
present theresolution fails.</p><p>But the most advanced way to debug XML catalog processing is to use
the<strong>xmlcatalog</strong>command shipped with libxml2, it allows to
loadcatalogs and make resolution queries to see what is going on. This is
alsoused for the regression tests:</p><pre>orchis:~/XML -&gt; ./xmlcatalog test/catalogs/docbook.xml \
"-//OASIS//DTD DocBook XML V4.1.2//EN"
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
orchis:~/XML -&gt; </pre><p>For debugging what is going on, adding one -v flags increase the verbosity
level to indicate the processing done (adding a second flag also indicate
what elements are recognized at parsing):</p><pre>orchis:~/XML -&gt; ./xmlcatalog -v test/catalogs/docbook.xml \
orchis:~/XML -&gt; </pre><p>For debugging what is going on, adding one -v flags increase the
verbositylevel to indicate the processing done (adding a second flag also
indicatewhat elements are recognized at parsing):</p><pre>orchis:~/XML -&gt; ./xmlcatalog -v test/catalogs/docbook.xml \
"-//OASIS//DTD DocBook XML V4.1.2//EN"
Parsing catalog test/catalogs/docbook.xml's content
Found public match -//OASIS//DTD DocBook XML V4.1.2//EN
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
Catalogs cleanup
orchis:~/XML -&gt; </pre><p>A shell interface is also available to debug and process multiple queries
(and for regression tests):</p><pre>orchis:~/XML -&gt; ./xmlcatalog -shell test/catalogs/docbook.xml \
orchis:~/XML -&gt; </pre><p>A shell interface is also available to debug and process multiple
queries(and for regression tests):</p><pre>orchis:~/XML -&gt; ./xmlcatalog -shell test/catalogs/docbook.xml \
"-//OASIS//DTD DocBook XML V4.1.2//EN"
&gt; help
Commands available:
@@ -152,18 +152,18 @@ exit: quit the shell
&gt; public "-//OASIS//DTD DocBook XML V4.1.2//EN"
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
&gt; quit
orchis:~/XML -&gt; </pre><p>This should be sufficient for most debugging purpose, this was actually
used heavily to debug the XML Catalog implementation itself.</p><h3><a name="Declaring" id="Declaring">How to create and maintain</a> catalogs:</h3><p>Basically XML Catalogs are XML files, you can either use XML tools to
manage them or use <strong>xmlcatalog</strong> for this. The basic step is
to create a catalog the -create option provide this facility:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --create tst.xml
orchis:~/XML -&gt; </pre><p>This should be sufficient for most debugging purpose, this was
actuallyused heavily to debug the XML Catalog implementation itself.</p><h3><a name="Declaring" id="Declaring">How to create and maintain</a>catalogs:</h3><p>Basically XML Catalogs are XML files, you can either use XML tools
tomanage them or use <strong>xmlcatalog</strong>for this. The basic step
isto create a catalog the -create option provide this facility:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --create tst.xml
&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"/&gt;
orchis:~/XML -&gt; </pre><p>By default xmlcatalog does not overwrite the original catalog and save the
result on the standard output, this can be overridden using the -noout
option. The <code>-add</code> command allows to add entries in the
catalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --noout --create --add "public" \
orchis:~/XML -&gt; </pre><p>By default xmlcatalog does not overwrite the original catalog and save
theresult on the standard output, this can be overridden using the
-nooutoption. The <code>-add</code>command allows to add entries in
thecatalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --noout --create --add "public" \
"-//OASIS//DTD DocBook XML V4.1.2//EN" \
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd tst.xml
orchis:~/XML -&gt; cat tst.xml
@@ -174,83 +174,82 @@ orchis:~/XML -&gt; cat tst.xml
&lt;public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/&gt;
&lt;/catalog&gt;
orchis:~/XML -&gt; </pre><p>The <code>-add</code> option will always take 3 parameters even if some of
the XML Catalog constructs (like nextCatalog) will have only a single
argument, just pass a third empty string, it will be ignored.</p><p>Similarly the <code>-del</code> option remove matching entries from the
catalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --del \
orchis:~/XML -&gt; </pre><p>The <code>-add</code>option will always take 3 parameters even if some
ofthe XML Catalog constructs (like nextCatalog) will have only a
singleargument, just pass a third empty string, it will be ignored.</p><p>Similarly the <code>-del</code>option remove matching entries from
thecatalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --del \
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" tst.xml
&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"/&gt;
orchis:~/XML -&gt; </pre><p>The catalog is now empty. Note that the matching of <code>-del</code> is
exact and would have worked in a similar fashion with the Public ID
string.</p><p>This is rudimentary but should be sufficient to manage a not too complex
catalog tree of resources.</p><h3><a name="implemento" id="implemento">The implementor corner quick review of the
API:</a></h3><p>First, and like for every other module of libxml, there is an
automatically generated <a href="html/libxml-catalog.html">API page for
catalog support</a>.</p><p>The header for the catalog interfaces should be included as:</p><pre>#include &lt;libxml/catalog.h&gt;</pre><p>The API is voluntarily kept very simple. First it is not obvious that
applications really need access to it since it is the default behaviour of
libxml2 (Note: it is possible to completely override libxml2 default catalog
by using <a href="html/libxml-parser.html">xmlSetExternalEntityLoader</a> to
plug an application specific resolver).</p><p>Basically libxml2 support 2 catalog lists:</p><ul><li>the default one, global shared by all the application</li>
<li>a per-document catalog, this one is built if the document uses the
<code>oasis-xml-catalog</code> PIs to specify its own catalog list, it is
associated to the parser context and destroyed when the parsing context
is destroyed.</li>
</ul><p>the document one will be used first if it exists.</p><h4>Initialization routines:</h4><p>xmlInitializeCatalog(), xmlLoadCatalog() and xmlLoadCatalogs() should be
used at startup to initialize the catalog, if the catalog should be
initialized with specific values xmlLoadCatalog() or xmlLoadCatalogs()
should be called before xmlInitializeCatalog() which would otherwise do a
default initialization first.</p><p>The xmlCatalogAddLocal() call is used by the parser to grow the document
own catalog list if needed.</p><h4>Preferences setup:</h4><p>The XML Catalog spec requires the possibility to select default
preferences between public and system delegation,
xmlCatalogSetDefaultPrefer() allows this, xmlCatalogSetDefaults() and
xmlCatalogGetDefaults() allow to control if XML Catalogs resolution should
be forbidden, allowed for global catalog, for document catalog or both, the
default is to allow both.</p><p>And of course xmlCatalogSetDebug() allows to generate debug messages
(through the xmlGenericError() mechanism).</p><h4>Querying routines:</h4><p>xmlCatalogResolve(), xmlCatalogResolveSystem(), xmlCatalogResolvePublic()
and xmlCatalogResolveURI() are relatively explicit if you read the XML
Catalog specification they correspond to section 7 algorithms, they should
also work if you have loaded an SGML catalog with a simplified semantic.</p><p>xmlCatalogLocalResolve() and xmlCatalogLocalResolveURI() are the same but
operate on the document catalog list</p><h4>Cleanup and Miscellaneous:</h4><p>xmlCatalogCleanup() free-up the global catalog, xmlCatalogFreeLocal() is
the per-document equivalent.</p><p>xmlCatalogAdd() and xmlCatalogRemove() are used to dynamically modify the
first catalog in the global list, and xmlCatalogDump() allows to dump a
catalog state, those routines are primarily designed for xmlcatalog, I'm not
sure that exposing more complex interfaces (like navigation ones) would be
really useful.</p><p>The xmlParseCatalogFile() is a function used to load XML Catalog files,
it's similar as xmlParseFile() except it bypass all catalog lookups, it's
provided because this functionality may be useful for client tools.</p><h4>threaded environments:</h4><p>Since the catalog tree is built progressively, some care has been taken to
try to avoid troubles in multithreaded environments. The code is now thread
safe assuming that the libxml2 library has been compiled with threads
support.</p><p></p><h3><a name="Other" id="Other">Other resources</a></h3><p>The XML Catalog specification is relatively recent so there isn't much
literature to point at:</p><ul><li>You can find a good rant from Norm Walsh about <a href="http://www.arbortext.com/Think_Tank/XML_Resources/Issue_Three/issue_three.html">the
need for catalogs</a>, it provides a lot of context informations even if
I don't agree with everything presented. Norm also wrote a more recent
article <a href="http://wwws.sun.com/software/xml/developers/resolver/article/">XML
entities and URI resolvers</a> describing them.</li>
<li>An <a href="http://home.ccil.org/~cowan/XML/XCatalog.html">old XML
catalog proposal</a> from John Cowan</li>
<li>The <a href="http://www.rddl.org/">Resource Directory Description
Language</a> (RDDL) another catalog system but more oriented toward
providing metadata for XML namespaces.</li>
<li>the page from the OASIS Technical <a href="http://www.oasis-open.org/committees/entity/">Committee on Entity
Resolution</a> who maintains XML Catalog, you will find pointers to the
specification update, some background and pointers to others tools
providing XML Catalog support</li>
<li>There is a <a href="buildDocBookCatalog">shell script</a> to generate
XML Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/
directory, it will set-up /etc/xml/catalog and /etc/xml/docbook based on
the resources found on the system. Otherwise it will just create
~/xmlcatalog and ~/dbkxmlcatalog and doing:
orchis:~/XML -&gt; </pre><p>The catalog is now empty. Note that the matching of
<code>-del</code>isexact and would have worked in a similar fashion with the
Public IDstring.</p><p>This is rudimentary but should be sufficient to manage a not too
complexcatalog tree of resources.</p><h3><a name="implemento" id="implemento">The implementor corner quick review of
theAPI:</a></h3><p>First, and like for every other module of libxml, there is anautomatically
generated <a href="html/libxml-catalog.html">API page forcatalog
support</a>.</p><p>The header for the catalog interfaces should be included as:</p><pre>#include &lt;libxml/catalog.h&gt;</pre><p>The API is voluntarily kept very simple. First it is not obvious
thatapplications really need access to it since it is the default behaviour
oflibxml2 (Note: it is possible to completely override libxml2 default
catalogby using <a href="html/libxml-parser.html">xmlSetExternalEntityLoader</a>toplug an
application specific resolver).</p><p>Basically libxml2 support 2 catalog lists:</p><ul><li>the default one, global shared by all the application</li>
<li>a per-document catalog, this one is built if the document uses
the<code>oasis-xml-catalog</code>PIs to specify its own catalog list, it
isassociated to the parser context and destroyed when the parsing
contextis destroyed.</li>
</ul><p>the document one will be used first if it exists.</p><h4>Initialization routines:</h4><p>xmlInitializeCatalog(), xmlLoadCatalog() and xmlLoadCatalogs() should
beused at startup to initialize the catalog, if the catalog should
beinitialized with specific values xmlLoadCatalog() or
xmlLoadCatalogs()should be called before xmlInitializeCatalog() which would
otherwise do adefault initialization first.</p><p>The xmlCatalogAddLocal() call is used by the parser to grow the
documentown catalog list if needed.</p><h4>Preferences setup:</h4><p>The XML Catalog spec requires the possibility to select defaultpreferences
between public and system delegation,xmlCatalogSetDefaultPrefer() allows
this, xmlCatalogSetDefaults() andxmlCatalogGetDefaults() allow to control if
XML Catalogs resolution shouldbe forbidden, allowed for global catalog, for
document catalog or both, thedefault is to allow both.</p><p>And of course xmlCatalogSetDebug() allows to generate debug
messages(through the xmlGenericError() mechanism).</p><h4>Querying routines:</h4><p>xmlCatalogResolve(), xmlCatalogResolveSystem(),
xmlCatalogResolvePublic()and xmlCatalogResolveURI() are relatively explicit
if you read the XMLCatalog specification they correspond to section 7
algorithms, they shouldalso work if you have loaded an SGML catalog with a
simplified semantic.</p><p>xmlCatalogLocalResolve() and xmlCatalogLocalResolveURI() are the same
butoperate on the document catalog list</p><h4>Cleanup and Miscellaneous:</h4><p>xmlCatalogCleanup() free-up the global catalog, xmlCatalogFreeLocal()
isthe per-document equivalent.</p><p>xmlCatalogAdd() and xmlCatalogRemove() are used to dynamically modify
thefirst catalog in the global list, and xmlCatalogDump() allows to dump
acatalog state, those routines are primarily designed for xmlcatalog, I'm
notsure that exposing more complex interfaces (like navigation ones) would
bereally useful.</p><p>The xmlParseCatalogFile() is a function used to load XML Catalog
files,it's similar as xmlParseFile() except it bypass all catalog lookups,
it'sprovided because this functionality may be useful for client tools.</p><h4>threaded environments:</h4><p>Since the catalog tree is built progressively, some care has been taken
totry to avoid troubles in multithreaded environments. The code is now
threadsafe assuming that the libxml2 library has been compiled with
threadssupport.</p><p></p><h3><a name="Other" id="Other">Other resources</a></h3><p>The XML Catalog specification is relatively recent so there isn't
muchliterature to point at:</p><ul><li>You can find a good rant from Norm Walsh about <a href="http://www.arbortext.com/Think_Tank/XML_Resources/Issue_Three/issue_three.html">theneed
for catalogs</a>, it provides a lot of context informations even ifI
don't agree with everything presented. Norm also wrote a more
recentarticle <a href="http://wwws.sun.com/software/xml/developers/resolver/article/">XMLentities
and URI resolvers</a>describing them.</li>
<li>An <a href="http://home.ccil.org/~cowan/XML/XCatalog.html">old
XMLcatalog proposal</a>from John Cowan</li>
<li>The <a href="http://www.rddl.org/">Resource Directory
DescriptionLanguage</a>(RDDL) another catalog system but more oriented
towardproviding metadata for XML namespaces.</li>
<li>the page from the OASIS Technical <a href="http://www.oasis-open.org/committees/entity/">Committee on
EntityResolution</a>who maintains XML Catalog, you will find pointers to
thespecification update, some background and pointers to others
toolsproviding XML Catalog support</li>
<li>There is a <a href="buildDocBookCatalog">shell script</a>to generateXML
Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/directory,
it will set-up /etc/xml/catalog and /etc/xml/docbook based onthe
resources found on the system. Otherwise it will just create~/xmlcatalog
and ~/dbkxmlcatalog and doing:
<p><code>export XML_CATALOG_FILES=$HOME/xmlcatalog</code></p>
<p>should allow to process DocBook documentations without requiring
network accesses for the DTD or stylesheets</p>
<p>should allow to process DocBook documentations without
requiringnetwork accesses for the DTD or stylesheets</p>
</li>
<li>I have uploaded <a href="ftp://xmlsoft.org/libxml2/test/dbk412catalog.tar.gz">a
small tarball</a> containing XML Catalogs for DocBook 4.1.2 which seems
to work fine for me too</li>
<li>The <a href="http://www.xmlsoft.org/xmlcatalog_man.html">xmlcatalog
manual page</a></li>
</ul><p>If you have suggestions for corrections or additions, simply contact
me:</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
<li>I have uploaded <a href="ftp://xmlsoft.org/libxml2/test/dbk412catalog.tar.gz">asmall
tarball</a>containing XML Catalogs for DocBook 4.1.2 which seemsto work
fine for me too</li>
<li>The <a href="http://www.xmlsoft.org/xmlcatalog_man.html">xmlcatalogmanual
page</a></li>
</ul><p>If you have suggestions for corrections or additions, simply contactme:</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -7,34 +7,33 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Contributions</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Contributions</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ul><li>Bjorn Reese, William Brack and Thomas Broyer have provided a number of
patches, Gary Pennington worked on the validation API, threading support
and Solaris port.</li>
</style><title>Contributions</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Contributions</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ul><li>Bjorn Reese, William Brack and Thomas Broyer have provided a number
ofpatches, Gary Pennington worked on the validation API, threading
supportand Solaris port.</li>
<li>John Fleck helps maintaining the documentation and man pages.</li>
<li><a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a> is now the
maintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
binaries</a></li>
<li><a href="mailto:Gary.Pennington@sun.com">Gary Pennington</a> provides
<a href="http://garypennington.net/libxml2/">Solaris binaries</a></li>
<li><a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
Sergeant</a> developed <a href="http://axkit.org/download/">XML::LibXSLT</a>, a Perl wrapper for
libxml2/libxslt as part of the <a href="http://axkit.com/">AxKit XML
application server</a></li>
<li><a href="mailto:fnatter@gmx.net">Felix Natter</a> and <a href="mailto:geertk@ai.rug.nl">Geert Kloosterman</a> provide <a href="libxml-doc.el">an emacs module</a> to lookup libxml(2) functions
documentation</li>
<li><a href="mailto:sherwin@nlm.nih.gov">Ziying Sherwin</a> provided <a href="http://xmlsoft.org/messages/0488.html">man pages</a></li>
<li>there is a module for <a href="http://acs-misc.sourceforge.net/nsxml.html">libxml/libxslt support
in OpenNSD/AOLServer</a></li>
<li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provided the
first version of libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
<li>Petr Kozelka provides <a href="http://sourceforge.net/projects/libxml2-pas">Pascal units to glue
libxml2</a> with Kylix and Delphi and other Pascal compilers</li>
<li><a href="mailto:aleksey@aleksey.com">Aleksey Sanin</a> implemented the
<a href="http://www.w3.org/Signature/">XML Canonicalization and XML
Digital Signature</a> <a href="http://www.aleksey.com/xmlsec/">implementations for libxml2</a></li>
<li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a> and
contributors maintain <a href="http://tclxml.sourceforge.net/">tcl
bindings for libxml2 and libxslt</a>, as well as <a href="http://tclxml.sf.net/tkxmllint.html">tkxmllint</a> a GUI for
xmllint and <a href="http://tclxml.sf.net/tkxsltproc.html">tkxsltproc</a>
a GUI for xsltproc.</li>
<li><a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a>is now
themaintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he
providesbinaries</a></li>
<li><a href="mailto:Gary.Pennington@sun.com">Gary Pennington</a>provides<a href="http://garypennington.net/libxml2/">Solaris binaries</a></li>
<li><a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">MattSergeant</a>developed
<a href="http://axkit.org/download/">XML::LibXSLT</a>, a Perl wrapper
forlibxml2/libxslt as part of the <a href="http://axkit.com/">AxKit
XMLapplication server</a></li>
<li><a href="mailto:fnatter@gmx.net">Felix Natter</a>and <a href="mailto:geertk@ai.rug.nl">Geert Kloosterman</a>provide <a href="libxml-doc.el">an emacs module</a>to lookup libxml(2)
functionsdocumentation</li>
<li><a href="mailto:sherwin@nlm.nih.gov">Ziying Sherwin</a>provided <a href="http://xmlsoft.org/messages/0488.html">man pages</a></li>
<li>there is a module for <a href="http://acs-misc.sourceforge.net/nsxml.html">libxml/libxslt
supportin OpenNSD/AOLServer</a></li>
<li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a>provided
thefirst version of libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
<li>Petr Kozelka provides <a href="http://sourceforge.net/projects/libxml2-pas">Pascal units to
gluelibxml2</a>with Kylix and Delphi and other Pascal compilers</li>
<li><a href="mailto:aleksey@aleksey.com">Aleksey Sanin</a>implemented the<a href="http://www.w3.org/Signature/">XML Canonicalization and XMLDigital
Signature</a><a href="http://www.aleksey.com/xmlsec/">implementations for
libxml2</a></li>
<li><a href="mailto:Steve.Ball@explain.com.au">Steve
Ball</a>andcontributors maintain <a href="http://tclxml.sourceforge.net/">tclbindings for libxml2 and
libxslt</a>, as well as <a href="http://tclxml.sf.net/tkxmllint.html">tkxmllint</a>a GUI forxmllint
and <a href="http://tclxml.sf.net/tkxsltproc.html">tkxsltproc</a>a GUI
for xsltproc.</li>
</ul><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -707,6 +707,7 @@ void <a href="#xmlResetError">xmlResetError</a> (<a href="libxml2-xmlerror.htm
<a name="XML_SCHEMAV_CVC_TYPE_2">XML_SCHEMAV_CVC_TYPE_2</a> = 1876 /* 1876 */
<a name="XML_SCHEMAV_CVC_IDC">XML_SCHEMAV_CVC_IDC</a> = 1877 /* 1877 */
<a name="XML_SCHEMAV_CVC_WILDCARD">XML_SCHEMAV_CVC_WILDCARD</a> = 1878 /* 1878 */
<a name="XML_SCHEMAV_MISC">XML_SCHEMAV_MISC</a> = 1879 /* 1879 */
<a name="XML_XPTR_UNKNOWN_SCHEME">XML_XPTR_UNKNOWN_SCHEME</a> = 1900
<a name="XML_XPTR_CHILDSEQ_START">XML_XPTR_CHILDSEQ_START</a> = 1901 /* 1901 */
<a name="XML_XPTR_EVAL_FAILED">XML_XPTR_EVAL_FAILED</a> = 1902 /* 1902 */

View File

@@ -72,6 +72,7 @@ int <a href="#xmlXPathCastNodeSetToBoolean">xmlXPathCastNodeSetToBoolean</a> (<a
typedef <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> <a href="#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a> (void * ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlXPathCastNodeToString">xmlXPathCastNodeToString</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
int <a href="#xmlXPathIsNaN">xmlXPathIsNaN</a> (double val);
int <a href="#xmlXPathContextSetCache">xmlXPathContextSetCache</a> (<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br/> int active, <br/> int value, <br/> int options);
<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathConvertString">xmlXPathConvertString</a> (<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a> (<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
int <a href="#xmlXPathIsInf">xmlXPathIsInf</a> (double val);
@@ -209,7 +210,8 @@ The content of this structure is not made public by the API.
<a href="libxml2-xmlerror.html#xmlError">xmlError</a> lastError : the last error
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> debugNode : the source node XSLT dictionnary
<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict : dictionnary if any
int flags : flags to control compilation
int flags : flags to control compilation Cache for reusal of XPath objects
void * cache
} xmlXPathContext;
</pre><p/>
</div>
@@ -435,6 +437,10 @@ The content of this structure is not made public by the API.
<div class="refsect2" lang="en"><h3><a name="xmlXPathCompiledEval"/>xmlXPathCompiledEval ()</h3><pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathCompiledEval (<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br/> <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br/>
</pre><p>Evaluate the Precompiled XPath expression in the given context.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the compiled XPath expression</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlXPathContextSetCache"/>xmlXPathContextSetCache ()</h3><pre class="programlisting">int xmlXPathContextSetCache (<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br/> int active, <br/> int value, <br/> int options)<br/>
</pre><p>Creates/frees an object cache on the XPath context. If activates XPath objects (xmlXPathObject) will be cached internally to be reused. @options: 0: This will set the XPath object caching: @value: This will set the maximum number of XPath objects to be cached per slot There are 5 slots for: node-set, string, number, boolean, and misc objects. Use &lt;0 for the default number (100). Other values for @options have currently no effect.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>active</tt></i>:</span></td><td>enables/disables (creates/frees) the cache</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>a value with semantics dependant on @options</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>options (currently only the value 0 is used)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the setting succeeded, and -1 on API or internal errors.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlXPathConvertBoolean"/>xmlXPathConvertBoolean ()</h3><pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathConvertBoolean (<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br/>
</pre><p>Converts an existing object to its boolean() equivalent</p>

View File

@@ -1297,6 +1297,7 @@
<function name="XML_SCHEMAV_INVALIDATTR" link="libxml2-xmlerror.html#XML_SCHEMAV_INVALIDATTR"/>
<function name="XML_SCHEMAV_INVALIDELEM" link="libxml2-xmlerror.html#XML_SCHEMAV_INVALIDELEM"/>
<function name="XML_SCHEMAV_ISABSTRACT" link="libxml2-xmlerror.html#XML_SCHEMAV_ISABSTRACT"/>
<function name="XML_SCHEMAV_MISC" link="libxml2-xmlerror.html#XML_SCHEMAV_MISC"/>
<function name="XML_SCHEMAV_MISSING" link="libxml2-xmlerror.html#XML_SCHEMAV_MISSING"/>
<function name="XML_SCHEMAV_NOROLLBACK" link="libxml2-xmlerror.html#XML_SCHEMAV_NOROLLBACK"/>
<function name="XML_SCHEMAV_NOROOT" link="libxml2-xmlerror.html#XML_SCHEMAV_NOROOT"/>
@@ -3320,6 +3321,7 @@
<function name="xmlXPathCompiledEval ()" link="libxml2-xpath.html#xmlXPathCompiledEval"/>
<function name="xmlXPathConcatFunction ()" link="libxml2-xpathInternals.html#xmlXPathConcatFunction"/>
<function name="xmlXPathContainsFunction ()" link="libxml2-xpathInternals.html#xmlXPathContainsFunction"/>
<function name="xmlXPathContextSetCache ()" link="libxml2-xpath.html#xmlXPathContextSetCache"/>
<function name="xmlXPathConvertBoolean ()" link="libxml2-xpath.html#xmlXPathConvertBoolean"/>
<function name="xmlXPathConvertNumber ()" link="libxml2-xpath.html#xmlXPathConvertNumber"/>
<function name="xmlXPathConvertString ()" link="libxml2-xpath.html#xmlXPathConvertString"/>

File diff suppressed because one or more lines are too long

View File

@@ -7,30 +7,30 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Downloads</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Downloads</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The latest versions of libxml2 can be found on the <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a> server ( <a href="http://xmlsoft.org/sources/">HTTP</a>, <a href="ftp://xmlsoft.org/libxml2/">FTP</a> and rsync are available), there is also
mirrors (<a href="ftp://ftp.planetmirror.com/pub/xmlsoft/">Australia</a>( <a href="http://xmlsoft.planetmirror.com/">Web</a>), <a href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> as <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">source archive</a>
, Antonin Sprinzl also provide <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
mirror in Austria</a>. (NOTE that you need both the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml(2)</a> and <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml(2)-devel</a>
packages installed to compile applications using libxml.)</p><p>You can find all the history of libxml(2) and libxslt releases in the <a href="http://xmlsoft.org/sources/old/">old</a> directory. The precompiled
Windows binaries made by Igor Zlatovic are available in the <a href="http://xmlsoft.org/sources/win32/">win32</a> directory.</p><p>Binary ports:</p><ul><li>Red Hat RPMs for i386 are available directly on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>, the source RPM will compile on
any architecture supported by Red Hat.</li>
<li><a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a> is now the
maintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
binaries</a>.</li>
<li>Blastwave provides <a href="http://www.blastwave.org/packages.php/libxml2">Solaris
binaries</a>.</li>
<li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a> provides <a href="http://www.explain.com.au/oss/libxml2xslt.html">Mac Os X
binaries</a>.</li>
</style><title>Downloads</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Downloads</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The latest versions of libxml2 can be found on the <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>server ( <a href="http://xmlsoft.org/sources/">HTTP</a>, <a href="ftp://xmlsoft.org/libxml2/">FTP</a>and rsync are available), there is
alsomirrors (<a href="ftp://ftp.planetmirror.com/pub/xmlsoft/">Australia</a>(
<a href="http://xmlsoft.planetmirror.com/">Web</a>), <a href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a>as <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">source archive</a>,
Antonin Sprinzl also provide <a href="ftp://gd.tuwien.ac.at/pub/libxml/">amirror in Austria</a>. (NOTE that
you need both the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml(2)</a>and <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml(2)-devel</a>packages
installed to compile applications using libxml.)</p><p>You can find all the history of libxml(2) and libxslt releases in the <a href="http://xmlsoft.org/sources/old/">old</a>directory. The
precompiledWindows binaries made by Igor Zlatovic are available in the <a href="http://xmlsoft.org/sources/win32/">win32</a>directory.</p><p>Binary ports:</p><ul><li>Red Hat RPMs for i386 are available directly on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>, the source RPM will
compile onany architecture supported by Red Hat.</li>
<li><a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a>is now
themaintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he
providesbinaries</a>.</li>
<li>Blastwave provides <a href="http://www.blastwave.org/packages.php/libxml2">Solarisbinaries</a>.</li>
<li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a>provides <a href="http://www.explain.com.au/oss/libxml2xslt.html">Mac Os
Xbinaries</a>.</li>
<li>The HP-UX porting center provides <a href="http://hpux.connect.org.uk/hppd/hpux/Gnome/">HP-UX binaries</a></li>
<li>Bull provides precompiled <a href="http://gnome.bullfreeware.com/new_index.html">RPMs for AIX</a> as
patr of their GNOME packages</li>
<li>Bull provides precompiled <a href="http://gnome.bullfreeware.com/new_index.html">RPMs for
AIX</a>aspatr of their GNOME packages</li>
</ul><p>If you know other supported binary ports, please <a href="http://veillard.com/">contact me</a>.</p><p><a name="Snapshot" id="Snapshot">Snapshot:</a></p><ul><li>Code from the W3C cvs base libxml2 module, updated hourly <a href="ftp://xmlsoft.org/libxml2/libxml2-cvs-snapshot.tar.gz">libxml2-cvs-snapshot.tar.gz</a>.</li>
<li>Docs, content of the web site, the list archive included <a href="ftp://xmlsoft.org/libxml2/libxml-docs.tar.gz">libxml-docs.tar.gz</a>.</li>
</ul><p><a name="Contribs" id="Contribs">Contributions:</a></p><p>I do accept external contributions, especially if compiling on another
platform, get in touch with the list to upload the package, wrappers for
various languages have been provided, and can be found in the <a href="python.html">bindings section</a></p><p>Libxml2 is also available from CVS:</p><ul><li><p>The <a href="http://cvs.gnome.org/viewcvs/libxml2/">Gnome CVS
base</a>. Check the <a href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>
page; the CVS module is <b>libxml2</b>.</p>
</ul><p><a name="Contribs" id="Contribs">Contributions:</a></p><p>I do accept external contributions, especially if compiling on
anotherplatform, get in touch with the list to upload the package, wrappers
forvarious languages have been provided, and can be found in the <a href="python.html">bindings section</a></p><p>Libxml2 is also available from CVS:</p><ul><li><p>The <a href="http://cvs.gnome.org/viewcvs/libxml2/">Gnome
CVSbase</a>. Check the <a href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>page;
the CVS module is <b>libxml2</b>.</p>
</li>
<li>The <strong>libxslt</strong> module is also present there</li>
<li>The <strong>libxslt</strong>module is also present there</li>
</ul><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -7,44 +7,44 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Encodings support</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Encodings support</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>If you are not really familiar with Internationalization (usual shortcut
is I18N) , Unicode, characters and glyphs, I suggest you read a <a href="http://www.tbray.org/ongoing/When/200x/2003/04/06/Unicode">presentation</a>
by Tim Bray on Unicode and why you should care about it.</p><p>If you don't understand why <b>it does not make sense to have a string
without knowing what encoding it uses</b>, then as Joel Spolsky said <a href="http://www.joelonsoftware.com/articles/Unicode.html">please do not
write another line of code until you finish reading that article.</a>. It is
a prerequisite to understand this page, and avoid a lot of problems with
libxml2, XML or text processing in general.</p><p>Table of Content:</p><ol><li><a href="encoding.html#What">What does internationalization support
mean ?</a></li>
<li><a href="encoding.html#internal">The internal encoding, how and
why</a></li>
</style><title>Encodings support</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Encodings support</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>If you are not really familiar with Internationalization (usual shortcutis
I18N) , Unicode, characters and glyphs, I suggest you read a <a href="http://www.tbray.org/ongoing/When/200x/2003/04/06/Unicode">presentation</a>by
Tim Bray on Unicode and why you should care about it.</p><p>If you don't understand why <b>it does not make sense to have a
stringwithout knowing what encoding it uses</b>, then as Joel Spolsky said <a href="http://www.joelonsoftware.com/articles/Unicode.html">please do notwrite
another line of code until you finish reading that article.</a>. It isa
prerequisite to understand this page, and avoid a lot of problems
withlibxml2, XML or text processing in general.</p><p>Table of Content:</p><ol><li><a href="encoding.html#What">What does internationalization supportmean
?</a></li>
<li><a href="encoding.html#internal">The internal encoding, how
andwhy</a></li>
<li><a href="encoding.html#implemente">How is it implemented ?</a></li>
<li><a href="encoding.html#Default">Default supported encodings</a></li>
<li><a href="encoding.html#extend">How to extend the existing
support</a></li>
</ol><h3><a name="What" id="What">What does internationalization support mean ?</a></h3><p>XML was designed from the start to allow the support of any character set
by using Unicode. Any conformant XML parser has to support the UTF-8 and
UTF-16 default encodings which can both express the full unicode ranges. UTF8
is a variable length encoding whose greatest points are to reuse the same
encoding for ASCII and to save space for Western encodings, but it is a bit
more complex to handle in practice. UTF-16 use 2 bytes per character (and
sometimes combines two pairs), it makes implementation easier, but looks a
bit overkill for Western languages encoding. Moreover the XML specification
allows the document to be encoded in other encodings at the condition that
they are clearly labeled as such. For example the following is a wellformed
XML document encoded in ISO-8859-1 and using accentuated letters that we
French like for both markup and content:</p><pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
<li><a href="encoding.html#extend">How to extend the
existingsupport</a></li>
</ol><h3><a name="What" id="What">What does internationalization support mean ?</a></h3><p>XML was designed from the start to allow the support of any character
setby using Unicode. Any conformant XML parser has to support the UTF-8
andUTF-16 default encodings which can both express the full unicode ranges.
UTF8is a variable length encoding whose greatest points are to reuse the
sameencoding for ASCII and to save space for Western encodings, but it is a
bitmore complex to handle in practice. UTF-16 use 2 bytes per character
(andsometimes combines two pairs), it makes implementation easier, but looks
abit overkill for Western languages encoding. Moreover the XML
specificationallows the document to be encoded in other encodings at the
condition thatthey are clearly labeled as such. For example the following is
a wellformedXML document encoded in ISO-8859-1 and using accentuated letters
that weFrench like for both markup and content:</p><pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;tr<EFBFBD>s&gt;l<EFBFBD>&lt;/tr<74>s&gt;</pre><p>Having internationalization support in libxml2 means the following:</p><ul><li>the document is properly parsed</li>
<li>informations about it's encoding are saved</li>
<li>it can be modified</li>
<li>it can be saved in its original encoding</li>
<li>it can also be saved in another encoding supported by libxml2 (for
example straight UTF8 or even an ASCII form)</li>
</ul><p>Another very important point is that the whole libxml2 API, with the
exception of a few routines to read with a specific encoding or save to a
specific encoding, is completely agnostic about the original encoding of the
document.</p><p>It should be noted too that the HTML parser embedded in libxml2 now obey
the same rules too, the following document will be (as of 2.2.2) handled in
an internationalized fashion by libxml2 too:</p><pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
<li>it can also be saved in another encoding supported by libxml2
(forexample straight UTF8 or even an ASCII form)</li>
</ul><p>Another very important point is that the whole libxml2 API, with
theexception of a few routines to read with a specific encoding or save to
aspecific encoding, is completely agnostic about the original encoding of
thedocument.</p><p>It should be noted too that the HTML parser embedded in libxml2 now
obeythe same rules too, the following document will be (as of 2.2.2) handled
inan internationalized fashion by libxml2 too:</p><pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;html lang="fr"&gt;
&lt;head&gt;
@@ -52,59 +52,60 @@ an internationalized fashion by libxml2 too:</p><pre>&lt;!DOCTYPE HTML PUBLIC "-
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;W3C cr<63>e des standards pour le Web.&lt;/body&gt;
&lt;/html&gt;</pre><h3><a name="internal" id="internal">The internal encoding, how and why</a></h3><p>One of the core decisions was to force all documents to be converted to a
default internal encoding, and that encoding to be UTF-8, here are the
rationales for those choices:</p><ul><li>keeping the native encoding in the internal form would force the libxml
users (or the code associated) to be fully aware of the encoding of the
original document, for examples when adding a text node to a document,
the content would have to be provided in the document encoding, i.e. the
client code would have to check it before hand, make sure it's conformant
to the encoding, etc ... Very hard in practice, though in some specific
cases this may make sense.</li>
<li>the second decision was which encoding. From the XML spec only UTF8 and
UTF16 really makes sense as being the two only encodings for which there
is mandatory support. UCS-4 (32 bits fixed size encoding) could be
considered an intelligent choice too since it's a direct Unicode mapping
support. I selected UTF-8 on the basis of efficiency and compatibility
with surrounding software:
<ul><li>UTF-8 while a bit more complex to convert from/to (i.e. slightly
more costly to import and export CPU wise) is also far more compact
than UTF-16 (and UCS-4) for a majority of the documents I see it used
for right now (RPM RDF catalogs, advogato data, various configuration
file formats, etc.) and the key point for today's computer
architecture is efficient uses of caches. If one nearly double the
memory requirement to store the same amount of data, this will trash
caches (main memory/external caches/internal caches) and my take is
that this harms the system far more than the CPU requirements needed
for the conversion to UTF-8</li>
<li>Most of libxml2 version 1 users were using it with straight ASCII
most of the time, doing the conversion with an internal encoding
requiring all their code to be rewritten was a serious show-stopper
for using UTF-16 or UCS-4.</li>
<li>UTF-8 is being used as the de-facto internal encoding standard for
related code like the <a href="http://www.pango.org/">pango</a>
upcoming Gnome text widget, and a lot of Unix code (yet another place
where Unix programmer base takes a different approach from Microsoft
- they are using UTF-16)</li>
&lt;/html&gt;</pre><h3><a name="internal" id="internal">The internal encoding, how and why</a></h3><p>One of the core decisions was to force all documents to be converted to
adefault internal encoding, and that encoding to be UTF-8, here are
therationales for those choices:</p><ul><li>keeping the native encoding in the internal form would force the
libxmlusers (or the code associated) to be fully aware of the encoding of
theoriginal document, for examples when adding a text node to a
document,the content would have to be provided in the document encoding,
i.e. theclient code would have to check it before hand, make sure it's
conformantto the encoding, etc ... Very hard in practice, though in some
specificcases this may make sense.</li>
<li>the second decision was which encoding. From the XML spec only UTF8
andUTF16 really makes sense as being the two only encodings for which
thereis mandatory support. UCS-4 (32 bits fixed size encoding) could
beconsidered an intelligent choice too since it's a direct Unicode
mappingsupport. I selected UTF-8 on the basis of efficiency and
compatibilitywith surrounding software:
<ul><li>UTF-8 while a bit more complex to convert from/to (i.e.
slightlymore costly to import and export CPU wise) is also far more
compactthan UTF-16 (and UCS-4) for a majority of the documents I see
it usedfor right now (RPM RDF catalogs, advogato data, various
configurationfile formats, etc.) and the key point for today's
computerarchitecture is efficient uses of caches. If one nearly
double thememory requirement to store the same amount of data, this
will trashcaches (main memory/external caches/internal caches) and my
take isthat this harms the system far more than the CPU requirements
neededfor the conversion to UTF-8</li>
<li>Most of libxml2 version 1 users were using it with straight
ASCIImost of the time, doing the conversion with an internal
encodingrequiring all their code to be rewritten was a serious
show-stopperfor using UTF-16 or UCS-4.</li>
<li>UTF-8 is being used as the de-facto internal encoding standard
forrelated code like the <a href="http://www.pango.org/">pango</a>upcoming Gnome text widget, and
a lot of Unix code (yet another placewhere Unix programmer base takes
a different approach from Microsoft- they are using UTF-16)</li>
</ul></li>
</ul><p>What does this mean in practice for the libxml2 user:</p><ul><li>xmlChar, the libxml2 data type is a byte, those bytes must be assembled
as UTF-8 valid strings. The proper way to terminate an xmlChar * string
is simply to append 0 byte, as usual.</li>
<li>One just need to make sure that when using chars outside the ASCII set,
the values has been properly converted to UTF-8</li>
</ul><h3><a name="implemente" id="implemente">How is it implemented ?</a></h3><p>Let's describe how all this works within libxml, basically the I18N
(internationalization) support get triggered only during I/O operation, i.e.
when reading a document or saving one. Let's look first at the reading
sequence:</p><ol><li>when a document is processed, we usually don't know the encoding, a
simple heuristic allows to detect UTF-16 and UCS-4 from encodings where
the ASCII range (0-0x7F) maps with ASCII</li>
<li>the xml declaration if available is parsed, including the encoding
declaration. At that point, if the autodetected encoding is different
from the one declared a call to xmlSwitchEncoding() is issued.</li>
<li>If there is no encoding declaration, then the input has to be in either
UTF-8 or UTF-16, if it is not then at some point when processing the
input, the converter/checker of UTF-8 form will raise an encoding error.
You may end-up with a garbled document, or no document at all ! Example:
</ul><p>What does this mean in practice for the libxml2 user:</p><ul><li>xmlChar, the libxml2 data type is a byte, those bytes must be
assembledas UTF-8 valid strings. The proper way to terminate an xmlChar *
stringis simply to append 0 byte, as usual.</li>
<li>One just need to make sure that when using chars outside the ASCII
set,the values has been properly converted to UTF-8</li>
</ul><h3><a name="implemente" id="implemente">How is it implemented ?</a></h3><p>Let's describe how all this works within libxml, basically the
I18N(internationalization) support get triggered only during I/O operation,
i.e.when reading a document or saving one. Let's look first at the
readingsequence:</p><ol><li>when a document is processed, we usually don't know the encoding,
asimple heuristic allows to detect UTF-16 and UCS-4 from encodings
wherethe ASCII range (0-0x7F) maps with ASCII</li>
<li>the xml declaration if available is parsed, including the
encodingdeclaration. At that point, if the autodetected encoding is
differentfrom the one declared a call to xmlSwitchEncoding() is
issued.</li>
<li>If there is no encoding declaration, then the input has to be in
eitherUTF-8 or UTF-16, if it is not then at some point when processing
theinput, the converter/checker of UTF-8 form will raise an encoding
error.You may end-up with a garbled document, or no document at all !
Example:
<pre>~/XML -&gt; ./xmllint err.xml
err.xml:1: error: Input is not proper UTF-8, indicate encoding !
&lt;tr<EFBFBD>s&gt;l<EFBFBD>&lt;/tr<74>s&gt;
@@ -113,94 +114,94 @@ err.xml:1: error: Bytes: 0xE8 0x73 0x3E 0x6C
&lt;tr<EFBFBD>s&gt;l<EFBFBD>&lt;/tr<74>s&gt;
^</pre>
</li>
<li>xmlSwitchEncoding() does an encoding name lookup, canonicalize it, and
then search the default registered encoding converters for that encoding.
If it's not within the default set and iconv() support has been compiled
it, it will ask iconv for such an encoder. If this fails then the parser
will report an error and stops processing:
<li>xmlSwitchEncoding() does an encoding name lookup, canonicalize it,
andthen search the default registered encoding converters for that
encoding.If it's not within the default set and iconv() support has been
compiledit, it will ask iconv for such an encoder. If this fails then the
parserwill report an error and stops processing:
<pre>~/XML -&gt; ./xmllint err2.xml
err2.xml:1: error: Unsupported encoding UnsupportedEnc
&lt;?xml version="1.0" encoding="UnsupportedEnc"?&gt;
^</pre>
</li>
<li>From that point the encoder processes progressively the input (it is
plugged as a front-end to the I/O module) for that entity. It captures
and converts on-the-fly the document to be parsed to UTF-8. The parser
itself just does UTF-8 checking of this input and process it
transparently. The only difference is that the encoding information has
been added to the parsing context (more precisely to the input
corresponding to this entity).</li>
<li>The result (when using DOM) is an internal form completely in UTF-8
with just an encoding information on the document node.</li>
</ol><p>Ok then what happens when saving the document (assuming you
collected/built an xmlDoc DOM like structure) ? It depends on the function
called, xmlSaveFile() will just try to save in the original encoding, while
xmlSaveFileTo() and xmlSaveFileEnc() can optionally save to a given
encoding:</p><ol><li>if no encoding is given, libxml2 will look for an encoding value
associated to the document and if it exists will try to save to that
encoding,
<li>From that point the encoder processes progressively the input (it
isplugged as a front-end to the I/O module) for that entity. It
capturesand converts on-the-fly the document to be parsed to UTF-8. The
parseritself just does UTF-8 checking of this input and process
ittransparently. The only difference is that the encoding information
hasbeen added to the parsing context (more precisely to the
inputcorresponding to this entity).</li>
<li>The result (when using DOM) is an internal form completely in UTF-8with
just an encoding information on the document node.</li>
</ol><p>Ok then what happens when saving the document (assuming youcollected/built
an xmlDoc DOM like structure) ? It depends on the functioncalled,
xmlSaveFile() will just try to save in the original encoding,
whilexmlSaveFileTo() and xmlSaveFileEnc() can optionally save to a
givenencoding:</p><ol><li>if no encoding is given, libxml2 will look for an encoding
valueassociated to the document and if it exists will try to save to
thatencoding,
<p>otherwise everything is written in the internal form, i.e. UTF-8</p>
</li>
<li>so if an encoding was specified, either at the API level or on the
document, libxml2 will again canonicalize the encoding name, lookup for a
converter in the registered set or through iconv. If not found the
function will return an error code</li>
<li>the converter is placed before the I/O buffer layer, as another kind of
buffer, then libxml2 will simply push the UTF-8 serialization to through
that buffer, which will then progressively be converted and pushed onto
the I/O layer.</li>
<li>It is possible that the converter code fails on some input, for example
trying to push an UTF-8 encoded Chinese character through the UTF-8 to
ISO-8859-1 converter won't work. Since the encoders are progressive they
will just report the error and the number of bytes converted, at that
point libxml2 will decode the offending character, remove it from the
buffer and replace it with the associated charRef encoding &amp;#123; and
resume the conversion. This guarantees that any document will be saved
without losses (except for markup names where this is not legal, this is
a problem in the current version, in practice avoid using non-ascii
characters for tag or attribute names). A special "ascii" encoding name
is used to save documents to a pure ascii form can be used when
portability is really crucial</li>
<li>so if an encoding was specified, either at the API level or on
thedocument, libxml2 will again canonicalize the encoding name, lookup
for aconverter in the registered set or through iconv. If not found
thefunction will return an error code</li>
<li>the converter is placed before the I/O buffer layer, as another kind
ofbuffer, then libxml2 will simply push the UTF-8 serialization to
throughthat buffer, which will then progressively be converted and pushed
ontothe I/O layer.</li>
<li>It is possible that the converter code fails on some input, for
exampletrying to push an UTF-8 encoded Chinese character through the
UTF-8 toISO-8859-1 converter won't work. Since the encoders are
progressive theywill just report the error and the number of bytes
converted, at thatpoint libxml2 will decode the offending character,
remove it from thebuffer and replace it with the associated charRef
encoding &amp;#123; andresume the conversion. This guarantees that any
document will be savedwithout losses (except for markup names where this
is not legal, this isa problem in the current version, in practice avoid
using non-asciicharacters for tag or attribute names). A special "ascii"
encoding nameis used to save documents to a pure ascii form can be used
whenportability is really crucial</li>
</ol><p>Here are a few examples based on the same test document:</p><pre>~/XML -&gt; ./xmllint isolat1
&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;tr<EFBFBD>s&gt;l<EFBFBD>&lt;/tr<74>s&gt;
~/XML -&gt; ./xmllint --encode UTF-8 isolat1
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;très&gt;l<EFBFBD> <20>&lt;/très&gt;
~/XML -&gt; </pre><p>The same processing is applied (and reuse most of the code) for HTML I18N
processing. Looking up and modifying the content encoding is a bit more
difficult since it is located in a &lt;meta&gt; tag under the &lt;head&gt;,
so a couple of functions htmlGetMetaEncoding() and htmlSetMetaEncoding() have
been provided. The parser also attempts to switch encoding on the fly when
detecting such a tag on input. Except for that the processing is the same
(and again reuses the same code).</p><h3><a name="Default" id="Default">Default supported encodings</a></h3><p>libxml2 has a set of default converters for the following encodings
(located in encoding.c):</p><ol><li>UTF-8 is supported by default (null handlers)</li>
~/XML -&gt; </pre><p>The same processing is applied (and reuse most of the code) for HTML
I18Nprocessing. Looking up and modifying the content encoding is a bit
moredifficult since it is located in a &lt;meta&gt; tag under the
&lt;head&gt;,so a couple of functions htmlGetMetaEncoding() and
htmlSetMetaEncoding() havebeen provided. The parser also attempts to switch
encoding on the fly whendetecting such a tag on input. Except for that the
processing is the same(and again reuses the same code).</p><h3><a name="Default" id="Default">Default supported encodings</a></h3><p>libxml2 has a set of default converters for the following
encodings(located in encoding.c):</p><ol><li>UTF-8 is supported by default (null handlers)</li>
<li>UTF-16, both little and big endian</li>
<li>ISO-Latin-1 (ISO-8859-1) covering most western languages</li>
<li>ASCII, useful mostly for saving</li>
<li>HTML, a specific handler for the conversion of UTF-8 to ASCII with HTML
predefined entities like &amp;copy; for the Copyright sign.</li>
</ol><p>More over when compiled on an Unix platform with iconv support the full
set of encodings supported by iconv can be instantly be used by libxml. On a
linux machine with glibc-2.1 the list of supported encodings and aliases fill
3 full pages, and include UCS-4, the full set of ISO-Latin encodings, and the
various Japanese ones.</p><p>To convert from the UTF-8 values returned from the API to another encoding
then it is possible to use the function provided from <a href="html/libxml-encoding.html">the encoding module</a> like <a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a>, or use the
POSIX <a href="http://www.opengroup.org/onlinepubs/009695399/functions/iconv.html">iconv()</a>
API directly.</p><h4>Encoding aliases</h4><p>From 2.2.3, libxml2 has support to register encoding names aliases. The
goal is to be able to parse document whose encoding is supported but where
the name differs (for example from the default set of names accepted by
iconv). The following functions allow to register and handle new aliases for
existing encodings. Once registered libxml2 will automatically lookup the
aliases when handling a document:</p><ul><li>int xmlAddEncodingAlias(const char *name, const char *alias);</li>
<li>HTML, a specific handler for the conversion of UTF-8 to ASCII with
HTMLpredefined entities like &amp;copy; for the Copyright sign.</li>
</ol><p>More over when compiled on an Unix platform with iconv support the fullset
of encodings supported by iconv can be instantly be used by libxml. On alinux
machine with glibc-2.1 the list of supported encodings and aliases fill3 full
pages, and include UCS-4, the full set of ISO-Latin encodings, and thevarious
Japanese ones.</p><p>To convert from the UTF-8 values returned from the API to another
encodingthen it is possible to use the function provided from <a href="html/libxml-encoding.html">the encoding module</a>like <a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a>, or use
thePOSIX <a href="http://www.opengroup.org/onlinepubs/009695399/functions/iconv.html">iconv()</a>API
directly.</p><h4>Encoding aliases</h4><p>From 2.2.3, libxml2 has support to register encoding names aliases.
Thegoal is to be able to parse document whose encoding is supported but
wherethe name differs (for example from the default set of names accepted
byiconv). The following functions allow to register and handle new aliases
forexisting encodings. Once registered libxml2 will automatically lookup
thealiases when handling a document:</p><ul><li>int xmlAddEncodingAlias(const char *name, const char *alias);</li>
<li>int xmlDelEncodingAlias(const char *alias);</li>
<li>const char * xmlGetEncodingAlias(const char *alias);</li>
<li>void xmlCleanupEncodingAliases(void);</li>
</ul><h3><a name="extend" id="extend">How to extend the existing support</a></h3><p>Well adding support for new encoding, or overriding one of the encoders
(assuming it is buggy) should not be hard, just write input and output
conversion routines to/from UTF-8, and register them using
xmlNewCharEncodingHandler(name, xxxToUTF8, UTF8Toxxx), and they will be
called automatically if the parser(s) encounter such an encoding name
(register it uppercase, this will help). The description of the encoders,
their arguments and expected return values are described in the encoding.h
header.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
</ul><h3><a name="extend" id="extend">How to extend the existing support</a></h3><p>Well adding support for new encoding, or overriding one of the
encoders(assuming it is buggy) should not be hard, just write input and
outputconversion routines to/from UTF-8, and register them
usingxmlNewCharEncodingHandler(name, xxxToUTF8, UTF8Toxxx), and they will
becalled automatically if the parser(s) encounter such an encoding
name(register it uppercase, this will help). The description of the
encoders,their arguments and expected return values are described in the
encoding.hheader.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -7,19 +7,18 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>How to help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>How to help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>You can help the project in various ways, the best thing to do first is to
subscribe to the mailing-list as explained before, check the <a href="http://mail.gnome.org/archives/xml/">archives </a>and the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnome bug
database</a>:</p><ol><li>Provide patches when you find problems.</li>
<li>Provide the diffs when you port libxml2 to a new platform. They may not
be integrated in all cases but help pinpointing portability problems
and</li>
<li>Provide documentation fixes (either as patches to the code comments or
as HTML diffs).</li>
<li>Provide new documentations pieces (translations, examples, etc
...).</li>
</style><title>How to help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>How to help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>You can help the project in various ways, the best thing to do first is
tosubscribe to the mailing-list as explained before, check the <a href="http://mail.gnome.org/archives/xml/">archives </a>and the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnome
bugdatabase</a>:</p><ol><li>Provide patches when you find problems.</li>
<li>Provide the diffs when you port libxml2 to a new platform. They may
notbe integrated in all cases but help pinpointing portability
problemsand</li>
<li>Provide documentation fixes (either as patches to the code comments
oras HTML diffs).</li>
<li>Provide new documentations pieces (translations, examples, etc...).</li>
<li>Check the TODO file and try to close one of the items.</li>
<li>Take one of the points raised in the archive or the bug database and
provide a fix. <a href="mailto:daniel@veillard.com">Get in touch with me
</a>before to avoid synchronization problems and check that the suggested
fix will fit in nicely :-)</li>
<li>Take one of the points raised in the archive or the bug database
andprovide a fix. <a href="mailto:daniel@veillard.com">Get in touch with
me</a>before to avoid synchronization problems and check that the
suggestedfix will fit in nicely :-)</li>
</ol><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -657,6 +657,7 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD
<a name="XML_SCHEMAV_CVC_TYPE_2" id="XML_SCHEMAV_CVC_TYPE_2">XML_SCHEMAV_CVC_TYPE_2</a> = 1876 : 1876
<a name="XML_SCHEMAV_CVC_IDC" id="XML_SCHEMAV_CVC_IDC">XML_SCHEMAV_CVC_IDC</a> = 1877 : 1877
<a name="XML_SCHEMAV_CVC_WILDCARD" id="XML_SCHEMAV_CVC_WILDCARD">XML_SCHEMAV_CVC_WILDCARD</a> = 1878 : 1878
<a name="XML_SCHEMAV_MISC" id="XML_SCHEMAV_MISC">XML_SCHEMAV_MISC</a> = 1879 : 1879
<a name="XML_XPTR_UNKNOWN_SCHEME" id="XML_XPTR_UNKNOWN_SCHEME">XML_XPTR_UNKNOWN_SCHEME</a> = 1900
<a name="XML_XPTR_CHILDSEQ_START" id="XML_XPTR_CHILDSEQ_START">XML_XPTR_CHILDSEQ_START</a> = 1901 : 1901
<a name="XML_XPTR_EVAL_FAILED" id="XML_XPTR_EVAL_FAILED">XML_XPTR_EVAL_FAILED</a> = 1902 : 1902

View File

@@ -51,6 +51,7 @@ The content of this structure is not made public by the API.
<pre class="programlisting">int <a href="#xmlXPathCmpNodes">xmlXPathCmpNodes</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node1, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node2)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> <a href="#xmlXPathCompile">xmlXPathCompile</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathCompiledEval">xmlXPathCompiledEval</a> (<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br /> <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)</pre>
<pre class="programlisting">int <a href="#xmlXPathContextSetCache">xmlXPathContextSetCache</a> (<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br /> int active, <br /> int value, <br /> int options)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)</pre>
<pre class="programlisting">Function type: <a href="#xmlXPathConvertFunc">xmlXPathConvertFunc</a>
int <a href="#xmlXPathConvertFunc">xmlXPathConvertFunc</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj, <br /> int type)
@@ -138,7 +139,8 @@ The content of this structure is not made public by the API.
<a href="libxml-xmlerror.html#xmlError">xmlError</a> lastError : the last error
<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> debugNode : the source node XSLT dictionnary
<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict : dictionnary if any
int flags : flags to control compilation
int flags : flags to control compilation Cache for
void * cache
}</pre><h3>Enum <a name="xmlXPathError" id="xmlXPathError">xmlXPathError</a></h3><pre class="programlisting">Enum xmlXPathError {
<a name="XPATH_EXPRESSION_OK" id="XPATH_EXPRESSION_OK">XPATH_EXPRESSION_OK</a> = 0
<a name="XPATH_NUMBER_ERROR" id="XPATH_NUMBER_ERROR">XPATH_NUMBER_ERROR</a> = 1
@@ -244,7 +246,9 @@ The content of this structure is not made public by the API.
</pre><p>Compile an XPath expression</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the XPath expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> resulting from the compilation or NULL. the caller has to free the object.</td></tr></tbody></table></div><h3><a name="xmlXPathCompiledEval" id="xmlXPathCompiledEval"></a>Function: xmlXPathCompiledEval</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathCompiledEval (<a href="libxml-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br /> <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br />
</pre><p>Evaluate the Precompiled XPath expression in the given context.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the compiled XPath expression</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td></tr></tbody></table></div><h3><a name="xmlXPathConvertBoolean" id="xmlXPathConvertBoolean"></a>Function: xmlXPathConvertBoolean</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathConvertBoolean (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br />
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the compiled XPath expression</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td></tr></tbody></table></div><h3><a name="xmlXPathContextSetCache" id="xmlXPathContextSetCache"></a>Function: xmlXPathContextSetCache</h3><pre class="programlisting">int xmlXPathContextSetCache (<a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br /> int active, <br /> int value, <br /> int options)<br />
</pre><p>Creates/frees an object cache on the XPath context. If activates XPath objects (xmlXPathObject) will be cached internally to be reused. @options: 0: This will set the XPath object caching: @value: This will set the maximum number of XPath objects to be cached per slot There are 5 slots for: node-set, string, number, boolean, and misc objects. Use &lt;0 for the default number (100). Other values for @options have currently no effect.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>active</tt></i>:</span></td><td>enables/disables (creates/frees) the cache</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>a value with semantics dependant on @options</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>options (currently only the value 0 is used)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the setting succeeded, and -1 on API or internal errors.</td></tr></tbody></table></div><h3><a name="xmlXPathConvertBoolean" id="xmlXPathConvertBoolean"></a>Function: xmlXPathConvertBoolean</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathConvertBoolean (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br />
</pre><p>Converts an existing object to its boolean() equivalent</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>an XPath object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new object, the old one is freed (or the operation is done directly on @val)</td></tr></tbody></table></div><h3><a name="xmlXPathConvertFunc" id="xmlXPathConvertFunc"></a>Function type: xmlXPathConvertFunc</h3><pre class="programlisting">Function type: xmlXPathConvertFunc
int xmlXPathConvertFunc (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj, <br /> int type)

View File

@@ -216,74 +216,73 @@ A:link, A:visited, A:active { text-decoration: underline }
<tr>
<td bgcolor="#fffacd">
<p></p>
<p style="text-align: right; font-style: italic; font-size: 10pt">"Programming
with libxml2 is like the thrilling embrace of an exotic stranger." <a href="http://diveintomark.org/archives/2004/02/18/libxml2">Mark
Pilgrim</a></p>
<p>Libxml2 is the XML C parser and toolkit developed for the Gnome project
(but usable outside of the Gnome platform), it is free software available
under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
License</a>. XML itself is a metalanguage to design markup languages, i.e.
text language where semantic and structure are added to the content using
extra "markup" information enclosed between angle brackets. HTML is the most
well-known markup language. Though the library is written in C <a href="python.html">a variety of language bindings</a> make it available in
other environments.</p>
<p>Libxml2 is known to be very portable, the library should build and work
without serious troubles on a variety of systems (Linux, Unix, Windows,
CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)</p>
<p>Libxml2 implements a number of existing standards related to markup
languages:</p>
<p style="text-align: right; font-style: italic; font-size: 10pt">"Programmingwith
libxml2 is like the thrilling embrace of an exotic stranger." <a href="http://diveintomark.org/archives/2004/02/18/libxml2">MarkPilgrim</a></p>
<p>Libxml2 is the XML C parser and toolkit developed for the Gnome
project(but usable outside of the Gnome platform), it is free software
availableunder the <a href="http://www.opensource.org/licenses/mit-license.html">MITLicense</a>.
XML itself is a metalanguage to design markup languages, i.e.text language
where semantic and structure are added to the content usingextra "markup"
information enclosed between angle brackets. HTML is the mostwell-known
markup language. Though the library is written in C <a href="python.html">a
variety of language bindings</a>make it available inother environments.</p>
<p>Libxml2 is known to be very portable, the library should build and
workwithout serious troubles on a variety of systems (Linux, Unix,
Windows,CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)</p>
<p>Libxml2 implements a number of existing standards related to
markuplanguages:</p>
<ul><li>the XML standard: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></li>
<li>Namespaces in XML: <a href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a></li>
<li>XML Base: <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a></li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC 2396</a> :
Uniform Resource Identifiers <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a></li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC
2396</a>:Uniform Resource Identifiers <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a></li>
<li>XML Path Language (XPath) 1.0: <a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a></li>
<li>HTML4 parser: <a href="http://www.w3.org/TR/html401/">http://www.w3.org/TR/html401/</a></li>
<li>XML Pointer Language (XPointer) Version 1.0: <a href="http://www.w3.org/TR/xptr">http://www.w3.org/TR/xptr</a></li>
<li>XML Inclusions (XInclude) Version 1.0: <a href="http://www.w3.org/TR/xinclude/">http://www.w3.org/TR/xinclude/</a></li>
<li>ISO-8859-x encodings, as well as <a href="http://www.cis.ohio-state.edu/rfc/rfc2044.txt">rfc2044</a> [UTF-8]
and <a href="http://www.cis.ohio-state.edu/rfc/rfc2781.txt">rfc2781</a>
[UTF-16] Unicode encodings, and more if using iconv support</li>
<li>ISO-8859-x encodings, as well as <a href="http://www.cis.ohio-state.edu/rfc/rfc2044.txt">rfc2044</a>[UTF-8]and
<a href="http://www.cis.ohio-state.edu/rfc/rfc2781.txt">rfc2781</a>[UTF-16]
Unicode encodings, and more if using iconv support</li>
<li>part of SGML Open Technical Resolution TR9401:1997</li>
<li>XML Catalogs Working Draft 06 August 2001: <a href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">http://www.oasis-open.org/committees/entity/spec-2001-08-06.html</a></li>
<li>Canonical XML Version 1.0: <a href="http://www.w3.org/TR/xml-c14n">http://www.w3.org/TR/xml-c14n</a>
and the Exclusive XML Canonicalization CR draft <a href="http://www.w3.org/TR/xml-exc-c14n">http://www.w3.org/TR/xml-exc-c14n</a></li>
<li>Canonical XML Version 1.0: <a href="http://www.w3.org/TR/xml-c14n">http://www.w3.org/TR/xml-c14n</a>and
the Exclusive XML Canonicalization CR draft <a href="http://www.w3.org/TR/xml-exc-c14n">http://www.w3.org/TR/xml-exc-c14n</a></li>
<li>Relax NG, ISO/IEC 19757-2:2003, <a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">http://www.oasis-open.org/committees/relax-ng/spec-20011203.html</a></li>
<li>W3C XML Schemas Part 2: Datatypes <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">REC 02 May
2001</a></li>
<li>W3C <a href="http://www.w3.org/TR/xml-id/">xml:id</a> Working Draft 7
April 2004</li>
<li>W3C XML Schemas Part 2: Datatypes <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">REC 02
May2001</a></li>
<li>W3C <a href="http://www.w3.org/TR/xml-id/">xml:id</a>Working Draft
7April 2004</li>
</ul>
<p>In most cases libxml2 tries to implement the specifications in a
relatively strictly compliant way. As of release 2.4.16, libxml2 passed all
1800+ tests from the <a href="http://www.oasis-open.org/committees/xml-conformance/">OASIS XML Tests
Suite</a>.</p>
<p>To some extent libxml2 provides support for the following additional
specifications but doesn't claim to implement them completely:</p>
<ul><li>Document Object Model (DOM) <a href="http://www.w3.org/TR/DOM-Level-2-Core/">http://www.w3.org/TR/DOM-Level-2-Core/</a>
the document model, but it doesn't implement the API itself, gdome2 does
this on top of libxml2</li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc959.txt">RFC 959</a> :
libxml2 implements a basic FTP client code</li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc1945.txt">RFC 1945</a> :
HTTP/1.0, again a basic HTTP client code</li>
<li>SAX: a SAX2 like interface and a minimal SAX1 implementation compatible
with early expat versions</li>
<p>In most cases libxml2 tries to implement the specifications in arelatively
strictly compliant way. As of release 2.4.16, libxml2 passed all1800+ tests
from the <a href="http://www.oasis-open.org/committees/xml-conformance/">OASIS XML
TestsSuite</a>.</p>
<p>To some extent libxml2 provides support for the following
additionalspecifications but doesn't claim to implement them completely:</p>
<ul><li>Document Object Model (DOM) <a href="http://www.w3.org/TR/DOM-Level-2-Core/">http://www.w3.org/TR/DOM-Level-2-Core/</a>the
document model, but it doesn't implement the API itself, gdome2 doesthis
on top of libxml2</li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc959.txt">RFC
959</a>:libxml2 implements a basic FTP client code</li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc1945.txt">RFC
1945</a>:HTTP/1.0, again a basic HTTP client code</li>
<li>SAX: a SAX2 like interface and a minimal SAX1 implementation
compatiblewith early expat versions</li>
</ul>
<p>A partial implementation of <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schemas Part
1: Structure</a> is being worked on but it would be far too early to make any
conformance statement about it at the moment.</p>
<p>A partial implementation of <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schemas Part1:
Structure</a>is being worked on but it would be far too early to make
anyconformance statement about it at the moment.</p>
<p>Separate documents:</p>
<ul><li><a href="http://xmlsoft.org/XSLT/">the libxslt page</a> providing an
implementation of XSLT 1.0 and common extensions like EXSLT for
libxml2</li>
<li><a href="http://www.cs.unibo.it/~casarini/gdome2/">the gdome2 page</a>
: a standard DOM2 implementation for libxml2</li>
<li><a href="http://www.aleksey.com/xmlsec/">the XMLSec page</a>: an
implementation of <a href="http://www.w3.org/TR/xmldsig-core/">W3C XML
Digital Signature</a> for libxml2</li>
<li>also check the related links section below for more related and active
projects.</li>
<ul><li><a href="http://xmlsoft.org/XSLT/">the libxslt page</a>providing
animplementation of XSLT 1.0 and common extensions like EXSLT
forlibxml2</li>
<li><a href="http://www.cs.unibo.it/~casarini/gdome2/">the gdome2 page</a>:
a standard DOM2 implementation for libxml2</li>
<li><a href="http://www.aleksey.com/xmlsec/">the XMLSec page</a>:
animplementation of <a href="http://www.w3.org/TR/xmldsig-core/">W3C
XMLDigital Signature</a>for libxml2</li>
<li>also check the related links section below for more related and
activeprojects.</li>
</ul>
<p>Logo designed by <a href="mailto:liyanage@access.ch">Marc Liyanage</a>.</p>
<p>

File diff suppressed because one or more lines are too long

View File

@@ -7,25 +7,23 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Introduction</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Introduction</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This document describes libxml, the <a href="http://www.w3.org/XML/">XML</a> C parser and toolkit developed for the
<a href="http://www.gnome.org/">Gnome</a> project. <a href="http://www.w3.org/XML/">XML is a standard</a> for building tag-based
structured documents/data.</p><p>Here are some key points about libxml:</p><ul><li>Libxml2 exports Push (progressive) and Pull (blocking) type parser
interfaces for both XML and HTML.</li>
<li>Libxml2 can do DTD validation at parse time, using a parsed document
instance, or with an arbitrary DTD.</li>
<li>Libxml2 includes complete <a href="http://www.w3.org/TR/xpath">XPath</a>, <a href="http://www.w3.org/TR/xptr">XPointer</a> and <a href="http://www.w3.org/TR/xinclude">XInclude</a> implementations.</li>
<li>It is written in plain C, making as few assumptions as possible, and
sticking closely to ANSI C/POSIX for easy embedding. Works on
Linux/Unix/Windows, ported to a number of other platforms.</li>
<li>Basic support for HTTP and FTP client allowing applications to fetch
remote resources.</li>
</style><title>Introduction</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Introduction</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This document describes libxml, the <a href="http://www.w3.org/XML/">XML</a>C parser and toolkit developed for the<a href="http://www.gnome.org/">Gnome</a>project. <a href="http://www.w3.org/XML/">XML is a standard</a>for building
tag-basedstructured documents/data.</p><p>Here are some key points about libxml:</p><ul><li>Libxml2 exports Push (progressive) and Pull (blocking) type
parserinterfaces for both XML and HTML.</li>
<li>Libxml2 can do DTD validation at parse time, using a parsed
documentinstance, or with an arbitrary DTD.</li>
<li>Libxml2 includes complete <a href="http://www.w3.org/TR/xpath">XPath</a>, <a href="http://www.w3.org/TR/xptr">XPointer</a>and <a href="http://www.w3.org/TR/xinclude">XInclude</a>implementations.</li>
<li>It is written in plain C, making as few assumptions as possible,
andsticking closely to ANSI C/POSIX for easy embedding. Works
onLinux/Unix/Windows, ported to a number of other platforms.</li>
<li>Basic support for HTTP and FTP client allowing applications to
fetchremote resources.</li>
<li>The design is modular, most of the extensions can be compiled out.</li>
<li>The internal document representation is as close as possible to the <a href="http://www.w3.org/DOM/">DOM</a> interfaces.</li>
<li>Libxml2 also has a <a href="http://www.megginson.com/SAX/index.html">SAX like interface</a>;
the interface is designed to be compatible with <a href="http://www.jclark.com/xml/expat.html">Expat</a>.</li>
<li>This library is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
License</a>. See the Copyright file in the distribution for the precise
wording.</li>
</ul><p>Warning: unless you are forced to because your application links with a
Gnome-1.X library requiring it, <strong><span style="background-color: #FF0000">Do Not Use libxml1</span></strong>, use
libxml2</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
<li>The internal document representation is as close as possible to the <a href="http://www.w3.org/DOM/">DOM</a>interfaces.</li>
<li>Libxml2 also has a <a href="http://www.megginson.com/SAX/index.html">SAX like interface</a>;the
interface is designed to be compatible with <a href="http://www.jclark.com/xml/expat.html">Expat</a>.</li>
<li>This library is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MITLicense</a>.
See the Copyright file in the distribution for the precisewording.</li>
</ul><p>Warning: unless you are forced to because your application links with
aGnome-1.X library requiring it, <strong><span style="background-color: #FF0000">Do Not Use libxml1</span></strong>,
uselibxml2</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -2270,6 +2270,7 @@
<exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3' type='enum'/>
<exports symbol='XML_ERR_ENCODING_NAME' type='enum'/>
<exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5' type='enum'/>
<exports symbol='XML_SCHEMAV_MISC' type='enum'/>
<exports symbol='XML_IO_ECONNREFUSED' type='enum'/>
<exports symbol='XML_ERR_XMLDECL_NOT_FINISHED' type='enum'/>
<exports symbol='XML_SCHEMAP_P_PROPS_CORRECT_1' type='enum'/>
@@ -3498,6 +3499,7 @@
<exports symbol='xmlXPathFuncLookupFunc' type='function'/>
<exports symbol='xmlXPathCastNodeToString' type='function'/>
<exports symbol='xmlXPathIsNaN' type='function'/>
<exports symbol='xmlXPathContextSetCache' type='function'/>
<exports symbol='xmlXPathConvertString' type='function'/>
<exports symbol='xmlXPathConvertBoolean' type='function'/>
<exports symbol='xmlXPathIsInf' type='function'/>
@@ -5521,6 +5523,7 @@
<enum name='XML_SCHEMAV_INVALIDATTR' file='xmlerror' value='1814' type='xmlParserErrors' info='1814'/>
<enum name='XML_SCHEMAV_INVALIDELEM' file='xmlerror' value='1815' type='xmlParserErrors' info='1815'/>
<enum name='XML_SCHEMAV_ISABSTRACT' file='xmlerror' value='1808' type='xmlParserErrors' info='1808'/>
<enum name='XML_SCHEMAV_MISC' file='xmlerror' value='1879' type='xmlParserErrors' info='1879'/>
<enum name='XML_SCHEMAV_MISSING' file='xmlerror' value='1804' type='xmlParserErrors' info='1804'/>
<enum name='XML_SCHEMAV_NOROLLBACK' file='xmlerror' value='1807' type='xmlParserErrors' info='1807'/>
<enum name='XML_SCHEMAV_NOROOT' file='xmlerror' value='1801' type='xmlParserErrors'/>
@@ -6686,7 +6689,8 @@ Could we use @subtypes for this?'/>
<field name='lastError' type='xmlError' info=' the last error'/>
<field name='debugNode' type='xmlNodePtr' info=' the source node XSLT dictionnary'/>
<field name='dict' type='xmlDictPtr' info=' dictionnary if any'/>
<field name='flags' type='int' info=' flags to control compilation'/>
<field name='flags' type='int' info=' flags to control compilation Cache for reusal of XPath objects'/>
<field name='cache' type='void *' info=''/>
</struct>
<typedef name='xmlXPathContextPtr' file='xpath' type='xmlXPathContext *'/>
<typedef name='xmlXPathError' file='xpath' type='enum'/>
@@ -16980,6 +16984,15 @@ Could we use @subtypes for this?'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
<function name='xmlXPathContextSetCache' file='xpath' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>Creates/frees an object cache on the XPath context. If activates XPath objects (xmlXPathObject) will be cached internally to be reused. @options: 0: This will set the XPath object caching: @value: This will set the maximum number of XPath objects to be cached per slot There are 5 slots for: node-set, string, number, boolean, and misc objects. Use &lt;0 for the default number (100). Other values for @options have currently no effect.</info>
<return type='int' info='0 if the setting succeeded, and -1 on API or internal errors.'/>
<arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
<arg name='active' type='int' info='enables/disables (creates/frees) the cache'/>
<arg name='value' type='int' info='a value with semantics dependant on @options'/>
<arg name='options' type='int' info='options (currently only the value 0 is used)'/>
</function>
<function name='xmlXPathConvertBoolean' file='xpath' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>Converts an existing object to its boolean() equivalent</info>

View File

@@ -1193,6 +1193,7 @@
<reference name='XML_SCHEMAV_INVALIDATTR' href='html/libxml-xmlerror.html#XML_SCHEMAV_INVALIDATTR'/>
<reference name='XML_SCHEMAV_INVALIDELEM' href='html/libxml-xmlerror.html#XML_SCHEMAV_INVALIDELEM'/>
<reference name='XML_SCHEMAV_ISABSTRACT' href='html/libxml-xmlerror.html#XML_SCHEMAV_ISABSTRACT'/>
<reference name='XML_SCHEMAV_MISC' href='html/libxml-xmlerror.html#XML_SCHEMAV_MISC'/>
<reference name='XML_SCHEMAV_MISSING' href='html/libxml-xmlerror.html#XML_SCHEMAV_MISSING'/>
<reference name='XML_SCHEMAV_NOROLLBACK' href='html/libxml-xmlerror.html#XML_SCHEMAV_NOROLLBACK'/>
<reference name='XML_SCHEMAV_NOROOT' href='html/libxml-xmlerror.html#XML_SCHEMAV_NOROOT'/>
@@ -3286,6 +3287,7 @@
<reference name='xmlXPathContainsFunction' href='html/libxml-xpathInternals.html#xmlXPathContainsFunction'/>
<reference name='xmlXPathContext' href='html/libxml-xpath.html#xmlXPathContext'/>
<reference name='xmlXPathContextPtr' href='html/libxml-xpath.html#xmlXPathContextPtr'/>
<reference name='xmlXPathContextSetCache' href='html/libxml-xpath.html#xmlXPathContextSetCache'/>
<reference name='xmlXPathConvertBoolean' href='html/libxml-xpath.html#xmlXPathConvertBoolean'/>
<reference name='xmlXPathConvertFunc' href='html/libxml-xpath.html#xmlXPathConvertFunc'/>
<reference name='xmlXPathConvertNumber' href='html/libxml-xpath.html#xmlXPathConvertNumber'/>
@@ -4693,6 +4695,7 @@
<ref name='XML_SCHEMAV_INVALIDATTR'/>
<ref name='XML_SCHEMAV_INVALIDELEM'/>
<ref name='XML_SCHEMAV_ISABSTRACT'/>
<ref name='XML_SCHEMAV_MISC'/>
<ref name='XML_SCHEMAV_MISSING'/>
<ref name='XML_SCHEMAV_NOROLLBACK'/>
<ref name='XML_SCHEMAV_NOROOT'/>
@@ -6822,6 +6825,7 @@
<ref name='xmlXPathContainsFunction'/>
<ref name='xmlXPathContext'/>
<ref name='xmlXPathContextPtr'/>
<ref name='xmlXPathContextSetCache'/>
<ref name='xmlXPathConvertBoolean'/>
<ref name='xmlXPathConvertFunc'/>
<ref name='xmlXPathConvertNumber'/>
@@ -10313,6 +10317,7 @@
</type>
<type name='xmlXPathContextPtr'>
<ref name='xmlXPathCompiledEval'/>
<ref name='xmlXPathContextSetCache'/>
<ref name='xmlXPathCtxtCompile'/>
<ref name='xmlXPathEval'/>
<ref name='xmlXPathEvalExpression'/>
@@ -12960,6 +12965,7 @@
<ref name='XML_SCHEMAV_INVALIDATTR'/>
<ref name='XML_SCHEMAV_INVALIDELEM'/>
<ref name='XML_SCHEMAV_ISABSTRACT'/>
<ref name='XML_SCHEMAV_MISC'/>
<ref name='XML_SCHEMAV_MISSING'/>
<ref name='XML_SCHEMAV_NOROLLBACK'/>
<ref name='XML_SCHEMAV_NOROOT'/>
@@ -13803,6 +13809,7 @@
<ref name='xmlXPathCompiledEval'/>
<ref name='xmlXPathContext'/>
<ref name='xmlXPathContextPtr'/>
<ref name='xmlXPathContextSetCache'/>
<ref name='xmlXPathConvertBoolean'/>
<ref name='xmlXPathConvertFunc'/>
<ref name='xmlXPathConvertNumber'/>
@@ -14490,6 +14497,9 @@
<word name='CWD'>
<ref name='xmlNanoFTPCwd'/>
</word>
<word name='Cache'>
<ref name='_xmlXPathContext'/>
</word>
<word name='Call'>
<ref name='htmlInitAutoClose'/>
<ref name='xmlInitParser'/>
@@ -14821,6 +14831,7 @@
<ref name='xmlExpNewCtxt'/>
<ref name='xmlNewDoc'/>
<ref name='xmlXIncludeNewContext'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='Creation'>
<ref name='xmlNewCDataBlock'/>
@@ -16553,6 +16564,9 @@
<word name='Osmanya'>
<ref name='xmlUCSIsOsmanya'/>
</word>
<word name='Other'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='Otherwise'>
<ref name='xmlStreamPush'/>
<ref name='xmlStreamPushAttr'/>
@@ -17683,6 +17697,7 @@
</word>
<word name='There'>
<ref name='xmlExpParse'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='Those'>
<ref name='_xmlParserCtxt'/>
@@ -17892,6 +17907,7 @@
<ref name='xmlTextReaderSchemaValidate'/>
<ref name='xmlTextReaderSchemaValidateCtxt'/>
<ref name='xmlTextReaderSetSchema'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='Used'>
<ref name='XML_SCHEMAS_ANY_LAX'/>
@@ -18445,6 +18461,9 @@
<ref name='xmlTextReaderSchemaValidateCtxt'/>
<ref name='xmlTextReaderSetSchema'/>
</word>
<word name='activates'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='activation'>
<ref name='xmlGetLineNo'/>
</word>
@@ -19468,6 +19487,15 @@
</chunk>
<chunk name='chunk12'>
<letter name='c'>
<word name='cache'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='cached'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='caching:'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='calculated'>
<ref name='xmlStrncatNew'/>
</word>
@@ -20627,6 +20655,7 @@
<ref name='xmlAutomataNewTransition2'/>
<ref name='xmlCreateURI'/>
<ref name='xmlStrncatNew'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='creating'>
<ref name='xmlDOMWrapAdoptNode'/>
@@ -20677,6 +20706,7 @@
<ref name='xmlMemGet'/>
<ref name='xmlMemUsed'/>
<ref name='xmlOutputBufferCreateFilename'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='custom'>
<ref name='xmlDOMWrapAdoptNode'/>
@@ -20938,6 +20968,9 @@
<word name='deletion'>
<ref name='xmlCatalogSetDefaultPrefer'/>
</word>
<word name='dependant'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='depending'>
<ref name='xmlIsID'/>
<ref name='xmlIsRef'/>
@@ -21266,6 +21299,9 @@
<ref name='_xmlParserCtxt'/>
<ref name='xmlParseURIRaw'/>
</word>
<word name='disables'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='disabling'>
<ref name='xmlNoNetExternalEntityLoader'/>
</word>
@@ -21499,6 +21535,9 @@
<word name='edition'>
<ref name='xmlCheckLanguageID'/>
</word>
<word name='effect'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='effective'>
<ref name='xmlLoadCatalog'/>
<ref name='xmlLoadCatalogs'/>
@@ -21601,6 +21640,9 @@
<ref name='xmlSaveFile'/>
<ref name='xmlSaveFormatFile'/>
</word>
<word name='enables'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='enabling'>
<ref name='xmlLineNumbersDefault'/>
<ref name='xmlPedanticParserDefault'/>
@@ -22396,6 +22438,7 @@
</word>
<word name='for:'>
<ref name='xmlSchemaGetCanonValue'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='forbid'>
<ref name='XML_XPATH_NOVAR'/>
@@ -22499,6 +22542,7 @@
</word>
<word name='frees'>
<ref name='xmlBufferFree'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='front'>
<ref name='xmlValidateNCName'/>
@@ -23650,6 +23694,7 @@
<ref name='xmlRelaxNGNewDocParserCtxt'/>
<ref name='xmlRemoveID'/>
<ref name='xmlRemoveRef'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='interned'>
<ref name='xmlPatterncompile'/>
@@ -24429,6 +24474,7 @@
<ref name='xmlExpMaxToken'/>
<ref name='xmlExpNewCtxt'/>
<ref name='xmlPatternMaxDepth'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='maybe'>
<ref name='_xmlSchemaElement'/>
@@ -24566,6 +24612,9 @@
<word name='minute'>
<ref name='ftpListCallback'/>
</word>
<word name='misc'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='misleading'>
<ref name='xmlParsePEReference'/>
<ref name='xmlParserHandlePEReference'/>
@@ -25147,7 +25196,9 @@
<ref name='xmlXPathStringFunction'/>
</word>
<word name='objects'>
<ref name='_xmlXPathContext'/>
<ref name='xmlXPathCompareValues'/>
<ref name='xmlXPathContextSetCache'/>
<ref name='xmlXPathDivValues'/>
<ref name='xmlXPathEqualValues'/>
<ref name='xmlXPathFreeNodeSetList'/>
@@ -25416,6 +25467,7 @@
<ref name='xmlSaveToFilename'/>
<ref name='xmlSaveToIO'/>
<ref name='xmlTextReaderSchemaValidateCtxt'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='ordered'>
<ref name='xmlListAppend'/>
@@ -25725,6 +25777,7 @@
<ref name='xmlGetLastError'/>
<ref name='xmlParseAttributeType'/>
<ref name='xmlValidateElementDecl'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='performance'>
<ref name='xmlGetBufferAllocationScheme'/>
@@ -27125,11 +27178,17 @@
<word name='returning'>
<ref name='xmlXPathStringFunction'/>
</word>
<word name='reusal'>
<ref name='_xmlXPathContext'/>
</word>
<word name='reuse'>
<ref name='xmlReconciliateNs'/>
<ref name='xmlRegExecPushString'/>
<ref name='xmlRegExecPushString2'/>
</word>
<word name='reused'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='reuses'>
<ref name='htmlCtxtReadDoc'/>
<ref name='htmlCtxtReadFd'/>
@@ -27449,6 +27508,9 @@
<ref name='xmlAutomataNewNegTrans'/>
<ref name='xmlXPathNodeSetFreeNs'/>
</word>
<word name='semantics'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='sense'>
<ref name='xmlCreateEntitiesTable'/>
</word>
@@ -27565,6 +27627,7 @@
</word>
<word name='setting'>
<ref name='xmlSetGenericErrorFunc'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='setups'>
<ref name='xmlParseEncodingDecl'/>
@@ -27751,6 +27814,12 @@
<ref name='xmlParseElementMixedContentDecl'/>
<ref name='xmlSkipBlankChars'/>
</word>
<word name='slot'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='slots'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='smallest'>
<ref name='xmlXPathCeilingFunction'/>
</word>
@@ -28377,6 +28446,7 @@
<ref name='xmlHashUpdateEntry3'/>
<ref name='xmlSchemaValueAppend'/>
<ref name='xmlXPathCompareValues'/>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='succeeds'>
<ref name='xmlCheckFilename'/>
@@ -30698,6 +30768,9 @@
<word name='xmlXPathNodeTrailingSorted'>
<ref name='xmlXPathNodeTrailing'/>
</word>
<word name='xmlXPathObject'>
<ref name='xmlXPathContextSetCache'/>
</word>
<word name='xmlXPathObjectPtr'>
<ref name='xmlXPathCompiledEval'/>
<ref name='xmlXPathEval'/>

View File

@@ -8,51 +8,32 @@
</vendor>
<product id="libxml2">
<name>libxml2</name>
<version>2.6.23</version>
<last-release> Jan 5 2006</last-release>
<version>2.6.24</version>
<last-release> Apr 28 2006</last-release>
<info-url>http://xmlsoft.org/</info-url>
<changes> - portability fixes: Windows (Rob Richards), getaddrinfo on Windows
(Kolja Nowak, Rob Richards), icc warnings (Kjartan Maraas),
--with-minimum compilation fixes (William Brack), error case handling fix
on Solaris (Albert Chin), don't use 'list' as parameter name reported by
Samuel Diaz Garcia, more old Unices portability fixes (Albert Chin),
MinGW compilation (Mark Junker), HP-UX compiler warnings (Rick
Jones),
- code cleanup: xmlReportError (Adrian Mouat), remove xmlBufferClose
(Geert Jansen), unreachable code (Oleksandr Kononenko), refactoring
parsing code (Bjorn Reese)
- bug fixes: xmlBuildRelativeURI and empty path (William Brack),
combinatory explosion and performances in regexp code, leak in
xmlTextReaderReadString(), xmlStringLenDecodeEntities problem (Massimo
Morara), Identity Constraints bugs and a segfault (Kasimier Buchcik),
XPath pattern based evaluation bugs (DV &amp; Kasimier),
xmlSchemaContentModelDump() memory leak (Kasimier), potential leak in
xmlSchemaCheckCSelectorXPath(), xmlTextWriterVSprintf() misuse of
vsnprintf (William Brack), XHTML serialization fix (Rob Richards), CRLF
split problem (William), issues with non-namespaced attributes in
xmlAddChild() xmlAddNextSibling() and xmlAddPrevSibling() (Rob Richards),
HTML parsing of script, Python must not output to stdout (Nic Ferrier),
exclusive C14N namespace visibility (Aleksey Sanin), XSD dataype
totalDigits bug (Kasimier Buchcik), error handling when writing to an
xmlBuffer (Rob Richards), runtest schemas error not reported (Hisashi
Fujinaka), signed/unsigned problem in date/time code (Albert Chin), fix
XSI driven XSD validation (Kasimier), parsing of xs:decimal (Kasimier),
fix DTD writer output (Rob Richards), leak in xmlTextReaderReadInnerXml
(Gary Coady), regexp bug affecting schemas (Kasimier), configuration of
runtime debugging (Kasimier), xmlNodeBufGetContent bug on entity refs
(Oleksandr Kononenko), xmlRegExecPushString2 bug (Sreeni Nair),
compilation and build fixes (Michael Day), removed dependancies on
xmlSchemaValidError (Kasimier), bug with &lt;xml:foo/&gt;, more XPath
pattern based evaluation fixes (Kasimier)
- improvements: XSD Schemas redefinitions/restrictions (Kasimier
Buchcik), node copy checks and fix for attribute (Rob Richards), counted
transition bug in regexps, ctxt-&gt;standalone = -2 to indicate no
standalone attribute was found, add xmlSchemaSetParserStructuredErrors()
(Kasimier Buchcik), add xmlTextReaderSchemaValidateCtxt() to API
(Kasimier), handle gzipped HTTP resources (Gary Coady), add
htmlDocDumpMemoryFormat. (Rob Richards),
- documentation: typo (Michael Day), libxml man page (Albert Chin), save
function to XML buffer (Geert Jansen), small doc fix (Aron Stansvik),
<changes> - Portability fixes: configure on Windows, testapi compile on
windows(Kasimier Buchcik, venkat naidu), Borland C++ 6 compile (Eric
Zurcher),HP-UX compiler workaround (Rick Jones), xml2-config bugfix,
gcc-4.1cleanups, Python detection scheme (Joseph Sacco), UTF-8 file paths
onWindows (Roland Schwingel).
- Improvements: xmlDOMWrapReconcileNamespaces xmlDOMWrapCloneNode
(KasimierBuchcik), XML catalog debugging (Rick Jones), update to Unicode
4.01.
- Bug fixes: xmlParseChunk() problem in 2.6.23, xmlParseInNodeContext()on
HTML docs, URI behaviour on Windows (Rob Richards), comment streamingbug,
xmlParseComment (with William Brack), regexp bug fixes (DV &amp;Youri
Golovanov), xmlGetNodePath on text/CDATA (Kasimier),one Relax-NG
interleave bug, xmllint --path and --valid,XSD bugfixes (Kasimier),
remove debugleft in Python bindings (Nic Ferrier), xmlCatalogAdd bug
(Martin Cole),xmlSetProp fixes (Rob Richards), HTML IDness (Rob
Richards), a largenumber of cleanups and small fixes based on Coverity
reports, bugin character ranges, Unicode tables const (Aivars Kalvans),
schemasfix (Stefan Kost), xmlRelaxNGParse error
deallocation,xmlSchemaAddSchemaDoc error deallocation, error handling on
unallowedcode point, ixmllint --nonet to never reach the net (Gary
Coady),line break in writer after end PI (Jason Viers).
- Documentation: man pages updates and cleanups (Daniel Leidert).
- New features: Relax NG structure error handlers.
</changes>
</product>

View File

@@ -7,44 +7,44 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Namespaces</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Namespaces</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The libxml2 library implements <a href="http://www.w3.org/TR/REC-xml-names/">XML namespaces</a> support by
recognizing namespace constructs in the input, and does namespace lookup
automatically when building the DOM tree. A namespace declaration is
associated with an in-memory structure and all elements or attributes within
that namespace point to it. Hence testing the namespace is a simple and fast
equality operation at the user level.</p><p>I suggest that people using libxml2 use a namespace, and declare it in the
root element of their document as the default namespace. Then they don't need
to use the prefix in the content but we will have a basis for future semantic
refinement and merging of data from different sources. This doesn't increase
the size of the XML output significantly, but significantly increases its
value in the long-term. Example:</p><pre>&lt;mydoc xmlns="http://mydoc.example.org/schemas/"&gt;
</style><title>Namespaces</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Namespaces</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The libxml2 library implements <a href="http://www.w3.org/TR/REC-xml-names/">XML namespaces</a>support
byrecognizing namespace constructs in the input, and does namespace
lookupautomatically when building the DOM tree. A namespace declaration
isassociated with an in-memory structure and all elements or attributes
withinthat namespace point to it. Hence testing the namespace is a simple and
fastequality operation at the user level.</p><p>I suggest that people using libxml2 use a namespace, and declare it in
theroot element of their document as the default namespace. Then they don't
needto use the prefix in the content but we will have a basis for future
semanticrefinement and merging of data from different sources. This doesn't
increasethe size of the XML output significantly, but significantly increases
itsvalue in the long-term. Example:</p><pre>&lt;mydoc xmlns="http://mydoc.example.org/schemas/"&gt;
&lt;elem1&gt;...&lt;/elem1&gt;
&lt;elem2&gt;...&lt;/elem2&gt;
&lt;/mydoc&gt;</pre><p>The namespace value has to be an absolute URL, but the URL doesn't have to
point to any existing resource on the Web. It will bind all the element and
attributes with that URL. I suggest to use an URL within a domain you
control, and that the URL should contain some kind of version information if
possible. For example, <code>"http://www.gnome.org/gnumeric/1.0/"</code> is a
good namespace scheme.</p><p>Then when you load a file, make sure that a namespace carrying the
version-independent prefix is installed on the root element of your document,
and if the version information don't match something you know, warn the user
and be liberal in what you accept as the input. Also do *not* try to base
namespace checking on the prefix value. &lt;foo:text&gt; may be exactly the
same as &lt;bar:text&gt; in another document. What really matters is the URI
associated with the element or the attribute, not the prefix string (which is
just a shortcut for the full URI). In libxml, element and attributes have an
<code>ns</code> field pointing to an xmlNs structure detailing the namespace
prefix and its URI.</p><p>@@Interfaces@@</p><pre>xmlNodePtr node;
&lt;/mydoc&gt;</pre><p>The namespace value has to be an absolute URL, but the URL doesn't have
topoint to any existing resource on the Web. It will bind all the element
andattributes with that URL. I suggest to use an URL within a domain
youcontrol, and that the URL should contain some kind of version information
ifpossible. For example, <code>"http://www.gnome.org/gnumeric/1.0/"</code>is
agood namespace scheme.</p><p>Then when you load a file, make sure that a namespace carrying
theversion-independent prefix is installed on the root element of your
document,and if the version information don't match something you know, warn
the userand be liberal in what you accept as the input. Also do *not* try to
basenamespace checking on the prefix value. &lt;foo:text&gt; may be exactly
thesame as &lt;bar:text&gt; in another document. What really matters is the
URIassociated with the element or the attribute, not the prefix string (which
isjust a shortcut for the full URI). In libxml, element and attributes have
an<code>ns</code>field pointing to an xmlNs structure detailing the
namespaceprefix and its URI.</p><p>@@Interfaces@@</p><pre>xmlNodePtr node;
if(!strncmp(node-&gt;name,"mytag",5)
&amp;&amp; node-&gt;ns
&amp;&amp; !strcmp(node-&gt;ns-&gt;href,"http://www.mysite.com/myns/1.0")) {
...
}</pre><p>Usually people object to using namespaces together with validity checking.
I will try to make sure that using namespaces won't break validity checking,
so even if you plan to use or currently are using validation I strongly
suggest adding namespaces to your document. A default namespace scheme
<code>xmlns="http://...."</code> should not break validity even on less
flexible parsers. Using namespaces to mix and differentiate content coming
from multiple DTDs will certainly break current validation schemes. To check
such documents one needs to use schema-validation, which is supported in
libxml2 as well. See <a href="http://www.relaxng.org/">relagx-ng</a> and <a href="http://www.w3c.org/XML/Schema">w3c-schema</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
}</pre><p>Usually people object to using namespaces together with validity
checking.I will try to make sure that using namespaces won't break validity
checking,so even if you plan to use or currently are using validation I
stronglysuggest adding namespaces to your document. A default namespace
scheme<code>xmlns="http://...."</code>should not break validity even on
lessflexible parsers. Using namespaces to mix and differentiate content
comingfrom multiple DTDs will certainly break current validation schemes. To
checksuch documents one needs to use schema-validation, which is supported
inlibxml2 as well. See <a href="http://www.relaxng.org/">relagx-ng</a>and <a href="http://www.w3c.org/XML/Schema">w3c-schema</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -17,84 +17,83 @@ A:link, A:visited, A:active { text-decoration: underline }
<li><a href="#Some">Some examples</a></li>
<li><a href="#validate">How to validate</a></li>
<li><a href="#Other">Other resources</a></li>
</ol><h3><a name="General5" id="General5">General overview</a></h3><p>Well what is validation and what is a DTD ?</p><p>DTD is the acronym for Document Type Definition. This is a description of
the content for a family of XML files. This is part of the XML 1.0
specification, and allows one to describe and verify that a given document
instance conforms to the set of rules detailing its structure and content.</p><p>Validation is the process of checking a document against a DTD (more
generally against a set of construction rules).</p><p>The validation process and building DTDs are the two most difficult parts
of the XML life cycle. Briefly a DTD defines all the possible elements to be
found within your document, what is the formal shape of your document tree
(by defining the allowed content of an element; either text, a regular
expression for the allowed list of children, or mixed content i.e. both text
and children). The DTD also defines the valid attributes for all elements and
the types of those attributes.</p><h3><a name="definition1" id="definition1">The definition</a></h3><p>The <a href="http://www.w3.org/TR/REC-xml">W3C XML Recommendation</a> (<a href="http://www.xml.com/axml/axml.html">Tim Bray's annotated version of
Rev1</a>):</p><ul><li><a href="http://www.w3.org/TR/REC-xml#elemdecls">Declaring
elements</a></li>
<li><a href="http://www.w3.org/TR/REC-xml#attdecls">Declaring
attributes</a></li>
</ul><p>(unfortunately) all this is inherited from the SGML world, the syntax is
ancient...</p><h3><a name="Simple1" id="Simple1">Simple rules</a></h3><p>Writing DTDs can be done in many ways. The rules to build them if you need
something permanent or something which can evolve over time can be radically
different. Really complex DTDs like DocBook ones are flexible but quite
harder to design. I will just focus on DTDs for a formats with a fixed simple
structure. It is just a set of basic rules, and definitely not exhaustive nor
usable for complex DTD design.</p><h4><a name="reference1" id="reference1">How to reference a DTD from a document</a>:</h4><p>Assuming the top element of the document is <code>spec</code> and the dtd
is placed in the file <code>mydtd</code> in the subdirectory
<code>dtds</code> of the directory from where the document were loaded:</p><p><code>&lt;!DOCTYPE spec SYSTEM "dtds/mydtd"&gt;</code></p><p>Notes:</p><ul><li>The system string is actually an URI-Reference (as defined in <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>) so you can use a
full URL string indicating the location of your DTD on the Web. This is a
really good thing to do if you want others to validate your document.</li>
<li>It is also possible to associate a <code>PUBLIC</code> identifier (a
magic string) so that the DTD is looked up in catalogs on the client side
without having to locate it on the web.</li>
<li>A DTD contains a set of element and attribute declarations, but they
don't define what the root of the document should be. This is explicitly
told to the parser/validator as the first element of the
<code>DOCTYPE</code> declaration.</li>
</ul><h4><a name="Declaring2" id="Declaring2">Declaring elements</a>:</h4><p>The following declares an element <code>spec</code>:</p><p><code>&lt;!ELEMENT spec (front, body, back?)&gt;</code></p><p>It also expresses that the spec element contains one <code>front</code>,
one <code>body</code> and one optional <code>back</code> children elements in
this order. The declaration of one element of the structure and its content
are done in a single declaration. Similarly the following declares
<code>div1</code> elements:</p><p><code>&lt;!ELEMENT div1 (head, (p | list | note)*, div2?)&gt;</code></p><p>which means div1 contains one <code>head</code> then a series of optional
<code>p</code>, <code>list</code>s and <code>note</code>s and then an
optional <code>div2</code>. And last but not least an element can contain
text:</p><p><code>&lt;!ELEMENT b (#PCDATA)&gt;</code></p><p><code>b</code> contains text or being of mixed content (text and elements
in no particular order):</p><p><code>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*&gt;</code></p><p><code>p </code>can contain text or <code>a</code>, <code>ul</code>,
<code>b</code>, <code>i </code>or <code>em</code> elements in no particular
order.</p><h4><a name="Declaring1" id="Declaring1">Declaring attributes</a>:</h4><p>Again the attributes declaration includes their content definition:</p><p><code>&lt;!ATTLIST termdef name CDATA #IMPLIED&gt;</code></p><p>means that the element <code>termdef</code> can have a <code>name</code>
attribute containing text (<code>CDATA</code>) and which is optional
(<code>#IMPLIED</code>). The attribute value can also be defined within a
set:</p><p><code>&lt;!ATTLIST list type (bullets|ordered|glossary)
"ordered"&gt;</code></p><p>means <code>list</code> element have a <code>type</code> attribute with 3
allowed values "bullets", "ordered" or "glossary" and which default to
"ordered" if the attribute is not explicitly specified.</p><p>The content type of an attribute can be text (<code>CDATA</code>),
anchor/reference/references
(<code>ID</code>/<code>IDREF</code>/<code>IDREFS</code>), entity(ies)
(<code>ENTITY</code>/<code>ENTITIES</code>) or name(s)
(<code>NMTOKEN</code>/<code>NMTOKENS</code>). The following defines that a
<code>chapter</code> element can have an optional <code>id</code> attribute
of type <code>ID</code>, usable for reference from attribute of type
IDREF:</p><p><code>&lt;!ATTLIST chapter id ID #IMPLIED&gt;</code></p><p>The last value of an attribute definition can be <code>#REQUIRED
</code>meaning that the attribute has to be given, <code>#IMPLIED</code>
meaning that it is optional, or the default value (possibly prefixed by
<code>#FIXED</code> if it is the only allowed).</p><p>Notes:</p><ul><li>Usually the attributes pertaining to a given element are declared in a
single expression, but it is just a convention adopted by a lot of DTD
writers:
</ol><h3><a name="General5" id="General5">General overview</a></h3><p>Well what is validation and what is a DTD ?</p><p>DTD is the acronym for Document Type Definition. This is a description
ofthe content for a family of XML files. This is part of the XML
1.0specification, and allows one to describe and verify that a given
documentinstance conforms to the set of rules detailing its structure and
content.</p><p>Validation is the process of checking a document against a DTD
(moregenerally against a set of construction rules).</p><p>The validation process and building DTDs are the two most difficult
partsof the XML life cycle. Briefly a DTD defines all the possible elements
to befound within your document, what is the formal shape of your document
tree(by defining the allowed content of an element; either text, a
regularexpression for the allowed list of children, or mixed content i.e.
both textand children). The DTD also defines the valid attributes for all
elements andthe types of those attributes.</p><h3><a name="definition1" id="definition1">The definition</a></h3><p>The <a href="http://www.w3.org/TR/REC-xml">W3C XML Recommendation</a>(<a href="http://www.xml.com/axml/axml.html">Tim Bray's annotated version
ofRev1</a>):</p><ul><li><a href="http://www.w3.org/TR/REC-xml#elemdecls">Declaringelements</a></li>
<li><a href="http://www.w3.org/TR/REC-xml#attdecls">Declaringattributes</a></li>
</ul><p>(unfortunately) all this is inherited from the SGML world, the syntax
isancient...</p><h3><a name="Simple1" id="Simple1">Simple rules</a></h3><p>Writing DTDs can be done in many ways. The rules to build them if you
needsomething permanent or something which can evolve over time can be
radicallydifferent. Really complex DTDs like DocBook ones are flexible but
quiteharder to design. I will just focus on DTDs for a formats with a fixed
simplestructure. It is just a set of basic rules, and definitely not
exhaustive norusable for complex DTD design.</p><h4><a name="reference1" id="reference1">How to reference a DTD from a document</a>:</h4><p>Assuming the top element of the document is <code>spec</code>and the dtdis
placed in the file <code>mydtd</code>in the subdirectory<code>dtds</code>of
the directory from where the document were loaded:</p><p><code>&lt;!DOCTYPE spec SYSTEM "dtds/mydtd"&gt;</code></p><p>Notes:</p><ul><li>The system string is actually an URI-Reference (as defined in <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>) so you can use
afull URL string indicating the location of your DTD on the Web. This is
areally good thing to do if you want others to validate your
document.</li>
<li>It is also possible to associate a <code>PUBLIC</code>identifier
(amagic string) so that the DTD is looked up in catalogs on the client
sidewithout having to locate it on the web.</li>
<li>A DTD contains a set of element and attribute declarations, but
theydon't define what the root of the document should be. This is
explicitlytold to the parser/validator as the first element of
the<code>DOCTYPE</code>declaration.</li>
</ul><h4><a name="Declaring2" id="Declaring2">Declaring elements</a>:</h4><p>The following declares an element <code>spec</code>:</p><p><code>&lt;!ELEMENT spec (front, body, back?)&gt;</code></p><p>It also expresses that the spec element contains one
<code>front</code>,one <code>body</code>and one optional
<code>back</code>children elements inthis order. The declaration of one
element of the structure and its contentare done in a single declaration.
Similarly the following declares<code>div1</code>elements:</p><p><code>&lt;!ELEMENT div1 (head, (p | list | note)*, div2?)&gt;</code></p><p>which means div1 contains one <code>head</code>then a series of
optional<code>p</code>, <code>list</code>s and <code>note</code>s and then
anoptional <code>div2</code>. And last but not least an element can
containtext:</p><p><code>&lt;!ELEMENT b (#PCDATA)&gt;</code></p><p><code>b</code>contains text or being of mixed content (text and elementsin
no particular order):</p><p><code>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*&gt;</code></p><p><code>p </code>can contain text or <code>a</code>,
<code>ul</code>,<code>b</code>, <code>i </code>or <code>em</code>elements in
no particularorder.</p><h4><a name="Declaring1" id="Declaring1">Declaring attributes</a>:</h4><p>Again the attributes declaration includes their content definition:</p><p><code>&lt;!ATTLIST termdef name CDATA #IMPLIED&gt;</code></p><p>means that the element <code>termdef</code>can have a
<code>name</code>attribute containing text (<code>CDATA</code>) and which is
optional(<code>#IMPLIED</code>). The attribute value can also be defined
within aset:</p><p><code>&lt;!ATTLIST list type
(bullets|ordered|glossary)"ordered"&gt;</code></p><p>means <code>list</code>element have a <code>type</code>attribute with
3allowed values "bullets", "ordered" or "glossary" and which default
to"ordered" if the attribute is not explicitly specified.</p><p>The content type of an attribute can be text
(<code>CDATA</code>),anchor/reference/references(<code>ID</code>/<code>IDREF</code>/<code>IDREFS</code>),
entity(ies)(<code>ENTITY</code>/<code>ENTITIES</code>) or
name(s)(<code>NMTOKEN</code>/<code>NMTOKENS</code>). The following defines
that a<code>chapter</code>element can have an optional
<code>id</code>attributeof type <code>ID</code>, usable for reference from
attribute of typeIDREF:</p><p><code>&lt;!ATTLIST chapter id ID #IMPLIED&gt;</code></p><p>The last value of an attribute definition can be
<code>#REQUIRED</code>meaning that the attribute has to be given,
<code>#IMPLIED</code>meaning that it is optional, or the default value
(possibly prefixed by<code>#FIXED</code>if it is the only allowed).</p><p>Notes:</p><ul><li>Usually the attributes pertaining to a given element are declared in
asingle expression, but it is just a convention adopted by a lot of
DTDwriters:
<pre>&lt;!ATTLIST termdef
id ID #REQUIRED
name CDATA #IMPLIED&gt;</pre>
<p>The previous construct defines both <code>id</code> and
<code>name</code> attributes for the element <code>termdef</code>.</p>
<p>The previous construct defines both
<code>id</code>and<code>name</code>attributes for the element
<code>termdef</code>.</p>
</li>
</ul><h3><a name="Some1" id="Some1">Some examples</a></h3><p>The directory <code>test/valid/dtds/</code> in the libxml2 distribution
contains some complex DTD examples. The example in the file
<code>test/valid/dia.xml</code> shows an XML file where the simple DTD is
directly included within the document.</p><h3><a name="validate1" id="validate1">How to validate</a></h3><p>The simplest way is to use the xmllint program included with libxml. The
<code>--valid</code> option turns-on validation of the files given as input.
For example the following validates a copy of the first revision of the XML
1.0 specification:</p><p><code>xmllint --valid --noout test/valid/REC-xml-19980210.xml</code></p><p>the -- noout is used to disable output of the resulting tree.</p><p>The <code>--dtdvalid dtd</code> allows validation of the document(s)
against a given DTD.</p><p>Libxml2 exports an API to handle DTDs and validation, check the <a href="http://xmlsoft.org/html/libxml-valid.html">associated
description</a>.</p><h3><a name="Other1" id="Other1">Other resources</a></h3><p>DTDs are as old as SGML. So there may be a number of examples on-line, I
will just list one for now, others pointers welcome:</p><ul><li><a href="http://www.xml101.com:8081/dtd/">XML-101 DTD</a></li>
</ul><p>I suggest looking at the examples found under test/valid/dtd and any of
the large number of books available on XML. The dia example in test/valid
should be both simple and complete enough to allow you to build your own.</p><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
</ul><h3><a name="Some1" id="Some1">Some examples</a></h3><p>The directory <code>test/valid/dtds/</code>in the libxml2
distributioncontains some complex DTD examples. The example in the
file<code>test/valid/dia.xml</code>shows an XML file where the simple DTD
isdirectly included within the document.</p><h3><a name="validate1" id="validate1">How to validate</a></h3><p>The simplest way is to use the xmllint program included with libxml.
The<code>--valid</code>option turns-on validation of the files given as
input.For example the following validates a copy of the first revision of the
XML1.0 specification:</p><p><code>xmllint --valid --noout test/valid/REC-xml-19980210.xml</code></p><p>the -- noout is used to disable output of the resulting tree.</p><p>The <code>--dtdvalid dtd</code>allows validation of the document(s)against
a given DTD.</p><p>Libxml2 exports an API to handle DTDs and validation, check the <a href="http://xmlsoft.org/html/libxml-valid.html">associateddescription</a>.</p><h3><a name="Other1" id="Other1">Other resources</a></h3><p>DTDs are as old as SGML. So there may be a number of examples on-line,
Iwill just list one for now, others pointers welcome:</p><ul><li><a href="http://www.xml101.com:8081/dtd/">XML-101 DTD</a></li>
</ul><p>I suggest looking at the examples found under test/valid/dtd and any ofthe
large number of books available on XML. The dia example in test/validshould
be both simple and complete enough to allow you to build your own.</p><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -13,64 +13,65 @@ A:link, A:visited, A:active { text-decoration: underline }
<li><a href="#Output">Output I/O handlers</a></li>
<li><a href="#entities">The entities loader</a></li>
<li><a href="#Example2">Example of customized I/O</a></li>
</ol><h3><a name="General1" id="General1">General overview</a></h3><p>The module <code><a href="http://xmlsoft.org/html/libxml-xmlio.html">xmlIO.h</a></code> provides
the interfaces to the libxml2 I/O system. This consists of 4 main parts:</p><ul><li>Entities loader, this is a routine which tries to fetch the entities
(files) based on their PUBLIC and SYSTEM identifiers. The default loader
don't look at the public identifier since libxml2 do not maintain a
catalog. You can redefine you own entity loader by using
<code>xmlGetExternalEntityLoader()</code> and
<code>xmlSetExternalEntityLoader()</code>. <a href="#entities">Check the
example</a>.</li>
<li>Input I/O buffers which are a commodity structure used by the parser(s)
input layer to handle fetching the informations to feed the parser. This
provides buffering and is also a placeholder where the encoding
converters to UTF8 are piggy-backed.</li>
<li>Output I/O buffers are similar to the Input ones and fulfill similar
task but when generating a serialization from a tree.</li>
<li>A mechanism to register sets of I/O callbacks and associate them with
specific naming schemes like the protocol part of the URIs.
<p>This affect the default I/O operations and allows to use specific I/O
handlers for certain names.</p>
</ol><h3><a name="General1" id="General1">General overview</a></h3><p>The module <code><a href="http://xmlsoft.org/html/libxml-xmlio.html">xmlIO.h</a></code>providesthe
interfaces to the libxml2 I/O system. This consists of 4 main parts:</p><ul><li>Entities loader, this is a routine which tries to fetch the
entities(files) based on their PUBLIC and SYSTEM identifiers. The default
loaderdon't look at the public identifier since libxml2 do not maintain
acatalog. You can redefine you own entity loader by
using<code>xmlGetExternalEntityLoader()</code>and<code>xmlSetExternalEntityLoader()</code>.
<a href="#entities">Check theexample</a>.</li>
<li>Input I/O buffers which are a commodity structure used by the
parser(s)input layer to handle fetching the informations to feed the
parser. Thisprovides buffering and is also a placeholder where the
encodingconverters to UTF8 are piggy-backed.</li>
<li>Output I/O buffers are similar to the Input ones and fulfill
similartask but when generating a serialization from a tree.</li>
<li>A mechanism to register sets of I/O callbacks and associate them
withspecific naming schemes like the protocol part of the URIs.
<p>This affect the default I/O operations and allows to use specific
I/Ohandlers for certain names.</p>
</li>
</ul><p>The general mechanism used when loading http://rpmfind.net/xml.html for
example in the HTML parser is the following:</p><ol><li>The default entity loader calls <code>xmlNewInputFromFile()</code> with
the parsing context and the URI string.</li>
<li>the URI string is checked against the existing registered handlers
using their match() callback function, if the HTTP module was compiled
in, it is registered and its match() function will succeeds</li>
<li>the open() function of the handler is called and if successful will
return an I/O Input buffer</li>
<li>the parser will the start reading from this buffer and progressively
fetch information from the resource, calling the read() function of the
handler until the resource is exhausted</li>
<li>if an encoding change is detected it will be installed on the input
buffer, providing buffering and efficient use of the conversion
routines</li>
<li>once the parser has finished, the close() function of the handler is
called once and the Input buffer and associated resources are
deallocated.</li>
</ol><p>The user defined callbacks are checked first to allow overriding of the
default libxml2 I/O routines.</p><h3><a name="basic" id="basic">The basic buffer type</a></h3><p>All the buffer manipulation handling is done using the
<code>xmlBuffer</code> type define in <code><a href="http://xmlsoft.org/html/libxml-tree.html">tree.h</a> </code>which is a
resizable memory buffer. The buffer allocation strategy can be selected to be
either best-fit or use an exponential doubling one (CPU vs. memory use
trade-off). The values are <code>XML_BUFFER_ALLOC_EXACT</code> and
<code>XML_BUFFER_ALLOC_DOUBLEIT</code>, and can be set individually or on a
system wide basis using <code>xmlBufferSetAllocationScheme()</code>. A number
of functions allows to manipulate buffers with names starting with the
<code>xmlBuffer...</code> prefix.</p><h3><a name="Input" id="Input">Input I/O handlers</a></h3><p>An Input I/O handler is a simple structure
<code>xmlParserInputBuffer</code> containing a context associated to the
resource (file descriptor, or pointer to a protocol handler), the read() and
close() callbacks to use and an xmlBuffer. And extra xmlBuffer and a charset
encoding handler are also present to support charset conversion when
needed.</p><h3><a name="Output" id="Output">Output I/O handlers</a></h3><p>An Output handler <code>xmlOutputBuffer</code> is completely similar to an
Input one except the callbacks are write() and close().</p><h3><a name="entities" id="entities">The entities loader</a></h3><p>The entity loader resolves requests for new entities and create inputs for
the parser. Creating an input from a filename or an URI string is done
through the xmlNewInputFromFile() routine. The default entity loader do not
handle the PUBLIC identifier associated with an entity (if any). So it just
calls xmlNewInputFromFile() with the SYSTEM identifier (which is mandatory in
XML).</p><p>If you want to hook up a catalog mechanism then you simply need to
override the default entity loader, here is an example:</p><pre>#include &lt;libxml/xmlIO.h&gt;
</ul><p>The general mechanism used when loading http://rpmfind.net/xml.html
forexample in the HTML parser is the following:</p><ol><li>The default entity loader calls
<code>xmlNewInputFromFile()</code>withthe parsing context and the URI
string.</li>
<li>the URI string is checked against the existing registered handlersusing
their match() callback function, if the HTTP module was compiledin, it is
registered and its match() function will succeeds</li>
<li>the open() function of the handler is called and if successful
willreturn an I/O Input buffer</li>
<li>the parser will the start reading from this buffer and
progressivelyfetch information from the resource, calling the read()
function of thehandler until the resource is exhausted</li>
<li>if an encoding change is detected it will be installed on the
inputbuffer, providing buffering and efficient use of the
conversionroutines</li>
<li>once the parser has finished, the close() function of the handler
iscalled once and the Input buffer and associated resources
aredeallocated.</li>
</ol><p>The user defined callbacks are checked first to allow overriding of
thedefault libxml2 I/O routines.</p><h3><a name="basic" id="basic">The basic buffer type</a></h3><p>All the buffer manipulation handling is done using
the<code>xmlBuffer</code>type define in <code><a href="http://xmlsoft.org/html/libxml-tree.html">tree.h</a></code>which is
aresizable memory buffer. The buffer allocation strategy can be selected to
beeither best-fit or use an exponential doubling one (CPU vs. memory
usetrade-off). The values are
<code>XML_BUFFER_ALLOC_EXACT</code>and<code>XML_BUFFER_ALLOC_DOUBLEIT</code>,
and can be set individually or on asystem wide basis using
<code>xmlBufferSetAllocationScheme()</code>. A numberof functions allows to
manipulate buffers with names starting with
the<code>xmlBuffer...</code>prefix.</p><h3><a name="Input" id="Input">Input I/O handlers</a></h3><p>An Input I/O handler is a simple
structure<code>xmlParserInputBuffer</code>containing a context associated to
theresource (file descriptor, or pointer to a protocol handler), the read()
andclose() callbacks to use and an xmlBuffer. And extra xmlBuffer and a
charsetencoding handler are also present to support charset conversion
whenneeded.</p><h3><a name="Output" id="Output">Output I/O handlers</a></h3><p>An Output handler <code>xmlOutputBuffer</code>is completely similar to
anInput one except the callbacks are write() and close().</p><h3><a name="entities" id="entities">The entities loader</a></h3><p>The entity loader resolves requests for new entities and create inputs
forthe parser. Creating an input from a filename or an URI string is
donethrough the xmlNewInputFromFile() routine. The default entity loader do
nothandle the PUBLIC identifier associated with an entity (if any). So it
justcalls xmlNewInputFromFile() with the SYSTEM identifier (which is
mandatory inXML).</p><p>If you want to hook up a catalog mechanism then you simply need tooverride
the default entity loader, here is an example:</p><pre>#include &lt;libxml/xmlIO.h&gt;
xmlExternalEntityLoader defaultLoader = NULL;
@@ -99,11 +100,11 @@ int main(..) {
xmlSetExternalEntityLoader(xmlMyExternalEntityLoader);
...
}</pre><h3><a name="Example2" id="Example2">Example of customized I/O</a></h3><p>This example come from <a href="http://xmlsoft.org/messages/0708.html">a
real use case</a>, xmlDocDump() closes the FILE * passed by the application
and this was a problem. The <a href="http://xmlsoft.org/messages/0711.html">solution</a> was to redefine a
new output handler with the closing call deactivated:</p><ol><li>First define a new I/O output allocator where the output don't close
the file:
}</pre><h3><a name="Example2" id="Example2">Example of customized I/O</a></h3><p>This example come from <a href="http://xmlsoft.org/messages/0708.html">areal use case</a>,
xmlDocDump() closes the FILE * passed by the applicationand this was a
problem. The <a href="http://xmlsoft.org/messages/0711.html">solution</a>was
to redefine anew output handler with the closing call deactivated:</p><ol><li>First define a new I/O output allocator where the output don't closethe
file:
<pre>xmlOutputBufferPtr
xmlOutputBufferCreateOwn(FILE *file, xmlCharEncodingHandlerPtr encoder) {
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>xmlOutputBufferPtr ret;

View File

@@ -12,91 +12,92 @@ A:link, A:visited, A:active { text-decoration: underline }
<li><a href="#cleanup">Cleaning up after parsing</a></li>
<li><a href="#Debugging">Debugging routines</a></li>
<li><a href="#General4">General memory requirements</a></li>
</ol><h3><a name="General3" id="General3">General overview</a></h3><p>The module <code><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlmemory.h</a></code>
provides the interfaces to the libxml2 memory system:</p><ul><li>libxml2 does not use the libc memory allocator directly but xmlFree(),
xmlMalloc() and xmlRealloc()</li>
<li>those routines can be reallocated to a specific set of routine, by
default the libc ones i.e. free(), malloc() and realloc()</li>
</ol><h3><a name="General3" id="General3">General overview</a></h3><p>The module <code><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlmemory.h</a></code>provides
the interfaces to the libxml2 memory system:</p><ul><li>libxml2 does not use the libc memory allocator directly but
xmlFree(),xmlMalloc() and xmlRealloc()</li>
<li>those routines can be reallocated to a specific set of routine,
bydefault the libc ones i.e. free(), malloc() and realloc()</li>
<li>the xmlmemory.c module includes a set of debugging routine</li>
</ul><h3><a name="setting" id="setting">Setting libxml2 set of memory routines</a></h3><p>It is sometimes useful to not use the default memory allocator, either for
debugging, analysis or to implement a specific behaviour on memory management
(like on embedded systems). Two function calls are available to do so:</p><ul><li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemGet
()</a> which return the current set of functions in use by the parser</li>
<li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemSetup()</a>
which allow to set up a new set of memory allocation functions</li>
</ul><p>Of course a call to xmlMemSetup() should probably be done before calling
any other libxml2 routines (unless you are sure your allocations routines are
compatibles).</p><h3><a name="cleanup" id="cleanup">Cleaning up after parsing</a></h3><p>Libxml2 is not stateless, there is a few set of memory structures needing
allocation before the parser is fully functional (some encoding structures
for example). This also mean that once parsing is finished there is a tiny
amount of memory (a few hundred bytes) which can be recollected if you don't
reuse the parser immediately:</p><ul><li><a href="http://xmlsoft.org/html/libxml-parser.html">xmlCleanupParser
()</a> is a centralized routine to free the parsing states. Note that it
won't deallocate any produced tree if any (use the xmlFreeDoc() and
related routines for this).</li>
<li><a href="http://xmlsoft.org/html/libxml-parser.html">xmlInitParser
()</a> is the dual routine allowing to preallocate the parsing state
which can be useful for example to avoid initialization reentrancy
problems when using libxml2 in multithreaded applications</li>
</ul><p>Generally xmlCleanupParser() is safe, if needed the state will be rebuild
at the next invocation of parser routines, but be careful of the consequences
in multithreaded applications.</p><h3><a name="Debugging" id="Debugging">Debugging routines</a></h3><p>When configured using --with-mem-debug flag (off by default), libxml2 uses
a set of memory allocation debugging routines keeping track of all allocated
blocks and the location in the code where the routine was called. A couple of
other debugging routines allow to dump the memory allocated infos to a file
or call a specific routine when a given block number is allocated:</p><ul><li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMallocLoc()</a>
<a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlReallocLoc()</a>
and <a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemStrdupLoc()</a>
are the memory debugging replacement allocation routines</li>
<li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemoryDump
()</a> dumps all the informations about the allocated memory block lefts
in the <code>.memdump</code> file</li>
</ul><p>When developing libxml2 memory debug is enabled, the tests programs call
xmlMemoryDump () and the "make test" regression tests will check for any
memory leak during the full regression test sequence, this helps a lot
ensuring that libxml2 does not leak memory and bullet proof memory
allocations use (some libc implementations are known to be far too permissive
resulting in major portability problems!).</p><p>If the .memdump reports a leak, it displays the allocation function and
also tries to give some informations about the content and structure of the
allocated blocks left. This is sufficient in most cases to find the culprit,
but not always. Assuming the allocation problem is reproducible, it is
possible to find more easily:</p><ol><li>write down the block number xxxx not allocated</li>
<li>export the environment variable XML_MEM_BREAKPOINT=xxxx , the easiest
when using GDB is to simply give the command
</ul><h3><a name="setting" id="setting">Setting libxml2 set of memory routines</a></h3><p>It is sometimes useful to not use the default memory allocator, either
fordebugging, analysis or to implement a specific behaviour on memory
management(like on embedded systems). Two function calls are available to do
so:</p><ul><li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemGet()</a>which
return the current set of functions in use by the parser</li>
<li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemSetup()</a>which
allow to set up a new set of memory allocation functions</li>
</ul><p>Of course a call to xmlMemSetup() should probably be done before
callingany other libxml2 routines (unless you are sure your allocations
routines arecompatibles).</p><h3><a name="cleanup" id="cleanup">Cleaning up after parsing</a></h3><p>Libxml2 is not stateless, there is a few set of memory structures
needingallocation before the parser is fully functional (some encoding
structuresfor example). This also mean that once parsing is finished there is
a tinyamount of memory (a few hundred bytes) which can be recollected if you
don'treuse the parser immediately:</p><ul><li><a href="http://xmlsoft.org/html/libxml-parser.html">xmlCleanupParser()</a>is
a centralized routine to free the parsing states. Note that itwon't
deallocate any produced tree if any (use the xmlFreeDoc() andrelated
routines for this).</li>
<li><a href="http://xmlsoft.org/html/libxml-parser.html">xmlInitParser()</a>is
the dual routine allowing to preallocate the parsing statewhich can be
useful for example to avoid initialization reentrancyproblems when using
libxml2 in multithreaded applications</li>
</ul><p>Generally xmlCleanupParser() is safe, if needed the state will be
rebuildat the next invocation of parser routines, but be careful of the
consequencesin multithreaded applications.</p><h3><a name="Debugging" id="Debugging">Debugging routines</a></h3><p>When configured using --with-mem-debug flag (off by default), libxml2
usesa set of memory allocation debugging routines keeping track of all
allocatedblocks and the location in the code where the routine was called. A
couple ofother debugging routines allow to dump the memory allocated infos to
a fileor call a specific routine when a given block number is allocated:</p><ul><li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMallocLoc()</a><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlReallocLoc()</a>and
<a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemStrdupLoc()</a>are
the memory debugging replacement allocation routines</li>
<li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemoryDump()</a>dumps
all the informations about the allocated memory block leftsin the
<code>.memdump</code>file</li>
</ul><p>When developing libxml2 memory debug is enabled, the tests programs
callxmlMemoryDump () and the "make test" regression tests will check for
anymemory leak during the full regression test sequence, this helps a
lotensuring that libxml2 does not leak memory and bullet proof
memoryallocations use (some libc implementations are known to be far too
permissiveresulting in major portability problems!).</p><p>If the .memdump reports a leak, it displays the allocation function
andalso tries to give some informations about the content and structure of
theallocated blocks left. This is sufficient in most cases to find the
culprit,but not always. Assuming the allocation problem is reproducible, it
ispossible to find more easily:</p><ol><li>write down the block number xxxx not allocated</li>
<li>export the environment variable XML_MEM_BREAKPOINT=xxxx , the
easiestwhen using GDB is to simply give the command
<p><code>set environment XML_MEM_BREAKPOINT xxxx</code></p>
<p>before running the program.</p>
</li>
<li>run the program under a debugger and set a breakpoint on
xmlMallocBreakpoint() a specific function called when this precise block
is allocated</li>
<li>when the breakpoint is reached you can then do a fine analysis of the
allocation an step to see the condition resulting in the missing
deallocation.</li>
</ol><p>I used to use a commercial tool to debug libxml2 memory problems but after
noticing that it was not detecting memory leaks that simple mechanism was
used and proved extremely efficient until now. Lately I have also used <a href="http://developer.kde.org/~sewardj/">valgrind</a> with quite some
success, it is tied to the i386 architecture since it works by emulating the
processor and instruction set, it is slow but extremely efficient, i.e. it
spot memory usage errors in a very precise way.</p><h3><a name="General4" id="General4">General memory requirements</a></h3><p>How much libxml2 memory require ? It's hard to tell in average it depends
of a number of things:</p><ul><li>the parser itself should work in a fixed amount of memory, except for
information maintained about the stacks of names and entities locations.
The I/O and encoding handlers will probably account for a few KBytes.
This is true for both the XML and HTML parser (though the HTML parser
need more state).</li>
<li>If you are generating the DOM tree then memory requirements will grow
nearly linear with the size of the data. In general for a balanced
textual document the internal memory requirement is about 4 times the
size of the UTF8 serialization of this document (example the XML-1.0
recommendation is a bit more of 150KBytes and takes 650KBytes of main
memory when parsed). Validation will add a amount of memory required for
maintaining the external Dtd state which should be linear with the
complexity of the content model defined by the Dtd</li>
<li>If you need to work with fixed memory requirements or don't need the
full DOM tree then using the <a href="xmlreader.html">xmlReader
interface</a> is probably the best way to proceed, it still allows to
validate or operate on subset of the tree if needed.</li>
<li>If you don't care about the advanced features of libxml2 like
validation, DOM, XPath or XPointer, don't use entities, need to work with
fixed memory requirements, and try to get the fastest parsing possible
then the SAX interface should be used, but it has known restrictions.</li>
<li>run the program under a debugger and set a breakpoint
onxmlMallocBreakpoint() a specific function called when this precise
blockis allocated</li>
<li>when the breakpoint is reached you can then do a fine analysis of
theallocation an step to see the condition resulting in the
missingdeallocation.</li>
</ol><p>I used to use a commercial tool to debug libxml2 memory problems but
afternoticing that it was not detecting memory leaks that simple mechanism
wasused and proved extremely efficient until now. Lately I have also used <a href="http://developer.kde.org/~sewardj/">valgrind</a>with quite somesuccess,
it is tied to the i386 architecture since it works by emulating theprocessor
and instruction set, it is slow but extremely efficient, i.e. itspot memory
usage errors in a very precise way.</p><h3><a name="General4" id="General4">General memory requirements</a></h3><p>How much libxml2 memory require ? It's hard to tell in average it
dependsof a number of things:</p><ul><li>the parser itself should work in a fixed amount of memory, except
forinformation maintained about the stacks of names and entities
locations.The I/O and encoding handlers will probably account for a few
KBytes.This is true for both the XML and HTML parser (though the HTML
parserneed more state).</li>
<li>If you are generating the DOM tree then memory requirements will
grownearly linear with the size of the data. In general for a
balancedtextual document the internal memory requirement is about 4 times
thesize of the UTF8 serialization of this document (example the
XML-1.0recommendation is a bit more of 150KBytes and takes 650KBytes of
mainmemory when parsed). Validation will add a amount of memory required
formaintaining the external Dtd state which should be linear with
thecomplexity of the content model defined by the Dtd</li>
<li>If you need to work with fixed memory requirements or don't need
thefull DOM tree then using the <a href="xmlreader.html">xmlReaderinterface</a>is probably the best way to
proceed, it still allows tovalidate or operate on subset of the tree if
needed.</li>
<li>If you don't care about the advanced features of libxml2
likevalidation, DOM, XPath or XPointer, don't use entities, need to work
withfixed memory requirements, and try to get the fastest parsing
possiblethen the SAX interface should be used, but it has known
restrictions.</li>
</ul><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>

View File

@@ -27,6 +27,7 @@ Summary: Libraries, includes, etc. to develop XML and HTML applications
Group: Development/Libraries
Requires: libxml2 = %{version}
Requires: zlib-devel
Requires: pkgconfig
%description devel
Libraries, include files, etc you can use to develop XML applications.

View File

@@ -990,6 +990,7 @@ Class xpathContext()
registerXPathFunction()
# functions from module xpath
xpathContextSetCache()
xpathEval()
xpathEvalExpression()
xpathFreeContext()

View File

@@ -45558,6 +45558,61 @@ test_xmlXPathCompiledEval(void) {
}
static int
test_xmlXPathContextSetCache(void) {
int test_ret = 0;
#if defined(LIBXML_XPATH_ENABLED)
int mem_base;
int ret_val;
xmlXPathContextPtr ctxt; /* the XPath context */
int n_ctxt;
int active; /* enables/disables (creates/frees) the cache */
int n_active;
int value; /* a value with semantics dependant on @options */
int n_value;
int options; /* options (currently only the value 0 is used) */
int n_options;
for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
for (n_active = 0;n_active < gen_nb_int;n_active++) {
for (n_value = 0;n_value < gen_nb_int;n_value++) {
for (n_options = 0;n_options < gen_nb_int;n_options++) {
mem_base = xmlMemBlocks();
ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
active = gen_int(n_active, 1);
value = gen_int(n_value, 2);
options = gen_int(n_options, 3);
ret_val = xmlXPathContextSetCache(ctxt, active, value, options);
desret_int(ret_val);
call_tests++;
des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
des_int(n_active, active, 1);
des_int(n_value, value, 2);
des_int(n_options, options, 3);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlXPathContextSetCache",
xmlMemBlocks() - mem_base);
test_ret++;
printf(" %d", n_ctxt);
printf(" %d", n_active);
printf(" %d", n_value);
printf(" %d", n_options);
printf("\n");
}
}
}
}
}
function_tests++;
#endif
return(test_ret);
}
static int
test_xmlXPathConvertBoolean(void) {
int test_ret = 0;
@@ -46004,7 +46059,7 @@ static int
test_xpath(void) {
int test_ret = 0;
if (quiet == 0) printf("Testing xpath : 28 of 36 functions ...\n");
if (quiet == 0) printf("Testing xpath : 29 of 37 functions ...\n");
test_ret += test_xmlXPathCastBooleanToNumber();
test_ret += test_xmlXPathCastBooleanToString();
test_ret += test_xmlXPathCastNodeSetToBoolean();
@@ -46022,6 +46077,7 @@ test_xpath(void) {
test_ret += test_xmlXPathCmpNodes();
test_ret += test_xmlXPathCompile();
test_ret += test_xmlXPathCompiledEval();
test_ret += test_xmlXPathContextSetCache();
test_ret += test_xmlXPathConvertBoolean();
test_ret += test_xmlXPathConvertNumber();
test_ret += test_xmlXPathConvertString();