xml.html 172 KB
Newer Older
1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
3
4
<html>
<head>
5
  <title>The XML C library for Gnome</title>
6
  <meta name="GENERATOR" content="amaya 5.1">
Daniel Veillard's avatar
Daniel Veillard committed
7
  <meta http-equiv="Content-Type" content="text/html">
8
9
</head>

10
<body bgcolor="#ffffff">
11
<h1 align="center">The XML C library for Gnome</h1>
12

13
14
15
<h1>Note: this is the flat content of the <a href="index.html">web
site</a></h1>

16
<h1 style="text-align: center">libxml, a.k.a. gnome-xml</h1>
17
18

<p></p>
19

20
<p>Libxml is the XML C library developed for the Gnome project.  XML itself
21
22
is a metalanguage to design markup languages, i.e. text language where
semantic and structure are added to the content using extra "markup"
23
information enclosed between angle brackets. HTML is the most well-known
24
markup language. Though the library is written in C <a href="python.html">a
25
variety of language bindings</a> make it available in other environments.</p>
26

27
28
29
30
<p>Libxml2 is known to be very portable, the library should build and work
without serious troubles on a variety of systems (Linux, Unix, Windows,
CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)</p>

31
32
33
34
35
36
37
38
39
<p>Libxml2 implements a number of existing standards related to markup
languages:</p>
<ul>
  <li>the XML standard: <a
    href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></li>
  <li>Namespaces in XML: <a
    href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a></li>
  <li>XML Base: <a
    href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a></li>
40
41
  <li><a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC 2396</a> :
    Uniform Resource Identifiers <a
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a></li>
  <li>XML Path Language (XPath) 1.0: <a
    href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a></li>
  <li>HTML4 parser: <a
    href="http://www.w3.org/TR/html401/">http://www.w3.org/TR/html401/</a></li>
  <li>most of XML Pointer Language (XPointer) Version 1.0: <a
    href="http://www.w3.org/TR/xptr">http://www.w3.org/TR/xptr</a></li>
  <li>XML Inclusions (XInclude) Version 1.0: <a
    href="http://www.w3.org/TR/xinclude/">http://www.w3.org/TR/xinclude/</a></li>
  <li>[ISO-8859-1], <a
    href="http://www.cis.ohio-state.edu/rfc/rfc2044.txt">rfc2044</a> [UTF-8]
    and <a href="http://www.cis.ohio-state.edu/rfc/rfc2781.txt">rfc2781</a>
    [UTF-16] core encodings</li>
  <li>part of SGML Open Technical Resolution TR9401:1997</li>
  <li>XML Catalogs Working Draft 06 August 2001: <a
    href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">http://www.oasis-open.org/committees/entity/spec-2001-08-06.html</a></li>
58
59
  <li>Canonical XML Version 1.0: <a
    href="http://www.w3.org/TR/xml-c14n">http://www.w3.org/TR/xml-c14n</a>
60
61
    and the Exclusive XML Canonicalization CR draft <a
    href="http://www.w3.org/TR/xml-exc-c14n">http://www.w3.org/TR/xml-exc-c14n</a></li>
62
63
  <li>Relax NG Committee Specification 3 December 2001 <a
    href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">http://www.oasis-open.org/committees/relax-ng/spec-20011203.html</a></li>
64
65
66
</ul>

<p>In most cases libxml tries to implement the specifications in a relatively
67
68
strictly compliant way. As of release 2.4.16, libxml2 passes all 1800+ tests
from the <a
Daniel Veillard's avatar
Daniel Veillard committed
69
70
href="http://www.oasis-open.org/committees/xml-conformance/">OASIS XML Tests
Suite</a>.</p>
71

72
73
<p>To some extent libxml2 provides support for the following additional
specifications but doesn't claim to implement them completely:</p>
74
75
76
<ul>
  <li>Document Object Model (DOM) <a
    href="http://www.w3.org/TR/DOM-Level-2-Core/">http://www.w3.org/TR/DOM-Level-2-Core/</a>
77
    it doesn't implement the API itself, gdome2 does this on top of
78
  libxml2</li>
79
80
81
82
  <li><a href="http://www.cis.ohio-state.edu/rfc/rfc959.txt">RFC 959</a> :
    libxml implements a basic FTP client code</li>
  <li><a href="http://www.cis.ohio-state.edu/rfc/rfc1945.txt">RFC 1945</a> :
    HTTP/1.0, again a basic HTTP client code</li>
83
84
85
86
  <li>SAX: a minimal SAX implementation compatible with early expat
  versions</li>
  <li>DocBook SGML v4: libxml2 includes a hackish parser to transition to
  XML</li>
87
88
</ul>

89
90
<p>A partial implementation of XML Schemas is being worked on but it would be
far too early to make any conformance statement about it at the moment.</p>
91

92
93
<p>Separate documents:</p>
<ul>
94
  <li><a href="http://xmlsoft.org/XSLT/">the libxslt page</a> providing an
95
96
    implementation of XSLT 1.0 and common extensions like EXSLT for
  libxml2</li>
97
  <li><a href="http://www.cs.unibo.it/~casarini/gdome2/">the gdome2 page</a>
98
99
100
101
    : a standard DOM2 implementation for libxml2</li>
  <li><a href="http://www.aleksey.com/xmlsec/">the XMLSec page</a>: an
    implementation of <a href="http://www.w3.org/TR/xmldsig-core/">W3C XML
    Digital Signature</a> for libxml2</li>
102
103
  <li>also check the related links section below for more related and active
    projects.</li>
104
105
</ul>

106
107
108
<p>Results of the <a
href="http://xmlbench.sourceforge.net/results/benchmark/index.html">xmlbench
benchmark</a> on sourceforge 19 March 2003 (smaller is better):</p>
109
110
111

<p align="center"><img src="benchmark.gif"
alt="benchmark results for Expat Xerces libxml2 Oracle and Sun toolkits"></p>
112

113
114
<p>Logo designed by <a href="mailto:liyanage@access.ch">Marc Liyanage</a>.</p>

115
<h2><a name="Introducti">Introduction</a></h2>
116

Daniel Veillard's avatar
Daniel Veillard committed
117
<p>This document describes libxml, the <a
118
href="http://www.w3.org/XML/">XML</a> C library developed for the <a
119
120
121
href="http://www.gnome.org/">Gnome</a> project. <a
href="http://www.w3.org/XML/">XML is a standard</a> for building tag-based
structured documents/data.</p>
122

123
124
<p>Here are some key points about libxml:</p>
<ul>
125
126
  <li>Libxml exports Push (progressive) and Pull (blocking) type parser
    interfaces for both XML and HTML.</li>
127
128
  <li>Libxml can do DTD validation at parse time, using a parsed document
    instance, or with an arbitrary DTD.</li>
129
  <li>Libxml includes complete <a
Daniel Veillard's avatar
Daniel Veillard committed
130
131
132
    href="http://www.w3.org/TR/xpath">XPath</a>, <a
    href="http://www.w3.org/TR/xptr">XPointer</a> and <a
    href="http://www.w3.org/TR/xinclude">XInclude</a> implementations.</li>
133
  <li>It is written in plain C, making as few assumptions as possible, and
134
    sticking closely to ANSI C/POSIX for easy embedding. Works on
135
    Linux/Unix/Windows, ported to a number of other platforms.</li>
136
  <li>Basic support for HTTP and FTP client allowing applications to fetch
137
    remote resources.</li>
138
  <li>The design is modular, most of the extensions can be compiled out.</li>
139
  <li>The internal document representation is as close as possible to the <a
140
141
    href="http://www.w3.org/DOM/">DOM</a> interfaces.</li>
  <li>Libxml also has a <a href="http://www.megginson.com/SAX/index.html">SAX
142
143
    like interface</a>; the interface is designed to be compatible with <a
    href="http://www.jclark.com/xml/expat.html">Expat</a>.</li>
144
145
  <li>This library is released under the <a
    href="http://www.opensource.org/licenses/mit-license.html">MIT
146
    License</a>. See the Copyright file in the distribution for the precise
