<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Libxml Frequently Asked Questions</title>
  <meta name="GENERATOR" content="amaya V4.1">
  <meta http-equiv="Content-Type" content="text/html">
</head>

<body bgcolor="#ffffff">
<h1 align="center">Libxml Frequently Asked Questions</h1>

<p>Location: <a
href="http://xmlsoft.org/FAQ.html">http://xmlsoft.org/FAQ.html</a></p>

<p>Libxml home page: <a href="http://xmlsoft.org/">http://xmlsoft.org/</a></p>

<p>Mailing-list archive:  <a
href="http://xmlsoft.org/messages/">http://xmlsoft.org/messages/</a></p>

<p>Version: $Revision$</p>

<p>Table of Content:</p>
<ul>
  <li><a href="#Licence">Licence(s)</a></li>
  <li><a href="#Installati">Installation</a></li>
  <li><a href="#Compilatio">Compilation</a></li>
  <li><a href="#Developer">Developer corner</a></li>
</ul>

<h2><a name="Licence">Licence</a>(s)</h2>
<ol>
  <li><em>Licensing Terms for libxml</em>
    <p>libxml is released under 2 (compatible) licences:</p>
    <ul>
      <li>the <a href="http://www.gnu.org/copyleft/lgpl.html">LGPL</a>: GNU
        Library General Public License</li>
      <li>the <a
        href="http://www.w3.org/Consortium/Legal/copyright-software-19980720.html">W3C
        IPR</a>: very similar to the XWindow licence</li>
    </ul>
  </li>
  <li><em>Can I embed libxml in a proprietary application ?</em>
    <p>Yes. The W3C IPR allows you to also keep proprietary the changes you
    made to libxml, but it would be graceful to provide back bugfixes and
    improvements as patches for possible incorporation in the main development
    tree</p>
  </li>
</ol>

<h2><a name="Installati">Installation</a></h2>
<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>
  <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/stable/sources/libxml/">gnome.org</a></p>
    <p>Most linux and Bsd distribution includes libxml, this is probably the
    safer way for end-users</p>
    <p>David Doolin provides precompiled Windows versions at <a
    href="http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/         ">http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/</a></p>
  </li>
  <li><em>I see libxml and libxml2 releases, which one should I install ?</em>
    <ul>
      <li>If you are not concerned by any existing backward compatibility with
        existing application, install libxml2 only</li>
      <li>If you are not doing development, you can safely install both.
        usually the packages <a
        href="http://rpmfind.net/linux/RPM/libxml.html">libxml</a> and <a
        href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a> are
        compatible (this is not the case for development packages)</li>
      <li>If you are a developer and your system provides separate packaging
        for shared libraries and the development components, it is possible to
        install libxml and libxml2, and also <a
        href="http://rpmfind.net/linux/RPM/libxml-devel.html">libxml-devel</a>
        and <a
        href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>
        too for libxml2 &gt;= 2.3.0</li>
      <li>If you are developing a new application, please develop against
        libxml2(-devel)</li>
    </ul>
  </li>
  <li><em>I can't install the libxml package it conflicts with libxml0</em>
    <p>You probably have an old libxml0 package used to provide the shared
    library for libxml.so.0, you can probably safely remove it. Anyway the
    libxml packages provided on <a
    href="ftp://rpmfind.net/pub/libxml/">rpmfind.net</a> provides
    libxml.so.0</p>
  </li>
  <li><em>I can't install the libxml(2) RPM package due to failed
    dependancies</em>
    <p>The most generic solution is to refetch the latest src.rpm , and
    rebuild it locally with</p>
    <p><code>rpm --rebuild libxml(2)-xxx.src.rpm</code></p>
    <p>if everything goes well it will generate two binary rpm (one providing
    the shared libs and xmllint, and the other one, the -devel package
    providing includes, static libraries and scripts needed to build
    applications with libxml(2)) that you can install locally.</p>
  </li>
</ol>

