2001-11-10 11:57:23 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
2000-07-01 11:49:28 +00:00
< html >
< head >
2001-10-25 10:53:28 +00:00
< meta content = "text/html; charset=ISO-8859-1" http-equiv = "Content-Type" >
2002-03-29 14:08:27 +00:00
< link rel = "SHORTCUT ICON" href = "/favicon.ico" >
2001-10-25 10:53:28 +00:00
< style type = "text/css" > < ! - -
2002-02-21 14:46:29 +00:00
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
2001-10-25 10:53:28 +00:00
A:link, A:visited, A:active { text-decoration: underline }
-->< / style >
< title > FAQ< / title >
2000-07-01 11:49:28 +00:00
< / head >
2001-10-25 10:53:28 +00:00
< body bgcolor = "#8b7765" text = "#000000" link = "#000000" vlink = "#000000" >
< table border = "0" width = "100%" cellpadding = "5" cellspacing = "0" align = "center" > < tr >
< td width = "180" >
< a href = "http://www.gnome.org/" > < img src = "smallfootonly.gif" alt = "Gnome 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 >
< / 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 library for Gnome< / h1 >
< h2 > FAQ< / 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 >
2002-01-21 09:52:27 +00:00
< tr > < td bgcolor = "#fffacd" > < ul >
2001-10-25 10:53:28 +00:00
< 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" > Documentation< / 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 >
2002-01-08 13:26:00 +00:00
< li > < a href = "XMLinfo.html" > XML< / a > < / li >
2001-10-25 10:53:28 +00:00
< li > < a href = "XSLT.html" > XSLT< / a > < / li >
2002-02-20 14:37:47 +00:00
< li > < a href = "python.html" > Python and bindings< / a > < / li >
2001-10-25 10:53:28 +00:00
< li > < a href = "architecture.html" > libxml 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 = "xmldtd.html" > Validation & DTDs< / a > < / li >
< li > < a href = "xmlmem.html" > Memory Management< / a > < / li >
< li > < a href = "encoding.html" > Encodings support< / a > < / li >
< li > < a href = "xmlio.html" > I/O Interfaces< / a > < / li >
< li > < a href = "catalog.html" > Catalog support< / 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 >
2001-10-30 12:51:17 +00:00
< li > < a href = "threads.html" > Thread safety< / a > < / li >
2001-10-25 10:53:28 +00:00
< li > < a href = "DOM.html" > DOM Principles< / a > < / li >
< li > < a href = "example.html" > A real example< / a > < / li >
< li > < a href = "contribs.html" > Contributions< / a > < / li >
2002-06-05 14:48:26 +00:00
< li > < a href = "tutorial/index.html" > Tutorial< / a > < / li >
2001-10-25 10:53:28 +00:00
< 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" >
2002-01-23 12:36:34 +00:00
< tr > < td colspan = "1" bgcolor = "#eecfa1" align = "center" > < center > < b > API Indexes< / b > < / center > < / td > < / tr >
< tr > < td bgcolor = "#fffacd" > < ul >
2002-01-23 17:58:17 +00:00
< li > < a href = "APIchunk0.html" > Alphabetic< / a > < / li >
2002-01-23 12:36:34 +00:00
< 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" >
2001-10-25 10:53:28 +00:00
< tr > < td colspan = "1" bgcolor = "#eecfa1" align = "center" > < center > < b > Related links< / b > < / center > < / td > < / tr >
2002-01-21 09:52:27 +00:00
< tr > < td bgcolor = "#fffacd" > < ul >
2001-10-25 10:53:28 +00:00
< li > < a href = "http://mail.gnome.org/archives/xml/" > Mail archive< / a > < / li >
< li > < a href = "http://xmlsoft.org/XSLT/" > XSLT libxslt< / a > < / li >
2002-01-08 11:49:22 +00:00
< li > < a href = "http://phd.cs.unibo.it/gdome2/" > DOM gdome2< / a > < / li >
2002-03-17 10:34:11 +00:00
< li > < a href = "http://www.aleksey.com/xmlsec/" > XML-DSig xmlsec< / a > < / li >
2001-10-25 10:53:28 +00:00
< li > < a href = "ftp://xmlsoft.org/" > FTP< / a > < / li >
< li > < a href = "http://www.fh-frankfurt.de/~igor/projects/libxml/" > Windows binaries< / a > < / li >
2001-11-26 17:25:02 +00:00
< li > < a href = "http://garypennington.net/libxml2/" > Solaris binaries< / a > < / li >
2002-05-02 06:11:10 +00:00
< li > < a href = "http://sourceforge.net/projects/libxml2-pas/" > Pascal bindings< / a > < / li >
2002-03-17 10:34:11 +00:00
< li > < a href = "http://bugzilla.gnome.org/buglist.cgi?product=libxml&product=libxml2" > Bug Tracker< / a > < / li >
2001-10-25 10:53:28 +00:00
< / 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" >
2000-07-01 11:49:28 +00:00
< p > Table of Content:< / p >
< ul >
2002-05-20 06:51:05 +00:00
< li > < a href = "FAQ.html#License" > License(s)< / a > < / li >
2001-10-25 10:53:28 +00:00
< 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 >
2000-07-01 11:49:28 +00:00
< / ul >
2001-10-25 10:53:28 +00:00
< h3 >
2002-05-20 06:51:05 +00:00
< a name = "License" > License< / a > (s)< / h3 >
2000-07-01 11:49:28 +00:00
< ol >
2001-10-25 10:53:28 +00:00
< li >
< em > Licensing Terms for libxml< / em >
2002-02-08 13:28:40 +00:00
< p > libxml is released under the < a href = "http://www.opensource.org/licenses/mit-license.html" > MIT
2002-05-20 06:51:05 +00:00
License< / a > , see the file Copyright in the distribution for the precise
2002-02-08 13:28:40 +00:00
wording< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > Can I embed libxml in a proprietary application ?< / em >
2002-05-20 06:51:05 +00:00
< p > Yes. The MIT License allows you to also keep proprietary the changes
2002-05-28 16:28:42 +00:00
you made to libxml, but it would be graceful to provide back bug fixes
and improvements as patches for possible incorporation in the main
2001-09-13 14:24:44 +00:00
development tree< / p >
2001-10-25 10:53:28 +00:00
< / li >
2000-07-01 11:49:28 +00:00
< / ol >
2001-10-25 10:53:28 +00:00
< h3 > < a name = "Installati" > Installation< / a > < / h3 >
2000-07-01 11:49:28 +00:00
< ol >
2001-10-25 10:53:28 +00:00
< li > Unless you are forced to because your application links with a Gnome
2001-03-21 10:28:36 +00:00
library requiring it, < strong > < span style = "background-color: #FF0000" > Do
Not Use libxml1< / span > < / strong > , use libxml2< / li >
2001-10-25 10:53:28 +00:00
< li >
2002-03-08 15:05:20 +00:00
< em > Where can I get libxml< / em > ?
2001-10-25 10:53:28 +00:00
< 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 >
2002-05-20 06:51:05 +00:00
< p > Most Linux and BSD distributions include libxml, this is probably the
2000-07-01 11:49:28 +00:00
safer way for end-users< / p >
2002-07-08 15:12:49 +00:00
< 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 >
2001-10-25 10:53:28 +00:00
< / p >
< / li >
< li >
< em > I see libxml and libxml2 releases, which one should I install ?< / em >
2000-07-01 11:49:28 +00:00
< ul >
2001-10-25 10:53:28 +00:00
< li > If you are not concerned by any existing backward compatibility
2001-09-13 14:24:44 +00:00
with existing application, install libxml2 only< / li >
2001-10-25 10:53:28 +00:00
< 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
2000-07-01 11:49:28 +00:00
compatible (this is not the case for development packages)< / li >
2001-10-25 10:53:28 +00:00
< li > If you are a developer and your system provides separate packaging
2001-09-13 14:24:44 +00:00
for shared libraries and the development components, it is possible
2001-10-25 10:53:28 +00:00
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 >
2001-03-16 22:04:15 +00:00
too for libxml2 > = 2.3.0< / li >
2001-10-25 10:53:28 +00:00
< li > If you are developing a new application, please develop against
2000-07-01 11:49:28 +00:00
libxml2(-devel)< / li >
2001-10-25 10:53:28 +00:00
< / ul >
< / li >
< li >
< em > I can't install the libxml package it conflicts with libxml0< / em >
2000-07-01 11:49:28 +00:00
< 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
2001-10-25 10:53:28 +00:00
libxml packages provided on < a href = "ftp://rpmfind.net/pub/libxml/" > rpmfind.net< / a > provides
2000-07-01 11:49:28 +00:00
libxml.so.0< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > I can't install the libxml(2) RPM package due to failed
2002-05-20 06:51:05 +00:00
dependencies< / em >
< p > The most generic solution is to re-fetch the latest src.rpm , and
2001-05-01 12:42:26 +00:00
rebuild it locally with< / p >
2001-10-25 10:53:28 +00:00
< p > < code > rpm --rebuild libxml(2)-xxx.src.rpm< / code > < / p >
< p > if everything goes well it will generate two binary rpm (one providing
2001-05-01 12:42:26 +00:00
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 >
2001-10-25 10:53:28 +00:00
< / li >
2000-07-01 11:49:28 +00:00
< / ol >
2001-10-25 10:53:28 +00:00
< h3 > < a name = "Compilatio" > Compilation< / a > < / h3 >
2000-07-01 11:49:28 +00:00
< ol >
2001-10-25 10:53:28 +00:00
< li >
< em > What is the process to compile libxml ?< / em >
2002-06-17 07:29:22 +00:00
< p > As most UNIX libraries libxml follows the " standard" :< / p >
2001-10-25 10:53:28 +00:00
< 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
2000-07-01 11:49:28 +00:00
update your list of installed shared libs.< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > What other libraries are needed to compile/install libxml ?< / em >
2002-06-17 07:29:22 +00:00
< p > Libxml does not requires any other library, the normal C ANSI API
2000-07-01 11:49:28 +00:00
should be sufficient (please report any violation to this rule you may
find).< / p >
2001-10-25 10:53:28 +00:00
< p > However if found at configuration time libxml will detect and use the
2000-07-01 11:49:28 +00:00
following libs:< / p >
2001-10-25 10:53:28 +00:00
< ul >
< li >
2002-03-08 15:05:20 +00:00
< a href = "http://www.info-zip.org/pub/infozip/zlib/" > libz< / a > : a
2002-06-17 07:29:22 +00:00
highly portable and available widely compression library< / li >
2001-10-25 10:53:28 +00:00
< li > iconv: a powerful character encoding conversion library. It's
2000-07-01 11:49:28 +00:00
included by default on recent glibc libraries, so it doesn't need to
2002-05-20 06:51:05 +00:00
be installed specifically on Linux. It seems it's now < a href = "http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html" > part
2001-10-25 10:53:28 +00:00
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 > make check fails on some platforms< / em >
2000-07-01 11:49:28 +00:00
< 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
2001-09-13 14:24:44 +00:00
some platforms the diff return breaks the compilation process, if the
2002-02-12 14:29:11 +00:00
diff is small this is probably not a serious problem.< / p >
< p > Sometimes (especially on Solaris) make checks fails due to limitations
in make. Try using GNU-make instead.< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > I use the CVS version and there is no configure script< / em >
2001-06-11 10:29:38 +00:00
< p > The configure (and other Makefiles) are generated. Use the autogen.sh
script to regenerate the configure and Makefiles, like:< / p >
2001-10-25 10:53:28 +00:00
< 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 >
2001-06-22 16:03:51 +00:00
< 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 >
2001-10-25 10:53:28 +00:00
< / li >
2000-07-01 11:49:28 +00:00
< / ol >
2001-10-25 10:53:28 +00:00
< h3 >
< a name = "Developer" > Developer< / a > corner< / h3 >
2000-07-01 11:49:28 +00:00
< ol >
2001-10-25 10:53:28 +00:00
< li >
< em > xmlDocDump() generates output on one line< / em >
2001-09-13 14:24:44 +00:00
< p > libxml will not < strong > invent< / strong > spaces in the content of a
document since < strong > all spaces in the content of a document are
significant< / strong > . If you build a tree from the API and want
indentation:< / p >
2001-10-25 10:53:28 +00:00
< ol >
< li > the correct way is to generate those yourself too< / li >
< li > the dangerous way is to ask libxml to add those blanks to your
2001-09-13 14:24:44 +00:00
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
2002-06-17 07:29:22 +00:00
impact other part of the content of your document. See < a href = "http://xmlsoft.org/html/libxml-parser.html#XMLKEEPBLANKSDEFAULT" > xmlKeepBlanksDefault
2001-10-25 10:53:28 +00:00
()< / a > and < a href = "http://xmlsoft.org/html/libxml-tree.html#XMLSAVEFORMATFILE" > xmlSaveFormatFile
()< / a >
< / li >
< / ol >
< / li >
< li > Extra nodes in the document:
2001-02-10 09:40:10 +00:00
< p > < em > For a XML file as below:< / em > < / p >
2001-10-25 10:53:28 +00:00
< pre > < ?xml version=" 1.0" ?>
< PLAN xmlns=" http://www.argus.ca/autotest/1.0/" >
< NODE CommFlag=" 0" />
< NODE CommFlag=" 1" />
2001-02-10 09:40:10 +00:00
< /PLAN> < / pre >
2001-10-25 10:53:28 +00:00
< p > < em > after parsing it with the function
2001-03-16 22:04:15 +00:00
pxmlDoc=xmlParseFile(...);< / em > < / p >
2001-10-25 10:53:28 +00:00
< 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 >
2002-05-20 06:51:05 +00:00
< pre > xmlNodePtr pnode;
2001-02-10 09:40:10 +00:00
pnode=pxmlDoc-> children-> children;< / pre >
2001-10-25 10:53:28 +00:00
< p > < em > but it does not work. If I change it to< / em > < / p >
< pre > pnode=pxmlDoc-> children-> children-> next;< / pre >
< p > < em > then it works. Can someone explain it to me.< / em > < / p >
< p >
< p > In XML all characters in the content of the document are significant
2001-02-10 09:35:37 +00:00
< strong > including blanks and formatting line breaks< / strong > .< / p >
2001-10-25 10:53:28 +00:00
< p > The extra nodes you are wondering about are just that, text nodes with
2002-05-20 06:51:05 +00:00
the formatting spaces which are part of the document but that people tend
2001-10-25 10:53:28 +00:00
to forget. There is a function < a href = "http://xmlsoft.org/html/libxml-parser.html" > xmlKeepBlanksDefault
2001-02-10 09:35:37 +00:00
()< / a > to remove those at parse time, but that's an heuristic, and its
2001-09-13 14:24:44 +00:00
use should be limited to case where you are sure there is no
mixed-content in the document.< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > I get compilation errors of existing code like when accessing
2000-07-01 11:49:28 +00:00
< strong > root< / strong > or < strong > childs fields< / strong > of nodes< / em >
2001-03-13 15:12:39 +00:00
< p > You are compiling code developed for libxml version 1 and using a
libxml2 development environment. Either switch back to libxml v1 devel or
2001-10-25 10:53:28 +00:00
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
2000-07-01 11:49:28 +00:00
< strong > xmlRootNode< / strong > or < strong > xmlChildrenNode< / strong >
fields< / em >
2001-10-25 10:53:28 +00:00
< p > The source code you are using has been < a href = "upgrade.html" > upgraded< / a > to be able to compile with both libxml
2001-09-13 14:24:44 +00:00
and libxml2, but you need to install a more recent version:
libxml(-devel) > = 1.8.8 or libxml2(-devel) > = 2.1.0< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > XPath implementation looks seriously broken< / em >
2001-09-13 14:24:44 +00:00
< p > XPath implementation prior to 2.3.0 was really incomplete, upgrade to
2002-03-17 10:34:11 +00:00
a recent version, there is no known bug in the current version.< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > The example provided in the web page does not compile< / em >
2000-07-01 11:49:28 +00:00
< p > It's hard to maintain the documentation in sync with the code
2000-10-16 16:58:19 +00:00
< grin/> ...< / p >
2001-10-25 10:53:28 +00:00
< p > Check the previous points 1/ and 2/ raised before, and send
2000-07-01 11:49:28 +00:00
patches.< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< em > Where can I get more examples and informations than in the web
2000-07-01 11:49:28 +00:00
page< / em >
< p > Ideally a libxml book would be nice. I have no such plan ... But you
can:< / p >
2001-10-25 10:53:28 +00:00
< 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
2002-05-20 06:51:05 +00:00
for example the following will query the full Gnome CVS base for the
2000-07-01 11:49:28 +00:00
use of the < strong > xmlAddChild()< / strong > function:
2001-10-25 10:53:28 +00:00
< 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
2000-07-01 11:49:28 +00:00
could cure this :-)< / p >
2001-10-25 10:53:28 +00:00
< / li >
< li >
< a href = "http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&dir=gnome-xml" > Browse
2002-03-08 15:05:20 +00:00
the libxml source< / a > , I try to write code as clean and documented
2002-03-17 10:34:11 +00:00
as possible, so looking at it may be helpful. Especially the code of
xmllint.c and of the various testXXX.c tests programs should provide
good example on how to do things with the library.< / li >
2001-10-25 10:53:28 +00:00
< / ul >
< / li >
< li > What about C++ ?
2001-09-13 14:24:44 +00:00
< 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
2000-07-01 11:49:28 +00:00
C++.< / p >
2002-06-17 07:29:22 +00:00
< p > There is however a few C++ wrappers which may fulfill your needs:< / p >
2002-05-13 12:06:47 +00:00
< ul >
< li > by Ari Johnson < ari@btigate.com> :
2002-07-08 15:12:49 +00:00
< p > Website: < a href = "http://lusis.org/~ari/xml++/" > http://lusis.org/~ari/xml++/< / a >
2002-05-13 12:06:47 +00:00
< / p >
2002-07-08 15:12:49 +00:00
< p > Download: < a href = "http://lusis.org/~ari/xml++/libxml++.tar.gz" > http://lusis.org/~ari/xml++/libxml++.tar.gz< / a >
2001-10-25 10:53:28 +00:00
< / p >
2002-05-13 12:06:47 +00:00
< / li >
< li > by Peter Jones < pjones@pmade.org>
< p > Website: < a href = "http://pmade.org/pjones/software/xmlwrapp/" > http://pmade.org/pjones/software/xmlwrapp/< / a >
2001-10-25 10:53:28 +00:00
< / p >
< / li >
2002-05-13 12:06:47 +00:00
< / ul >
< / li >
2001-10-25 10:53:28 +00:00
< li > How to validate a document a posteriori ?
2000-07-01 11:49:28 +00:00
< p > It is possible to validate documents which had not been validated at
2002-06-17 07:29:22 +00:00
initial parsing time or documents who have been built from scratch using
2001-10-25 10:53:28 +00:00
the API. Use the < a href = "http://xmlsoft.org/html/libxml-valid.html#XMLVALIDATEDTD" > xmlValidateDtd()< / a >
2002-05-20 06:51:05 +00:00
function. It is also possible to simply add a DTD to an existing
2000-07-01 11:49:28 +00:00
document:< / p >
2001-10-25 10:53:28 +00:00
< pre > xmlDocPtr doc; /* your existing document */
2000-07-01 11:49:28 +00:00
xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
2001-10-25 10:53:28 +00:00
dtd-> name = xmlStrDup((xmlChar*)" root_name" ); /* use the given root */
2000-07-01 11:49:28 +00:00
2000-10-16 16:58:19 +00:00
doc-> intSubset = dtd;
if (doc-> children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd);
else xmlAddPrevSibling(doc-> children, (xmlNodePtr)dtd);
2000-07-01 11:49:28 +00:00
< / pre >
2001-10-25 10:53:28 +00:00
< / li >
< li > etc ...< / li >
2000-07-01 11:49:28 +00:00
< / ol >
2001-10-25 10:53:28 +00:00
< p >
2002-02-13 09:19:28 +00:00
< p > < a href = "bugs.html" > Daniel Veillard< / a > < / p >
2001-10-25 10:53:28 +00:00
< / td > < / tr > < / table > < / td > < / tr > < / table > < / td > < / tr > < / table > < / td >
< / tr > < / table > < / td > < / tr > < / table >
2000-07-01 11:49:28 +00:00
< / body >
< / html >