147
    wording.</li>
148
</ul>
149

150
<p>Warning: unless you are forced to because your application links with a
151
Gnome-1.X library requiring it,  <strong><span
152
153
154
style="background-color: #FF0000">Do Not Use libxml1</span></strong>, use
libxml2</p>

155
156
<h2><a name="FAQ">FAQ</a></h2>

157
<p>Table of Contents:</p>
158
<ul>
159
  <li><a href="FAQ.html#License">License(s)</a></li>
160
161
162
163
164
  <li><a href="FAQ.html#Installati">Installation</a></li>
  <li><a href="FAQ.html#Compilatio">Compilation</a></li>
  <li><a href="FAQ.html#Developer">Developer corner</a></li>
</ul>

165
<h3><a name="License">License</a>(s)</h3>
166
167
<ol>
  <li><em>Licensing Terms for libxml</em>
168
169
    <p>libxml is released under the <a
    href="http://www.opensource.org/licenses/mit-license.html">MIT
170
    License</a>; see the file Copyright in the distribution for the precise
171
    wording</p>
172
173
  </li>
  <li><em>Can I embed libxml in a proprietary application ?</em>
174
175
176
    <p>Yes. The MIT License allows you to keep proprietary the changes you
    made to libxml, but it would be graceful to send-back bug fixes and
    improvements as patches for possible incorporation in the main
177
    development tree.</p>
178
179
180
181
182
183
184
185
  </li>
</ol>

<h3><a name="Installati">Installation</a></h3>
<ol>
  <li>Unless you are forced to because your application links with a Gnome
    library requiring it,  <strong><span style="background-color: #FF0000">Do
    Not Use libxml1</span></strong>, use libxml2</li>
186
  <li><em>Where can I get libxml</em> ?
187
188
    <p>The original distribution comes from <a
    href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</a> or <a
189
    href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/">gnome.org</a></p>
190
    <p>Most Linux and BSD distributions include libxml, this is probably the
191
    safer way for end-users to use libxml.</p>
192
193
194
195
196
    <p>David Doolin provides precompiled Windows versions at <a
    href="http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/         ">http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/</a></p>
  </li>
  <li><em>I see libxml and libxml2 releases, which one should I install ?</em>
    <ul>
197
198
      <li>If you are not constrained by backward compatibility issues with
        existing applications, install libxml2 only</li>
199
      <li>If you are not doing development, you can safely install both.
200
        Usually the packages <a
201
202
        href="http://rpmfind.net/linux/RPM/libxml.html">libxml</a> and <a
        href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a> are
203
        compatible (this is not the case for development packages).</li>
204
205
206
207
208
209
210
211
212
213
214
      <li>If you are a developer and your system provides separate packaging
        for shared libraries and the development components, it is possible
        to install libxml and libxml2, and also <a
        href="http://rpmfind.net/linux/RPM/libxml-devel.html">libxml-devel</a>
        and <a
        href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>
        too for libxml2 &gt;= 2.3.0</li>
      <li>If you are developing a new application, please develop against
        libxml2(-devel)</li>
    </ul>
  </li>
215
  <li><em>I can't install the libxml package, it conflicts with libxml0</em>
216
    <p>You probably have an old libxml0 package used to provide the shared
217
218
    library for libxml.so.0, you can probably safely remove it. The libxml
    packages provided on <a
219
    href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</a> provide
220
221
222
    libxml.so.0</p>
  </li>
  <li><em>I can't install the libxml(2) RPM package due to failed
223
224
    dependencies</em>
    <p>The most generic solution is to re-fetch the latest src.rpm , and
225
    rebuild it locally with</p>
226
    <p><code>rpm --rebuild libxml(2)-xxx.src.rpm</code>.</p>
227
228
229
    <p>If everything goes well it will generate two binary rpm packages (one
    providing the shared libs and xmllint, and the other one, the -devel
    package, providing includes, static libraries and scripts needed to build
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
    applications with libxml(2)) that you can install locally.</p>
  </li>
</ol>

<h3><a name="Compilatio">Compilation</a></h3>
<ol>
  <li><em>What is the process to compile libxml ?</em>
    <p>As most UNIX libraries libxml follows the "standard":</p>
    <p><code>gunzip -c xxx.tar.gz | tar xvf -</code></p>
    <p><code>cd libxml-xxxx</code></p>
    <p><code>./configure --help</code></p>
    <p>to see the options, then the compilation/installation proper</p>
    <p><code>./configure [possible options]</code></p>
    <p><code>make</code></p>
    <p><code>make install</code></p>
245
    <p>At that point you may have to rerun ldconfig or a similar utility to
246
247
248
    update your list of installed shared libs.</p>
  </li>
  <li><em>What other libraries are needed to compile/install libxml ?</em>
249
    <p>Libxml does not require any other library, the normal C ANSI API
250
251
252
253
254
    should be sufficient (please report any violation to this rule you may
    find).</p>
    <p>However if found at configuration time libxml will detect and use the
    following libs:</p>
    <ul>
255
      <li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a> : a
256
257
258
259
        highly portable and available widely compression library.</li>
      <li>iconv: a powerful character encoding conversion library. It is
        included by default in recent glibc libraries, so it doesn't need to
        be installed specifically on Linux. It now seems a <a
260
261
        href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part
        of the official UNIX</a> specification. Here is one <a
262
263
        href="http://www.gnu.org/software/libiconv/">implementation of the
        library</a> which source can be found <a
264
265
266
        href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
    </ul>
  </li>
267
  <li><em>Make check fails on some platforms</em>
268
269
270
271
    <p>Sometimes the regression tests' results don't completely match the
    value produced by the parser, and the makefile uses diff to print the
    delta. On some platforms the diff return breaks the compilation process;
    if the diff is small this is probably not a serious problem.</p>
272
    <p>Sometimes (especially on Solaris) make checks fail due to limitations
273
    in make. Try using GNU-make instead.</p>
274
275
  </li>
  <li><em>I use the CVS version and there is no configure script</em>
276
277
278
    <p>The configure script (and other Makefiles) are generated. Use the
    autogen.sh script to regenerate the configure script and Makefiles,
    like:</p>
279
280
281
282
283
    <p><code>./autogen.sh --prefix=/usr --disable-shared</code></p>
  </li>
  <li><em>I have troubles when running make tests with gcc-3.0</em>
    <p>It seems the initial release of gcc-3.0 has a problem with the
    optimizer which miscompiles the URI module. Please use another
284
    compiler.</p>
285
286
287
288
289
  </li>
</ol>

<h3><a name="Developer">Developer</a> corner</h3>
<ol>
290
291
  <li><em>xmlDocDump() generates output on one line.</em>
    <p>Libxml will not <strong>invent</strong> spaces in the content of a
292
293
294
295
    document since <strong>all spaces in the content of a document are
    significant</strong>. If you build a tree from the API and want
    indentation:</p>
    <ol>
296
      <li>the correct way is to generate those yourself too.</li>
297
298
299
300
      <li>the dangerous way is to ask libxml to add those blanks to your
        content <strong>modifying the content of your document in the
        process</strong>. The result may not be what you expect. There is
        <strong>NO</strong> way to guarantee that such a modification won't
301
        affect other parts of the content of your document. See <a
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
        href="http://xmlsoft.org/html/libxml-parser.html#XMLKEEPBLANKSDEFAULT">xmlKeepBlanksDefault
        ()</a> and <a
        href="http://xmlsoft.org/html/libxml-tree.html#XMLSAVEFORMATFILE">xmlSaveFormatFile
        ()</a></li>
    </ol>
  </li>
  <li>Extra nodes in the document:
    <p><em>For a XML file as below:</em></p>
    <pre>&lt;?xml version="1.0"?&gt;
&lt;PLAN xmlns="http://www.argus.ca/autotest/1.0/"&gt;
&lt;NODE CommFlag="0"/&gt;
&lt;NODE CommFlag="1"/&gt;
&lt;/PLAN&gt;</pre>
    <p><em>after parsing it with the function
    pxmlDoc=xmlParseFile(...);</em></p>
    <p><em>I want to the get the content of the first node (node with the
    CommFlag="0")</em></p>
    <p><em>so I did it as following;</em></p>
