1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-30 22:43:14 +03:00

fixed to point to releases of libxml2-2.6, Daniel

This commit is contained in:
Daniel Veillard
2003-12-10 16:43:49 +00:00
parent c480c4ea56
commit 024f19966e
19 changed files with 181 additions and 181 deletions

View File

@ -25,7 +25,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol><li><strong><span style="background-color: #FF0000">Do Not Use </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> libxml1</span></strong>, use libxml2</li>
<li><em>Where can I get libxml</em> ? <li><em>Where can I get libxml</em> ?
<p>The original distribution comes from <a href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</a> or <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/">gnome.org</a></p> <p>The original distribution comes from <a href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</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 <p>Most Linux and BSD distributions include libxml, this is probably the
safer way for end-users to use libxml.</p> safer 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> <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>
@ -61,7 +61,7 @@ A:link, A:visited, A:active { text-decoration: underline }
applications with libxml(2)) that you can install locally.</p> applications with libxml(2)) that you can install locally.</p>
</li> </li>
</ol><h3><a name="Compilatio" id="Compilatio">Compilation</a></h3><ol><li><em>What is the process to compile libxml2 ?</em> </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 &quot;standard&quot;:</p> <p>As most UNIX libraries libxml2 follows the "standard":</p>
<p><code>gunzip -c xxx.tar.gz | tar xvf -</code></p> <p><code>gunzip -c xxx.tar.gz | tar xvf -</code></p>
<p><code>cd libxml-xxxx</code></p> <p><code>cd libxml-xxxx</code></p>
<p><code>./configure --help</code></p> <p><code>./configure --help</code></p>
@ -134,15 +134,15 @@ A:link, A:visited, A:active { text-decoration: underline }
</ol></li> </ol></li>
<li>Extra nodes in the document: <li>Extra nodes in the document:
<p><em>For a XML file as below:</em></p> <p><em>For a XML file as below:</em></p>
<pre>&lt;?xml version=&quot;1.0&quot;?&gt; <pre>&lt;?xml version="1.0"?&gt;
&lt;PLAN xmlns=&quot;http://www.argus.ca/autotest/1.0/&quot;&gt; &lt;PLAN xmlns="http://www.argus.ca/autotest/1.0/"&gt;
&lt;NODE CommFlag=&quot;0&quot;/&gt; &lt;NODE CommFlag="0"/&gt;
&lt;NODE CommFlag=&quot;1&quot;/&gt; &lt;NODE CommFlag="1"/&gt;
&lt;/PLAN&gt;</pre> &lt;/PLAN&gt;</pre>
<p><em>after parsing it with the function <p><em>after parsing it with the function
pxmlDoc=xmlParseFile(...);</em></p> pxmlDoc=xmlParseFile(...);</em></p>
<p><em>I want to the get the content of the first node (node with the <p><em>I want to the get the content of the first node (node with the
CommFlag=&quot;0&quot;)</em></p> CommFlag="0")</em></p>
<p><em>so I did it as following;</em></p> <p><em>so I did it as following;</em></p>
<pre>xmlNodePtr pnode; <pre>xmlNodePtr pnode;
pnode=pxmlDoc-&gt;children-&gt;children;</pre> pnode=pxmlDoc-&gt;children-&gt;children;</pre>
@ -227,14 +227,14 @@ pnode=pxmlDoc-&gt;children-&gt;children;</pre>
<pre>xmlDocPtr doc; /* your existing document */ <pre>xmlDocPtr doc; /* your existing document */
xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */ xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
dtd-&gt;name = xmlStrDup((xmlChar*)&quot;root_name&quot;); /* use the given root */ dtd-&gt;name = xmlStrDup((xmlChar*)"root_name"); /* use the given root */
doc-&gt;intSubset = dtd; doc-&gt;intSubset = dtd;
if (doc-&gt;children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd); if (doc-&gt;children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd);
else xmlAddPrevSibling(doc-&gt;children, (xmlNodePtr)dtd); else xmlAddPrevSibling(doc-&gt;children, (xmlNodePtr)dtd);
</pre> </pre>
</li> </li>
<li>So what is this funky &quot;xmlChar&quot; used all the time? <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! <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 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 passing them to the API. This can be accomplished with the iconv library

View File

@ -9,15 +9,15 @@ H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline } A:link, A:visited, A:active { text-decoration: underline }
</style><title>XML</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 </style><title>XML</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 markup-based structured documents. Here is <a name="example" id="example">an example XML
document</a>:</p><pre>&lt;?xml version=&quot;1.0&quot;?&gt; document</a>:</p><pre>&lt;?xml version="1.0"?&gt;
&lt;EXAMPLE prop1=&quot;gnome is great&quot; prop2=&quot;&amp;amp; linux too&quot;&gt; &lt;EXAMPLE prop1="gnome is great" prop2="&amp;amp; linux too"&gt;
&lt;head&gt; &lt;head&gt;
&lt;title&gt;Welcome to Gnome&lt;/title&gt; &lt;title&gt;Welcome to Gnome&lt;/title&gt;
&lt;/head&gt; &lt;/head&gt;
&lt;chapter&gt; &lt;chapter&gt;
&lt;title&gt;The Linux adventure&lt;/title&gt; &lt;title&gt;The Linux adventure&lt;/title&gt;
&lt;p&gt;bla bla bla ...&lt;/p&gt; &lt;p&gt;bla bla bla ...&lt;/p&gt;
&lt;image href=&quot;linus.gif&quot;/&gt; &lt;image href="linus.gif"/&gt;
&lt;p&gt;...&lt;/p&gt; &lt;p&gt;...&lt;/p&gt;
&lt;/chapter&gt; &lt;/chapter&gt;
&lt;/EXAMPLE&gt;</pre><p>The first line specifies that it is an XML document and gives useful &lt;/EXAMPLE&gt;</pre><p>The first line specifies that it is an XML document and gives useful

View File

@ -10,5 +10,5 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><title>XSLT</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 </style><title>XSLT</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 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 HTML/textual output).</p><p>A separate library called libxslt is available implementing XSLT-1.0 for
libxml2. This module &quot;libxslt&quot; too can be found in the Gnome CVS base.</p><p>You can check the <a href="http://cvs.gnome.org/lxr/source/libxslt/FEATURES">features</a> libxml2. This module "libxslt" too can be found in the Gnome CVS base.</p><p>You can check the <a href="http://cvs.gnome.org/lxr/source/libxslt/FEATURES">features</a>
supported and the progresses on the <a href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog" name="Changelog" id="Changelog">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> supported and the progresses on the <a href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog" name="Changelog" id="Changelog">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>

View File

@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><title>Reporting bugs and getting help</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 </style><title>Reporting bugs and getting help</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 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 use the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnome
bug tracking database</a> (make sure to use the &quot;libxml2&quot; module name). I 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 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 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 irc.gnome.org (port 6667) usually have a few person subscribed which may help
@ -37,16 +37,16 @@ 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 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 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 and Answers can be shared publicly. Failing to do so carries the implicit
message &quot;I want free support but I don't want to share the benefits with message "I want free support but I don't want to share the benefits with
others&quot; and is not welcome. I will automatically Carbon-Copy the others" and is not welcome. I will automatically Carbon-Copy the
xml@gnome.org mailing list for any technical reply made about libxml2 or xml@gnome.org mailing list for any technical reply made about libxml2 or
libxslt.</li> libxslt.</li>
<li>There is <span style="color: #E50000">no garantee of support</span>, if <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 your question remains unanswered after a week, repost it, making sure you
gave all the detail needed and the information requested.</li> gave all the detail needed and the information requested.</li>
<li>Failing to provide information as requested or double checking first <li>Failing to provide information as requested or double checking first
for prior feedback also carries the implicit message &quot;the time of the for prior feedback also carries the implicit message "the time of the
library maintainers is less valuable than my time&quot; and might not be library maintainers is less valuable than my time" and might not be
welcome.</li> welcome.</li>
</ul><p>Of course, bugs reported with a suggested patch for fixing them will </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 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

View File