<h2><a name="Compilatio">Compilation</a></h2>
<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>
    <p>At that point you may have to rerun ldconfig or similar utility to
    update your list of installed shared libs.</p>
  </li>
  <li><em>What other libraries are needed to compile/install libxml ?</em>
    <p>Libxml does not requires any other library, the normal C ANSI API
    should be sufficient (please report any violation to this rule you may
    find).</p>
    <p>However if found at configuration time libxml will detect and use the
    following libs:</p>
    <ul>
      <li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a>: a
        highly portable and available widely compression library</li>
      <li>iconv: a powerful character encoding conversion library. It's
        included by default on recent glibc libraries, so it doesn't need to
        be installed specifically on linux. It seems it's now <a
        href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part of
        the official UNIX</a> specification. Here is one <a
        href="http://clisp.cons.org/~haible/packages-libiconv.html">implementation
        of the library</a> which source can be found <a
        href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
    </ul>
  </li>
  <li><em>libxml does not compile with HP-UX's optional ANSI-C compiler</em>
    <p>this is due to macro limitations. Try to add " -Wp,-H16800 -Ae" to the
    CFLAGS</p>
    <p>you can also install and use gcc instead or use a precompiled version
    of libxml, both available from the <a
    href="http://hpux.cae.wisc.edu/hppd/auto/summary_all.html">HP-UX Porting
    and Archive Centre</a></p>
  </li>
  <li><em>make check fails on some platforms</em>
    <p>Sometime 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>
  </li>
  <li><em>I use the CVS version and there is no configure script</em>
    <p>The configure (and other Makefiles) are generated. Use the autogen.sh
    script to regenerate the configure and Makefiles, like:</p>
    <p><code>./autogen.sh --prefix=/usr --disable-shared</code></p>
  </li>
  <li><em>I have troubles when running make tests with gcc-3.0</em>
    <p>It seems the initial release of gcc-3.0 has a problem with the
    optimizer which miscompiles the URI module. Please use another
    compiler</p>
  </li>
</ol>

<h2><a name="Developer">Developer</a> corner</h2>
<ol>
  <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>
    <pre>xmlNodePtr pode;
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
    the formatting spaces wich are part of the document but that people tend
    to forget. There is a function <a
    href="http://xmlsoft.org/html/libxml-parser.html">xmlKeepBlanksDefault
    ()</a>  to remove those at parse time, but that's an heuristic, and its
    use should be limited to case where you are sure there is no mixed-content
    in the document.</p>
  </li>
  <li><em>I get compilation errors of existing code like when accessing
    <strong>root</strong> or <strong>childs fields</strong> of nodes</em>
    <p>You are compiling code developed for libxml version 1 and using a
    libxml2 development environment. Either switch back to libxml v1 devel or
    even better fix the code to compile with libxml2 (or both) by <a
    href="upgrade.html">following the instructions</a>.</p>
  </li>
  <li><em>I get compilation errors about non existing
    <strong>xmlRootNode</strong> or <strong>xmlChildrenNode</strong>
    fields</em>
    <p>The source code you are using has been <a
    href="upgrade.html">upgraded</a> to be able to compile with both libxml
    and libxml2, but you need to install a more recent version: libxml(-devel)
    &gt;= 1.8.8 or libxml2(-devel) &gt;= 2.1.0</p>
  </li>
  <li><em>XPath implementation looks seriously broken</em>
    <p>XPath implementation prior to 2.3.0 was really incomplete, upgrade to a
    recent version, the implementation and debug of libxslt generated fixes
    for most obvious problems.</p>
  </li>
  <li><em>The example provided in the web page does not compile</em>
    <p>It's hard to maintain the documentation in sync with the code
    &lt;grin/&gt; ...</p>
    <p>Check the previous points 1/ and 2/ raised before, and send
    patches.</p>
  </li>
  <li><em>Where can I get more examples and informations than in the web
    page</em>
    <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>
      <li>looks for examples of use for libxml function using the Gnome code
        for example the following will query the full Gnome CVs base for the
        use of the <strong>xmlAddChild()</strong> function:
        <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
        the libxml source</a>, I try to write code as clean and documented as
        possible, so looking at it may be helpful</li>
    </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>
    <p>There is however a C++ wrapper provided by Ari Johnson
    &lt;ari@btigate.com&gt; which may fullfill your needs:</p>
    <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>How to validate a document a posteriori ?
    <p>It is possible to validate documents which had not been validated at
    initial parsing time or documents who have been built from scratch using
    the API. Use the <a
    href="http://xmlsoft.org/html/libxml-valid.html#XMLVALIDATEDTD">xmlValidateDtd()</a>
    function. It is also possible to simply add a Dtd to an existing
    document:</p>
    <pre>xmlDocPtr doc; /* your existing document */
        xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
        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>
  <li>etc ...</li>
</ol>

<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>

<p>$Id$</p>
</body>
</html>