320
    <pre>xmlNodePtr pnode;
321
322
323
324
325
326
327
328
pnode=pxmlDoc-&gt;children-&gt;children;</pre>
    <p><em>but it does not work. If I change it to</em></p>
    <pre>pnode=pxmlDoc-&gt;children-&gt;children-&gt;next;</pre>
    <p><em>then it works.  Can someone explain it to me.</em></p>
    <p></p>
    <p>In XML all characters in the content of the document are significant
    <strong>including blanks and formatting line breaks</strong>.</p>
    <p>The extra nodes you are wondering about are just that, text nodes with
329
    the formatting spaces which are part of the document but that people tend
330
331
332
    to forget. There is a function <a
    href="http://xmlsoft.org/html/libxml-parser.html">xmlKeepBlanksDefault
    ()</a>  to remove those at parse time, but that's an heuristic, and its
333
    use should be limited to cases where you are certain there is no
334
335
336
    mixed-content in the document.</p>
  </li>
  <li><em>I get compilation errors of existing code like when accessing
337
    <strong>root</strong> or <strong>child fields</strong> of nodes.</em>
338
339
340
341
342
343
344
    <p>You are compiling code developed for libxml version 1 and using a
    libxml2 development environment. Either switch back to libxml v1 devel or
    even better fix the code to compile with libxml2 (or both) by <a
    href="upgrade.html">following the instructions</a>.</p>
  </li>
  <li><em>I get compilation errors about non existing
    <strong>xmlRootNode</strong> or <strong>xmlChildrenNode</strong>
345
    fields.</em>
346
347
348
349
350
351
    <p>The source code you are using has been <a
    href="upgrade.html">upgraded</a> to be able to compile with both libxml
    and libxml2, but you need to install a more recent version:
    libxml(-devel) &gt;= 1.8.8 or libxml2(-devel) &gt;= 2.1.0</p>
  </li>
  <li><em>XPath implementation looks seriously broken</em>
352
353
    <p>XPath implementation prior to 2.3.0 was really incomplete. Upgrade to
    a recent version, there are no known bugs in the current version.</p>
354
  </li>
355
  <li><em>The example provided in the web page does not compile.</em>
356
357
    <p>It's hard to maintain the documentation in sync with the code
    &lt;grin/&gt; ...</p>
358
    <p>Check the previous points 1/ and 2/ raised before, and please send
359
360
    patches.</p>
  </li>
361
362
  <li><em>Where can I get more examples and information than privoded on the
    web page?</em>
363
364
365
366
367
    <p>Ideally a libxml book would be nice. I have no such plan ... But you
    can:</p>
    <ul>
      <li>check more deeply the <a href="html/libxml-lib.html">existing
        generated doc</a></li>
368
369
      <li>look for examples of use for libxml function using the Gnome code.
        For example the following will query the full Gnome CVS base for the
370
371
372
373
374
375
376
377
        use of the <strong>xmlAddChild()</strong> function:
        <p><a
        href="http://cvs.gnome.org/lxr/search?string=xmlAddChild">http://cvs.gnome.org/lxr/search?string=xmlAddChild</a></p>
        <p>This may be slow, a large hardware donation to the gnome project
        could cure this :-)</p>
      </li>
      <li><a
        href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&amp;dir=gnome-xml">Browse
378
        the libxml source</a> , I try to write code as clean and documented
379
380
381
        as possible, so looking at it may be helpful. In particular the code
        of xmllint.c and of the various testXXX.c test programs should
        provide good examples of how to do things with the library.</li>
382
383
384
385
386
387
    </ul>
  </li>
  <li>What about C++ ?
    <p>libxml is written in pure C in order to allow easy reuse on a number
    of platforms, including embedded systems. I don't intend to convert to
    C++.</p>
388
    <p>There are however a few C++ wrappers which may fulfill your needs:</p>
389
390
391
392
393
394
395
396
397
398
399
400
    <ul>
      <li>by Ari Johnson &lt;ari@btigate.com&gt;:
        <p>Website: <a
        href="http://lusis.org/~ari/xml++/">http://lusis.org/~ari/xml++/</a></p>
        <p>Download: <a
        href="http://lusis.org/~ari/xml++/libxml++.tar.gz">http://lusis.org/~ari/xml++/libxml++.tar.gz</a></p>
      </li>
      <li>by Peter Jones &lt;pjones@pmade.org&gt;
        <p>Website: <a
        href="http://pmade.org/pjones/software/xmlwrapp/">http://pmade.org/pjones/software/xmlwrapp/</a></p>
      </li>
    </ul>
401
402
403
  </li>
  <li>How to validate a document a posteriori ?
    <p>It is possible to validate documents which had not been validated at
404
405
    initial parsing time or documents which have been built from scratch
    using the API. Use the <a
406
    href="http://xmlsoft.org/html/libxml-valid.html#XMLVALIDATEDTD">xmlValidateDtd()</a>
407
    function. It is also possible to simply add a DTD to an existing
408
409
    document:</p>
    <pre>xmlDocPtr doc; /* your existing document */
410
411
xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */

412
413
414
415
416
417
418
        dtd-&gt;name = xmlStrDup((xmlChar*)"root_name"); /* use the given root */

        doc-&gt;intSubset = dtd;
        if (doc-&gt;children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd);
        else xmlAddPrevSibling(doc-&gt;children, (xmlNodePtr)dtd);
          </pre>
  </li>
419
420
421
422
423
  <li>So what is this funky "xmlChar" used all the time?
    <p>It is a null terminated sequence of utf-8 characters. And only utf-8!
    You need to convert strings encoded in different ways to utf-8 before
    passing them to the API.  This can be accomplished with the iconv library
    for instance.</p>
424
  </li>
425
426
427
428
429
  <li>etc ...</li>
</ol>

<p></p>

430
<h2><a name="Documentat">Documentation</a></h2>
431

432
<p>There are several on-line resources related to using libxml:</p>
433
<ol>
434
435
  <li>Use the <a href="search.php">search engine</a> to lookup
  informations.</li>
436
  <li>Check the <a href="FAQ.html">FAQ.</a></li>
437
  <li>Check the <a href="http://xmlsoft.org/html/libxml-lib.html">extensive
438
439
440
    documentation</a> automatically extracted from code comments (using <a
    href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&amp;dir=gtk-doc">gtk
    doc</a>).</li>
441
  <li>Look at the documentation about <a href="encoding.html">libxml
442
    internationalization support</a>.</li>
Daniel Veillard's avatar
Daniel Veillard committed
443
  <li>This page provides a global overview and <a href="example.html">some
444
    examples</a> on how to use libxml.</li>
445
446
  <li>John Fleck's libxml tutorial: <a href="tutorial/index.html">html</a> or
    <a href="tutorial/xmltutorial.pdf">pdf</a>.</li>
447
  <li><a href="mailto:james@daa.com.au">James Henstridge</a> wrote <a
448
449
    href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">some nice
    documentation</a> explaining how to use the libxml SAX interface.</li>
450
451
  <li>George Lebl wrote <a
    href="http://www-4.ibm.com/software/developer/library/gnome3/">an article
452
    for IBM developerWorks</a> about using libxml.</li>
453
  <li>Check <a href="http://cvs.gnome.org/lxr/source/gnome-xml/TODO">the TODO
454
    file</a>.</li>
455
456
457
  <li>Read the <a href="upgrade.html">1.x to 2.x upgrade path</a>
    description. If you are starting a new project using libxml you should
    really use the 2.x version.</li>
458
459
  <li>And don't forget to look at the <a
    href="http://mail.gnome.org/archives/xml/">mailing-list archive</a>.</li>
460
461
</ol>

462
<h2><a name="Reporting">Reporting bugs and getting help</a></h2>
463