@ -22,19 +22,19 @@ A:link, A:visited, A:active { text-decoration: underline }
is inserted between the moment the reference is recognized by the software is inserted between the moment the reference is recognized by the software
(XML parser, stylesheet processing, or even images referenced for inclusion (XML parser, stylesheet processing, or even images referenced for inclusion
in a rendering) and the time where loading that resource is actually 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 &quot;logical&quot; names, the public identifiers and a more 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 concrete name usable for download (and URI). For example it can associate
the logical name the logical name
<p>&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot;</p> <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 <p>of the DocBook 4.1.2 XML DTD with the actual URL where it can be
downloaded</p> downloaded</p>
<p>http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd</p> <p>http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd</p>
</li> </li>
<li>remapping from a given URL to another one, like an HTTP indirection <li>remapping from a given URL to another one, like an HTTP indirection
saying that saying that
<p>&quot;http://www.oasis-open.org/committes/tr.xsl&quot;</p> <p>"http://www.oasis-open.org/committes/tr.xsl"</p>
<p>should really be looked at</p> <p>should really be looked at</p>
<p>&quot;http://www.oasis-open.org/committes/entity/stylesheets/base/tr.xsl&quot;</p> <p>"http://www.oasis-open.org/committes/entity/stylesheets/base/tr.xsl"</p>
</li> </li>
<li>providing a local cache mechanism allowing to load the entities <li>providing a local cache mechanism allowing to load the entities
associated to public identifiers or remote resources, this is a really associated to public identifiers or remote resources, this is a really
@ -53,11 +53,11 @@ catalog in /etc/xml/catalog, and assuming it has been correctly populated,
the processing is completely transparent to the document user. To take a the processing is completely transparent to the document user. To take a
concrete example, suppose you are authoring a DocBook document, this one 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; starts with the following DOCTYPE definition:</p><pre>&lt;?xml version='1.0'?&gt;
&lt;!DOCTYPE book PUBLIC &quot;-//Norman Walsh//DTD DocBk XML V3.1.4//EN&quot; &lt;!DOCTYPE book PUBLIC "-//Norman Walsh//DTD DocBk XML V3.1.4//EN"
&quot;http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd&quot;&gt;</pre><p>When validating the document with libxml, the catalog will be "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 &quot;-//Norman Walsh//DTD automatically consulted to lookup the public identifier "-//Norman Walsh//DTD
DocBk XML V3.1.4//EN&quot; and the system identifier DocBk XML V3.1.4//EN" and the system identifier
&quot;http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd&quot;, and if these entities have "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 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 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 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
@ -65,36 +65,36 @@ entity, this includes DTD, external parsed entities, stylesheets, etc ... If
your system is correctly configured all the authoring phase and processing your system is correctly configured all the authoring phase and processing
should use only local files, even if your document stays portable because it 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 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=&quot;1.0&quot;?&gt; regression tests in <code>test/catalogs</code> :</p><pre>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC &lt;!DOCTYPE catalog PUBLIC
&quot;-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN&quot; "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
&quot;http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd&quot;&gt; "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns=&quot;urn:oasis:names:tc:entity:xmlns:xml:catalog&quot;&gt; &lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"&gt;
&lt;public publicId=&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; &lt;public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
uri=&quot;http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd&quot;/&gt; 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 ...</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 written in XML, there is a specific namespace for catalog elements
&quot;urn:oasis:names:tc:entity:xmlns:xml:catalog&quot;. The first entry in this "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 catalog is a <code>public</code> mapping it allows to associate a Public
Identifier with an URI.</p><pre>... Identifier with an URI.</p><pre>...
&lt;rewriteSystem systemIdStartString=&quot;http://www.oasis-open.org/docbook/&quot; &lt;rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/"
rewritePrefix=&quot;file:///usr/share/xml/docbook/&quot;/&gt; rewritePrefix="file:///usr/share/xml/docbook/"/&gt;
...</pre><p>A <code>rewriteSystem</code> is a very powerful instruction, it says that ...</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 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 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 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 with a file prefix if you have installed a copy of those resources on your
local system.</p><pre>... local system.</p><pre>...
&lt;delegatePublic publicIdStartString=&quot;-//OASIS//DTD XML Catalog //&quot; &lt;delegatePublic publicIdStartString="-//OASIS//DTD XML Catalog //"
catalog=&quot;file:///usr/share/xml/docbook.xml&quot;/&gt; catalog="file:///usr/share/xml/docbook.xml"/&gt;
&lt;delegatePublic publicIdStartString=&quot;-//OASIS//ENTITIES DocBook XML&quot; &lt;delegatePublic publicIdStartString="-//OASIS//ENTITIES DocBook XML"
catalog=&quot;file:///usr/share/xml/docbook.xml&quot;/&gt; catalog="file:///usr/share/xml/docbook.xml"/&gt;
&lt;delegatePublic publicIdStartString=&quot;-//OASIS//DTD DocBook XML&quot; &lt;delegatePublic publicIdStartString="-//OASIS//DTD DocBook XML"
catalog=&quot;file:///usr/share/xml/docbook.xml&quot;/&gt; catalog="file:///usr/share/xml/docbook.xml"/&gt;
&lt;delegateSystem systemIdStartString=&quot;http://www.oasis-open.org/docbook/&quot; &lt;delegateSystem systemIdStartString="http://www.oasis-open.org/docbook/"
catalog=&quot;file:///usr/share/xml/docbook.xml&quot;/&gt; catalog="file:///usr/share/xml/docbook.xml"/&gt;
&lt;delegateURI uriStartString=&quot;http://www.oasis-open.org/docbook/&quot; &lt;delegateURI uriStartString="http://www.oasis-open.org/docbook/"
catalog=&quot;file:///usr/share/xml/docbook.xml&quot;/&gt; catalog="file:///usr/share/xml/docbook.xml"/&gt;
...</pre><p>Delegation is the core features which allows to build a tree of catalogs, ...</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 easier to maintain than a single catalog, based on Public Identifier, System
Identifier or URI prefixes it instructs the catalog software to look up Identifier or URI prefixes it instructs the catalog software to look up
@ -110,34 +110,34 @@ 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 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 make libxml2 output debugging informations for each catalog operations, for
example:</p><pre>orchis:~/XML -&gt; xmllint --memory --noout test/ent2 example:</p><pre>orchis:~/XML -&gt; xmllint --memory --noout test/ent2
warning: failed to load external entity &quot;title.xml&quot; warning: failed to load external entity "title.xml"
orchis:~/XML -&gt; export XML_DEBUG_CATALOG= orchis:~/XML -&gt; export XML_DEBUG_CATALOG=
orchis:~/XML -&gt; xmllint --memory --noout test/ent2 orchis:~/XML -&gt; xmllint --memory --noout test/ent2
Failed to parse catalog /etc/xml/catalog Failed to parse catalog /etc/xml/catalog
Failed to parse catalog /etc/xml/catalog Failed to parse catalog /etc/xml/catalog
warning: failed to load external entity &quot;title.xml&quot; warning: failed to load external entity "title.xml"
Catalogs cleanup Catalogs cleanup
orchis:~/XML -&gt; </pre><p>The test/ent2 references an entity, running the parser from memory makes orchis:~/XML -&gt; </pre><p>The test/ent2 references an entity, running the parser from memory makes
the base URI unavailable and the the &quot;title.xml&quot; entity cannot be loaded. 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 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 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 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 <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 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 \ used for the regression tests:</p><pre>orchis:~/XML -&gt; ./xmlcatalog test/catalogs/docbook.xml \
&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; "-//OASIS//DTD DocBook XML V4.1.2//EN"
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd 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 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 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 \ what elements are recognized at parsing):</p><pre>orchis:~/XML -&gt; ./xmlcatalog -v test/catalogs/docbook.xml \
&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; "-//OASIS//DTD DocBook XML V4.1.2//EN"
Parsing catalog test/catalogs/docbook.xml's content Parsing catalog test/catalogs/docbook.xml's content
Found public match -//OASIS//DTD DocBook XML V4.1.2//EN Found public match -//OASIS//DTD DocBook XML V4.1.2//EN
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
Catalogs cleanup Catalogs cleanup
orchis:~/XML -&gt; </pre><p>A shell interface is also available to debug and process multiple queries 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 \ (and for regression tests):</p><pre>orchis:~/XML -&gt; ./xmlcatalog -shell test/catalogs/docbook.xml \
&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; "-//OASIS//DTD DocBook XML V4.1.2//EN"
&gt; help &gt; help
Commands available: Commands available:
public PublicID: make a PUBLIC identifier lookup public PublicID: make a PUBLIC identifier lookup
@ -149,40 +149,40 @@ dump: print the current catalog state
debug: increase the verbosity level debug: increase the verbosity level
quiet: decrease the verbosity level quiet: decrease the verbosity level
exit: quit the shell exit: quit the shell
&gt; public &quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; &gt; public "-//OASIS//DTD DocBook XML V4.1.2//EN"
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
&gt; quit &gt; quit
orchis:~/XML -&gt; </pre><p>This should be sufficient for most debugging purpose, this was actually 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 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 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 to create a catalog the -create option provide this facility:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --create tst.xml
&lt;?xml version=&quot;1.0&quot;?&gt; &lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC &quot;-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN&quot; &lt;!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
&quot;http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd&quot;&gt; "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns=&quot;urn:oasis:names:tc:entity:xmlns:xml:catalog&quot;/&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 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 result on the standard output, this can be overridden using the -noout
option. The <code>-add</code> command allows to add entries in the option. The <code>-add</code> command allows to add entries in the
catalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --noout --create --add &quot;public&quot; \ catalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --noout --create --add "public" \
&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; \ "-//OASIS//DTD DocBook XML V4.1.2//EN" \
http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd tst.xml http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd tst.xml
orchis:~/XML -&gt; cat tst.xml orchis:~/XML -&gt; cat tst.xml
&lt;?xml version=&quot;1.0&quot;?&gt; &lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC &quot;-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN&quot; \ &lt;!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" \
&quot;http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd&quot;&gt; "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns=&quot;urn:oasis:names:tc:entity:xmlns:xml:catalog&quot;&gt; &lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"&gt;
&lt;public publicId=&quot;-//OASIS//DTD DocBook XML V4.1.2//EN&quot; &lt;public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
uri=&quot;http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd&quot;/&gt; uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/&gt;
&lt;/catalog&gt; &lt;/catalog&gt;
orchis:~/XML -&gt; </pre><p>The <code>-add</code> option will always take 3 parameters even if some of 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 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 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 \ catalog:</p><pre>orchis:~/XML -&gt; ./xmlcatalog --del \
&quot;http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd&quot; tst.xml "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" tst.xml
&lt;?xml version=&quot;1.0&quot;?&gt; &lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC &quot;-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN&quot; &lt;!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
&quot;http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd&quot;&gt; "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns=&quot;urn:oasis:names:tc:entity:xmlns:xml:catalog&quot;/&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 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 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 string.</p><p>This is rudimentary but should be sufficient to manage a not too complex