464
465
466
<p>Well, bugs or missing features are always possible, and I will make a
point of fixing them in a timely fashion. The best way to report a bug is to
use the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml">Gnome
467
468
469
bug tracking database</a> (make sure to use the "libxml2" module name). I
look at reports there regularly and it's good to have a reminder when a bug
is still open. Be sure to specify that the bug is for the package libxml2.</p>
470

471
<p>There is also a mailing-list <a
472
473
href="mailto:xml@gnome.org">xml@gnome.org</a> for libxml, with an  <a
href="http://mail.gnome.org/archives/xml/">on-line archive</a> (<a
474
475
476
477
478
href="http://xmlsoft.org/messages">old</a>). To subscribe to this list,
please visit the <a
href="http://mail.gnome.org/mailman/listinfo/xml">associated Web</a> page and
follow the instructions. <strong>Do not send code, I won't debug it</strong>
(but patches are really appreciated!).</p>
479

480
481
<p>Check the following <strong><span style="color: #FF0000">before
posting</span></strong>:</p>
482
<ul>
483
484
  <li>Read the <a href="FAQ.html">FAQ</a> and <a href="search.php">use the
    search engine</a> to get informations related to your problem.</li>
485
486
487
488
  <li>Make sure you are <a href="ftp://xmlsoft.org/">using a recent
    version</a>, and that the problem still shows up in a recent version.</li>
  <li>Check the <a href="http://mail.gnome.org/archives/xml/">list
    archives</a> to see if the problem was reported already. In this case
489
    there is probably a fix available, similarly check the <a
490
    href="http://bugzilla.gnome.org/buglist.cgi?product=libxml">registered
491
492
493
    open bugs</a>.</li>
  <li>Make sure you can reproduce the bug with xmllint or one of the test
    programs found in source in the distribution.</li>
494
  <li>Please send the command showing the error as well as the input (as an
495
    attachment)</li>
496
</ul>
497

498
<p>Then send the bug with associated informations to reproduce it to the <a
499
href="mailto:xml@gnome.org">xml@gnome.org</a> list; if it's really libxml
500
related I will approve it. Please do not send mail to me directly, it makes
501
things really hard to track and in some cases I am not the best person to
502
503
504
505
506
507
508
509
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">request MUST be sent to
    the list or on bugzilla</span> in case of problems, so that the Question
    and Answers can be shared publicly. Failing to do so carries the implicit
    message "I want free support but I don't want to share the benefits with
510
511
512
    others" and is not welcome. I will automatically Carbon-Copy the
    xml@gnome.org mailing list for any technical reply made about libxml2 or
    libxslt.</li>
513
514
515
516
517
518
519
520
  <li>There is <span style="color: #E50000">no garantee for support</span>,
    if your question remains unanswered after a week, repost it, making sure
    you gave all the detail needed and the informations requested.</li>
  <li>Failing to provide informations as requested or double checking first
    for prior feedback also carries the implicit message "the time of the
    library maintainers is less valuable than my time" and might not be
    welcome.</li>
</ul>
521

522
<p>Of course, bugs reported with a suggested patch for fixing them will
523
probably be processed faster than those without.</p>
524
525

<p>If you're looking for help, a quick look at <a
526
href="http://mail.gnome.org/archives/xml/">the list archive</a> may actually
527
provide the answer. I usually send source samples when answering libxml usage
528
questions. The <a href="http://xmlsoft.org/html/book1.html">auto-generated
529
530
documentation</a> is not as polished as I would like (i need to learn more
about DocBook), but it's a good starting point.</p>
531

532
533
534
535
<h2><a name="help">How to help</a></h2>

<p>You can help the project in various ways, the best thing to do first is to
subscribe to the mailing-list as explained before, check the <a
536
537
href="http://mail.gnome.org/archives/xml/">archives </a>and the <a
href="http://bugzilla.gnome.org/buglist.cgi?product=libxml">Gnome bug
538
database</a>:</p>
539
<ol>
540
541
  <li>Provide patches when you find problems.</li>
  <li>Provide the diffs when you port libxml to a new platform. They may not
542
543
    be integrated in all cases but help pinpointing portability problems
  and</li>
544
  <li>Provide documentation fixes (either as patches to the code comments or
545
    as HTML diffs).</li>
546
547
  <li>Provide new documentations pieces (translations, examples, etc
  ...).</li>
548
549
  <li>Check the TODO file and try to close one of the items.</li>
  <li>Take one of the points raised in the archive or the bug database and
550
551
552
    provide a fix. <a href="mailto:daniel@veillard.com">Get in touch with me
    </a>before to avoid synchronization problems and check that the suggested
    fix will fit in nicely :-)</li>
553
554
</ol>

555
<h2><a name="Downloads">Downloads</a></h2>
556

557
<p>The latest versions of libxml can be found on <a
558
559
560
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
561
href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> either
562
as a <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.5/">source
563
archive</a><!-- commenting this out because they seem to have disappeared or <a
564
href="ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/">RPM
565
packages</a> -->
566
 , Antonin Sprinzl also provide <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
567
mirror in Austria</a>. (NOTE that you need both the <a
568
569
href="http://rpmfind.net/linux/RPM/libxml2.html">libxml(2)</a> and <a
href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml(2)-devel</a>
570
packages installed to compile applications using libxml.) <a
571
572
573
574
575
576
577
href="mailto:igor@zlatkovic.com">Igor  Zlatkovic</a> is now the maintainer of
the Windows port, <a
href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
binaries</a>. <a href="mailto:Gary.Pennington@sun.com">Gary Pennington</a>
provides <a href="http://garypennington.net/libxml2/">Solaris binaries</a>.
<a href="mailto:Steve.Ball@zveno.com">Steve Ball</a> provides <a
href="http://www.zveno.com/open_source/libxml2xslt.html">Mac Os X
578
binaries</a>.</p>
579

580
581
582
<p><a name="Snapshot">Snapshot:</a></p>
<ul>
  <li>Code from the W3C cvs base libxml <a
583
    href="ftp://xmlsoft.org/cvs-snapshot.tar.gz">cvs-snapshot.tar.gz</a>.</li>
584
  <li>Docs, content of the web site, the list archive included <a
585
    href="ftp://xmlsoft.org/libxml-docs.tar.gz">libxml-docs.tar.gz</a>.</li>
586
587
</ul>

588
<p><a name="Contribs">Contributions:</a></p>
589
590

<p>I do accept external contributions, especially if compiling on another
591
platform,  get in touch with me to upload the package, wrappers for various
Daniel Veillard's avatar
Daniel Veillard committed
592
593
languages have been provided, and can be found in the <a
href="contribs.html">contrib section</a></p>
594

595
<p>Libxml is also available from CVS:</p>
596
597
598
<ul>
  <li><p>The <a
    href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&amp;dir=gnome-xml">Gnome
599
    CVS base</a>. Check the <a
600
601
    href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>
    page; the CVS module is <b>gnome-xml</b>.</p>
602
  </li>
603
  <li>The <strong>libxslt</strong> module is also present there</li>
604
605
606
607
</ul>

<h2><a name="News">News</a></h2>

608
609
<h3>CVS only : check the <a
href="http://cvs.gnome.org/lxr/source/gnome-xml/ChangeLog">Changelog</a> file
610
for a really accurate description</h3>
611

612
613
<p>Items not finished and worked on, get in touch with the list if you want
to test those</p>
614
<ul>
615
  <li>More testing on RelaxNG</li>
616
  <li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML
617
618
619
  Schemas</a></li>
</ul>

620
621
622
623
624
625
626
627
628
629
630
631
632
633
<h3>2.5.6: Apr 1 2003</h3>
<ul>
  <li>Fixed W3C XML Schemas datatype, should be compliant now except for
    binHex and base64 which are not supported yet.</li>
  <li>bug fixes: non-ASCII IDs, HTML output, XInclude on large docs and
    XInclude entities handling, encoding detection on external subsets, XML
    Schemas bugs and memory leaks, HTML parser (James Bursa)</li>
  <li>portability: python/trio (Albert Chin), Sun compiler warnings</li>
  <li>documentation: added --relaxng option to xmllint man page (John)</li>
  <li>improved error reporting: xml:space, start/end tag mismatches, Relax NG
    errors</li>
</ul>

<h3>2.5.5: Mar 24 2003</h3>
634
635
636
637
638
639
640
641
642
643
644
<ul>
  <li>Lot of fixes on the Relax NG implementation. More testing including
    DocBook and TEI examples.</li>
  <li>Increased the support for W3C XML Schemas datatype</li>
  <li>Several bug fixes in the URI handling layer</li>
  <li>Bug fixes: HTML parser, xmlReader, DTD validation, XPath, encoding
    conversion, line counting in the parser.</li>
  <li>Added support for $XMLLINT_INDENT environment variable, FTP delete</li>
  <li>Fixed the RPM spec file name</li>
</ul>

645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
<h3>2.5.4: Feb 20 2003</h3>
<ul>
  <li>Conformance testing and lot of fixes on Relax NG and XInclude
    implementation</li>
  <li>Implementation of XPointer element() scheme</li>
  <li>Bug fixes: XML parser, XInclude entities merge, validity checking on
    namespaces,
    <p>2 serialization bugs, node info generation problems, a DTD regexp
    generation problem.</p>
  </li>
  <li>Portability: windows updates and path canonicalization (Igor)</li>
  <li>A few typo fixes (Kjartan Maraas)</li>
  <li>Python bindings generator fixes (Stephane Bidoul)</li>
</ul>

660
661
662
663
664
665
666
667
668
669
<h3>2.5.3: Feb 10 2003</h3>
<ul>
  <li>RelaxNG and XML Schemas datatypes improvements, and added a first
    version of RelaxNG Python bindings</li>
  <li>Fixes: XLink (Sean Chittenden), XInclude (Sean Chittenden), API fix for
    serializing namespace nodes, encoding conversion bug, XHTML1
  serialization</li>
  <li>Portability fixes: Windows (Igor), AMD 64bits RPM spec file</li>
</ul>

670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
<h3>2.5.2: Feb 5 2003</h3>
<ul>
  <li>First implementation of RelaxNG, added --relaxng flag to xmllint</li>
  <li>Schemas support now compiled in by default.</li>
  <li>Bug fixes: DTD validation, namespace checking, XInclude and entities,
    delegateURI in XML Catalogs, HTML parser, XML reader (Stphane Bidoul),
    XPath parser and evaluation,  UTF8ToUTF8 serialization, XML reader memory
    consumption, HTML parser, HTML serialization in the presence of
  namespaces</li>
  <li>added an HTML API to check elements and attributes.</li>
  <li>Documentation improvement, PDF for the tutorial (John Fleck), doc
    patches (Stefan Kost)</li>
  <li>Portability fixes: NetBSD (Julio Merino), Windows (Igor Zlatkovic)</li>
  <li>Added python bindings for XPointer, contextual error reporting
    (Stphane Bidoul)</li>
  <li>URI/file escaping problems (Stefano Zacchiroli)</li>
686
687
</ul>

688
689
690
691
692
693
694
<h3>2.5.1: Jan 8 2003</h3>
<ul>
  <li>Fixes a memory leak and configuration/compilation problems in 2.5.0</li>
  <li>documentation updates (John)</li>
  <li>a couple of XmlTextReader fixes</li>
</ul>

695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
<h3>2.5.0: Jan 6 2003</h3>
<ul>
  <li>New <a href="xmlreader.html">XmltextReader interface</a> based on C#
    API (with help of Stphane Bidoul)</li>
  <li>Windows: more exports, including the new API (Igor)</li>
  <li>XInclude fallback fix</li>
  <li>Python: bindings for the new API, packaging (Stphane Bidoul),
    drv_libxml2.py Python xml.sax driver (Stphane Bidoul), fixes, speedup
    and iterators for Python-2.2 (Hannu Krosing)</li>
  <li>Tutorial fixes (john Fleck and Niraj Tolia) xmllint man update
  (John)</li>
  <li>Fix an XML parser bug raised by Vyacheslav Pindyura</li>
  <li>Fix for VMS serialization (Nigel Hall) and config (Craig A. Berry)</li>
  <li>Entities handling fixes</li>
  <li>new API to optionally track node creation and deletion (Lukas
  Schroeder)</li>
  <li>Added documentation for the XmltextReader interface and some <a
    href="guidelines.html">XML guidelines</a></li>
</ul>

715
716
717
718
719
720
721
<h3>2.4.30: Dec 12 2002</h3>
<ul>
  <li>2.4.29 broke the python bindings, rereleasing</li>
  <li>Improvement/fixes of the XML API generator, and couple of minor code
    fixes.</li>
</ul>