View File

@ -8,7 +8,7 @@ H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline } A:link, A:visited, A:active { text-decoration: underline }
</style><title>Downloads</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 <a href="ftp://xmlsoft.org/">xmlsoft.org</a> (<a href="ftp://speakeasy.rpmfind.net/pub/libxml/">Seattle</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> either </style><title>Downloads</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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="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">News</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></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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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 <a href="ftp://xmlsoft.org/">xmlsoft.org</a> (<a href="ftp://speakeasy.rpmfind.net/pub/libxml/">Seattle</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> either
as a <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/">source as a <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">source
archive</a><!-- commenting this out because they seem to have disappeared or <a archive</a><!-- commenting this out because they seem to have disappeared or <a
href="ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/">RPM href="ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/">RPM
packages</a> --> packages</a> -->

View File

@ -28,7 +28,7 @@ bit overkill for Western languages encoding. Moreover the XML specification
allows document to be encoded in other encodings at the condition that they allows 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 are clearly labeled as such. For example the following is a wellformed XML
document encoded in ISO-8859 1 and using accentuated letter that we French document encoded in ISO-8859 1 and using accentuated letter that we French
likes for both markup and content:</p><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt; likes 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> &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>informations about it's encoding are saved</li>
<li>it can be modified</li> <li>it can be modified</li>
@ -40,11 +40,11 @@ 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 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 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 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 &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; an internationalized fashion by libxml2 too:</p><pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
&quot;http://www.w3.org/TR/REC-html40/loose.dtd&quot;&gt; "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;html lang=&quot;fr&quot;&gt; &lt;html lang="fr"&gt;
&lt;head&gt; &lt;head&gt;
&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=ISO-8859-1&quot;&gt; &lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"&gt;
&lt;/head&gt; &lt;/head&gt;
&lt;body&gt; &lt;body&gt;
&lt;p&gt;W3C cr<63>e des standards pour le Web.&lt;/body&gt; &lt;p&gt;W3C cr<63>e des standards pour le Web.&lt;/body&gt;
@ -116,7 +116,7 @@ err.xml:1: error: Bytes: 0xE8 0x73 0x3E 0x6C
will report an error and stops processing: will report an error and stops processing:
<pre>~/XML -&gt; ./xmllint err2.xml <pre>~/XML -&gt; ./xmllint err2.xml
err2.xml:1: error: Unsupported encoding UnsupportedEnc err2.xml:1: error: Unsupported encoding UnsupportedEnc
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UnsupportedEnc&quot;?&gt; &lt;?xml version="1.0" encoding="UnsupportedEnc"?&gt;
^</pre> ^</pre>
</li> </li>
<li>From that point the encoder processes progressively the input (it is <li>From that point the encoder processes progressively the input (it is
@ -154,14 +154,14 @@ encoding:</p><ol><li>if no encoding is given, libxml2 will look for an encoding
resume the conversion. This guarantees that any document will be saved resume the conversion. This guarantees that any document will be saved
without losses (except for markup names where this is not legal, this is 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 a problem in the current version, in practice avoid using non-ascii
characters for tags or attributes names @@). A special &quot;ascii&quot; encoding characters for tags or attributes names @@). A special "ascii" encoding
name is used to save documents to a pure ascii form can be used when name is used to save documents to a pure ascii form can be used when
portability is really crucial</li> portability is really crucial</li>
</ol><p>Here is a few examples based on the same test document:</p><pre>~/XML -&gt; ./xmllint isolat1 </ol><p>Here is a few examples based on the same test document:</p><pre>~/XML -&gt; ./xmllint isolat1
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt; &lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;tr<EFBFBD>s&gt;l<EFBFBD>&lt;/tr<74>s&gt; &lt;tr<EFBFBD>s&gt;l<EFBFBD>&lt;/tr<74>s&gt;
~/XML -&gt; ./xmllint --encode UTF-8 isolat1 ~/XML -&gt; ./xmllint --encode UTF-8 isolat1
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;très&gt;l<EFBFBD> <20>&lt;/très&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 ~/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 processing. Looking up and modifying the content encoding is a bit more

View File

@ -12,9 +12,9 @@ abbreviation for a given string that you can reuse many times throughout the
content of your document. Entities are especially useful when a given string content of your document. Entities are especially useful when a given string
may occur frequently within a document, or to confine the change needed to a may occur frequently within a document, or to confine the change needed to a
document to a restricted area in the internal subset of the document (at the document to a restricted area in the internal subset of the document (at the
beginning). Example:</p><pre>1 &lt;?xml version=&quot;1.0&quot;?&gt; beginning). Example:</p><pre>1 &lt;?xml version="1.0"?&gt;
2 &lt;!DOCTYPE EXAMPLE SYSTEM &quot;example.dtd&quot; [ 2 &lt;!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
3 &lt;!ENTITY xml &quot;Extensible Markup Language&quot;&gt; 3 &lt;!ENTITY xml "Extensible Markup Language"&gt;
4 ]&gt; 4 ]&gt;
5 &lt;EXAMPLE&gt; 5 &lt;EXAMPLE&gt;
6 &amp;xml; 6 &amp;xml;
@ -24,7 +24,7 @@ are 5 predefined entities in libxml2 allowing you to escape characters with
predefined meaning in some parts of the xml document content: predefined meaning in some parts of the xml document content:
<strong>&amp;lt;</strong> for the character '&lt;', <strong>&amp;gt;</strong> <strong>&amp;lt;</strong> for the character '&lt;', <strong>&amp;gt;</strong>
for the character '&gt;', <strong>&amp;apos;</strong> for the character ''', for the character '&gt;', <strong>&amp;apos;</strong> for the character ''',
<strong>&amp;quot;</strong> for the character '&quot;', and <strong>&amp;quot;</strong> for the character '"', and
<strong>&amp;amp;</strong> for the character '&amp;'.</p><p>One of the problems related to entities is that you may want the parser to <strong>&amp;amp;</strong> for the character '&amp;'.</p><p>One of the problems related to entities is that you may want the parser to
substitute an entity's content so that you can see the replacement text in substitute an entity's content so that you can see the replacement text in
your application. Or you may prefer to keep entity references as such in the your application. Or you may prefer to keep entity references as such in the

View File

@ -11,12 +11,12 @@ A:link, A:visited, A:active { text-decoration: underline }
data is not kept in the DOM tree but uses internal structures. It is based on data is not kept in the DOM tree but uses internal structures. It is based on
a proposal to keep a database of jobs related to Gnome, with an XML based a proposal to keep a database of jobs related to Gnome, with an XML based
storage structure. Here is an <a href="gjobs.xml">XML encoded jobs storage structure. Here is an <a href="gjobs.xml">XML encoded jobs
base</a>:</p><pre>&lt;?xml version=&quot;1.0&quot;?&gt; base</a>:</p><pre>&lt;?xml version="1.0"?&gt;
&lt;gjob:Helping xmlns:gjob=&quot;http://www.gnome.org/some-location&quot;&gt; &lt;gjob:Helping xmlns:gjob="http://www.gnome.org/some-location"&gt;
&lt;gjob:Jobs&gt; &lt;gjob:Jobs&gt;
&lt;gjob:Job&gt; &lt;gjob:Job&gt;
&lt;gjob:Project ID=&quot;3&quot;/&gt; &lt;gjob:Project ID="3"/&gt;
&lt;gjob:Application&gt;GBackup&lt;/gjob:Application&gt; &lt;gjob:Application&gt;GBackup&lt;/gjob:Application&gt;
&lt;gjob:Category&gt;Development&lt;/gjob:Category&gt; &lt;gjob:Category&gt;Development&lt;/gjob:Category&gt;
@ -91,13 +91,13 @@ typedef struct person {
personPtr parsePerson(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) { personPtr parsePerson(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) {
personPtr ret = NULL; personPtr ret = NULL;
DEBUG(&quot;parsePerson\n&quot;); DEBUG("parsePerson\n");
/* /*
* allocate the struct * allocate the struct
*/ */
ret = (personPtr) malloc(sizeof(person)); ret = (personPtr) malloc(sizeof(person));
if (ret == NULL) { if (ret == NULL) {
fprintf(stderr,&quot;out of memory\n&quot;); fprintf(stderr,"out of memory\n");
return(NULL); return(NULL);
} }
memset(ret, 0, sizeof(person)); memset(ret, 0, sizeof(person));
@ -105,9 +105,9 @@ DEBUG(&quot;parsePerson\n&quot;);
/* We don't care what the top level element name is */ /* We don't care what the top level element name is */
cur = cur-&gt;xmlChildrenNode; cur = cur-&gt;xmlChildrenNode;
while (cur != NULL) { while (cur != NULL) {
if ((!strcmp(cur-&gt;name, &quot;Person&quot;)) &amp;&amp; (cur-&gt;ns == ns)) if ((!strcmp(cur-&gt;name, "Person")) &amp;&amp; (cur-&gt;ns == ns))
ret-&gt;name = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1); ret-&gt;name = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
if ((!strcmp(cur-&gt;name, &quot;Email&quot;)) &amp;&amp; (cur-&gt;ns == ns)) if ((!strcmp(cur-&gt;name, "Email")) &amp;&amp; (cur-&gt;ns == ns))
ret-&gt;email = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1); ret-&gt;email = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
cur = cur-&gt;next; cur = cur-&gt;next;
} }
@ -146,13 +146,13 @@ typedef struct job {
jobPtr parseJob(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) { jobPtr parseJob(xmlDocPtr doc, xmlNsPtr ns, xmlNodePtr cur) {
jobPtr ret = NULL; jobPtr ret = NULL;
DEBUG(&quot;parseJob\n&quot;); DEBUG("parseJob\n");
/* /*
* allocate the struct * allocate the struct
*/ */
ret = (jobPtr) malloc(sizeof(job)); ret = (jobPtr) malloc(sizeof(job));
if (ret == NULL) { if (ret == NULL) {
fprintf(stderr,&quot;out of memory\n&quot;); fprintf(stderr,"out of memory\n");
return(NULL); return(NULL);
} }
memset(ret, 0, sizeof(job)); memset(ret, 0, sizeof(job));
@ -161,17 +161,17 @@ DEBUG(&quot;parseJob\n&quot;);
cur = cur-&gt;xmlChildrenNode; cur = cur-&gt;xmlChildrenNode;
while (cur != NULL) { while (cur != NULL) {
if ((!strcmp(cur-&gt;name, &quot;Project&quot;)) &amp;&amp; (cur-&gt;ns == ns)) { if ((!strcmp(cur-&gt;name, "Project")) &amp;&amp; (cur-&gt;ns == ns)) {
ret-&gt;projectID = xmlGetProp(cur, &quot;ID&quot;); ret-&gt;projectID = xmlGetProp(cur, "ID");
if (ret-&gt;projectID == NULL) { if (ret-&gt;projectID == NULL) {
fprintf(stderr, &quot;Project has no ID\n&quot;); fprintf(stderr, "Project has no ID\n");
} }
} }
if ((!strcmp(cur-&gt;name, &quot;Application&quot;)) &amp;&amp; (cur-&gt;ns == ns)) if ((!strcmp(cur-&gt;name, "Application")) &amp;&amp; (cur-&gt;ns == ns))
ret-&gt;application = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1); ret-&gt;application = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
if ((!strcmp(cur-&gt;name, &quot;Category&quot;)) &amp;&amp; (cur-&gt;ns == ns)) if ((!strcmp(cur-&gt;name, "Category")) &amp;&amp; (cur-&gt;ns == ns))
ret-&gt;category = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1); ret-&gt;category = xmlNodeListGetString(doc, cur-&gt;xmlChildrenNode, 1);
if ((!strcmp(cur-&gt;name, &quot;Contact&quot;)) &amp;&amp; (cur-&gt;ns == ns)) if ((!strcmp(cur-&gt;name, "Contact")) &amp;&amp; (cur-&gt;ns == ns))
ret-&gt;contact = parsePerson(doc, ns, cur); ret-&gt;contact = parsePerson(doc, ns, cur);
cur = cur-&gt;next; cur = cur-&gt;next;
} }

View File

@ -203,7 +203,7 @@ A:link, A:visited, A:active { text-decoration: underline }
under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT 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. 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 text language where semantic and structure are added to the content using
extra &quot;markup&quot; information enclosed between angle brackets. HTML is the most 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 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> other environments.</p>
<p>Libxml2 is known to be very portable, the library should build and work <p>Libxml2 is known to be very portable, the library should build and work

View File

@ -16,7 +16,7 @@ API should <a href="#DOM">look at DOM</a>.</p><p>The <a href="html/libxml-parser
separated from the <a href="html/libxml-htmlparser.html">HTML parser separated from the <a href="html/libxml-htmlparser.html">HTML parser
interfaces</a>. Let's have a look at how the XML parser can be called:</p><h3><a name="Invoking" id="Invoking">Invoking the parser : the pull method</a></h3><p>Usually, the first thing to do is to read an XML input. The parser accepts interfaces</a>. Let's have a look at how the XML parser can be called:</p><h3><a name="Invoking" id="Invoking">Invoking the parser : the pull method</a></h3><p>Usually, the first thing to do is to read an XML input. The parser accepts
documents either from in-memory strings or from files. The functions are documents either from in-memory strings or from files. The functions are
defined in &quot;parser.h&quot;:</p><dl><dt><code>xmlDocPtr xmlParseMemory(char *buffer, int size);</code></dt> defined in "parser.h":</p><dl><dt><code>xmlDocPtr xmlParseMemory(char *buffer, int size);</code></dt>
<dd><p>Parse a null-terminated string containing the document.</p> <dd><p>Parse a null-terminated string containing the document.</p>
</dd> </dd>
</dl><dl><dt><code>xmlDocPtr xmlParseFile(const char *filename);</code></dt> </dl><dl><dt><code>xmlDocPtr xmlParseFile(const char *filename);</code></dt>
@ -37,7 +37,7 @@ int xmlParseChunk (xmlParserCtxtPtr ctxt,
int size, int size,
int terminate);</pre><p>and here is a simple example showing how to use the interface:</p><pre> FILE *f; int terminate);</pre><p>and here is a simple example showing how to use the interface:</p><pre> FILE *f;
f = fopen(filename, &quot;r&quot;); f = fopen(filename, "r");
if (f != NULL) { if (f != NULL) {
int res, size = 1024; int res, size = 1024;
char chars[1024]; char chars[1024];
@ -55,7 +55,7 @@ int xmlParseChunk (xmlParserCtxtPtr ctxt,
xmlFreeParserCtxt(ctxt); xmlFreeParserCtxt(ctxt);
} }
}</pre><p>The HTML parser embedded into libxml2 also has a push interface; the }</pre><p>The HTML parser embedded into libxml2 also has a push interface; the
functions are just prefixed by &quot;html&quot; rather than &quot;xml&quot;.</p><h3 id="Invoking2">Invoking the parser: the SAX interface</h3><p>The tree-building interface makes the parser memory-hungry, first loading functions are just prefixed by "html" rather than "xml".</p><h3 id="Invoking2">Invoking the parser: the SAX interface</h3><p>The tree-building interface makes the parser memory-hungry, first loading
the document in memory and then building the tree itself. Reading a document the document in memory and then building the tree itself. Reading a document
without building the tree is possible using the SAX interfaces (see SAX.h and without building the tree is possible using the SAX interfaces (see SAX.h and
<a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">James <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">James
@ -68,23 +68,23 @@ code that produces the XML document used in the previous examples:</p><pre> #
xmlDocPtr doc; xmlDocPtr doc;
xmlNodePtr tree, subtree; xmlNodePtr tree, subtree;
doc = xmlNewDoc(&quot;1.0&quot;); doc = xmlNewDoc("1.0");
doc-&gt;children = xmlNewDocNode(doc, NULL, &quot;EXAMPLE&quot;, NULL); doc-&gt;children = xmlNewDocNode(doc, NULL, "EXAMPLE", NULL);
xmlSetProp(doc-&gt;children, &quot;prop1&quot;, &quot;gnome is great&quot;); xmlSetProp(doc-&gt;children, "prop1", "gnome is great");
xmlSetProp(doc-&gt;children, &quot;prop2&quot;, &quot;&amp; linux too&quot;); xmlSetProp(doc-&gt;children, "prop2", "&amp; linux too");
tree = xmlNewChild(doc-&gt;children, NULL, &quot;head&quot;, NULL); tree = xmlNewChild(doc-&gt;children, NULL, "head", NULL);
subtree = xmlNewChild(tree, NULL, &quot;title&quot;, &quot;Welcome to Gnome&quot;); subtree = xmlNewChild(tree, NULL, "title", "Welcome to Gnome");
tree = xmlNewChild(doc-&gt;children, NULL, &quot;chapter&quot;, NULL); tree = xmlNewChild(doc-&gt;children, NULL, "chapter", NULL);
subtree = xmlNewChild(tree, NULL, &quot;title&quot;, &quot;The Linux adventure&quot;); subtree = xmlNewChild(tree, NULL, "title", "The Linux adventure");
subtree = xmlNewChild(tree, NULL, &quot;p&quot;, &quot;bla bla bla ...&quot;); subtree = xmlNewChild(tree, NULL, "p", "bla bla bla ...");
subtree = xmlNewChild(tree, NULL, &quot;image&quot;, NULL); subtree = xmlNewChild(tree, NULL, "image", NULL);
xmlSetProp(subtree, &quot;href&quot;, &quot;linus.gif&quot;);</pre><p>Not really rocket science ...</p><h3><a name="Traversing" id="Traversing">Traversing the tree</a></h3><p>Basically by <a href="html/libxml-tree.html">including &quot;tree.h&quot;</a> your xmlSetProp(subtree, "href", "linus.gif");</pre><p>Not really rocket science ...</p><h3><a name="Traversing" id="Traversing">Traversing the tree</a></h3><p>Basically by <a href="html/libxml-tree.html">including "tree.h"</a> your
code has access to the internal structure of all the elements of the tree. code has access to the internal structure of all the elements of the tree.
The names should be somewhat simple like <strong>parent</strong>, The names should be somewhat simple like <strong>parent</strong>,
<strong>children</strong>, <strong>next</strong>, <strong>prev</strong>, <strong>children</strong>, <strong>next</strong>, <strong>prev</strong>,
<strong>properties</strong>, etc... For example, still with the previous <strong>properties</strong>, etc... For example, still with the previous
example:</p><pre><code>doc-&gt;children-&gt;children-&gt;children</code></pre><p>points to the title element,</p><pre>doc-&gt;children-&gt;children-&gt;next-&gt;children-&gt;children</pre><p>points to the text node containing the chapter title &quot;The Linux example:</p><pre><code>doc-&gt;children-&gt;children-&gt;children</code></pre><p>points to the title element,</p><pre>doc-&gt;children-&gt;children-&gt;next-&gt;children-&gt;children</pre><p>points to the text node containing the chapter title "The Linux
adventure&quot;.</p><p><strong>NOTE</strong>: XML allows <em>PI</em>s and <em>comments</em> to be adventure".</p><p><strong>NOTE</strong>: XML allows <em>PI</em>s and <em>comments</em> to be
present before the document root, so <code>doc-&gt;children</code> may point present before the document root, so <code>doc-&gt;children</code> may point
to an element which is not the document Root Element; a function to an element which is not the document Root Element; a function
<code>xmlDocGetRootElement()</code> was added for this purpose.</p><h3><a name="Modifying" id="Modifying">Modifying the tree</a></h3><p>Functions are provided for reading and writing the document content. Here <code>xmlDocGetRootElement()</code> was added for this purpose.</p><h3><a name="Modifying" id="Modifying">Modifying the tree</a></h3><p>Functions are provided for reading and writing the document content. Here
@ -101,7 +101,7 @@ is an excerpt from the <a href="html/libxml-tree.html">tree API</a>:</p><dl><dt>
</dl><p>Two functions are provided for reading and writing the text associated </dl><p>Two functions are provided for reading and writing the text associated
with elements:</p><dl><dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const xmlChar with elements:</p><dl><dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const xmlChar
*value);</code></dt> *value);</code></dt>
<dd><p>This function takes an &quot;external&quot; string and converts it to one <dd><p>This function takes an "external" string and converts it to one
text node or possibly to a list of entity and text nodes. All text node or possibly to a list of entity and text nodes. All
non-predefined entity references like &amp;Gnome; will be stored non-predefined entity references like &amp;Gnome; will be stored
internally as entity nodes, hence the result of the function may not be internally as entity nodes, hence the result of the function may not be
@ -115,7 +115,7 @@ with elements:</p><dl><dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, c
argument inLine. If this argument is set to 1, the function will expand argument inLine. If this argument is set to 1, the function will expand
entity references. For example, instead of returning the &amp;Gnome; entity references. For example, instead of returning the &amp;Gnome;
XML encoding in the string, it will substitute it with its value (say, XML encoding in the string, it will substitute it with its value (say,
&quot;GNU Network Object Model Environment&quot;).</p> "GNU Network Object Model Environment").</p>
</dd> </dd>
</dl><h3><a name="Saving" id="Saving">Saving a tree</a></h3><p>Basically 3 options are possible:</p><dl><dt><code>void xmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int </dl><h3><a name="Saving" id="Saving">Saving a tree</a></h3><p>Basically 3 options are possible:</p><dl><dt><code>void xmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int
*size);</code></dt> *size);</code></dt>