722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
<h3>2.4.29: Dec 11 2002</h3>
<ul>
  <li>Windows fixes (Igor): Windows CE port, pthread linking, python bindings
    (Stphane Bidoul), Mingw (Magnus Henoch), and export list updates</li>
  <li>Fix for prev in python bindings (ERDI Gergo)</li>
  <li>Fix for entities handling (Marcus Clarke)</li>
  <li>Refactored the XML and HTML dumps to a single code path, fixed XHTML1
    dump</li>
  <li>Fix for URI parsing when handling URNs with fragment identifiers</li>
  <li>Fix for HTTP URL escaping problem</li>
  <li>added an TextXmlReader (C#) like API (work in progress)</li>
  <li>Rewrote the API in XML generation script, includes a C parser and saves
    more informations needed for C# bindings</li>
</ul>

737
738
739
740
741
742
743
744
<h3>2.4.28: Nov 22 2002</h3>
<ul>
  <li>a couple of python binding fixes</li>
  <li>2 bug fixes in the XML push parser</li>
  <li>potential memory leak removed (Martin Stoilov)</li>
  <li>fix to the configure script for Unix (Dimitri Papadopoulos)</li>
  <li>added encoding support for XInclude parse="text"</li>
  <li>autodetection of XHTML1 and specific serialization rules added</li>
745
  <li>nasty threading bug fixed (William Brack)</li>
746
747
</ul>

748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
<h3>2.4.27: Nov 17 2002</h3>
<ul>
  <li>fixes for the Python bindings</li>
  <li>a number of bug fixes: SGML catalogs, xmlParseBalancedChunkMemory(),
    HTML parser,  Schemas (Charles Bozeman), document fragment support
    (Christian Glahn), xmlReconciliateNs (Brian Stafford), XPointer,
    xmlFreeNode(), xmlSAXParseMemory (Peter Jones), xmlGetNodePath (Petr
    Pajas), entities processing</li>
  <li>added grep to xmllint --shell</li>
  <li>VMS update patch from Craig A. Berry</li>
  <li>cleanup of the Windows build with support for more compilers (Igor),
    better thread support on Windows</li>
  <li>cleanup of Unix Makefiles and spec file</li>
  <li>Improvements to the documentation (John Fleck)</li>
</ul>

764
765
766
767
768
769
770
771
<h3>2.4.26: Oct 18 2002</h3>
<ul>
  <li>Patches for Windows CE port, improvements on Windows paths handling</li>
  <li>Fixes to the validation  code (DTD and Schemas), xmlNodeGetPath() ,
    HTML serialization, Namespace compliance,  and a number of small
  problems</li>
</ul>

772
773
774
775
776
777
778
779
780
781
782
<h3>2.4.25: Sep 26 2002</h3>
<ul>
  <li>A number of bug fixes: XPath, validation, Python bindings, DOM and
    tree, xmlI/O,  Html</li>
  <li>Serious rewrite of XInclude</li>
  <li>Made XML Schemas regexp part of the default build and APIs, small fix
    and improvement of the regexp core</li>
  <li>Changed the validation code to reuse XML Schemas regexp APIs</li>
  <li>Better handling of Windows file paths, improvement of Makefiles (Igor,
    Daniel Gehriger, Mark Vakoc)</li>
  <li>Improved the python I/O bindings, the tests, added resolver and regexp
783
    APIs</li>
784
785
786
787
788
789
790
791
792
  <li>New logos from Marc Liyanage</li>
  <li>Tutorial improvements: John Fleck, Christopher Harris</li>
  <li>Makefile: Fixes for AMD x86_64 (Mandrake), DESTDIR (Christophe
  Merlet)</li>
  <li>removal of all stderr/perror use for error reporting</li>
  <li>Better error reporting: XPath and DTD validation</li>
  <li>update of the trio portability layer (Bjorn Reese)</li>
</ul>

793
794
795
796
797
798
799
<p><strong>2.4.24: Aug 22 2002</strong></p>
<ul>
  <li>XPath fixes (William), xf:escape-uri() (Wesley Terpstra)</li>
  <li>Python binding fixes: makefiles (William), generator, rpm build, x86-64
    (fcrozat)</li>
  <li>HTML &lt;style&gt; and boolean attributes serializer fixes</li>
  <li>C14N improvements by Aleksey</li>
800
  <li>doc cleanups: Rick Jones</li>
801
802
803
804
  <li>Windows compiler makefile updates: Igor and Elizabeth Barham</li>
  <li>XInclude: implementation of fallback and xml:base fixup added</li>
</ul>

805
806
807
808
809
810
811
812
813
814
815
816
817
<h3>2.4.23: July 6 2002</h3>
<ul>
  <li>performances patches: Peter Jacobi</li>
  <li>c14n fixes, testsuite and performances: Aleksey Sanin</li>
  <li>added xmlDocFormatDump: Chema Celorio</li>
  <li>new tutorial: John Fleck</li>
  <li>new hash functions and performances: Sander Vesik, portability fix from
    Peter Jacobi</li>
  <li>a number of bug fixes: XPath (William Brack, Richard Jinks), XML and
    HTML parsers, ID lookup function</li>
  <li>removal of all remaining sprintf: Aleksey Sanin</li>
</ul>

818
819
820
821
<h3>2.4.22: May 27 2002</h3>
<ul>
  <li>a number of bug fixes: configure scripts, base handling, parser, memory
    usage, HTML parser, XPath, documentation (Christian Cornelssen),
822
    indentation, URI parsing</li>
823
824
825
826
827
828
829
  <li>Optimizations for XMLSec, fixing and making public some of the network
    protocol handlers (Aleksey)</li>
  <li>performance patch from Gary Pennington</li>
  <li>Charles Bozeman provided date and time support for XML Schemas
  datatypes</li>
</ul>

830
831
832
833
834
835
836
<h3>2.4.21: Apr 29 2002</h3>

<p>This release is both a bug fix release and also contains the early XML
Schemas <a href="http://www.w3.org/TR/xmlschema-1/">structures</a> and <a
href="http://www.w3.org/TR/xmlschema-2/">datatypes</a> code, beware, all
interfaces are likely to change, there is huge holes, it is clearly a work in
progress and don't even think of putting this code in a production system,
837
it's actually not compiled in by default. The real fixes are:</p>
838
839
840
841
842
843
844
<ul>
  <li>a couple of bugs or limitations introduced in 2.4.20</li>
  <li>patches for Borland C++ and MSC by Igor</li>
  <li>some fixes on XPath strings and conformance patches by Richard
  Jinks</li>
  <li>patch from Aleksey for the ExcC14N specification</li>
  <li>OSF/1 bug fix by Bjorn</li>
845
846
</ul>

847
848
<h3>2.4.20: Apr 15 2002</h3>
<ul>
849
  <li>bug fixes: file descriptor leak, XPath, HTML output, DTD validation</li>
850
851
852
853
854
  <li>XPath conformance testing by Richard Jinks</li>
  <li>Portability fixes: Solaris, MPE/iX, Windows, OSF/1, python bindings,
    libxml.m4</li>
</ul>

855
856
857
858
859
<h3>2.4.19: Mar 25 2002</h3>
<ul>
  <li>bug fixes: half a dozen XPath bugs, Validation, ISO-Latin to UTF8
    encoder</li>
  <li>portability fixes in the HTTP code</li>
860
  <li>memory allocation checks using valgrind, and profiling tests</li>
861
862
863
  <li>revamp of the Windows build and Makefiles</li>
</ul>

864
865
866
<h3>2.4.18: Mar 18 2002</h3>
<ul>
  <li>bug fixes: tree, SAX, canonicalization, validation, portability,
867
  XPath</li>
868
869
870
871
872
873
  <li>removed the --with-buffer option it was becoming unmaintainable</li>
  <li>serious cleanup of the Python makefiles</li>
  <li>speedup patch to XPath very effective for DocBook stylesheets</li>
  <li>Fixes for Windows build, cleanup of the documentation</li>
</ul>

874
875
876
877
878
879
<h3>2.4.17: Mar 8 2002</h3>
<ul>
  <li>a lot of bug fixes, including "namespace nodes have no parents in
  XPath"</li>
  <li>fixed/improved the Python wrappers, added more examples and more
    regression tests, XPath extension functions can now return node-sets</li>
880
  <li>added the XML Canonicalization support from Aleksey Sanin</li>
881
882
</ul>

883
884
885
886
887
888
889
<h3>2.4.16: Feb 20 2002</h3>
<ul>
  <li>a lot of bug fixes, most of them were triggered by the XML Testsuite
    from OASIS and W3C. Compliance has been significantly improved.</li>
  <li>a couple of portability fixes too.</li>
</ul>

890
891
892
893
894
895
896
<h3>2.4.15: Feb 11 2002</h3>
<ul>
  <li>Fixed the Makefiles, especially the python module ones</li>
  <li>A few bug fixes and cleanup</li>
  <li>Includes cleanup</li>
</ul>

897
898
<h3>2.4.14: Feb 8 2002</h3>
<ul>
899
  <li>Change of License to the <a
900
    href="http://www.opensource.org/licenses/mit-license.html">MIT
901
902
    License</a> basically for integration in XFree86 codebase, and removing
    confusion around the previous dual-licensing</li>
903
904
905
906
907
908
909
910
911
  <li>added Python bindings, beta software but should already be quite
    complete</li>
  <li>a large number of fixes and cleanups, especially for all tree
    manipulations</li>
  <li>cleanup of the headers, generation of a reference API definition in
  XML</li>
</ul>

<h3>2.4.13: Jan 14 2002</h3>
912
913
914
915
916
917
918
919
920
<ul>
  <li>update of the documentation: John Fleck and Charlie Bozeman</li>
  <li>cleanup of timing code from Justin Fletcher</li>
  <li>fixes for Windows and initial thread support on Win32: Igor and Serguei
    Narojnyi</li>
  <li>Cygwin patch from Robert Collins</li>
  <li>added xmlSetEntityReferenceFunc() for Keith Isdale work on xsldbg</li>
</ul>

921
922
923
924
925
926
927
928
929
<h3>2.4.12: Dec 7 2001</h3>
<ul>
  <li>a few bug fixes: thread (Gary Pennington), xmllint (Geert Kloosterman),
    XML parser (Robin Berjon), XPointer (Danny Jamshy), I/O cleanups
  (robert)</li>
  <li>Eric Lavigne contributed project files for MacOS</li>
  <li>some makefiles cleanups</li>
</ul>

930
931
932
933
934
935
936
937
938
<h3>2.4.11: Nov 26 2001</h3>
<ul>
  <li>fixed a couple of errors in the includes, fixed a few bugs, some code
    cleanups</li>
  <li>xmllint man pages improvement by Heiko Rupp</li>
  <li>updated VMS build instructions from John A Fotheringham</li>
  <li>Windows Makefiles updates from Igor</li>
</ul>

939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
<h3>2.4.10: Nov 10 2001</h3>
<ul>
  <li>URI escaping fix (Joel Young)</li>
  <li>added xmlGetNodePath() (for paths or XPointers generation)</li>
  <li>Fixes namespace handling problems when using DTD and validation</li>
  <li>improvements on xmllint: Morus Walter patches for --format and
    --encode, Stefan Kost and Heiko Rupp improvements on the --shell</li>
  <li>fixes for xmlcatalog linking pointed by Weiqi Gao</li>
  <li>fixes to the HTML parser</li>
</ul>

<h3>2.4.9: Nov 6 2001</h3>
<ul>
  <li>fixes more catalog bugs</li>
  <li>avoid a compilation problem, improve xmlGetLineNo()</li>
</ul>

956
957
958
959
960
961
962
<h3>2.4.8: Nov 4 2001</h3>
<ul>
  <li>fixed SGML catalogs broken in previous release, updated xmlcatalog
  tool</li>
  <li>fixed a compile errors and some includes troubles.</li>
</ul>

963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
<h3>2.4.7: Oct 30 2001</h3>
<ul>
  <li>exported some debugging interfaces</li>
  <li>serious rewrite of the catalog code</li>
  <li>integrated Gary Pennington thread safety patch, added configure option
    and regression tests</li>
  <li>removed an HTML parser bug</li>
  <li>fixed a couple of potentially serious validation bugs</li>
  <li>integrated the SGML DocBook support in xmllint</li>
  <li>changed the nanoftp anonymous login passwd</li>
  <li>some I/O cleanup and a couple of interfaces for Perl wrapper</li>
  <li>general bug fixes</li>
  <li>updated xmllint man page by John Fleck</li>
  <li>some VMS and Windows updates</li>
</ul>

979
980
<h3>2.4.6: Oct 10 2001</h3>
<ul>
981
  <li>added an updated man pages by John Fleck</li>
982
983
984
  <li>portability and configure fixes</li>
  <li>an infinite loop on the HTML parser was removed (William)</li>
  <li>Windows makefile patches from Igor</li>
985
  <li>fixed half a dozen bugs reported for libxml or libxslt</li>
986
987
988
  <li>updated xmlcatalog to be able to modify SGML super catalogs</li>
</ul>

989
990
991
992
993
994
995
996
997
998
999
1000
1001
<h3>2.4.5: Sep 14 2001</h3>
<ul>
  <li>Remove a few annoying bugs in 2.4.4</li>
  <li>forces the HTML serializer to output decimal charrefs since some
    version of Netscape can't handle hexadecimal ones</li>
</ul>

<h3>1.8.16: Sep 14 2001</h3>
<ul>
  <li>maintenance release of the old libxml1 branch, couple of bug and
    portability fixes</li>
</ul>

1002
1003
1004
1005
1006
1007
1008
1009
<h3>2.4.4: Sep 12 2001</h3>
<ul>
  <li>added --convert to xmlcatalog, bug fixes and cleanups of XML
  Catalog</li>
  <li>a few bug fixes and some portability changes</li>
  <li>some documentation cleanups</li>
</ul>

1010
1011
1012
1013
1014
1015
1016
1017
<h3>2.4.3:  Aug 23 2001</h3>
<ul>
  <li>XML Catalog support see the doc</li>
  <li>New NaN/Infinity floating point code</li>
  <li>A few bug fixes</li>
</ul>

<h3>2.4.2:  Aug 15 2001</h3>
1018
1019
1020
<ul>
  <li>adds xmlLineNumbersDefault() to control line number generation</li>
  <li>lot of bug fixes</li>
1021
  <li>the Microsoft MSC projects files should now be up to date</li>
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
  <li>inheritance of namespaces from DTD defaulted attributes</li>
  <li>fixes a serious potential security bug</li>
  <li>added a --format option to xmllint</li>
</ul>

<h3>2.4.1:  July 24 2001</h3>
<ul>
  <li>possibility to keep line numbers in the tree</li>
  <li>some computation NaN fixes</li>
  <li>extension of the XPath API</li>
  <li>cleanup for alpha and ia64 targets</li>
  <li>patch to allow saving through HTTP PUT or POST</li>
1034
1035
1036
1037
1038
</ul>

<h3>2.4.0: July 10 2001</h3>
<ul>
  <li>Fixed a few bugs in XPath, validation, and tree handling.</li>
1039
  <li>Fixed XML Base implementation, added a couple of examples to the
1040
1041
    regression tests</li>
  <li>A bit of cleanup</li>
1042
1043
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1044
1045
<h3>2.3.14: July 5 2001</h3>
<ul>
1046
1047
  <li>fixed some entities problems and reduce memory requirement when
    substituting them</li>
Daniel Veillard's avatar
Daniel Veillard committed
1048
  <li>lots of improvements in the XPath queries interpreter can be
1049
    substantially faster</li>
Daniel Veillard's avatar
Daniel Veillard committed
1050
1051
1052
  <li>Makefiles and configure cleanups</li>
  <li>Fixes to XPath variable eval, and compare on empty node set</li>
  <li>HTML tag closing bug fixed</li>
1053
  <li>Fixed an URI reference computation problem when validating</li>
Daniel Veillard's avatar
Daniel Veillard committed
1054
1055
</ul>

1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
<h3>2.3.13: June 28 2001</h3>
<ul>
  <li>2.3.12 configure.in was broken as well as the push mode XML parser</li>
  <li>a few more fixes for compilation on Windows MSC by Yon Derek</li>
</ul>

<h3>1.8.14: June 28 2001</h3>
<ul>
  <li>Zbigniew Chyla gave a patch to use the old XML parser in push mode</li>
  <li>Small Makefile fix</li>
</ul>

1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
<h3>2.3.12: June 26 2001</h3>
<ul>
  <li>lots of cleanup</li>
  <li>a couple of validation fix</li>
  <li>fixed line number counting</li>
  <li>fixed serious problems in the XInclude processing</li>
  <li>added support for UTF8 BOM at beginning of entities</li>
  <li>fixed a strange gcc optimizer bugs in xpath handling of float, gcc-3.0
    miscompile uri.c (William), Thomas Leitner provided a fix for the
    optimizer on Tru64</li>
  <li>incorporated Yon Derek and Igor Zlatkovic  fixes and improvements for
    compilation on Windows MSC</li>
  <li>update of libxml-doc.el (Felix Natter)</li>
  <li>fixed 2 bugs in URI normalization code</li>
</ul>

1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
<h3>2.3.11: June 17 2001</h3>
<ul>
  <li>updates to trio, Makefiles and configure should fix some portability
    problems (alpha)</li>
  <li>fixed some HTML serialization problems (pre, script, and block/inline
    handling), added encoding aware APIs, cleanup of this code</li>
  <li>added xmlHasNsProp()</li>
  <li>implemented a specific PI for encoding support in the DocBook SGML
    parser</li>
  <li>some XPath fixes (-Infinity, / as a function parameter and namespaces
    node selection)</li>
  <li>fixed a performance problem and an error in the validation code</li>
  <li>fixed XInclude routine to implement the recursive behaviour</li>
  <li>fixed xmlFreeNode problem when libxml is included statically twice</li>
  <li>added --version to xmllint for bug reports</li>
</ul>

1101
1102
1103
<h3>2.3.10: June 1 2001</h3>
<ul>
  <li>fixed the SGML catalog support</li>
1104
1105
  <li>a number of reported bugs got fixed, in XPath, iconv detection,
    XInclude processing</li>
1106
1107
1108
  <li>XPath string function should now handle unicode correctly</li>
</ul>

1109
1110
1111
1112
1113
<h3>2.3.9: May 19 2001</h3>

<p>Lots of bugfixes, and added a basic SGML catalog support:</p>
<ul>
  <li>HTML push bugfix #54891 and another patch from Jonas Borgstrm</li>
1114
  <li>some serious speed optimization again</li>
1115
  <li>some documentation cleanups</li>
1116
  <li>trying to get better linking on Solaris (-R)</li>
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
  <li>XPath API cleanup from Thomas Broyer</li>
  <li>Validation bug fixed #54631, added a patch from Gary Pennington, fixed
    xmlValidGetValidElements()</li>
  <li>Added an INSTALL file</li>
  <li>Attribute removal added to API: #54433</li>
  <li>added a basic support for SGML catalogs</li>
  <li>fixed xmlKeepBlanksDefault(0) API</li>
  <li>bugfix in xmlNodeGetLang()</li>
  <li>fixed a small configure portability problem</li>
  <li>fixed an inversion of SYSTEM and PUBLIC identifier in HTML document</li>
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1129
1130
1131
1132
1133
<h3>1.8.13: May 14 2001</h3>
<ul>
  <li>bugfixes release of the old libxml1 branch used by Gnome</li>
</ul>

1134
1135
1136
1137
1138
1139
<h3>2.3.8: May 3 2001</h3>
<ul>
  <li>Integrated an SGML DocBook parser for the Gnome project</li>
  <li>Fixed a few things in the HTML parser</li>
  <li>Fixed some XPath bugs raised by XSLT use, tried to fix the floating
    point portability issue</li>
1140
1141
  <li>Speed improvement (8M/s for SAX, 3M/s for DOM, 1.5M/s for
    DOM+validation using the XML REC as input and a 700MHz celeron).</li>
1142
1143
1144
1145
1146
1147
  <li>incorporated more Windows cleanup</li>
  <li>added xmlSaveFormatFile()</li>
  <li>fixed problems in copying nodes with entities references (gdome)</li>
  <li>removed some troubles surrounding the new validation module</li>
</ul>

1148
1149
1150
<h3>2.3.7: April 22 2001</h3>
<ul>
  <li>lots of small bug fixes, corrected XPointer</li>
1151
  <li>Non deterministic content model validation support</li>
1152
1153
  <li>added xmlDocCopyNode for gdome2</li>
  <li>revamped the way the HTML parser handles end of tags</li>
1154
  <li>XPath: corrections of namespaces support and number formatting</li>
1155
  <li>Windows: Igor Zlatkovic patches for MSC compilation</li>
1156
  <li>HTML output fixes from P C Chow and William M. Brack</li>
1157
1158
1159
1160
1161
  <li>Improved validation speed sensible for DocBook</li>
  <li>fixed a big bug with ID declared in external parsed entities</li>
  <li>portability fixes, update of Trio from Bjorn Reese</li>
</ul>

1162
1163
1164
1165
1166
1167
1168
1169
<h3>2.3.6: April 8 2001</h3>
<ul>
  <li>Code cleanup using extreme gcc compiler warning options, found and
    cleared half a dozen potential problem</li>
  <li>the Eazel team found an XML parser bug</li>
  <li>cleaned up the user of some of the string formatting function. used the
    trio library code to provide the one needed when the platform is missing
    them</li>
1170
1171
1172
  <li>xpath: removed a memory leak and fixed the predicate evaluation
    problem, extended the testsuite and cleaned up the result. XPointer seems
    broken ...</li>
1173
1174
</ul>

1175
1176
1177
1178
1179
1180
1181
1182
1183
<h3>2.3.5: Mar 23 2001</h3>
<ul>
  <li>Biggest change is separate parsing and evaluation of XPath expressions,
    there is some new APIs for this too</li>
  <li>included a number of bug fixes(XML push parser, 51876, notations,
  52299)</li>
  <li>Fixed some portability issues</li>
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
<h3>2.3.4: Mar 10 2001</h3>
<ul>
  <li>Fixed bugs #51860 and #51861</li>
  <li>Added a global variable xmlDefaultBufferSize to allow default buffer
    size to be application tunable.</li>
  <li>Some cleanup in the validation code, still a bug left and this part
    should probably be rewritten to support ambiguous content model :-\</li>
  <li>Fix a couple of serious bugs introduced or raised by changes in 2.3.3
    parser</li>
  <li>Fixed another bug in xmlNodeGetContent()</li>
  <li>Bjorn fixed XPath node collection and Number formatting</li>
  <li>Fixed a loop reported in the HTML parsing</li>
  <li>blank space are reported even if the Dtd content model proves that they
1197
    are formatting spaces, this is for XML conformance</li>
Daniel Veillard's avatar
Daniel Veillard committed
1198
1199
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1200
1201
1202
1203
1204
1205
1206
1207
<h3>2.3.3: Mar 1 2001</h3>
<ul>
  <li>small change in XPath for XSLT</li>
  <li>documentation cleanups</li>
  <li>fix in validation by Gary Pennington</li>
  <li>serious parsing performances improvements</li>
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1208
<h3>2.3.2: Feb 24 2001</h3>
Daniel Veillard's avatar
Daniel Veillard committed
1209
1210
1211
1212
1213
1214
1215
<ul>
  <li>chasing XPath bugs, found a bunch, completed some TODO</li>
  <li>fixed a Dtd parsing bug</li>
  <li>fixed a bug in xmlNodeGetContent</li>
  <li>ID/IDREF support partly rewritten by Gary Pennington</li>
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1216
<h3>2.3.1: Feb 15 2001</h3>
1217
1218
1219
1220
1221
1222
1223
<ul>
  <li>some XPath and HTML bug fixes for XSLT</li>
  <li>small extension of the hash table interfaces for DOM gdome2
    implementation</li>
  <li>A few bug fixes</li>
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1224
<h3>2.3.0: Feb 8 2001 (2.2.12 was on 25 Jan but I didn't kept track)</h3>
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
<ul>
  <li>Lots of XPath bug fixes</li>
  <li>Add a mode with Dtd lookup but without validation error reporting for
    XSLT</li>
  <li>Add support for text node without escaping (XSLT)</li>
  <li>bug fixes for xmlCheckFilename</li>
  <li>validation code bug fixes from Gary Pennington</li>
  <li>Patch from Paul D. Smith correcting URI path normalization</li>
  <li>Patch to allow simultaneous install of libxml-devel and
  libxml2-devel</li>
  <li>the example Makefile is now fixed</li>
  <li>added HTML to the RPM packages</li>
  <li>tree copying bugfixes</li>
  <li>updates to Windows makefiles</li>
1239
  <li>optimization patch from Bjorn Reese</li>
1240
1241
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1242
<h3>2.2.11: Jan 4 2001</h3>
1243
1244
1245
1246
1247
<ul>
  <li>bunch of bug fixes (memory I/O, xpath, ftp/http, ...)</li>
  <li>added htmlHandleOmittedElem()</li>
  <li>Applied Bjorn Reese's IPV6 first patch</li>
  <li>Applied Paul D. Smith patches for validation of XInclude results</li>
1248
  <li>added XPointer xmlns() new scheme support</li>
1249
1250
</ul>

1251
<h3>2.2.10: Nov 25 2000</h3>
1252
1253
1254
1255
1256
1257
1258
1259
<ul>
  <li>Fix the Windows problems of 2.2.8</li>
  <li>integrate OpenVMS patches</li>
  <li>better handling of some nasty HTML input</li>
  <li>Improved the XPointer implementation</li>
  <li>integrate a number of provided patches</li>
</ul>

1260
1261
1262
1263
1264
<h3>2.2.9: Nov 25 2000</h3>
<ul>
  <li>erroneous release :-(</li>
</ul>

Daniel Veillard's avatar
Daniel Veillard committed
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
<h3>2.2.8: Nov 13 2000</h3>
<ul>
  <li>First version of <a href="http://www.w3.org/TR/xinclude">XInclude</a>
    support</li>
  <li>Patch in conditional section handling</li>
  <li>updated MS compiler project</li>
  <li>fixed some XPath problems</li>
  <li>added an URI escaping function</li>
  <li>some other bug fixes</li>
</ul>

<h3>2.2.7: Oct 31 2000</h3>
<ul>
  <li>added message redirection</li>
  <li>XPath improvements (thanks TOM !)</li>
  <li>xmlIOParseDTD() added</li>
  <li>various small fixes in the HTML, URI, HTTP and XPointer support</li>
  <li>some cleanup of the Makefile, autoconf and the distribution content</li>
</ul>

1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
<h3>2.2.6: Oct 25 2000:</h3>
<ul>
  <li>Added an hash table module, migrated a number of internal structure to
    those</li>
  <li>Fixed a posteriori validation problems</li>
  <li>HTTP module cleanups</li>
  <li>HTML parser improvements (tag errors, script/style handling, attribute
    normalization)</li>
  <li>coalescing of adjacent text nodes</li>
  <li>couple of XPath bug fixes, exported the internal API</li>
</ul>