View File

@ -17,14 +17,14 @@ 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 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 refinement and merging of data from different sources. This doesn't increase
the size of the XML output significantly, but significantly increases its the size of the XML output significantly, but significantly increases its
value in the long-term. Example:</p><pre>&lt;mydoc xmlns=&quot;http://mydoc.example.org/schemas/&quot;&gt; value in the long-term. Example:</p><pre>&lt;mydoc xmlns="http://mydoc.example.org/schemas/"&gt;
&lt;elem1&gt;...&lt;/elem1&gt; &lt;elem1&gt;...&lt;/elem1&gt;
&lt;elem2&gt;...&lt;/elem2&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 &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 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 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 control, and that the URL should contain some kind of version information if
possible. For example, <code>&quot;http://www.gnome.org/gnumeric/1.0/&quot;</code> is a 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 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, 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 if the version information don't match something you know, warn the user
@ -35,15 +35,15 @@ 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 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 <code>ns</code> field pointing to an xmlNs structure detailing the namespace
prefix and its URI.</p><p>@@Interfaces@@</p><pre>xmlNodePtr node; prefix and its URI.</p><p>@@Interfaces@@</p><pre>xmlNodePtr node;
if(!strncmp(node-&gt;name,&quot;mytag&quot;,5) if(!strncmp(node-&gt;name,"mytag",5)
&amp;&amp; node-&gt;ns &amp;&amp; node-&gt;ns
&amp;&amp; !strcmp(node-&gt;ns-&gt;href,&quot;http://www.mysite.com/myns/1.0&quot;)) { &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. }</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, 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 so even if you plan to use or currently are using validation I strongly
suggest adding namespaces to your document. A default namespace scheme suggest adding namespaces to your document. A default namespace scheme
<code>xmlns=&quot;http://....&quot;</code> should not break validity even on less <code>xmlns="http://...."</code> should not break validity even on less
flexible parsers. Using namespaces to mix and differentiate content coming flexible parsers. Using namespaces to mix and differentiate content coming
from multiple DTDs will certainly break current validation schemes. To check from multiple DTDs will certainly break current validation schemes. To check
such documents one needs to use schema-validation, which is supported in such documents one needs to use schema-validation, which is supported in

View File

@ -135,7 +135,7 @@ to test those</p><ul><li>More testing on RelaxNG</li>
xmlSearchNs() by Luca Padovani. The xmlReader should do far less xmlSearchNs() by Luca Padovani. The xmlReader should do far less
allocation and it speed should get closer to SAX. Chris Anderson worked allocation and it speed should get closer to SAX. Chris Anderson worked
on speeding and cleaning up repetitive checking code.</li> on speeding and cleaning up repetitive checking code.</li>
<li>cleanup of &quot;make tests&quot;</li> <li>cleanup of "make tests"</li>
<li>libxml-2.0-uninstalled.pc from Malcolm Tredinnick</li> <li>libxml-2.0-uninstalled.pc from Malcolm Tredinnick</li>
<li>deactivated the broken docBook SGML parser code and plugged the XML <li>deactivated the broken docBook SGML parser code and plugged the XML
parser instead.</li> parser instead.</li>
@ -191,7 +191,7 @@ to test those</p><ul><li>More testing on RelaxNG</li>
<li>Fixes: update of the Trio code (Bjorn), WXS Date and Duration fixes <li>Fixes: update of the Trio code (Bjorn), WXS Date and Duration fixes
(Charles Bozeman), DTD and namespaces (Brent Hendricks), HTML push parser (Charles Bozeman), DTD and namespaces (Brent Hendricks), HTML push parser
and zero bytes handling, some missing Windows file path conversions, and zero bytes handling, some missing Windows file path conversions,
behaviour of the parser and validator in the presence of &quot;out of memory&quot; behaviour of the parser and validator in the presence of "out of memory"
error conditions</li> error conditions</li>
<li>extended the API to be able to plug a garbage collecting memory <li>extended the API to be able to plug a garbage collecting memory
allocator, added xmlMallocAtomic() and modified the allocations allocator, added xmlMallocAtomic() and modified the allocations
@ -284,7 +284,7 @@ to test those</p><ul><li>More testing on RelaxNG</li>
<li>2 bug fixes in the XML push parser</li> <li>2 bug fixes in the XML push parser</li>
<li>potential memory leak removed (Martin Stoilov)</li> <li>potential memory leak removed (Martin Stoilov)</li>
<li>fix to the configure script for Unix (Dimitri Papadopoulos)</li> <li>fix to the configure script for Unix (Dimitri Papadopoulos)</li>
<li>added encoding support for XInclude parse=&quot;text&quot;</li> <li>added encoding support for XInclude parse="text"</li>
<li>autodetection of XHTML1 and specific serialization rules added</li> <li>autodetection of XHTML1 and specific serialization rules added</li>
<li>nasty threading bug fixed (William Brack)</li> <li>nasty threading bug fixed (William Brack)</li>
</ul><h3>2.4.27: Nov 17 2002</h3><ul><li>fixes for the Python bindings</li> </ul><h3>2.4.27: Nov 17 2002</h3><ul><li>fixes for the Python bindings</li>
@ -370,8 +370,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>serious cleanup of the Python makefiles</li> <li>serious cleanup of the Python makefiles</li>
<li>speedup patch to XPath very effective for DocBook stylesheets</li> <li>speedup patch to XPath very effective for DocBook stylesheets</li>
<li>Fixes for Windows build, cleanup of the documentation</li> <li>Fixes for Windows build, cleanup of the documentation</li>
</ul><h3>2.4.17: Mar 8 2002</h3><ul><li>a lot of bug fixes, including &quot;namespace nodes have no parents in </ul><h3>2.4.17: Mar 8 2002</h3><ul><li>a lot of bug fixes, including "namespace nodes have no parents in
XPath&quot;</li> XPath"</li>
<li>fixed/improved the Python wrappers, added more examples and more <li>fixed/improved the Python wrappers, added more examples and more
regression tests, XPath extension functions can now return node-sets</li> regression tests, XPath extension functions can now return node-sets</li>
<li>added the XML Canonicalization support from Aleksey Sanin</li> <li>added the XML Canonicalization support from Aleksey Sanin</li>
@ -684,7 +684,7 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
$prefix/include/gnome-xml), they also are referenced by $prefix/include/gnome-xml), they also are referenced by
<pre>#include &lt;libxml/xxx.h&gt;</pre> <pre>#include &lt;libxml/xxx.h&gt;</pre>
<p>instead of</p> <p>instead of</p>
<pre>#include &quot;xxx.h&quot;</pre> <pre>#include "xxx.h"</pre>
</li> </li>
<li>a new URI module for parsing URIs and following strictly RFC 2396</li> <li>a new URI module for parsing URIs and following strictly RFC 2396</li>
<li>the memory allocation routines used by libxml can now be overloaded <li>the memory allocation routines used by libxml can now be overloaded
@ -765,7 +765,7 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
xmlDocSetRootElement</li> xmlDocSetRootElement</li>
<li>Tried to improve the HTML output with help from <a href="mailto:clahey@umich.edu">Chris Lahey</a></li> <li>Tried to improve the HTML output with help from <a href="mailto:clahey@umich.edu">Chris Lahey</a></li>
</ul><h3>1.8.1: Dec 18 1999</h3><ul><li>various patches to avoid troubles when using libxml with C++ compilers </ul><h3>1.8.1: Dec 18 1999</h3><ul><li>various patches to avoid troubles when using libxml with C++ compilers
the &quot;namespace&quot; keyword and C escaping in include files</li> the "namespace" keyword and C escaping in include files</li>
<li>a problem in one of the core macros IS_CHAR was corrected</li> <li>a problem in one of the core macros IS_CHAR was corrected</li>
<li>fixed a bug introduced in 1.8.0 breaking default namespace processing, <li>fixed a bug introduced in 1.8.0 breaking default namespace processing,
and more specifically the Dia application</li> and more specifically the Dia application</li>

View File

@ -33,7 +33,7 @@ or libxslt wrappers or bindings:</p><ul><li><a href="http://libxmlplusplus.sourc
libxml2</a> with Kylix, Delphi and other Pascal compilers.</li> libxml2</a> with Kylix, Delphi and other Pascal compilers.</li>
<li>Uwe Fechner also provides <a href="http://sourceforge.net/projects/idom2-pas/">idom2</a>, a DOM2 <li>Uwe Fechner also provides <a href="http://sourceforge.net/projects/idom2-pas/">idom2</a>, a DOM2
implementation for Kylix2/D5/D6 from Borland.</li> implementation for Kylix2/D5/D6 from Borland.</li>
<li>Wai-Sun &quot;Squidster&quot; Chia provides <a href="http://www.rubycolor.org/arc/redist/">bindings for Ruby</a> and <li>Wai-Sun "Squidster" Chia provides <a href="http://www.rubycolor.org/arc/redist/">bindings for Ruby</a> and
libxml2 bindings are also available in Ruby through the <a href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a> module libxml2 bindings are also available in Ruby through the <a href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a> module
maintained by Tobias Peters.</li> maintained by Tobias Peters.</li>
<li>Steve Ball and contributors maintains <a href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings for <li>Steve Ball and contributors maintains <a href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings for
@ -58,23 +58,23 @@ build the bindings is python/generator.py in the source distribution.</p><p>To i
<li>Otherwise use the <a href="ftp://xmlsoft.org/python/">libxml2-python <li>Otherwise use the <a href="ftp://xmlsoft.org/python/">libxml2-python
module distribution</a> corresponding to your installed version of module distribution</a> corresponding to your installed version of
libxml2 and libxslt. Note that to install it you will need both libxml2 libxml2 and libxslt. Note that to install it you will need both libxml2
and libxslt installed and run &quot;python setup.py build install&quot; in the and libxslt installed and run "python setup.py build install" in the
module tree.</li> module tree.</li>
</ul><p>The distribution includes a set of examples and regression tests for the </ul><p>The distribution includes a set of examples and regression tests for the
python bindings in the <code>python/tests</code> directory. Here are some python bindings in the <code>python/tests</code> directory. Here are some
excerpts from those tests:</p><h3>tst.py:</h3><p>This is a basic test of the file interface and DOM navigation:</p><pre>import libxml2, sys excerpts from those tests:</p><h3>tst.py:</h3><p>This is a basic test of the file interface and DOM navigation:</p><pre>import libxml2, sys
doc = libxml2.parseFile(&quot;tst.xml&quot;) doc = libxml2.parseFile("tst.xml")
if doc.name != &quot;tst.xml&quot;: if doc.name != "tst.xml":
print &quot;doc.name failed&quot; print "doc.name failed"
sys.exit(1) sys.exit(1)
root = doc.children root = doc.children
if root.name != &quot;doc&quot;: if root.name != "doc":
print &quot;root.name failed&quot; print "root.name failed"
sys.exit(1) sys.exit(1)
child = root.children child = root.children
if child.name != &quot;foo&quot;: if child.name != "foo":
print &quot;child.name failed&quot; print "child.name failed"
sys.exit(1) sys.exit(1)
doc.freeDoc()</pre><p>The Python module is called libxml2; parseFile is the equivalent of doc.freeDoc()</pre><p>The Python module is called libxml2; parseFile is the equivalent of
xmlParseFile (most of the bindings are automatically generated, and the xml xmlParseFile (most of the bindings are automatically generated, and the xml
@ -101,14 +101,14 @@ def noerr(ctx, str):
libxml2.registerErrorHandler(noerr, None) libxml2.registerErrorHandler(noerr, None)
ctxt = libxml2.createFileParserCtxt(&quot;invalid.xml&quot;) ctxt = libxml2.createFileParserCtxt("invalid.xml")
ctxt.validate(1) ctxt.validate(1)
ctxt.parseDocument() ctxt.parseDocument()
doc = ctxt.doc() doc = ctxt.doc()
valid = ctxt.isValid() valid = ctxt.isValid()
doc.freeDoc() doc.freeDoc()
if valid != 0: if valid != 0:
print &quot;validity check failed&quot;</pre><p>The first thing to notice is the call to registerErrorHandler(), it print "validity check failed"</pre><p>The first thing to notice is the call to registerErrorHandler(), it
defines a new error handler global to the library. It is used to avoid seeing defines a new error handler global to the library. It is used to avoid seeing
the error messages when trying to validate the invalid document.</p><p>The main interest of that test is the creation of a parser context with the error messages when trying to validate the invalid document.</p><p>The main interest of that test is the creation of a parser context with
createFileParserCtxt() and how the behaviour can be changed before calling createFileParserCtxt() and how the behaviour can be changed before calling
@ -118,8 +118,8 @@ C function interfaces in terms of objects method as much as possible. The
best to get a complete view of what methods are supported is to look at the best to get a complete view of what methods are supported is to look at the
libxml2.py module containing all the wrappers.</p><h3>push.py:</h3><p>This test show how to activate the push parser interface:</p><pre>import libxml2 libxml2.py module containing all the wrappers.</p><h3>push.py:</h3><p>This test show how to activate the push parser interface:</p><pre>import libxml2
ctxt = libxml2.createPushParser(None, &quot;&lt;foo&quot;, 4, &quot;test.xml&quot;) ctxt = libxml2.createPushParser(None, "&lt;foo", 4, "test.xml")
ctxt.parseChunk(&quot;/&gt;&quot;, 2, 1) ctxt.parseChunk("/&gt;", 2, 1)
doc = ctxt.doc() doc = ctxt.doc()
doc.freeDoc()</pre><p>The context is created with a special call based on the doc.freeDoc()</pre><p>The context is created with a special call based on the
@ -129,71 +129,71 @@ the resource in case URI-References need to be computed by the parser.</p><p>The
setting the third argument terminate to 1.</p><h3>pushSAX.py:</h3><p>this test show the use of the event based parsing interfaces. In this case setting the third argument terminate to 1.</p><h3>pushSAX.py:</h3><p>this test show the use of the event based parsing interfaces. In this case
the parser does not build a document, but provides callback information as the parser does not build a document, but provides callback information as
the parser makes progresses analyzing the data being provided:</p><pre>import libxml2 the parser makes progresses analyzing the data being provided:</p><pre>import libxml2
log = &quot;&quot; log = ""
class callback: class callback:
def startDocument(self): def startDocument(self):
global log global log
log = log + &quot;startDocument:&quot; log = log + "startDocument:"
def endDocument(self): def endDocument(self):
global log global log
log = log + &quot;endDocument:&quot; log = log + "endDocument:"
def startElement(self, tag, attrs): def startElement(self, tag, attrs):
global log global log
log = log + &quot;startElement %s %s:&quot; % (tag, attrs) log = log + "startElement %s %s:" % (tag, attrs)
def endElement(self, tag): def endElement(self, tag):
global log global log
log = log + &quot;endElement %s:&quot; % (tag) log = log + "endElement %s:" % (tag)
def characters(self, data): def characters(self, data):
global log global log
log = log + &quot;characters: %s:&quot; % (data) log = log + "characters: %s:" % (data)
def warning(self, msg): def warning(self, msg):
global log global log
log = log + &quot;warning: %s:&quot; % (msg) log = log + "warning: %s:" % (msg)
def error(self, msg): def error(self, msg):
global log global log
log = log + &quot;error: %s:&quot; % (msg) log = log + "error: %s:" % (msg)
def fatalError(self, msg): def fatalError(self, msg):
global log global log
log = log + &quot;fatalError: %s:&quot; % (msg) log = log + "fatalError: %s:" % (msg)
handler = callback() handler = callback()
ctxt = libxml2.createPushParser(handler, &quot;&lt;foo&quot;, 4, &quot;test.xml&quot;) ctxt = libxml2.createPushParser(handler, "&lt;foo", 4, "test.xml")
chunk = &quot; url='tst'&gt;b&quot; chunk = " url='tst'&gt;b"
ctxt.parseChunk(chunk, len(chunk), 0) ctxt.parseChunk(chunk, len(chunk), 0)
chunk = &quot;ar&lt;/foo&gt;&quot; chunk = "ar&lt;/foo&gt;"
ctxt.parseChunk(chunk, len(chunk), 1) ctxt.parseChunk(chunk, len(chunk), 1)
reference = &quot;startDocument:startElement foo {'url': 'tst'}:&quot; + \ reference = "startDocument:startElement foo {'url': 'tst'}:" + \
&quot;characters: bar:endElement foo:endDocument:&quot; "characters: bar:endElement foo:endDocument:"
if log != reference: if log != reference:
print &quot;Error got: %s&quot; % log print "Error got: %s" % log
print &quot;Expected: %s&quot; % reference</pre><p>The key object in that test is the handler, it provides a number of entry print "Expected: %s" % reference</pre><p>The key object in that test is the handler, it provides a number of entry
points which can be called by the parser as it makes progresses to indicate points which can be called by the parser as it makes progresses to indicate
the information set obtained. The full set of callback is larger than what the information set obtained. The full set of callback is larger than what
the callback class in that specific example implements (see the SAX the callback class in that specific example implements (see the SAX
definition for a complete list). The wrapper will only call those supplied by definition for a complete list). The wrapper will only call those supplied by
the object when activated. The startElement receives the names of the element the object when activated. The startElement receives the names of the element
and a dictionary containing the attributes carried by this element.</p><p>Also note that the reference string generated from the callback shows a and a dictionary containing the attributes carried by this element.</p><p>Also note that the reference string generated from the callback shows a
single character call even though the string &quot;bar&quot; is passed to the parser single character call even though the string "bar" is passed to the parser
from 2 different call to parseChunk()</p><h3>xpath.py:</h3><p>This is a basic test of XPath wrappers support</p><pre>import libxml2 from 2 different call to parseChunk()</p><h3>xpath.py:</h3><p>This is a basic test of XPath wrappers support</p><pre>import libxml2
doc = libxml2.parseFile(&quot;tst.xml&quot;) doc = libxml2.parseFile("tst.xml")
ctxt = doc.xpathNewContext() ctxt = doc.xpathNewContext()
res = ctxt.xpathEval(&quot;//*&quot;) res = ctxt.xpathEval("//*")
if len(res) != 2: if len(res) != 2:
print &quot;xpath query: wrong node set size&quot; print "xpath query: wrong node set size"
sys.exit(1) sys.exit(1)
if res[0].name != &quot;doc&quot; or res[1].name != &quot;foo&quot;: if res[0].name != "doc" or res[1].name != "foo":
print &quot;xpath query: wrong node set value&quot; print "xpath query: wrong node set value"
sys.exit(1) sys.exit(1)
doc.freeDoc() doc.freeDoc()
ctxt.xpathFreeContext()</pre><p>This test parses a file, then create an XPath context to evaluate XPath ctxt.xpathFreeContext()</pre><p>This test parses a file, then create an XPath context to evaluate XPath
@ -208,12 +208,12 @@ python:</p><pre>import libxml2
def foo(ctx, x): def foo(ctx, x):
return x + 1 return x + 1
doc = libxml2.parseFile(&quot;tst.xml&quot;) doc = libxml2.parseFile("tst.xml")
ctxt = doc.xpathNewContext() ctxt = doc.xpathNewContext()
libxml2.registerXPathFunction(ctxt._o, &quot;foo&quot;, None, foo) libxml2.registerXPathFunction(ctxt._o, "foo", None, foo)
res = ctxt.xpathEval(&quot;foo(1)&quot;) res = ctxt.xpathEval("foo(1)")
if res != 2: if res != 2:
print &quot;xpath extension failure&quot; print "xpath extension failure"
doc.freeDoc() doc.freeDoc()
ctxt.xpathFreeContext()</pre><p>Note how the extension function is registered with the context (but that ctxt.xpathFreeContext()</pre><p>Note how the extension function is registered with the context (but that
part is not yet finalized, this may change slightly in the future).</p><h3>tstxpath.py:</h3><p>This test is similar to the previous one but shows how the extension part is not yet finalized, this may change slightly in the future).</p><h3>tstxpath.py:</h3><p>This test is similar to the previous one but shows how the extension
@ -232,9 +232,9 @@ evaluation point.</p><h3>Memory debugging:</h3><p>last but not least, all tests
libxml2.debugMemory(1)</pre><p>and ends with the following epilogue:</p><pre>#memory debug specific libxml2.debugMemory(1)</pre><p>and ends with the following epilogue:</p><pre>#memory debug specific
libxml2.cleanupParser() libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0: if libxml2.debugMemory(1) == 0:
print &quot;OK&quot; print "OK"
else: else:
print &quot;Memory leak %d bytes&quot; % (libxml2.debugMemory(1)) print "Memory leak %d bytes" % (libxml2.debugMemory(1))
libxml2.dumpMemory()</pre><p>Those activate the memory debugging interface of libxml2 where all libxml2.dumpMemory()</pre><p>Those activate the memory debugging interface of libxml2 where all
allocated block in the library are tracked. The prologue then cleans up the allocated block in the library are tracked. The prologue then cleans up the
library state and checks that all allocated memory has been freed. If not it library state and checks that all allocated memory has been freed. If not it

View File

@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><title>Thread safety</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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>Thread safety</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>Developer 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" style="font-weight:bold">Main Menu</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</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>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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>Starting with 2.4.7, libxml2 makes provisions to ensure that concurrent </style><title>Thread safety</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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>Thread safety</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>Developer 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" style="font-weight:bold">Main Menu</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</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>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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>Starting with 2.4.7, libxml2 makes provisions to ensure that concurrent
threads can safely work in parallel parsing different documents. There is threads can safely work in parallel parsing different documents. There is
however a couple of things to do to ensure it:</p><ul><li>configure the library accordingly using the --with-threads options</li> however a couple of things to do to ensure it:</p><ul><li>configure the library accordingly using the --with-threads options</li>
<li>call xmlInitParser() in the &quot;main&quot; thread before using any of the <li>call xmlInitParser() in the "main" thread before using any of the
libxml2 API (except possibly selecting a different memory allocator)</li> libxml2 API (except possibly selecting a different memory allocator)</li>
</ul><p>Note that the thread safety cannot be ensured for multiple threads sharing </ul><p>Note that the thread safety cannot be ensured for multiple threads sharing
the same document, the locking must be done at the application level, libxml the same document, the locking must be done at the application level, libxml

View File

@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><title>Upgrading 1.x code</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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>Upgrading 1.x code</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>Developer 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" style="font-weight:bold">Main Menu</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</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>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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>Incompatible changes:</p><p>Version 2 of libxml2 is the first version introducing serious backward </style><title>Upgrading 1.x code</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" 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>Upgrading 1.x code</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>Developer 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" style="font-weight:bold">Main Menu</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</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>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal 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>Incompatible changes:</p><p>Version 2 of libxml2 is the first version introducing serious backward
incompatible changes. The main goals were:</p><ul><li>a general cleanup. A number of mistakes inherited from the very early incompatible changes. The main goals were:</p><ul><li>a general cleanup. A number of mistakes inherited from the very early
versions couldn't be changed due to compatibility constraints. Example versions couldn't be changed due to compatibility constraints. Example
the &quot;childs&quot; element in the nodes.</li> the "childs" element in the nodes.</li>
<li>Uniformization of the various nodes, at least for their header and link <li>Uniformization of the various nodes, at least for their header and link
parts (doc, parent, children, prev, next), the goal is a simpler parts (doc, parent, children, prev, next), the goal is a simpler
programming model and simplifying the task of the DOM implementors.</li> programming model and simplifying the task of the DOM implementors.</li>
@ -29,7 +29,7 @@ mail</a>:</p><ol><li>The package name have changed from libxml to libxml2, the l
select the right parameters libxml2</li> select the right parameters libxml2</li>
<li>Node <strong>childs</strong> field has been renamed <li>Node <strong>childs</strong> field has been renamed
<strong>children</strong> so s/childs/children/g should be applied <strong>children</strong> so s/childs/children/g should be applied
(probability of having &quot;childs&quot; anywhere else is close to 0+</li> (probability of having "childs" anywhere else is close to 0+</li>
<li>The document don't have anymore a <strong>root</strong> element it has <li>The document don't have anymore a <strong>root</strong> element it has
been replaced by <strong>children</strong> and usually you will get a been replaced by <strong>children</strong> and usually you will get a
list of element here. For example a Dtd element for the internal subset list of element here. For example a Dtd element for the internal subset

View File

@ -194,7 +194,7 @@ libxml2</p>
<li><em>Where can I get libxml</em> ? <li><em>Where can I get libxml</em> ?
<p>The original distribution comes from <a <p>The original distribution comes from <a
href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</a> or <a href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</a> or <a
href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/">gnome.org</a></p> 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 <p>Most Linux and BSD distributions include libxml, this is probably the
safer way for end-users to use libxml.</p> safer way for end-users to use libxml.</p>
<p>David Doolin provides precompiled Windows versions at <a <p>David Doolin provides precompiled Windows versions at <a
@ -591,7 +591,7 @@ href="ftp://xmlsoft.org/">xmlsoft.org</a> (<a
href="ftp://speakeasy.rpmfind.net/pub/libxml/">Seattle</a>, <a href="ftp://speakeasy.rpmfind.net/pub/libxml/">Seattle</a>, <a
href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <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> either href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> either
as a <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/">source as a <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">source
archive</a><!-- commenting this out because they seem to have disappeared or <a archive</a><!-- commenting this out because they seem to have disappeared or <a
href="ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/">RPM href="ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/">RPM
packages</a> --> packages</a> -->

View File

@ -40,7 +40,7 @@ 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 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 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 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 &quot;dtds/mydtd&quot;&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 <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 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> 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 <li>It is also possible to associate a <code>PUBLIC</code> identifier (a
@ -64,9 +64,9 @@ order.</p><h4><a name="Declaring1" id="Declaring1">Declaring attributes</a>:</h4
attribute containing text (<code>CDATA</code>) and which is optional attribute containing text (<code>CDATA</code>) and which is optional
(<code>#IMPLIED</code>). The attribute value can also be defined within a (<code>#IMPLIED</code>). The attribute value can also be defined within a
set:</p><p><code>&lt;!ATTLIST list type (bullets|ordered|glossary) set:</p><p><code>&lt;!ATTLIST list type (bullets|ordered|glossary)
&quot;ordered&quot;&gt;</code></p><p>means <code>list</code> element have a <code>type</code> attribute with 3 "ordered"&gt;</code></p><p>means <code>list</code> element have a <code>type</code> attribute with 3
allowed values &quot;bullets&quot;, &quot;ordered&quot; or &quot;glossary&quot; and which default to allowed values "bullets", "ordered" or "glossary" and which default to
&quot;ordered&quot; if the attribute is not explicitly specified.</p><p>The content type of an attribute can be text (<code>CDATA</code>), "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 anchor/reference/references
(<code>ID</code>/<code>IDREF</code>/<code>IDREFS</code>), entity(ies) (<code>ID</code>/<code>IDREF</code>/<code>IDREFS</code>), entity(ies)
(<code>ENTITY</code>/<code>ENTITIES</code>) or name(s) (<code>ENTITY</code>/<code>ENTITIES</code>) or name(s)

View File

@ -52,7 +52,7 @@ or call a specific routine when a given block number is allocated:</p><ul><li><a
()</a> dumps all the informations about the allocated memory block lefts ()</a> dumps all the informations about the allocated memory block lefts
in the <code>.memdump</code> file</li> in the <code>.memdump</code> file</li>
</ul><p>When developing libxml2 memory debug is enabled, the tests programs call </ul><p>When developing libxml2 memory debug is enabled, the tests programs call
xmlMemoryDump () and the &quot;make test&quot; regression tests will check for any xmlMemoryDump () and the "make test" regression tests will check for any
memory leak during the full regression test sequence, this helps a lot memory leak during the full regression test sequence, this helps a lot
ensuring that libxml2 does not leak memory and bullet proof memory ensuring that libxml2 does not leak memory and bullet proof memory
allocations use (some libc implementations are known to be far too permissive allocations use (some libc implementations are known to be far too permissive