From fabafd54c7d7aed4f68be56d196b2f965eab7a9d Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Thu, 8 Jun 2006 08:16:33 +0000 Subject: [PATCH] preparing release of 2.6.26 Daniel * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.26 Daniel --- ChangeLog | 4 + configure.in | 2 +- doc/DOM.html | 15 +- doc/FAQ.html | 319 ++- doc/XMLinfo.html | 32 +- doc/XSLT.html | 9 +- doc/architecture.html | 4 +- doc/bugs.html | 116 +- doc/catalog.html | 321 ++- doc/contribs.html | 48 +- doc/docs.html | 27 +- doc/downloads.html | 38 +- doc/encoding.html | 313 ++- doc/entities.html | 75 +- doc/example.html | 72 +- doc/help.html | 23 +- doc/index.html | 108 +- doc/interface.html | 34 +- doc/intro.html | 34 +- doc/library.html | 133 +- doc/libxml2.xsa | 30 +- doc/namespaces.html | 70 +- doc/news.html | 1683 +++++++-------- doc/python.html | 244 +-- doc/threads.html | 25 +- doc/tree.html | 33 +- doc/upgrade.html | 190 +- doc/xml.html | 4773 +++++++++++++++++++++-------------------- doc/xmldtd.html | 151 +- doc/xmlio.html | 124 +- doc/xmlmem.html | 167 +- 31 files changed, 4606 insertions(+), 4611 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a392911..f6b31ef0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Jun 6 17:50:43 CEST 2006 Daniel Veillard + + * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.26 + Tue Jun 6 17:25:23 CEST 2006 Kasimier Buchcik * xpath.c: Fixed self-invented a segfault in xmlXPathCtxtCompile(), diff --git a/configure.in b/configure.in index 7fbacfbe..e01408a1 100644 --- a/configure.in +++ b/configure.in @@ -5,7 +5,7 @@ AC_CANONICAL_HOST LIBXML_MAJOR_VERSION=2 LIBXML_MINOR_VERSION=6 -LIBXML_MICRO_VERSION=25 +LIBXML_MICRO_VERSION=26 LIBXML_MICRO_VERSION_SUFFIX= LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION diff --git a/doc/DOM.html b/doc/DOM.html index 0a477704..a6373996 100644 --- a/doc/DOM.html +++ b/doc/DOM.html @@ -7,10 +7,11 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -DOM Principles
Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
Made with Libxml2 Logo

The XML C parser and toolkit of Gnome

DOM Principles

Developer Menu
API Indexes
Related links

DOMstands for the DocumentObject -Model; this is an API for accessing XML or HTML structureddocuments. -Native support for DOM in Gnome is on the way (module gnome-dom),and will be -based on gnome-xml. This will be a far cleaner interface tomanipulate XML -files within Gnome since it won't expose the internalstructure.

The current DOM implementation on top of libxml2 is the gdome2 Gnome module, -thisis a full DOM interface, thanks to Paolo Casarini, check the Gdome2 homepagefor -moreinformations.

Daniel Veillard

+DOM Principles
Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
Made with Libxml2 Logo

The XML C parser and toolkit of Gnome

DOM Principles

Developer Menu
API Indexes
Related links

DOMstands for the +DocumentObjectModel; this is an API for accessing XML or HTML +structureddocuments.Native support for DOM in Gnome is on the way (module +gnome-dom),and will bebased on gnome-xml. This will be a far cleaner +interface tomanipulate XMLfiles within Gnome since it won't expose the +internalstructure.

The current DOM implementation on top of libxml2 is the gdome2 Gnome module,thisis +a full DOM interface, thanks to Paolo Casarini, check the Gdome2 +homepageformoreinformations.

Daniel Veillard

diff --git a/doc/FAQ.html b/doc/FAQ.html index d917d693..cdc6585c 100644 --- a/doc/FAQ.html +++ b/doc/FAQ.html @@ -12,51 +12,49 @@ A:link, A:visited, A:active { text-decoration: underline }
  • Compilation
  • Developer corner
  • License(s)

    1. Licensing Terms for libxml -

      libxml2 is released under the MITLicense; - see the file Copyright in the distribution for the precisewording

      +

      libxml2 is released under the MITLicense;see + the file Copyright in the distribution for the precisewording

    2. Can I embed libxml2 in a proprietary application ? -

      Yes. The MIT License allows you to keep proprietary the changes - youmade to libxml, but it would be graceful to send-back bug fixes - andimprovements as patches for possible incorporation in the - maindevelopment tree.

      +

      Yes. The MIT License allows you to keep proprietary the changesyoumade + to libxml, but it would be graceful to send-back bug fixesandimprovements + as patches for possible incorporation in themaindevelopment tree.

    3. -

    Installation

    1. Do Not - Uselibxml1, use libxml2
    2. +

    Installation

    1. Do + NotUselibxml1, use libxml2
    2. Where can I get libxml?

      The original distribution comes from xmlsoft.orgor gnome.org

      -

      Most Linux and BSD distributions include libxml, this is probably - thesafer way for end-users to use libxml.

      +

      Most Linux and BSD distributions include libxml, this is + probablythesafer way for end-users to use libxml.

      David Doolin provides precompiled Windows versions at http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/

    3. I see libxml and libxml2 releases, which one should I install ? -
      • If you are not constrained by backward compatibility issues - withexisting applications, install libxml2 only
      • -
      • If you are not doing development, you can safely install - both.Usually the packages libxmland libxml2arecompatible - (this is not the case for development packages).
      • -
      • If you are a developer and your system provides separate - packagingfor shared libraries and the development components, it is - possibleto install libxml and libxml2, and also libxml-develand - libxml2-develtoo - for libxml2 >= 2.3.0
      • -
      • If you are developing a new application, please develop - againstlibxml2(-devel)
      • +
        • If you are not constrained by backward compatibility + issueswithexisting applications, install libxml2 only
        • +
        • If you are not doing development, you can safely + installboth.Usually the packages libxmland libxml2arecompatible(this + is not the case for development packages).
        • +
        • If you are a developer and your system provides + separatepackagingfor shared libraries and the development components, + it ispossibleto install libxml and libxml2, and also libxml-develandlibxml2-develtoofor + libxml2 >= 2.3.0
        • +
        • If you are developing a new application, please + developagainstlibxml2(-devel)
      • I can't install the libxml package, it conflicts with libxml0 -

        You probably have an old libxml0 package used to provide the - sharedlibrary for libxml.so.0, you can probably safely remove it. The - libxmlpackages provided on xmlsoft.orgprovidelibxml.so.0

        +

        You probably have an old libxml0 package used to provide + thesharedlibrary for libxml.so.0, you can probably safely remove it. + Thelibxmlpackages provided on xmlsoft.orgprovidelibxml.so.0

      • -
      • I can't install the libxml(2) RPM package due to - faileddependencies -

        The most generic solution is to re-fetch the latest src.rpm , - andrebuild it locally with

        +
      • I can't install the libxml(2) RPM package due + tofaileddependencies +

        The most generic solution is to re-fetch the latest src.rpm + ,andrebuild it locally with

        rpm --rebuild libxml(2)-xxx.src.rpm.

        -

        If everything goes well it will generate two binary rpm packages - (oneproviding the shared libs and xmllint, and the other one, the - -develpackage, providing includes, static libraries and scripts needed to - buildapplications with libxml(2)) that you can install locally.

        +

        If everything goes well it will generate two binary rpm + packages(oneproviding the shared libs and xmllint, and the other one, + the-develpackage, providing includes, static libraries and scripts needed + tobuildapplications with libxml(2)) that you can install locally.

    Compilation

    1. What is the process to compile libxml2 ?

      As most UNIX libraries libxml2 follows the "standard":

      @@ -67,107 +65,106 @@ A:link, A:visited, A:active { text-decoration: underline }

      ./configure [possible options]

      make

      make install

      -

      At that point you may have to rerun ldconfig or a similar utility - toupdate your list of installed shared libs.

      +

      At that point you may have to rerun ldconfig or a similar + utilitytoupdate your list of installed shared libs.

    2. What other libraries are needed to compile/install libxml2 ? -

      Libxml2 does not require any other library, the normal C ANSI - APIshould be sufficient (please report any violation to this rule you - mayfind).

      -

      However if found at configuration time libxml2 will detect and use - thefollowing libs:

      -
      • libz: - ahighly portable and available widely compression library.
      • -
      • iconv: a powerful character encoding conversion library. It - isincluded by default in recent glibc libraries, so it doesn't need - tobe installed specifically on Linux. It now seems a partof - the official UNIXspecification. Here is one implementation of - thelibrarywhich source can be found here.
      • +

        Libxml2 does not require any other library, the normal C ANSIAPIshould + be sufficient (please report any violation to this rule youmayfind).

        +

        However if found at configuration time libxml2 will detect and + usethefollowing libs:

        +
        • libz:ahighly + portable and available widely compression library.
        • +
        • iconv: a powerful character encoding conversion library. + Itisincluded by default in recent glibc libraries, so it doesn't + needtobe installed specifically on Linux. It now seems a partofthe + official UNIXspecification. Here is one implementation + ofthelibrarywhich source can be found here.
      • Make check fails on some platforms -

        Sometimes the regression tests' results don't completely match - thevalue produced by the parser, and the makefile uses diff to print - thedelta. On some platforms the diff return breaks the compilation - process;if the diff is small this is probably not a serious problem.

        -

        Sometimes (especially on Solaris) make checks fail due to - limitationsin make. Try using GNU-make instead.

        +

        Sometimes the regression tests' results don't completely matchthevalue + produced by the parser, and the makefile uses diff to printthedelta. On + some platforms the diff return breaks the compilationprocess;if the diff + is small this is probably not a serious problem.

        +

        Sometimes (especially on Solaris) make checks fail due tolimitationsin + make. Try using GNU-make instead.

      • I use the CVS version and there is no configure script -

        The configure script (and other Makefiles) are generated. Use - theautogen.sh script to regenerate the configure script and - Makefiles,like:

        +

        The configure script (and other Makefiles) are generated. + Usetheautogen.sh script to regenerate the configure script + andMakefiles,like:

        ./autogen.sh --prefix=/usr --disable-shared

      • I have troubles when running make tests with gcc-3.0 -

        It seems the initial release of gcc-3.0 has a problem with - theoptimizer which miscompiles the URI module. Please use - anothercompiler.

        +

        It seems the initial release of gcc-3.0 has a problem withtheoptimizer + which miscompiles the URI module. Please useanothercompiler.

    Developercorner

    1. Troubles compiling or linking programs using libxml2 -

      Usually the problem comes from the fact that the compiler doesn't - getthe right compilation or linking flags. There is a small shell - scriptxml2-configwhich is installed as part of libxml2 - usualinstall process which provides those flags. Use

      +

      Usually the problem comes from the fact that the compiler + doesn'tgetthe right compilation or linking flags. There is a small + shellscriptxml2-configwhich is installed as part of + libxml2usualinstall process which provides those flags. Use

      xml2-config --cflags

      to get the compilation flags and

      xml2-config --libs

      -

      to get the linker flags. Usually this is done directly from - theMakefile as:

      +

      to get the linker flags. Usually this is done directly fromtheMakefile + as:

      CFLAGS=`xml2-config --cflags`

      LIBS=`xml2-config --libs`

    2. -
    3. I want to install my own copy of libxml2 in my home directory - andlink my programs against it, but it doesn't work -

      There are many different ways to accomplish this. Here is one way - todo this under Linux. Suppose your home directory is - /home/user.Then:

      +
    4. I want to install my own copy of libxml2 in my home + directoryandlink my programs against it, but it doesn't work +

      There are many different ways to accomplish this. Here is one waytodo + this under Linux. Suppose your home directory + is/home/user.Then:

      • Create a subdirectory, let's call it myxml
      • unpack the libxml2 distribution into that subdirectory
      • -
      • chdir into the unpacked distribution(/home/user/myxml/libxml2 - )
      • -
      • configure the library using the "--prefix" - switch,specifying an installation subdirectory - in/home/user/myxml, e.g. -

        ./configure --prefix - /home/user/myxml/xmlinst{otherconfiguration options}

        +
      • chdir into the unpacked + distribution(/home/user/myxml/libxml2)
      • +
      • configure the library using the + "--prefix"switch,specifying an installation + subdirectoryin/home/user/myxml, e.g. +

        ./configure + --prefix/home/user/myxml/xmlinst{otherconfiguration + options}

      • now run makefollowed by make install
      • -
      • At this point, the installation subdirectory contains the - complete"private" include files, library files and binary program - files (e.g.xmllint), located in -

        /home/user/myxml/xmlinst/lib,/home/user/myxml/xmlinst/include - and /home/user/myxml/xmlinst/bin

        +
      • At this point, the installation subdirectory contains + thecomplete"private" include files, library files and binary + programfiles (e.g.xmllint), located in +

        /home/user/myxml/xmlinst/lib,/home/user/myxml/xmlinst/includeand + /home/user/myxml/xmlinst/bin

        respectively.
      • -
      • In order to use this "private" library, you should first add it - tothe beginning of your default PATH (so that your own private - programfiles such as xmllint will be used instead of the normal - systemones). To do this, the Bash command would be +
      • In order to use this "private" library, you should first add + ittothe beginning of your default PATH (so that your own + privateprogramfiles such as xmllint will be used instead of the + normalsystemones). To do this, the Bash command would be

        export PATH=/home/user/myxml/xmlinst/bin:$PATH

      • -
      • Now suppose you have a program test1.cthat you - wouldlike to compile with your "private" library. Simply compile it - usingthe command +
      • Now suppose you have a program test1.cthat + youwouldlike to compile with your "private" library. Simply compile + itusingthe command

        gcc `xml2-config --cflags --libs` -o test test.c

        - Note that, because your PATH has been set with - /home/user/myxml/xmlinst/binat the beginning, the - xml2-configprogram which you just installed will be used instead of - the systemdefault one, and this will automaticallyget the - correctlibraries linked with your program.
      • + Note that, because your PATH has been set + with/home/user/myxml/xmlinst/binat the beginning, + thexml2-configprogram which you just installed will be used instead + ofthe systemdefault one, and this will automaticallyget + thecorrectlibraries linked with your program.
    5. xmlDocDump() generates output on one line. -

      Libxml2 will not inventspaces in the content of - adocument since all spaces in the content of a document - aresignificant. If you build a tree from the API and - wantindentation:

      +

      Libxml2 will not inventspaces in the content + ofadocument since all spaces in the content of a + documentaresignificant. If you build a tree from the API + andwantindentation:

      1. the correct way is to generate those yourself too.
      2. -
      3. the dangerous way is to ask libxml2 to add those blanks to - yourcontent modifying the content of your document in - theprocess. The result may not be what you expect. There - isNOway to guarantee that such a modification - won'taffect other parts of the content of your document. See xmlKeepBlanksDefault()and - xmlSaveFormatFile()
      4. +
      5. the dangerous way is to ask libxml2 to add those blanks + toyourcontent modifying the content of your document + intheprocess. The result may not be what you expect. + ThereisNOway to guarantee that such a + modificationwon'taffect other parts of the content of your document. + See xmlKeepBlanksDefault()andxmlSaveFormatFile()
    6. Extra nodes in the document:

      For a XML file as below:

      @@ -176,10 +173,10 @@ A:link, A:visited, A:active { text-decoration: underline } <NODE CommFlag="0"/> <NODE CommFlag="1"/> </PLAN> -

      after parsing it with the - functionpxmlDoc=xmlParseFile(...);

      -

      I want to the get the content of the first node (node with - theCommFlag="0")

      +

      after parsing it with + thefunctionpxmlDoc=xmlParseFile(...);

      +

      I want to the get the content of the first node (node + withtheCommFlag="0")

      so I did it as following;

      xmlNodePtr pnode;
       pnode=pxmlDoc->children->children;
      @@ -187,64 +184,62 @@ pnode=pxmlDoc->children->children;
      pnode=pxmlDoc->children->children->next;

      then it works. Can someone explain it to me.

      -

      In XML all characters in the content of the document are - significantincluding blanks and formatting line - breaks.

      -

      The extra nodes you are wondering about are just that, text nodes - withthe formatting spaces which are part of the document but that people - tendto forget. There is a function xmlKeepBlanksDefault()to - remove those at parse time, but that's an heuristic, and itsuse should be - limited to cases where you are certain there is nomixed-content in the - document.

      +

      In XML all characters in the content of the document + aresignificantincluding blanks and formatting + linebreaks.

      +

      The extra nodes you are wondering about are just that, text + nodeswiththe formatting spaces which are part of the document but that + peopletendto forget. There is a function xmlKeepBlanksDefault()toremove + those at parse time, but that's an heuristic, and itsuse should belimited + to cases where you are certain there is nomixed-content in + thedocument.

    7. -
    8. I get compilation errors of existing code like when - accessingrootor child fieldsof - nodes. -

      You are compiling code developed for libxml version 1 and using - alibxml2 development environment. Either switch back to libxml v1 devel - oreven better fix the code to compile with libxml2 (or both) by following the instructions.

      +
    9. I get compilation errors of existing code like + whenaccessingrootor child + fieldsofnodes. +

      You are compiling code developed for libxml version 1 and + usingalibxml2 development environment. Either switch back to libxml v1 + develoreven better fix the code to compile with libxml2 (or both) by following the instructions.

    10. -
    11. I get compilation errors about non - existingxmlRootNodeor - xmlChildrenNodefields. -

      The source code you are using has been upgradedto be able to compile with both libxmland - libxml2, but you need to install a more recent version:libxml(-devel) - >= 1.8.8 or libxml2(-devel) >= 2.1.0

      +
    12. I get compilation errors about + nonexistingxmlRootNodeorxmlChildrenNodefields. +

      The source code you are using has been upgradedto be able to compile with both + libxmlandlibxml2, but you need to install a more recent + version:libxml(-devel)>= 1.8.8 or libxml2(-devel) >= 2.1.0

    13. XPath implementation looks seriously broken -

      XPath implementation prior to 2.3.0 was really incomplete. Upgrade toa - recent version, there are no known bugs in the current version.

      +

      XPath implementation prior to 2.3.0 was really incomplete. Upgrade + toarecent version, there are no known bugs in the current version.

    14. The example provided in the web page does not compile. -

      It's hard to maintain the documentation in sync with the - code<grin/> ...

      -

      Check the previous points 1/ and 2/ raised before, and please - sendpatches.

      +

      It's hard to maintain the documentation in sync with + thecode<grin/> ...

      +

      Check the previous points 1/ and 2/ raised before, and + pleasesendpatches.

    15. -
    16. Where can I get more examples and information than provided on - theweb page? -

      Ideally a libxml2 book would be nice. I have no such plan ... But - youcan:

      +
    17. Where can I get more examples and information than provided + ontheweb page? +

      Ideally a libxml2 book would be nice. I have no such plan ... + Butyoucan:

      • check more deeply the existinggenerated doc
      • -
      • have a look at the set - ofexamples.
      • -
      • look for examples of use for libxml2 function using the Gnome - code.For example the following will query the full Gnome CVS base for - theuse of the xmlAddChild()function: +
      • have a look at the + setofexamples.
      • +
      • look for examples of use for libxml2 function using the + Gnomecode.For example the following will query the full Gnome CVS + base fortheuse of the xmlAddChild()function:

        http://cvs.gnome.org/lxr/search?string=xmlAddChild

        -

        This may be slow, a large hardware donation to the gnome - projectcould cure this :-)

        +

        This may be slow, a large hardware donation to the + gnomeprojectcould cure this :-)

      • -
      • Browsethe - libxml2 source, I try to write code as clean and documentedas - possible, so looking at it may be helpful. In particular the codeof - xmllint.c and of the various testXXX.c test programs shouldprovide - good examples of how to do things with the library.
      • +
      • Browsethelibxml2 + source, I try to write code as clean and documentedaspossible, so + looking at it may be helpful. In particular the codeofxmllint.c and + of the various testXXX.c test programs shouldprovidegood examples of + how to do things with the library.
    18. What about C++ ? -

      libxml2 is written in pure C in order to allow easy reuse on a - numberof platforms, including embedded systems. I don't intend to convert - toC++.

      +

      libxml2 is written in pure C in order to allow easy reuse on anumberof + platforms, including embedded systems. I don't intend to converttoC++.

      There is however a C++ wrapper which may fulfill your needs:

    19. How to validate a document a posteriori ? -

      It is possible to validate documents which had not been validated - atinitial parsing time or documents which have been built from - scratchusing the API. Use the xmlValidateDtd()function. - It is also possible to simply add a DTD to an existingdocument:

      +

      It is possible to validate documents which had not been + validatedatinitial parsing time or documents which have been built + fromscratchusing the API. Use the xmlValidateDtd()function.It + is also possible to simply add a DTD to an existingdocument:

      xmlDocPtr doc; /* your existing document */
       xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
       
      @@ -273,10 +268,10 @@ xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
                 
    20. So what is this funky "xmlChar" used all the time? -

      It is a null terminated sequence of utf-8 characters. And only - utf-8!You need to convert strings encoded in different ways to utf-8 - beforepassing them to the API. This can be accomplished with the iconv - libraryfor instance.

      +

      It is a null terminated sequence of utf-8 characters. And + onlyutf-8!You need to convert strings encoded in different ways to + utf-8beforepassing them to the API. This can be accomplished with the + iconvlibraryfor instance.

    21. etc ...

    Daniel Veillard

    diff --git a/doc/XMLinfo.html b/doc/XMLinfo.html index 347f4002..5314fac0 100644 --- a/doc/XMLinfo.html +++ b/doc/XMLinfo.html @@ -7,8 +7,9 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -XML
    Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
    Made with Libxml2 Logo

    The XML C parser and toolkit of Gnome

    XML

    Main Menu
    Related links

    XML is a -standardformarkup-based structured documents. Here is an example XMLdocument:

    <?xml version="1.0"?>
    +XML
    Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
    Made with Libxml2 Logo

    The XML C parser and toolkit of Gnome

    XML

    Main Menu
    Related links

    XML is astandardformarkup-based +structured documents. Here is an example +XMLdocument:

    <?xml version="1.0"?>
     <EXAMPLE prop1="gnome is great" prop2="&amp; linux too">
       <head>
        <title>Welcome to Gnome</title>
    @@ -19,16 +20,17 @@ standardformarkup-based structured documents. Here is 

    The first line specifies that it is an XML document and gives -usefulinformation about its encoding. Then the rest of the document is a -textformat whose structure is specified by tags between brackets. -Eachtag opened has to be closed. XML is pedantic about this. -However, ifa tag is empty (no content), a single tag can serve as both the -opening andclosing tag if it ends with />rather than -with>. Note that, for example, the image tag has no content -(justan attribute) and is closed by ending the tag with -/>.

    XML can be applied successfully to a wide range of tasks, ranging fromlong -term structured document maintenance (where it follows the steps ofSGML) to -simple data encoding mechanisms like configuration file formatting(glade), -spreadsheets (gnumeric), or even shorter lived documents such asWebDAV where -it is used to encode remote calls between a client and aserver.

    Daniel Veillard

    +</EXAMPLE>

    The first line specifies that it is an XML document and +givesusefulinformation about its encoding. Then the rest of the document is +atextformat whose structure is specified by tags between +brackets.Eachtag opened has to be closed. XML is pedantic +about this.However, ifa tag is empty (no content), a single tag can serve as +both theopening andclosing tag if it ends with />rather +thanwith>. Note that, for example, the image tag has no +content(justan attribute) and is closed by ending the tag +with/>.

    XML can be applied successfully to a wide range of tasks, ranging +fromlongterm structured document maintenance (where it follows the steps +ofSGML) tosimple data encoding mechanisms like configuration file +formatting(glade),spreadsheets (gnumeric), or even shorter lived documents +such asWebDAV whereit is used to encode remote calls between a client and +aserver.

    Daniel Veillard

    diff --git a/doc/XSLT.html b/doc/XSLT.html index 29385d99..4a8c09b2 100644 --- a/doc/XSLT.html +++ b/doc/XSLT.html @@ -7,7 +7,8 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -XSLT
    Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
    Made with Libxml2 Logo

    The XML C parser and toolkit of Gnome

    XSLT

    Main Menu
    Related links

    Check the separate libxslt page

    XSL Transformations, is alanguage -for transforming XML documents into other XML documents (orHTML/textual -output).

    A separate library called libxslt is available implementing XSLT-1.0 -forlibxml2. This module "libxslt" too can be found in the Gnome CVS base.

    You can check the progresses on the libxslt Changelog.

    Daniel Veillard

    +XSLT
    Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
    Made with Libxml2 Logo

    The XML C parser and toolkit of Gnome

    XSLT

    Main Menu
    Related links

    Check the separate libxslt page

    XSL Transformations, is +alanguagefor transforming XML documents into other XML documents +(orHTML/textualoutput).

    A separate library called libxslt is available implementing +XSLT-1.0forlibxml2. This module "libxslt" too can be found in the Gnome CVS +base.

    You can check the progresses on the libxslt Changelog.

    Daniel Veillard

    diff --git a/doc/architecture.html b/doc/architecture.html index 9623bb39..7809bc64 100644 --- a/doc/architecture.html +++ b/doc/architecture.html @@ -7,8 +7,8 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -libxml2 architecture
    Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
    Made with Libxml2 Logo

    The XML C parser and toolkit of Gnome

    libxml2 architecture

    Developer Menu
    API Indexes
    Related links

    Libxml2 is made of multiple components; some of them are optional, andmost -of the block interfaces are public. The main components are:

    • an Input/Output layer
    • +libxml2 architecture
      Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
      Made with Libxml2 Logo

      The XML C parser and toolkit of Gnome

      libxml2 architecture

      Developer Menu
      API Indexes
      Related links

      Libxml2 is made of multiple components; some of them are optional, +andmostof the block interfaces are public. The main components are:

      • an Input/Output layer
      • FTP and HTTP client layers (optional)
      • an Internationalization layer managing the encodings support
      • a URI module
      • diff --git a/doc/bugs.html b/doc/bugs.html index e69f3edb..c755d00f 100644 --- a/doc/bugs.html +++ b/doc/bugs.html @@ -7,60 +7,62 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Reporting bugs and getting help
        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
        Made with Libxml2 Logo

        The XML C parser and toolkit of Gnome

        Reporting bugs and getting help

        Main Menu
        Related links

        Well, bugs or missing features are always possible, and I will make apoint -of fixing them in a timely fashion. The best way to report a bug is touse the -Gnomebug -tracking database(make sure to use the "libxml2" module name). Ilook at -reports there regularly and it's good to have a reminder when a bugis still -open. Be sure to specify that the bug is for the package libxml2.

        For small problems you can try to get help on IRC, the #xml channel -onirc.gnome.org (port 6667) usually have a few person subscribed which may -help(but there is no garantee and if a real issue is raised it should go on -themailing-list for archival).

        There is also a mailing-list xml@gnome.orgfor libxml, with an on-line archive(old). To subscribe to this list,please -visit the associated -Webpage andfollow the instructions. Do not send code, I won't -debug it(but patches are really appreciated!).

        Please note that with the current amount of virus and SPAM, sending mailto -the list without being subscribed won't work. There is *far too manybounces* -(in the order of a thousand a day !) I cannot approve them manuallyanymore. -If your mail to the list bounced waiting for administrator approval,it is -LOST ! Repost it and fix the problem triggering the error. Also pleasenote -that emails witha -legal warning asking to not copy or redistribute freely the informationsthey -containare NOTacceptable for the mailing-list,such -mail will as much as possible be discarded automatically, and are lesslikely -to be answered if they made it to the list, DO NOTpost to -the list from an email address where such legal requirements areautomatically -added, get private paying support if you can't shareinformations.

        Check the following beforeposting:

        • Read the FAQand use - thesearch engineto get information related to your problem.
        • -
        • Make sure you are using a - recentversion, and that the problem still shows up in a recent - version.
        • -
        • Check the listarchivesto see if the - problem was reported already. In this casethere is probably a fix - available, similarly check the registeredopen - bugs.
        • -
        • Make sure you can reproduce the bug with xmllint or one of the - testprograms found in source in the distribution.
        • -
        • Please send the command showing the error as well as the input (as - anattachment)
        • -

        Then send the bug with associated information to reproduce it to the xml@gnome.orglist; if it's really -libxmlrelated I will approve it. Please do not send mail to me directly, it -makesthings really hard to track and in some cases I am not the best person -toanswer a given question, ask on the list.

        To be really clear about support:

        • Support or help requests MUST be sent - tothe list or on bugzillain case of problems, so that the - Questionand Answers can be shared publicly. Failing to do so carries the - implicitmessage "I want free support but I don't want to share the - benefits withothers" and is not welcome. I will automatically Carbon-Copy - thexml@gnome.org mailing list for any technical reply made about libxml2 - orlibxslt.
        • -
        • There is no garantee of support, - ifyour question remains unanswered after a week, repost it, making sure - yougave all the detail needed and the information requested.
        • -
        • Failing to provide information as requested or double checking firstfor - prior feedback also carries the implicit message "the time of thelibrary - maintainers is less valuable than my time" and might not bewelcome.
        • -

        Of course, bugs reported with a suggested patch for fixing them -willprobably be processed faster than those without.

        If you're looking for help, a quick look at the list archivemay -actuallyprovide the answer. I usually send source samples when answering -libxml2usage questions. The auto-generated -documentationisnot as polished as I would like (i need to learn more -about DocBook), butit's a good starting point.

        Daniel Veillard

        +Reporting bugs and getting help
        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
        Made with Libxml2 Logo

        The XML C parser and toolkit of Gnome

        Reporting bugs and getting help

        Main Menu
        Related links

        Well, bugs or missing features are always possible, and I will make +apointof fixing them in a timely fashion. The best way to report a bug is +touse theGnomebugtracking +database(make sure to use the "libxml2" module name). Ilook atreports +there regularly and it's good to have a reminder when a bugis stillopen. Be +sure to specify that the bug is for the package libxml2.

        For small problems you can try to get help on IRC, the #xml +channelonirc.gnome.org (port 6667) usually have a few person subscribed which +mayhelp(but there is no garantee and if a real issue is raised it should go +onthemailing-list for archival).

        There is also a mailing-list xml@gnome.orgfor libxml, with an on-line archive(old). To subscribe to this +list,pleasevisit the associatedWebpage +andfollow the instructions. Do not send code, I won'tdebug +it(but patches are really appreciated!).

        Please note that with the current amount of virus and SPAM, sending +mailtothe list without being subscribed won't work. There is *far too +manybounces*(in the order of a thousand a day !) I cannot approve them +manuallyanymore.If your mail to the list bounced waiting for administrator +approval,it isLOST ! Repost it and fix the problem triggering the error. Also +pleasenotethat emails +withalegal warning asking to not copy or redistribute freely the +informationstheycontainare NOTacceptable for the +mailing-list,suchmail will as much as possible be discarded automatically, +and are lesslikelyto be answered if they made it to the list, DO +NOTpost tothe list from an email address where such legal +requirements areautomaticallyadded, get private paying support if you can't +shareinformations.

        Check the following beforeposting:

        • Read the FAQand usethesearch engineto get information related to + your problem.
        • +
        • Make sure you are using + arecentversion, and that the problem still shows up in a + recentversion.
        • +
        • Check the listarchivesto see if + theproblem was reported already. In this casethere is probably a + fixavailable, similarly check the registeredopenbugs.
        • +
        • Make sure you can reproduce the bug with xmllint or one of + thetestprograms found in source in the distribution.
        • +
        • Please send the command showing the error as well as the input + (asanattachment)
        • +

        Then send the bug with associated information to reproduce it to the xml@gnome.orglist; if it's +reallylibxmlrelated I will approve it. Please do not send mail to me +directly, itmakesthings really hard to track and in some cases I am not the +best persontoanswer a given question, ask on the list.

        To be really clear about support:

        • Support or help requests MUST be senttothe + list or on bugzillain case of problems, so that theQuestionand + Answers can be shared publicly. Failing to do so carries + theimplicitmessage "I want free support but I don't want to share + thebenefits withothers" and is not welcome. I will automatically + Carbon-Copythexml@gnome.org mailing list for any technical reply made + about libxml2orlibxslt.
        • +
        • There is no garantee of + support,ifyour question remains unanswered after a week, repost + it, making sureyougave all the detail needed and the information + requested.
        • +
        • Failing to provide information as requested or double checking + firstforprior feedback also carries the implicit message "the time of + thelibrarymaintainers is less valuable than my time" and might not + bewelcome.
        • +

        Of course, bugs reported with a suggested patch for fixing +themwillprobably be processed faster than those without.

        If you're looking for help, a quick look at the list +archivemayactuallyprovide the answer. I usually send source samples when +answeringlibxml2usage questions. The auto-generateddocumentationisnot +as polished as I would like (i need to learn moreabout DocBook), butit's a +good starting point.

        Daniel Veillard

        diff --git a/doc/catalog.html b/doc/catalog.html index 435990e5..34f99024 100644 --- a/doc/catalog.html +++ b/doc/catalog.html @@ -14,77 +14,78 @@ A:link, A:visited, A:active { text-decoration: underline }
      • How to tune catalog usage
      • How to debug catalog processing
      • How to create and maintain catalogs
      • -
      • The implementor corner quick review of - theAPI
      • +
      • The implementor corner quick review + oftheAPI
      • Other resources
      • -

        General overview

        What is a catalog? Basically it's a lookup mechanism used when an entity(a -file or a remote resource) references another entity. The catalog lookupis -inserted between the moment the reference is recognized by the software(XML -parser, stylesheet processing, or even images referenced for inclusionin a -rendering) and the time where loading that resource is actuallystarted.

        It is basically used for 3 things:

        • mapping from "logical" names, the public identifiers and a moreconcrete - name usable for download (and URI). For example it can associatethe - logical name +

          General overview

          What is a catalog? Basically it's a lookup mechanism used when an +entity(afile or a remote resource) references another entity. The catalog +lookupisinserted between the moment the reference is recognized by the +software(XMLparser, stylesheet processing, or even images referenced for +inclusionin arendering) and the time where loading that resource is +actuallystarted.

          It is basically used for 3 things:

          • mapping from "logical" names, the public identifiers and a + moreconcretename usable for download (and URI). For example it can + associatethelogical name

            "-//OASIS//DTD DocBook XML V4.1.2//EN"

            -

            of the DocBook 4.1.2 XML DTD with the actual URL where it can - bedownloaded

            +

            of the DocBook 4.1.2 XML DTD with the actual URL where it + canbedownloaded

            http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd

          • -
          • remapping from a given URL to another one, like an HTTP - indirectionsaying that +
          • remapping from a given URL to another one, like an + HTTPindirectionsaying that

            "http://www.oasis-open.org/committes/tr.xsl"

            should really be looked at

            "http://www.oasis-open.org/committes/entity/stylesheets/base/tr.xsl"

          • -
          • providing a local cache mechanism allowing to load the - entitiesassociated to public identifiers or remote resources, this is a - reallyimportant feature for any significant deployment of XML or SGML - since itallows to avoid the aleas and delays associated to fetching - remoteresources.
          • -

          The definitions

          Libxml, as of 2.4.3 implements 2 kind of catalogs:

          • the older SGML catalogs, the official spec is SGML Open - TechnicalResolution TR9401:1997, but is better understood by reading the SP Catalog - pagefromJames Clark. This is relatively old and not the preferred - mode ofoperation of libxml.
          • -
          • XMLCatalogsis - far more flexible, more recent, uses an XML syntax andshould scale quite - better. This is the default option of libxml.
          • -

          Using catalog

          In a normal environment libxml2 will by default check the presence of -acatalog in /etc/xml/catalog, and assuming it has been correctly -populated,the processing is completely transparent to the document user. To -take aconcrete example, suppose you are authoring a DocBook document, this -onestarts with the following DOCTYPE definition:

          <?xml version='1.0'?>
          +  
        • providing a local cache mechanism allowing to load + theentitiesassociated to public identifiers or remote resources, this is + areallyimportant feature for any significant deployment of XML or + SGMLsince itallows to avoid the aleas and delays associated to + fetchingremoteresources.
        • +

        The definitions

        Libxml, as of 2.4.3 implements 2 kind of catalogs:

        • the older SGML catalogs, the official spec is SGML + OpenTechnicalResolution TR9401:1997, but is better understood by reading + the SP + CatalogpagefromJames Clark. This is relatively old and not the + preferredmode ofoperation of libxml.
        • +
        • XMLCatalogsisfar + more flexible, more recent, uses an XML syntax andshould scale + quitebetter. This is the default option of libxml.
        • +

        Using catalog

        In a normal environment libxml2 will by default check the presence +ofacatalog in /etc/xml/catalog, and assuming it has been +correctlypopulated,the processing is completely transparent to the document +user. Totake aconcrete example, suppose you are authoring a DocBook document, +thisonestarts with the following DOCTYPE definition:

        <?xml version='1.0'?>
         <!DOCTYPE book PUBLIC "-//Norman Walsh//DTD DocBk XML V3.1.4//EN"
        -          "http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd">

        When validating the document with libxml, the catalog will beautomatically -consulted to lookup the public identifier "-//Norman Walsh//DTDDocBk XML -V3.1.4//EN" and the system -identifier"http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd", and if these -entities havebeen installed on your system and the catalogs actually point to -them, libxmlwill fetch them from the local disk.

        Note: Really don't use -thisDOCTYPE example it's a really old version, but is fine as an example.

        Libxml2 will check the catalog each time that it is requested to load -anentity, this includes DTD, external parsed entities, stylesheets, etc ... -Ifyour system is correctly configured all the authoring phase and -processingshould use only local files, even if your document stays portable -because ituses the canonical public and system ID, referencing the remote -document.

        Some examples:

        Here is a couple of fragments from XML Catalogs used in libxml2 -earlyregression tests in test/catalogs:

        <?xml version="1.0"?>
        +          "http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd">

        When validating the document with libxml, the catalog will +beautomaticallyconsulted to lookup the public identifier "-//Norman +Walsh//DTDDocBk XMLV3.1.4//EN" and the +systemidentifier"http://nwalsh.com/docbook/xml/3.1.4/db3xml.dtd", and if +theseentities havebeen installed on your system and the catalogs actually +point tothem, libxmlwill fetch them from the local disk.

        Note: Really don't usethisDOCTYPE +example it's a really old version, but is fine as an example.

        Libxml2 will check the catalog each time that it is requested to +loadanentity, this includes DTD, external parsed entities, stylesheets, etc +...Ifyour system is correctly configured all the authoring phase +andprocessingshould use only local files, even if your document stays +portablebecause ituses the canonical public and system ID, referencing the +remotedocument.

        Some examples:

        Here is a couple of fragments from XML Catalogs used in +libxml2earlyregression tests in test/catalogs:

        <?xml version="1.0"?>
         <!DOCTYPE catalog PUBLIC 
            "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
            "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
         <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
           <public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
            uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
        -...

        This is the beginning of a catalog for DocBook 4.1.2, XML Catalogs -arewritten in XML, there is a specific namespace for catalog -elements"urn:oasis:names:tc:entity:xmlns:xml:catalog". The first entry in -thiscatalog is a publicmapping it allows to associate a -PublicIdentifier with an URI.

        ...
        +...

        This is the beginning of a catalog for DocBook 4.1.2, XML +Catalogsarewritten in XML, there is a specific namespace for +catalogelements"urn:oasis:names:tc:entity:xmlns:xml:catalog". The first entry +inthiscatalog is a publicmapping it allows to associate +aPublicIdentifier with an URI.

        ...
             <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/"
                            rewritePrefix="file:///usr/share/xml/docbook/"/>
        -...

        A rewriteSystemis a very powerful instruction, it says -thatany URI starting with a given prefix should be looked at another -URIconstructed by replacing the prefix with an new one. In effect this acts -likea cache system for a full area of the Web. In practice it is extremely -usefulwith a file prefix if you have installed a copy of those resources on -yourlocal system.

        ...
        +...

        A rewriteSystemis a very powerful instruction, it saysthatany +URI starting with a given prefix should be looked at anotherURIconstructed by +replacing the prefix with an new one. In effect this actslikea cache system +for a full area of the Web. In practice it is extremelyusefulwith a file +prefix if you have installed a copy of those resources onyourlocal system.

        ...
         <delegatePublic publicIdStartString="-//OASIS//DTD XML Catalog //"
                         catalog="file:///usr/share/xml/docbook.xml"/>
         <delegatePublic publicIdStartString="-//OASIS//ENTITIES DocBook XML"
        @@ -95,21 +96,21 @@ yourlocal system.

        ...
                         catalog="file:///usr/share/xml/docbook.xml"/>
         <delegateURI uriStartString="http://www.oasis-open.org/docbook/"
                         catalog="file:///usr/share/xml/docbook.xml"/>
        -...

        Delegation is the core features which allows to build a tree of -catalogs,easier to maintain than a single catalog, based on Public -Identifier, SystemIdentifier or URI prefixes it instructs the catalog -software to look upentries in another resource. This feature allow to build -hierarchies ofcatalogs, the set of entries presented should be sufficient to -redirect theresolution of all DocBook references to the specific catalog -in/usr/share/xml/docbook.xmlthis one in turn could delegate -allreferences for DocBook 4.2.1 to a specific catalog installed at the same -timeas the DocBook resources on the local machine.

        How to tune catalog usage:

        The user can change the default catalog behaviour by redirecting queriesto -its own set of catalogs, this can be done by setting -theXML_CATALOG_FILESenvironment variable to a list of catalogs, -anempty one should deactivate loading the default -/etc/xml/catalogdefault catalog

        How to debug catalog processing:

        Setting up the XML_DEBUG_CATALOGenvironment variable willmake -libxml2 output debugging informations for each catalog operations, -forexample:

        orchis:~/XML -> xmllint --memory --noout test/ent2
        +...

        Delegation is the core features which allows to build a tree +ofcatalogs,easier to maintain than a single catalog, based on +PublicIdentifier, SystemIdentifier or URI prefixes it instructs the +catalogsoftware to look upentries in another resource. This feature allow to +buildhierarchies ofcatalogs, the set of entries presented should be +sufficient toredirect theresolution of all DocBook references to the specific +catalogin/usr/share/xml/docbook.xmlthis one in turn could +delegateallreferences for DocBook 4.2.1 to a specific catalog installed at +the sametimeas the DocBook resources on the local machine.

        How to tune catalog usage:

        The user can change the default catalog behaviour by redirecting +queriestoits own set of catalogs, this can be done by +settingtheXML_CATALOG_FILESenvironment variable to a list of +catalogs,anempty one should deactivate loading the +default/etc/xml/catalogdefault catalog

        How to debug catalog processing:

        Setting up the XML_DEBUG_CATALOGenvironment variable +willmakelibxml2 output debugging informations for each catalog +operations,forexample:

        orchis:~/XML -> xmllint --memory --noout test/ent2
         warning: failed to load external entity "title.xml"
         orchis:~/XML -> export XML_DEBUG_CATALOG=
         orchis:~/XML -> xmllint --memory --noout test/ent2
        @@ -117,26 +118,26 @@ Failed to parse catalog /etc/xml/catalog
         Failed to parse catalog /etc/xml/catalog
         warning: failed to load external entity "title.xml"
         Catalogs cleanup
        -orchis:~/XML -> 

        The test/ent2 references an entity, running the parser from memory -makesthe base URI unavailable and the the "title.xml" entity cannot be -loaded.Setting up the debug environment variable allows to detect that an -attempt ismade to load the /etc/xml/catalogbut since it's not -present theresolution fails.

        But the most advanced way to debug XML catalog processing is to use -thexmlcatalogcommand shipped with libxml2, it allows to -loadcatalogs and make resolution queries to see what is going on. This is -alsoused for the regression tests:

        orchis:~/XML -> ./xmlcatalog test/catalogs/docbook.xml \
        +orchis:~/XML -> 

        The test/ent2 references an entity, running the parser from memorymakesthe +base URI unavailable and the the "title.xml" entity cannot beloaded.Setting +up the debug environment variable allows to detect that anattempt ismade to +load the /etc/xml/catalogbut since it's notpresent theresolution +fails.

        But the most advanced way to debug XML catalog processing is to +usethexmlcatalogcommand shipped with libxml2, it allows +toloadcatalogs and make resolution queries to see what is going on. This +isalsoused for the regression tests:

        orchis:~/XML -> ./xmlcatalog test/catalogs/docbook.xml \
                            "-//OASIS//DTD DocBook XML V4.1.2//EN"
         http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
        -orchis:~/XML -> 

        For debugging what is going on, adding one -v flags increase the -verbositylevel to indicate the processing done (adding a second flag also -indicatewhat elements are recognized at parsing):

        orchis:~/XML -> ./xmlcatalog -v test/catalogs/docbook.xml \
        +orchis:~/XML -> 

        For debugging what is going on, adding one -v flags increase +theverbositylevel to indicate the processing done (adding a second flag +alsoindicatewhat elements are recognized at parsing):

        orchis:~/XML -> ./xmlcatalog -v test/catalogs/docbook.xml \
                            "-//OASIS//DTD DocBook XML V4.1.2//EN"
         Parsing catalog test/catalogs/docbook.xml's content
         Found public match -//OASIS//DTD DocBook XML V4.1.2//EN
         http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
         Catalogs cleanup
        -orchis:~/XML -> 

        A shell interface is also available to debug and process multiple -queries(and for regression tests):

        orchis:~/XML -> ./xmlcatalog -shell test/catalogs/docbook.xml \
        +orchis:~/XML -> 

        A shell interface is also available to debug and process +multiplequeries(and for regression tests):

        orchis:~/XML -> ./xmlcatalog -shell test/catalogs/docbook.xml \
                            "-//OASIS//DTD DocBook XML V4.1.2//EN"
         > help   
         Commands available:
        @@ -152,18 +153,18 @@ exit:  quit the shell
         > public "-//OASIS//DTD DocBook XML V4.1.2//EN"
         http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
         > quit
        -orchis:~/XML -> 

        This should be sufficient for most debugging purpose, this was -actuallyused heavily to debug the XML Catalog implementation itself.

        How to create and maintaincatalogs:

        Basically XML Catalogs are XML files, you can either use XML tools -tomanage them or use xmlcatalogfor this. The basic step -isto create a catalog the -create option provide this facility:

        orchis:~/XML -> ./xmlcatalog --create tst.xml
        +orchis:~/XML -> 

        This should be sufficient for most debugging purpose, this wasactuallyused +heavily to debug the XML Catalog implementation itself.

        How to create and maintaincatalogs:

        Basically XML Catalogs are XML files, you can either use XML toolstomanage +them or use xmlcatalogfor this. The basic stepisto create a +catalog the -create option provide this facility:

        orchis:~/XML -> ./xmlcatalog --create tst.xml
         <?xml version="1.0"?>
         <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
                  "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
         <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"/>
        -orchis:~/XML -> 

        By default xmlcatalog does not overwrite the original catalog and save -theresult on the standard output, this can be overridden using the --nooutoption. The -addcommand allows to add entries in -thecatalog:

        orchis:~/XML -> ./xmlcatalog --noout --create --add "public" \
        +orchis:~/XML -> 

        By default xmlcatalog does not overwrite the original catalog and +savetheresult on the standard output, this can be overridden using +the-nooutoption. The -addcommand allows to add entries +inthecatalog:

        orchis:~/XML -> ./xmlcatalog --noout --create --add "public" \
           "-//OASIS//DTD DocBook XML V4.1.2//EN" \
           http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd tst.xml
         orchis:~/XML -> cat tst.xml
        @@ -174,82 +175,80 @@ orchis:~/XML -> cat tst.xml
         <public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN"
                 uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
         </catalog>
        -orchis:~/XML -> 

        The -addoption will always take 3 parameters even if some -ofthe XML Catalog constructs (like nextCatalog) will have only a -singleargument, just pass a third empty string, it will be ignored.

        Similarly the -deloption remove matching entries from -thecatalog:

        orchis:~/XML -> ./xmlcatalog --del \
        +orchis:~/XML -> 

        The -addoption will always take 3 parameters even if +someofthe XML Catalog constructs (like nextCatalog) will have only +asingleargument, just pass a third empty string, it will be ignored.

        Similarly the -deloption remove matching entries +fromthecatalog:

        orchis:~/XML -> ./xmlcatalog --del \
           "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" tst.xml
         <?xml version="1.0"?>
         <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
             "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
         <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"/>
        -orchis:~/XML -> 

        The catalog is now empty. Note that the matching of --delisexact and would have worked in a similar fashion with the -Public IDstring.

        This is rudimentary but should be sufficient to manage a not too -complexcatalog tree of resources.

        The implementor corner quick review of -theAPI:

        First, and like for every other module of libxml, there is anautomatically -generated API page forcatalog -support.

        The header for the catalog interfaces should be included as:

        #include <libxml/catalog.h>

        The API is voluntarily kept very simple. First it is not obvious -thatapplications really need access to it since it is the default behaviour -oflibxml2 (Note: it is possible to completely override libxml2 default -catalogby using xmlSetExternalEntityLoadertoplug an -application specific resolver).

        Basically libxml2 support 2 catalog lists:

        • the default one, global shared by all the application
        • -
        • a per-document catalog, this one is built if the document uses - theoasis-xml-catalogPIs to specify its own catalog list, it - isassociated to the parser context and destroyed when the parsing - contextis destroyed.
        • -

        the document one will be used first if it exists.

        Initialization routines:

        xmlInitializeCatalog(), xmlLoadCatalog() and xmlLoadCatalogs() should -beused at startup to initialize the catalog, if the catalog should -beinitialized with specific values xmlLoadCatalog() or -xmlLoadCatalogs()should be called before xmlInitializeCatalog() which would -otherwise do adefault initialization first.

        The xmlCatalogAddLocal() call is used by the parser to grow the -documentown catalog list if needed.

        Preferences setup:

        The XML Catalog spec requires the possibility to select defaultpreferences -between public and system delegation,xmlCatalogSetDefaultPrefer() allows -this, xmlCatalogSetDefaults() andxmlCatalogGetDefaults() allow to control if -XML Catalogs resolution shouldbe forbidden, allowed for global catalog, for -document catalog or both, thedefault is to allow both.

        And of course xmlCatalogSetDebug() allows to generate debug -messages(through the xmlGenericError() mechanism).

        Querying routines:

        xmlCatalogResolve(), xmlCatalogResolveSystem(), -xmlCatalogResolvePublic()and xmlCatalogResolveURI() are relatively explicit -if you read the XMLCatalog specification they correspond to section 7 -algorithms, they shouldalso work if you have loaded an SGML catalog with a -simplified semantic.

        xmlCatalogLocalResolve() and xmlCatalogLocalResolveURI() are the same -butoperate on the document catalog list

        Cleanup and Miscellaneous:

        xmlCatalogCleanup() free-up the global catalog, xmlCatalogFreeLocal() -isthe per-document equivalent.

        xmlCatalogAdd() and xmlCatalogRemove() are used to dynamically modify -thefirst catalog in the global list, and xmlCatalogDump() allows to dump -acatalog state, those routines are primarily designed for xmlcatalog, I'm -notsure that exposing more complex interfaces (like navigation ones) would -bereally useful.

        The xmlParseCatalogFile() is a function used to load XML Catalog -files,it's similar as xmlParseFile() except it bypass all catalog lookups, -it'sprovided because this functionality may be useful for client tools.

        threaded environments:

        Since the catalog tree is built progressively, some care has been taken -totry to avoid troubles in multithreaded environments. The code is now -threadsafe assuming that the libxml2 library has been compiled with -threadssupport.

        Other resources

        The XML Catalog specification is relatively recent so there isn't -muchliterature to point at:

        • You can find a good rant from Norm Walsh about theneed - for catalogs, it provides a lot of context informations even ifI - don't agree with everything presented. Norm also wrote a more - recentarticle XMLentities - and URI resolversdescribing them.
        • -
        • An old - XMLcatalog proposalfrom John Cowan
        • -
        • The Resource Directory - DescriptionLanguage(RDDL) another catalog system but more oriented - towardproviding metadata for XML namespaces.
        • -
        • the page from the OASIS Technical Committee on - EntityResolutionwho maintains XML Catalog, you will find pointers to - thespecification update, some background and pointers to others - toolsproviding XML Catalog support
        • -
        • There is a shell scriptto generateXML - Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/directory, - it will set-up /etc/xml/catalog and /etc/xml/docbook based onthe - resources found on the system. Otherwise it will just create~/xmlcatalog - and ~/dbkxmlcatalog and doing: +orchis:~/XML ->

        The catalog is now empty. Note that the matching +of-delisexact and would have worked in a similar fashion with +thePublic IDstring.

        This is rudimentary but should be sufficient to manage a not +toocomplexcatalog tree of resources.

        The implementor corner quick review +oftheAPI:

        First, and like for every other module of libxml, there is +anautomaticallygenerated API page +forcatalogsupport.

        The header for the catalog interfaces should be included as:

        #include <libxml/catalog.h>

        The API is voluntarily kept very simple. First it is not +obviousthatapplications really need access to it since it is the default +behaviouroflibxml2 (Note: it is possible to completely override libxml2 +defaultcatalogby using xmlSetExternalEntityLoadertoplug +anapplication specific resolver).

        Basically libxml2 support 2 catalog lists:

        • the default one, global shared by all the application
        • +
        • a per-document catalog, this one is built if the document + usestheoasis-xml-catalogPIs to specify its own catalog list, + itisassociated to the parser context and destroyed when the + parsingcontextis destroyed.
        • +

        the document one will be used first if it exists.

        Initialization routines:

        xmlInitializeCatalog(), xmlLoadCatalog() and xmlLoadCatalogs() +shouldbeused at startup to initialize the catalog, if the catalog +shouldbeinitialized with specific values xmlLoadCatalog() +orxmlLoadCatalogs()should be called before xmlInitializeCatalog() which +wouldotherwise do adefault initialization first.

        The xmlCatalogAddLocal() call is used by the parser to grow thedocumentown +catalog list if needed.

        Preferences setup:

        The XML Catalog spec requires the possibility to select +defaultpreferencesbetween public and system +delegation,xmlCatalogSetDefaultPrefer() allowsthis, xmlCatalogSetDefaults() +andxmlCatalogGetDefaults() allow to control ifXML Catalogs resolution +shouldbe forbidden, allowed for global catalog, fordocument catalog or both, +thedefault is to allow both.

        And of course xmlCatalogSetDebug() allows to generate +debugmessages(through the xmlGenericError() mechanism).

        Querying routines:

        xmlCatalogResolve(), +xmlCatalogResolveSystem(),xmlCatalogResolvePublic()and xmlCatalogResolveURI() +are relatively explicitif you read the XMLCatalog specification they +correspond to section 7algorithms, they shouldalso work if you have loaded an +SGML catalog with asimplified semantic.

        xmlCatalogLocalResolve() and xmlCatalogLocalResolveURI() are the +samebutoperate on the document catalog list

        Cleanup and Miscellaneous:

        xmlCatalogCleanup() free-up the global catalog, xmlCatalogFreeLocal()isthe +per-document equivalent.

        xmlCatalogAdd() and xmlCatalogRemove() are used to dynamically +modifythefirst catalog in the global list, and xmlCatalogDump() allows to +dumpacatalog state, those routines are primarily designed for xmlcatalog, +I'mnotsure that exposing more complex interfaces (like navigation ones) +wouldbereally useful.

        The xmlParseCatalogFile() is a function used to load XML Catalogfiles,it's +similar as xmlParseFile() except it bypass all catalog lookups,it'sprovided +because this functionality may be useful for client tools.

        threaded environments:

        Since the catalog tree is built progressively, some care has been +takentotry to avoid troubles in multithreaded environments. The code is +nowthreadsafe assuming that the libxml2 library has been compiled +withthreadssupport.

        Other resources

        The XML Catalog specification is relatively recent so there +isn'tmuchliterature to point at:

        • You can find a good rant from Norm Walsh about theneedfor + catalogs, it provides a lot of context informations even ifIdon't + agree with everything presented. Norm also wrote a morerecentarticle XMLentitiesand + URI resolversdescribing them.
        • +
        • An oldXMLcatalog + proposalfrom John Cowan
        • +
        • The Resource + DirectoryDescriptionLanguage(RDDL) another catalog system but more + orientedtowardproviding metadata for XML namespaces.
        • +
        • the page from the OASIS Technical Committee + onEntityResolutionwho maintains XML Catalog, you will find pointers + tothespecification update, some background and pointers to + otherstoolsproviding XML Catalog support
        • +
        • There is a shell scriptto + generateXMLCatalogs for DocBook 4.1.2 . If it can write to the + /etc/xml/directory,it will set-up /etc/xml/catalog and /etc/xml/docbook + based ontheresources found on the system. Otherwise it will just + create~/xmlcatalogand ~/dbkxmlcatalog and doing:

          export XML_CATALOG_FILES=$HOME/xmlcatalog

          -

          should allow to process DocBook documentations without - requiringnetwork accesses for the DTD or stylesheets

          +

          should allow to process DocBook documentations withoutrequiringnetwork + accesses for the DTD or stylesheets

        • -
        • I have uploaded asmall - tarballcontaining XML Catalogs for DocBook 4.1.2 which seemsto work - fine for me too
        • -
        • The xmlcatalogmanual - page
        • +
        • I have uploaded asmalltarballcontaining + XML Catalogs for DocBook 4.1.2 which seemsto workfine for me too
        • +
        • The xmlcatalogmanualpage

        If you have suggestions for corrections or additions, simply contactme:

        Daniel Veillard

      diff --git a/doc/contribs.html b/doc/contribs.html index 8f1abb3b..2163d601 100644 --- a/doc/contribs.html +++ b/doc/contribs.html @@ -7,33 +7,29 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Contributions
      Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
      Made with Libxml2 Logo

      The XML C parser and toolkit of Gnome

      Contributions

      Main Menu
      Related links
      • Bjorn Reese, William Brack and Thomas Broyer have provided a number - ofpatches, Gary Pennington worked on the validation API, threading - supportand Solaris port.
      • +Contributions
        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
        Made with Libxml2 Logo

        The XML C parser and toolkit of Gnome

        Contributions

        Main Menu
        Related links

        Daniel Veillard

        diff --git a/doc/docs.html b/doc/docs.html index 49b86d9a..fa30ac2a 100644 --- a/doc/docs.html +++ b/doc/docs.html @@ -7,25 +7,22 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Developer Menu
        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
        Made with Libxml2 Logo

        The XML C parser and toolkit of Gnome

        Developer Menu

        Developer Menu
        API Indexes
        Related links

        There are several on-line resources related to using libxml:

        1. Use the search engineto look - upinformation.
        2. +Developer Menu
          Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
          Made with Libxml2 Logo

          The XML C parser and toolkit of Gnome

          Developer Menu

          Developer Menu
          API Indexes
          Related links

          There are several on-line resources related to using libxml:

          1. Use the search engineto lookupinformation.
          2. Check the FAQ.
          3. -
          4. Check the extensivedocumentationautomatically - extracted from code comments.
          5. +
          6. Check the extensivedocumentationautomaticallyextracted + from code comments.
          7. Look at the documentation about libxmlinternationalization support.
          8. This page provides a global overview and someexampleson how to use libxml.
          9. Code examples
          10. -
          11. John Fleck's libxml2 tutorial: htmlor - pdf.
          12. +
          13. John Fleck's libxml2 tutorial: htmlorpdf.
          14. If you need to parse large files, check the xmlReaderAPI tutorial
          15. -
          16. James Henstridgewrote some - nicedocumentationexplaining how to use the libxml SAX interface.
          17. -
          18. George Lebl wrote an - articlefor IBM developerWorksabout using libxml.
          19. -
          20. Check the - TODOfile.
          21. -
          22. Read the 1.x to 2.x upgrade pathdescription. - If you are starting a new project using libxml you shouldreally use the - 2.x version.
          23. +
          24. James Henstridgewrote somenicedocumentationexplaining + how to use the libxml SAX interface.
          25. +
          26. George Lebl wrote anarticlefor + IBM developerWorksabout using libxml.
          27. +
          28. Check theTODOfile.
          29. +
          30. Read the 1.x to 2.x upgrade + pathdescription.If you are starting a new project using libxml you + shouldreally use the2.x version.
          31. And don't forget to look at the mailing-list archive.

          Daniel Veillard

          diff --git a/doc/downloads.html b/doc/downloads.html index d12420eb..71ce9a62 100644 --- a/doc/downloads.html +++ b/doc/downloads.html @@ -7,30 +7,28 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Downloads
          Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
          Made with Libxml2 Logo

          The XML C parser and toolkit of Gnome

          Downloads

          Main Menu
          Related links

          The latest versions of libxml2 can be found on the xmlsoft.orgserver ( HTTP, FTPand rsync are available), there is -alsomirrors (Australia( -Web), France) or on the Gnome FTP serveras source archive, -Antonin Sprinzl also provide amirror in Austria. (NOTE that -you need both the libxml(2)and libxml(2)-develpackages -installed to compile applications using libxml.)

          You can find all the history of libxml(2) and libxslt releases in the olddirectory. The -precompiledWindows binaries made by Igor Zlatovic are available in the win32directory.

          Binary ports:

          • Red Hat RPMs for i386 are available directly on xmlsoft.org, the source RPM will - compile onany architecture supported by Red Hat.
          • -
          • Igor Zlatkovicis now - themaintainer of the Windows port, he - providesbinaries.
          • +Downloads
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            Downloads

            Main Menu
            Related links

            The latest versions of libxml2 can be found on the xmlsoft.orgserver ( HTTP, FTPand rsync are available), there +isalsomirrors (Australia(Web), France) or on the Gnome FTP serveras source +archive,Antonin Sprinzl also provide amirror in Austria. (NOTE +thatyou need both the libxml(2)and libxml(2)-develpackagesinstalled +to compile applications using libxml.)

            You can find all the history of libxml(2) and libxslt releases in the olddirectory. +TheprecompiledWindows binaries made by Igor Zlatovic are available in the win32directory.

            Binary ports:

            If you know other supported binary ports, please contact me.

            Snapshot:

            Contributions:

            I do accept external contributions, especially if compiling on -anotherplatform, get in touch with the list to upload the package, wrappers -forvarious languages have been provided, and can be found in the bindings section

            Libxml2 is also available from CVS:

            Contributions:

            I do accept external contributions, especially if compiling +onanotherplatform, get in touch with the list to upload the package, +wrappersforvarious languages have been provided, and can be found in the bindings section

            Libxml2 is also available from CVS:

            Daniel Veillard

            diff --git a/doc/encoding.html b/doc/encoding.html index 4b6d0d47..8db787ea 100644 --- a/doc/encoding.html +++ b/doc/encoding.html @@ -7,44 +7,44 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Encodings support
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            Encodings support

            Main Menu
            Related links

            If you are not really familiar with Internationalization (usual shortcutis -I18N) , Unicode, characters and glyphs, I suggest you read a presentationby -Tim Bray on Unicode and why you should care about it.

            If you don't understand why it does not make sense to have a -stringwithout knowing what encoding it uses, then as Joel Spolsky said please do notwrite -another line of code until you finish reading that article.. It isa -prerequisite to understand this page, and avoid a lot of problems -withlibxml2, XML or text processing in general.

            Table of Content:

            1. What does internationalization supportmean - ?
            2. -
            3. The internal encoding, how - andwhy
            4. +Encodings support
              Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
              Made with Libxml2 Logo

              The XML C parser and toolkit of Gnome

              Encodings support

              Main Menu
              Related links

              If you are not really familiar with Internationalization (usual +shortcutisI18N) , Unicode, characters and glyphs, I suggest you read a presentationbyTim +Bray on Unicode and why you should care about it.

              If you don't understand why it does not make sense to have +astringwithout knowing what encoding it uses, then as Joel Spolsky said +please do +notwriteanother line of code until you finish reading that article.. It +isaprerequisite to understand this page, and avoid a lot of +problemswithlibxml2, XML or text processing in general.

              Table of Content:

              1. What does internationalization + supportmean?
              2. +
              3. The internal encoding, + howandwhy
              4. How is it implemented ?
              5. Default supported encodings
              6. -
              7. How to extend the - existingsupport
              8. -

              What does internationalization support mean ?

              XML was designed from the start to allow the support of any character -setby using Unicode. Any conformant XML parser has to support the UTF-8 -andUTF-16 default encodings which can both express the full unicode ranges. -UTF8is a variable length encoding whose greatest points are to reuse the -sameencoding for ASCII and to save space for Western encodings, but it is a -bitmore complex to handle in practice. UTF-16 use 2 bytes per character -(andsometimes combines two pairs), it makes implementation easier, but looks -abit overkill for Western languages encoding. Moreover the XML -specificationallows the document to be encoded in other encodings at the -condition thatthey are clearly labeled as such. For example the following is -a wellformedXML document encoded in ISO-8859-1 and using accentuated letters -that weFrench like for both markup and content:

              <?xml version="1.0" encoding="ISO-8859-1"?>
              +  
            5. How to extend theexistingsupport
            6. +

              What does internationalization support mean ?

              XML was designed from the start to allow the support of any charactersetby +using Unicode. Any conformant XML parser has to support the UTF-8andUTF-16 +default encodings which can both express the full unicode ranges.UTF8is a +variable length encoding whose greatest points are to reuse thesameencoding +for ASCII and to save space for Western encodings, but it is abitmore complex +to handle in practice. UTF-16 use 2 bytes per character(andsometimes combines +two pairs), it makes implementation easier, but looksabit overkill for +Western languages encoding. Moreover the XMLspecificationallows the document +to be encoded in other encodings at thecondition thatthey are clearly labeled +as such. For example the following isa wellformedXML document encoded in +ISO-8859-1 and using accentuated lettersthat weFrench like for both markup +and content:

              <?xml version="1.0" encoding="ISO-8859-1"?>
               <très>là</très>

              Having internationalization support in libxml2 means the following:

              • the document is properly parsed
              • informations about it's encoding are saved
              • it can be modified
              • it can be saved in its original encoding
              • -
              • it can also be saved in another encoding supported by libxml2 - (forexample straight UTF8 or even an ASCII form)
              • -

              Another very important point is that the whole libxml2 API, with -theexception of a few routines to read with a specific encoding or save to -aspecific encoding, is completely agnostic about the original encoding of -thedocument.

              It should be noted too that the HTML parser embedded in libxml2 now -obeythe same rules too, the following document will be (as of 2.2.2) handled -inan internationalized fashion by libxml2 too:

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
              +  
            7. it can also be saved in another encoding supported by + libxml2(forexample straight UTF8 or even an ASCII form)
            8. +

              Another very important point is that the whole libxml2 API, +withtheexception of a few routines to read with a specific encoding or save +toaspecific encoding, is completely agnostic about the original encoding +ofthedocument.

              It should be noted too that the HTML parser embedded in libxml2 nowobeythe +same rules too, the following document will be (as of 2.2.2) handledinan +internationalized fashion by libxml2 too:

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
                                     "http://www.w3.org/TR/REC-html40/loose.dtd">
               <html lang="fr">
               <head>
              @@ -52,60 +52,60 @@ inan internationalized fashion by libxml2 too:

              <!DOCTYPE HTML PUBLIC
               </head>
               <body>
               <p>W3C crée des standards pour le Web.</body>
              -</html>

              The internal encoding, how and why

              One of the core decisions was to force all documents to be converted to -adefault internal encoding, and that encoding to be UTF-8, here are -therationales for those choices:

              • keeping the native encoding in the internal form would force the - libxmlusers (or the code associated) to be fully aware of the encoding of - theoriginal document, for examples when adding a text node to a - document,the content would have to be provided in the document encoding, - i.e. theclient code would have to check it before hand, make sure it's - conformantto the encoding, etc ... Very hard in practice, though in some - specificcases this may make sense.
              • -
              • the second decision was which encoding. From the XML spec only UTF8 - andUTF16 really makes sense as being the two only encodings for which - thereis mandatory support. UCS-4 (32 bits fixed size encoding) could - beconsidered an intelligent choice too since it's a direct Unicode - mappingsupport. I selected UTF-8 on the basis of efficiency and - compatibilitywith surrounding software: -
                • UTF-8 while a bit more complex to convert from/to (i.e. - slightlymore costly to import and export CPU wise) is also far more - compactthan UTF-16 (and UCS-4) for a majority of the documents I see - it usedfor right now (RPM RDF catalogs, advogato data, various - configurationfile formats, etc.) and the key point for today's - computerarchitecture is efficient uses of caches. If one nearly - double thememory requirement to store the same amount of data, this - will trashcaches (main memory/external caches/internal caches) and my - take isthat this harms the system far more than the CPU requirements - neededfor the conversion to UTF-8
                • -
                • Most of libxml2 version 1 users were using it with straight - ASCIImost of the time, doing the conversion with an internal - encodingrequiring all their code to be rewritten was a serious - show-stopperfor using UTF-16 or UCS-4.
                • -
                • UTF-8 is being used as the de-facto internal encoding standard - forrelated code like the pangoupcoming Gnome text widget, and - a lot of Unix code (yet another placewhere Unix programmer base takes - a different approach from Microsoft- they are using UTF-16)
                • +</html>

              The internal encoding, how and why

              One of the core decisions was to force all documents to be converted +toadefault internal encoding, and that encoding to be UTF-8, here +aretherationales for those choices:

              • keeping the native encoding in the internal form would force + thelibxmlusers (or the code associated) to be fully aware of the encoding + oftheoriginal document, for examples when adding a text node to + adocument,the content would have to be provided in the document + encoding,i.e. theclient code would have to check it before hand, make + sure it'sconformantto the encoding, etc ... Very hard in practice, though + in somespecificcases this may make sense.
              • +
              • the second decision was which encoding. From the XML spec only + UTF8andUTF16 really makes sense as being the two only encodings for + whichthereis mandatory support. UCS-4 (32 bits fixed size encoding) + couldbeconsidered an intelligent choice too since it's a direct + Unicodemappingsupport. I selected UTF-8 on the basis of efficiency + andcompatibilitywith surrounding software: +
                • UTF-8 while a bit more complex to convert from/to (i.e.slightlymore + costly to import and export CPU wise) is also far morecompactthan + UTF-16 (and UCS-4) for a majority of the documents I seeit usedfor + right now (RPM RDF catalogs, advogato data, variousconfigurationfile + formats, etc.) and the key point for today'scomputerarchitecture is + efficient uses of caches. If one nearlydouble thememory requirement + to store the same amount of data, thiswill trashcaches (main + memory/external caches/internal caches) and mytake isthat this harms + the system far more than the CPU requirementsneededfor the conversion + to UTF-8
                • +
                • Most of libxml2 version 1 users were using it with + straightASCIImost of the time, doing the conversion with an + internalencodingrequiring all their code to be rewritten was a + seriousshow-stopperfor using UTF-16 or UCS-4.
                • +
                • UTF-8 is being used as the de-facto internal encoding + standardforrelated code like the pangoupcoming Gnome text widget, + anda lot of Unix code (yet another placewhere Unix programmer base + takesa different approach from Microsoft- they are using UTF-16)
              • -

              What does this mean in practice for the libxml2 user:

              • xmlChar, the libxml2 data type is a byte, those bytes must be - assembledas UTF-8 valid strings. The proper way to terminate an xmlChar * - stringis simply to append 0 byte, as usual.
              • -
              • One just need to make sure that when using chars outside the ASCII - set,the values has been properly converted to UTF-8
              • -

              How is it implemented ?

              Let's describe how all this works within libxml, basically the -I18N(internationalization) support get triggered only during I/O operation, -i.e.when reading a document or saving one. Let's look first at the -readingsequence:

              1. when a document is processed, we usually don't know the encoding, - asimple heuristic allows to detect UTF-16 and UCS-4 from encodings - wherethe ASCII range (0-0x7F) maps with ASCII
              2. -
              3. the xml declaration if available is parsed, including the - encodingdeclaration. At that point, if the autodetected encoding is - differentfrom the one declared a call to xmlSwitchEncoding() is - issued.
              4. -
              5. If there is no encoding declaration, then the input has to be in - eitherUTF-8 or UTF-16, if it is not then at some point when processing - theinput, the converter/checker of UTF-8 form will raise an encoding - error.You may end-up with a garbled document, or no document at all ! - Example: +

                What does this mean in practice for the libxml2 user:

                • xmlChar, the libxml2 data type is a byte, those bytes must + beassembledas UTF-8 valid strings. The proper way to terminate an xmlChar + *stringis simply to append 0 byte, as usual.
                • +
                • One just need to make sure that when using chars outside the + ASCIIset,the values has been properly converted to UTF-8
                • +

                How is it implemented ?

                Let's describe how all this works within libxml, basically +theI18N(internationalization) support get triggered only during I/O +operation,i.e.when reading a document or saving one. Let's look first at +thereadingsequence:

                1. when a document is processed, we usually don't know the + encoding,asimple heuristic allows to detect UTF-16 and UCS-4 from + encodingswherethe ASCII range (0-0x7F) maps with ASCII
                2. +
                3. the xml declaration if available is parsed, including + theencodingdeclaration. At that point, if the autodetected encoding + isdifferentfrom the one declared a call to xmlSwitchEncoding() + isissued.
                4. +
                5. If there is no encoding declaration, then the input has to be + ineitherUTF-8 or UTF-16, if it is not then at some point when + processingtheinput, the converter/checker of UTF-8 form will raise an + encodingerror.You may end-up with a garbled document, or no document at + all !Example:
                  ~/XML -> ./xmllint err.xml 
                   err.xml:1: error: Input is not proper UTF-8, indicate encoding !
                   <très>là</très>
                  @@ -114,94 +114,93 @@ err.xml:1: error: Bytes: 0xE8 0x73 0x3E 0x6C
                   <très>là</très>
                      ^
                6. -
                7. xmlSwitchEncoding() does an encoding name lookup, canonicalize it, - andthen search the default registered encoding converters for that - encoding.If it's not within the default set and iconv() support has been - compiledit, it will ask iconv for such an encoder. If this fails then the - parserwill report an error and stops processing: +
                8. xmlSwitchEncoding() does an encoding name lookup, canonicalize + it,andthen search the default registered encoding converters for + thatencoding.If it's not within the default set and iconv() support has + beencompiledit, it will ask iconv for such an encoder. If this fails then + theparserwill report an error and stops processing:
                  ~/XML -> ./xmllint err2.xml 
                   err2.xml:1: error: Unsupported encoding UnsupportedEnc
                   <?xml version="1.0" encoding="UnsupportedEnc"?>
                                                                ^
                9. -
                10. From that point the encoder processes progressively the input (it - isplugged as a front-end to the I/O module) for that entity. It - capturesand converts on-the-fly the document to be parsed to UTF-8. The - parseritself just does UTF-8 checking of this input and process - ittransparently. The only difference is that the encoding information - hasbeen added to the parsing context (more precisely to the - inputcorresponding to this entity).
                11. -
                12. The result (when using DOM) is an internal form completely in UTF-8with - just an encoding information on the document node.
                13. -

                Ok then what happens when saving the document (assuming youcollected/built -an xmlDoc DOM like structure) ? It depends on the functioncalled, -xmlSaveFile() will just try to save in the original encoding, -whilexmlSaveFileTo() and xmlSaveFileEnc() can optionally save to a -givenencoding:

                1. if no encoding is given, libxml2 will look for an encoding - valueassociated to the document and if it exists will try to save to - thatencoding, +
                2. From that point the encoder processes progressively the input + (itisplugged as a front-end to the I/O module) for that entity. + Itcapturesand converts on-the-fly the document to be parsed to UTF-8. + Theparseritself just does UTF-8 checking of this input and + processittransparently. The only difference is that the encoding + informationhasbeen added to the parsing context (more precisely to + theinputcorresponding to this entity).
                3. +
                4. The result (when using DOM) is an internal form completely in + UTF-8withjust an encoding information on the document node.
                5. +

                Ok then what happens when saving the document (assuming +youcollected/builtan xmlDoc DOM like structure) ? It depends on the +functioncalled,xmlSaveFile() will just try to save in the original +encoding,whilexmlSaveFileTo() and xmlSaveFileEnc() can optionally save to +agivenencoding:

                1. if no encoding is given, libxml2 will look for an + encodingvalueassociated to the document and if it exists will try to save + tothatencoding,

                  otherwise everything is written in the internal form, i.e. UTF-8

                2. -
                3. so if an encoding was specified, either at the API level or on - thedocument, libxml2 will again canonicalize the encoding name, lookup - for aconverter in the registered set or through iconv. If not found - thefunction will return an error code
                4. -
                5. the converter is placed before the I/O buffer layer, as another kind - ofbuffer, then libxml2 will simply push the UTF-8 serialization to - throughthat buffer, which will then progressively be converted and pushed - ontothe I/O layer.
                6. -
                7. It is possible that the converter code fails on some input, for - exampletrying to push an UTF-8 encoded Chinese character through the - UTF-8 toISO-8859-1 converter won't work. Since the encoders are - progressive theywill just report the error and the number of bytes - converted, at thatpoint libxml2 will decode the offending character, - remove it from thebuffer and replace it with the associated charRef - encoding &#123; andresume the conversion. This guarantees that any - document will be savedwithout losses (except for markup names where this - is not legal, this isa problem in the current version, in practice avoid - using non-asciicharacters for tag or attribute names). A special "ascii" - encoding nameis used to save documents to a pure ascii form can be used - whenportability is really crucial
                8. +
                9. so if an encoding was specified, either at the API level or + onthedocument, libxml2 will again canonicalize the encoding name, + lookupfor aconverter in the registered set or through iconv. If not + foundthefunction will return an error code
                10. +
                11. the converter is placed before the I/O buffer layer, as another + kindofbuffer, then libxml2 will simply push the UTF-8 serialization + tothroughthat buffer, which will then progressively be converted and + pushedontothe I/O layer.
                12. +
                13. It is possible that the converter code fails on some input, + forexampletrying to push an UTF-8 encoded Chinese character through + theUTF-8 toISO-8859-1 converter won't work. Since the encoders + areprogressive theywill just report the error and the number of + bytesconverted, at thatpoint libxml2 will decode the offending + character,remove it from thebuffer and replace it with the associated + charRefencoding &#123; andresume the conversion. This guarantees that + anydocument will be savedwithout losses (except for markup names where + thisis not legal, this isa problem in the current version, in practice + avoidusing non-asciicharacters for tag or attribute names). A special + "ascii"encoding nameis used to save documents to a pure ascii form can be + usedwhenportability is really crucial

                Here are a few examples based on the same test document:

                ~/XML -> ./xmllint isolat1 
                 <?xml version="1.0" encoding="ISO-8859-1"?>
                 <très>là</très>
                 ~/XML -> ./xmllint --encode UTF-8 isolat1 
                 <?xml version="1.0" encoding="UTF-8"?>
                 <très>là  </très>
                -~/XML -> 

                The same processing is applied (and reuse most of the code) for HTML -I18Nprocessing. Looking up and modifying the content encoding is a bit -moredifficult since it is located in a <meta> tag under the -<head>,so a couple of functions htmlGetMetaEncoding() and -htmlSetMetaEncoding() havebeen provided. The parser also attempts to switch -encoding on the fly whendetecting such a tag on input. Except for that the -processing is the same(and again reuses the same code).

                Default supported encodings

                libxml2 has a set of default converters for the following -encodings(located in encoding.c):

                1. UTF-8 is supported by default (null handlers)
                2. +~/XML ->

              The same processing is applied (and reuse most of the code) for +HTMLI18Nprocessing. Looking up and modifying the content encoding is a +bitmoredifficult since it is located in a <meta> tag under +the<head>,so a couple of functions htmlGetMetaEncoding() +andhtmlSetMetaEncoding() havebeen provided. The parser also attempts to +switchencoding on the fly whendetecting such a tag on input. Except for that +theprocessing is the same(and again reuses the same code).

              Default supported encodings

              libxml2 has a set of default converters for the followingencodings(located +in encoding.c):

              1. UTF-8 is supported by default (null handlers)
              2. UTF-16, both little and big endian
              3. ISO-Latin-1 (ISO-8859-1) covering most western languages
              4. ASCII, useful mostly for saving
              5. -
              6. HTML, a specific handler for the conversion of UTF-8 to ASCII with - HTMLpredefined entities like &copy; for the Copyright sign.
              7. -

              More over when compiled on an Unix platform with iconv support the fullset -of encodings supported by iconv can be instantly be used by libxml. On alinux -machine with glibc-2.1 the list of supported encodings and aliases fill3 full -pages, and include UCS-4, the full set of ISO-Latin encodings, and thevarious -Japanese ones.

              To convert from the UTF-8 values returned from the API to another -encodingthen it is possible to use the function provided from the encoding modulelike UTF8Toisolat1, or use -thePOSIX iconv()API -directly.

              Encoding aliases

              From 2.2.3, libxml2 has support to register encoding names aliases. -Thegoal is to be able to parse document whose encoding is supported but -wherethe name differs (for example from the default set of names accepted -byiconv). The following functions allow to register and handle new aliases -forexisting encodings. Once registered libxml2 will automatically lookup -thealiases when handling a document:

              • int xmlAddEncodingAlias(const char *name, const char *alias);
              • +
              • HTML, a specific handler for the conversion of UTF-8 to ASCII + withHTMLpredefined entities like &copy; for the Copyright sign.
              • +

                More over when compiled on an Unix platform with iconv support the +fullsetof encodings supported by iconv can be instantly be used by libxml. On +alinuxmachine with glibc-2.1 the list of supported encodings and aliases +fill3 fullpages, and include UCS-4, the full set of ISO-Latin encodings, and +thevariousJapanese ones.

                To convert from the UTF-8 values returned from the API to +anotherencodingthen it is possible to use the function provided from the encoding modulelike UTF8Toisolat1, or +usethePOSIX iconv()APIdirectly.

                Encoding aliases

                From 2.2.3, libxml2 has support to register encoding names aliases.Thegoal +is to be able to parse document whose encoding is supported butwherethe name +differs (for example from the default set of names acceptedbyiconv). The +following functions allow to register and handle new aliasesforexisting +encodings. Once registered libxml2 will automatically lookupthealiases when +handling a document:

                • int xmlAddEncodingAlias(const char *name, const char *alias);
                • int xmlDelEncodingAlias(const char *alias);
                • const char * xmlGetEncodingAlias(const char *alias);
                • void xmlCleanupEncodingAliases(void);
                • -

                How to extend the existing support

                Well adding support for new encoding, or overriding one of the -encoders(assuming it is buggy) should not be hard, just write input and -outputconversion routines to/from UTF-8, and register them -usingxmlNewCharEncodingHandler(name, xxxToUTF8, UTF8Toxxx), and they will -becalled automatically if the parser(s) encounter such an encoding -name(register it uppercase, this will help). The description of the -encoders,their arguments and expected return values are described in the -encoding.hheader.

                Daniel Veillard

              +

              How to extend the existing support

              Well adding support for new encoding, or overriding one of +theencoders(assuming it is buggy) should not be hard, just write input +andoutputconversion routines to/from UTF-8, and register +themusingxmlNewCharEncodingHandler(name, xxxToUTF8, UTF8Toxxx), and they +willbecalled automatically if the parser(s) encounter such an +encodingname(register it uppercase, this will help). The description of +theencoders,their arguments and expected return values are described in +theencoding.hheader.

              Daniel Veillard

            diff --git a/doc/entities.html b/doc/entities.html index 413dccef..732562a2 100644 --- a/doc/entities.html +++ b/doc/entities.html @@ -7,35 +7,35 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Entities or no entities
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            Entities or no entities

            Developer Menu
            API Indexes
            Related links

            Entities in principle are similar to simple C macros. An entity defines -anabbreviation for a given string that you can reuse many times throughout -thecontent of your document. Entities are especially useful when a given -stringmay occur frequently within a document, or to confine the change needed -to adocument to a restricted area in the internal subset of the document (at -thebeginning). Example:

            1 <?xml version="1.0"?>
            +Entities or no entities
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            Entities or no entities

            Developer Menu
            API Indexes
            Related links

            Entities in principle are similar to simple C macros. An entity +definesanabbreviation for a given string that you can reuse many times +throughoutthecontent of your document. Entities are especially useful when a +givenstringmay occur frequently within a document, or to confine the change +neededto adocument to a restricted area in the internal subset of the +document (atthebeginning). Example:

            1 <?xml version="1.0"?>
             2 <!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
             3 <!ENTITY xml "Extensible Markup Language">
             4 ]>
             5 <EXAMPLE>
             6    &xml;
            -7 </EXAMPLE>

            Line 3 declares the xml entity. Line 6 uses the xml entity, by -prefixingits name with '&' and following it by ';' without any spaces -added. Thereare 5 predefined entities in libxml2 allowing you to escape -characters withpredefined meaning in some parts of the xml document -content:&lt;for the character '<', -&gt;for the character '>', -&apos;for the character -''',&quot;for the character '"', -and&amp;for the character '&'.

            One of the problems related to entities is that you may want the parser -tosubstitute an entity's content so that you can see the replacement text -inyour application. Or you may prefer to keep entity references as such in -thecontent to be able to save the document back without losing this -usuallyprecious information (if the user went through the pain of -explicitlydefining entities, he may have a a rather negative attitude if you -blindlysubstitute them as saving time). The xmlSubstituteEntitiesDefault()function -allows you to check and change the behaviour, which is to notsubstitute -entities by default.

            Here is the DOM tree built by libxml2 for the previous document in -thedefault case:

            /gnome/src/gnome-xml -> ./xmllint --debug test/ent1
            +7 </EXAMPLE>

            Line 3 declares the xml entity. Line 6 uses the xml entity, byprefixingits +name with '&' and following it by ';' without any spacesadded. Thereare 5 +predefined entities in libxml2 allowing you to escapecharacters +withpredefined meaning in some parts of the xml +documentcontent:&lt;for the character +'<',&gt;for the character +'>',&apos;for the +character''',&quot;for the character +'"',and&amp;for the character '&'.

            One of the problems related to entities is that you may want the +parsertosubstitute an entity's content so that you can see the replacement +textinyour application. Or you may prefer to keep entity references as such +inthecontent to be able to save the document back without losing +thisusuallyprecious information (if the user went through the pain +ofexplicitlydefining entities, he may have a a rather negative attitude if +youblindlysubstitute them as saving time). The xmlSubstituteEntitiesDefault()functionallows +you to check and change the behaviour, which is to notsubstituteentities by +default.

            Here is the DOM tree built by libxml2 for the previous document +inthedefault case:

            /gnome/src/gnome-xml -> ./xmllint --debug test/ent1
             DOCUMENT
             version=1.0
                ELEMENT EXAMPLE
            @@ -50,16 +50,17 @@ DOCUMENT
             version=1.0
                ELEMENT EXAMPLE
                  TEXT
            -     content=     Extensible Markup Language

            So, entities or no entities? Basically, it depends on your use case. -Isuggest that you keep the non-substituting default behaviour and avoid -usingentities in your XML document or data if you are not willing to handle -theentity references elements in the DOM tree.

            Note that at save time libxml2 enforces the conversion of the -predefinedentities where necessary to prevent well-formedness problems, and -will alsotransparently replace those with chars (i.e. it will not generate -entityreference elements in the DOM tree or call the reference() SAX callback -whenfinding them in the input).

            WARNING: handling -entitieson top of the libxml2 SAX interface is difficult!!! If you plan to -usenon-predefined entities in your documents, then the learning curve to -handlethen using the SAX API may be long. If you plan to use complex -documents, Istrongly suggest you consider using the DOM interface instead and -let libxmldeal with the complexity rather than trying to do it yourself.

            Daniel Veillard

            + content= Extensible Markup Language

            So, entities or no entities? Basically, it depends on your use +case.Isuggest that you keep the non-substituting default behaviour and +avoidusingentities in your XML document or data if you are not willing to +handletheentity references elements in the DOM tree.

            Note that at save time libxml2 enforces the conversion of +thepredefinedentities where necessary to prevent well-formedness problems, +andwill alsotransparently replace those with chars (i.e. it will not +generateentityreference elements in the DOM tree or call the reference() SAX +callbackwhenfinding them in the input).

            WARNING: handlingentitieson +top of the libxml2 SAX interface is difficult!!! If you plan +tousenon-predefined entities in your documents, then the learning curve +tohandlethen using the SAX API may be long. If you plan to use +complexdocuments, Istrongly suggest you consider using the DOM interface +instead andlet libxmldeal with the complexity rather than trying to do it +yourself.

            Daniel Veillard

            diff --git a/doc/example.html b/doc/example.html index 37883aba..194f6193 100644 --- a/doc/example.html +++ b/doc/example.html @@ -7,11 +7,11 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -A real example
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            A real example

            Developer Menu
            API Indexes
            Related links

            Here is a real size example, where the actual content of the -applicationdata is not kept in the DOM tree but uses internal structures. It -is based ona proposal to keep a database of jobs related to Gnome, with an -XML basedstorage structure. Here is an XML encoded -jobsbase:

            <?xml version="1.0"?>
            +A real example
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            A real example

            Developer Menu
            API Indexes
            Related links

            Here is a real size example, where the actual content of +theapplicationdata is not kept in the DOM tree but uses internal structures. +Itis based ona proposal to keep a database of jobs related to Gnome, with +anXML basedstorage structure. Here is an XML +encodedjobsbase:

            <?xml version="1.0"?>
             <gjob:Helping xmlns:gjob="http://www.gnome.org/some-location">
               <gjob:Jobs>
             
            @@ -66,14 +66,14 @@ jobsbase:

            <?xml version="1.0"?>
                 </gjob:Job>
             
               </gjob:Jobs>
            -</gjob:Helping>

            While loading the XML file into an internal DOM tree is a matter ofcalling -only a couple of functions, browsing the tree to gather the data andgenerate -the internal structures is harder, and more error prone.

            The suggested principle is to be tolerant with respect to the -inputstructure. For example, the ordering of the attributes is not -significant,the XML specification is clear about it. It's also usually a good -idea not todepend on the order of the children of a given node, unless it -really makesthings harder. Here is some code to parse the information for a -person:

            /*
            +</gjob:Helping>

            While loading the XML file into an internal DOM tree is a matter +ofcallingonly a couple of functions, browsing the tree to gather the data +andgeneratethe internal structures is harder, and more error prone.

            The suggested principle is to be tolerant with respect to +theinputstructure. For example, the ordering of the attributes is +notsignificant,the XML specification is clear about it. It's also usually a +goodidea not todepend on the order of the children of a given node, unless +itreally makesthings harder. Here is some code to parse the information for +aperson:

            /*
              * A person record
              */
             typedef struct person {
            @@ -114,22 +114,22 @@ DEBUG("parsePerson\n");
                 }
             
                 return(ret);
            -}

            Here are a couple of things to notice:

            • Usually a recursive parsing style is the more convenient one: XML - datais by nature subject to repetitive constructs and usually exhibits - highlystructured patterns.
            • -
            • The two arguments of type xmlDocPtrand xmlNsPtr,i.e. - the pointer to the global XML document and the namespace reserved tothe - application. Document wide information are needed for example todecode - entities and it's a good coding practice to define a namespace foryour - application set of data and test that the element and attributesyou're - analyzing actually pertains to your application space. This isdone by a - simple equality test (cur->ns == ns).
            • -
            • To retrieve text and attributes value, you can use the - functionxmlNodeListGetStringto gather all the text and entity - referencenodes generated by the DOM output and produce an single text - string.
            • -

            Here is another piece of code used to parse another level of -thestructure:

            #include <libxml/tree.h>
            +}

            Here are a couple of things to notice:

            • Usually a recursive parsing style is the more convenient one: XMLdatais + by nature subject to repetitive constructs and usually + exhibitshighlystructured patterns.
            • +
            • The two arguments of type xmlDocPtrand + xmlNsPtr,i.e.the pointer to the global XML document and the + namespace reserved totheapplication. Document wide information are needed + for example todecodeentities and it's a good coding practice to define a + namespace foryourapplication set of data and test that the element and + attributesyou'reanalyzing actually pertains to your application space. + This isdone by asimple equality test (cur->ns == ns).
            • +
            • To retrieve text and attributes value, you can use + thefunctionxmlNodeListGetStringto gather all the text and + entityreferencenodes generated by the DOM output and produce an single + textstring.
            • +

            Here is another piece of code used to parse another level +ofthestructure:

            #include <libxml/tree.h>
             /*
              * a Description for a Job
              */
            @@ -179,10 +179,10 @@ DEBUG("parseJob\n");
                 }
             
                 return(ret);
            -}

            Once you are used to it, writing this kind of code is quite simple, -butboring. Ultimately, it could be possible to write stubbers taking either -Cdata structure definitions, a set of XML examples or an XML DTD and -producethe code needed to import and export the content between C data and -XMLstorage. This is left as an exercise to the reader :-)

            Feel free to use the code for the full -Cparsing exampleas a template, it is also available with Makefile in -theGnome CVS base under gnome-xml/example

            Daniel Veillard

            +}

            Once you are used to it, writing this kind of code is quite +simple,butboring. Ultimately, it could be possible to write stubbers taking +eitherCdata structure definitions, a set of XML examples or an XML DTD +andproducethe code needed to import and export the content between C data +andXMLstorage. This is left as an exercise to the reader :-)

            Feel free to use the code for the +fullCparsing exampleas a template, it is also available with Makefile +intheGnome CVS base under gnome-xml/example

            Daniel Veillard

            diff --git a/doc/help.html b/doc/help.html index f539bfb5..a660a87c 100644 --- a/doc/help.html +++ b/doc/help.html @@ -7,18 +7,17 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -How to help
            Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
            Made with Libxml2 Logo

            The XML C parser and toolkit of Gnome

            How to help

            Main Menu
            Related links

            You can help the project in various ways, the best thing to do first is -tosubscribe to the mailing-list as explained before, check the archives and the Gnome -bugdatabase:

            1. Provide patches when you find problems.
            2. -
            3. Provide the diffs when you port libxml2 to a new platform. They may - notbe integrated in all cases but help pinpointing portability - problemsand
            4. -
            5. Provide documentation fixes (either as patches to the code comments - oras HTML diffs).
            6. +How to help
              Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
              Made with Libxml2 Logo

              The XML C parser and toolkit of Gnome

              How to help

              Main Menu
              Related links

              You can help the project in various ways, the best thing to do first +istosubscribe to the mailing-list as explained before, check the archives and the Gnomebugdatabase:

              1. Provide patches when you find problems.
              2. +
              3. Provide the diffs when you port libxml2 to a new platform. They + maynotbe integrated in all cases but help pinpointing + portabilityproblemsand
              4. +
              5. Provide documentation fixes (either as patches to the code commentsoras + HTML diffs).
              6. Provide new documentations pieces (translations, examples, etc...).
              7. Check the TODO file and try to close one of the items.
              8. -
              9. Take one of the points raised in the archive or the bug database - andprovide a fix. Get in touch with - mebefore to avoid synchronization problems and check that the - suggestedfix will fit in nicely :-)
              10. +
              11. Take one of the points raised in the archive or the bug + databaseandprovide a fix. Get in + touch withmebefore to avoid synchronization problems and check that + thesuggestedfix will fit in nicely :-)

              Daniel Veillard

              diff --git a/doc/index.html b/doc/index.html index 6cbf99bd..22f013b7 100644 --- a/doc/index.html +++ b/doc/index.html @@ -216,73 +216,73 @@ A:link, A:visited, A:active { text-decoration: underline }

            -

            "Programmingwith -libxml2 is like the thrilling embrace of an exotic stranger." MarkPilgrim

            -

            Libxml2 is the XML C parser and toolkit developed for the Gnome -project(but usable outside of the Gnome platform), it is free software -availableunder the MITLicense. -XML itself is a metalanguage to design markup languages, i.e.text language -where semantic and structure are added to the content usingextra "markup" -information enclosed between angle brackets. HTML is the mostwell-known -markup language. Though the library is written in C a -variety of language bindingsmake it available inother environments.

            -

            Libxml2 is known to be very portable, the library should build and -workwithout serious troubles on a variety of systems (Linux, Unix, -Windows,CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)

            -

            Libxml2 implements a number of existing standards related to -markuplanguages:

            +

            "Programmingwithlibxml2 +is like the thrilling embrace of an exotic stranger." MarkPilgrim

            +

            Libxml2 is the XML C parser and toolkit developed for the Gnomeproject(but +usable outside of the Gnome platform), it is free softwareavailableunder the +MITLicense.XML +itself is a metalanguage to design markup languages, i.e.text languagewhere +semantic and structure are added to the content usingextra +"markup"information enclosed between angle brackets. HTML is the +mostwell-knownmarkup language. Though the library is written in C avariety of language bindingsmake it available inother +environments.

            +

            Libxml2 is known to be very portable, the library should build +andworkwithout serious troubles on a variety of systems (Linux, +Unix,Windows,CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)

            +

            Libxml2 implements a number of existing standards related +tomarkuplanguages:

            -

            In most cases libxml2 tries to implement the specifications in arelatively -strictly compliant way. As of release 2.4.16, libxml2 passed all1800+ tests -from the OASIS XML -TestsSuite.

            -

            To some extent libxml2 provides support for the following -additionalspecifications but doesn't claim to implement them completely:

            -
            • Document Object Model (DOM) http://www.w3.org/TR/DOM-Level-2-Core/the - document model, but it doesn't implement the API itself, gdome2 doesthis - on top of libxml2
            • -
            • RFC - 959:libxml2 implements a basic FTP client code
            • -
            • RFC - 1945:HTTP/1.0, again a basic HTTP client code
            • -
            • SAX: a SAX2 like interface and a minimal SAX1 implementation - compatiblewith early expat versions
            • +

              In most cases libxml2 tries to implement the specifications in +arelativelystrictly compliant way. As of release 2.4.16, libxml2 passed +all1800+ testsfrom the OASIS +XMLTestsSuite.

              +

              To some extent libxml2 provides support for the +followingadditionalspecifications but doesn't claim to implement them +completely:

              +
              • Document Object Model (DOM) http://www.w3.org/TR/DOM-Level-2-Core/thedocument + model, but it doesn't implement the API itself, gdome2 doesthison top of + libxml2
              • +
              • RFC959:libxml2 + implements a basic FTP client code
              • +
              • RFC1945:HTTP/1.0, + again a basic HTTP client code
              • +
              • SAX: a SAX2 like interface and a minimal SAX1 + implementationcompatiblewith early expat versions
              -

              A partial implementation of XML Schemas Part1: -Structureis being worked on but it would be far too early to make -anyconformance statement about it at the moment.

              +

              A partial implementation of XML Schemas +Part1:Structureis being worked on but it would be far too early to +makeanyconformance statement about it at the moment.

              Separate documents:

              -
              • the libxslt pageproviding - animplementation of XSLT 1.0 and common extensions like EXSLT - forlibxml2
              • -
              • the gdome2 page: - a standard DOM2 implementation for libxml2
              • -
              • the XMLSec page: - animplementation of W3C - XMLDigital Signaturefor libxml2
              • -
              • also check the related links section below for more related and - activeprojects.
              • +

                Logo designed by Marc Liyanage.

                diff --git a/doc/interface.html b/doc/interface.html index f1698d66..88ec0d8a 100644 --- a/doc/interface.html +++ b/doc/interface.html @@ -7,18 +7,18 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -The SAX interface
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                The SAX interface

                Developer Menu
                API Indexes
                Related links

                Sometimes the DOM tree output is just too large to fit reasonably -intomemory. In that case (and if you don't expect to save back the XML -documentloaded using libxml), it's better to use the SAX interface of libxml. -SAX isa callback-based interfaceto the parser. Before -parsing,the application layer registers a customized set of callbacks which -arecalled by the library as it progresses through the XML input.

                To get more detailed step-by-step guidance on using the SAX interface -oflibxml, see the nicedocumentation.written -by JamesHenstridge.

                You can debug the SAX behaviour by using the -testSAXprogram located in the gnome-xml module (it's usually -not shipped in thebinary packages of libxml, but you can find it in the tar -sourcedistribution). Here is the sequence of callbacks that would be reported -bytestSAX when parsing the example XML document shown earlier:

                SAX.setDocumentLocator()
                +The SAX interface
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                The SAX interface

                Developer Menu
                API Indexes
                Related links

                Sometimes the DOM tree output is just too large to fit +reasonablyintomemory. In that case (and if you don't expect to save back the +XMLdocumentloaded using libxml), it's better to use the SAX interface of +libxml.SAX isa callback-based interfaceto the parser. +Beforeparsing,the application layer registers a customized set of callbacks +whicharecalled by the library as it progresses through the XML input.

                To get more detailed step-by-step guidance on using the SAX +interfaceoflibxml, see the nicedocumentation.writtenby +JamesHenstridge.

                You can debug the SAX behaviour by using +thetestSAXprogram located in the gnome-xml module (it's +usuallynot shipped in thebinary packages of libxml, but you can find it in +the tarsourcedistribution). Here is the sequence of callbacks that would be +reportedbytestSAX when parsing the example XML document shown earlier:

                SAX.setDocumentLocator()
                 SAX.startDocument()
                 SAX.getEntity(amp)
                 SAX.startElement(EXAMPLE, prop1='gnome is great', prop2='&amp; linux too')
                @@ -51,8 +51,8 @@ SAX.characters(   , 3)
                 SAX.endElement(chapter)
                 SAX.characters( , 1)
                 SAX.endElement(EXAMPLE)
                -SAX.endDocument()

                Most of the other interfaces of libxml2 are based on the DOM -tree-buildingfacility, so nearly everything up to the end of this document -presupposes theuse of the standard DOM tree build. Note that the DOM tree -itself is built bya set of registered default callbacks, without internal -specificinterface.

                Daniel Veillard

                +SAX.endDocument()

                Most of the other interfaces of libxml2 are based on the +DOMtree-buildingfacility, so nearly everything up to the end of this +documentpresupposes theuse of the standard DOM tree build. Note that the DOM +treeitself is built bya set of registered default callbacks, without +internalspecificinterface.

                Daniel Veillard

                diff --git a/doc/intro.html b/doc/intro.html index 93ee1dfe..1ae322f2 100644 --- a/doc/intro.html +++ b/doc/intro.html @@ -7,23 +7,23 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Introduction
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                Introduction

                Main Menu
                Related links

                This document describes libxml, the XMLC parser and toolkit developed for theGnomeproject. XML is a standardfor building -tag-basedstructured documents/data.

                Here are some key points about libxml:

                Warning: unless you are forced to because your application links +withaGnome-1.X library requiring it, Do Not Use +libxml1,uselibxml2

                Daniel Veillard

                diff --git a/doc/library.html b/doc/library.html index 98a605b9..afe4d774 100644 --- a/doc/library.html +++ b/doc/library.html @@ -7,26 +7,25 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -The parser interfaces
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                The parser interfaces

                Developer Menu
                API Indexes
                Related links

                This section is directly intended to help programmers getting -bootstrappedusing the XML tollkit from the C language. It is not intended to -beextensive. I hope the automatically generated documents will provide -thecompleteness required, but as a separate set of documents. The interfaces -ofthe XML parser are by principle low level, Those interested in a higher -levelAPI should look at DOM.

                The parser interfaces for -XMLareseparated from the HTML -parserinterfaces. Let's have a look at how the XML parser can be -called:

                Invoking the parser : the pull method

                Usually, the first thing to do is to read an XML input. The parser -acceptsdocuments either from in-memory strings or from files. The functions -aredefined in "parser.h":

                xmlDocPtr xmlParseMemory(char *buffer, int size);
                +The parser interfaces
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                The parser interfaces

                Developer Menu
                API Indexes
                Related links

                This section is directly intended to help programmers +gettingbootstrappedusing the XML tollkit from the C language. It is not +intended tobeextensive. I hope the automatically generated documents will +providethecompleteness required, but as a separate set of documents. The +interfacesofthe XML parser are by principle low level, Those interested in a +higherlevelAPI should look at DOM.

                The parser interfaces +forXMLareseparated from the HTMLparserinterfaces. Let's have a +look at how the XML parser can becalled:

                Invoking the parser : the pull method

                Usually, the first thing to do is to read an XML input. The +parseracceptsdocuments either from in-memory strings or from files. The +functionsaredefined in "parser.h":

                xmlDocPtr xmlParseMemory(char *buffer, int size);

                Parse a null-terminated string containing the document.

                xmlDocPtr xmlParseFile(const char *filename);

                Parse an XML document contained in a (possibly compressed)file.

                -

                The parser returns a pointer to the document structure (or NULL in case -offailure).

                Invoking the parser: the push method

                In order for the application to keep the control when the document isbeing -fetched (which is common for GUI based programs) libxml2 provides apush -interface, too, as of version 1.8.3. Here are the interfacefunctions:

                xmlParserCtxtPtr xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
                +

                The parser returns a pointer to the document structure (or NULL in +caseoffailure).

                Invoking the parser: the push method

                In order for the application to keep the control when the document +isbeingfetched (which is common for GUI based programs) libxml2 provides +apushinterface, too, as of version 1.8.3. Here are the interfacefunctions:

                xmlParserCtxtPtr xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
                                                          void *user_data,
                                                          const char *chunk,
                                                          int size,
                @@ -53,16 +52,17 @@ int              xmlParseChunk          (xmlParserCtxtPtr ctxt,
                                     doc = ctxt->myDoc;
                                     xmlFreeParserCtxt(ctxt);
                                 }
                -            }

                The HTML parser embedded into libxml2 also has a push interface; -thefunctions are just prefixed by "html" rather than "xml".

                Invoking the parser: the SAX interface

                The tree-building interface makes the parser memory-hungry, first -loadingthe document in memory and then building the tree itself. Reading a -documentwithout building the tree is possible using the SAX interfaces (see -SAX.h andJamesHenstridge's -documentation). Note also that the push interface can belimited to SAX: -just use the two first arguments ofxmlCreatePushParserCtxt().

                Building a tree from scratch

                The other way to get an XML tree in memory is by building it. -Basicallythere is a set of functions dedicated to building new elements. -(These arealso described in <libxml/tree.h>.) For example, here is a -piece ofcode that produces the XML document used in the previous examples:

                    #include <libxml/tree.h>
                +            }

                The HTML parser embedded into libxml2 also has a push +interface;thefunctions are just prefixed by "html" rather than "xml".

                Invoking the parser: the SAX interface

                The tree-building interface makes the parser memory-hungry, +firstloadingthe document in memory and then building the tree itself. Reading +adocumentwithout building the tree is possible using the SAX interfaces +(seeSAX.h andJamesHenstridge'sdocumentation). +Note also that the push interface can belimited to SAX:just use the two first +arguments ofxmlCreatePushParserCtxt().

                Building a tree from scratch

                The other way to get an XML tree in memory is by building +it.Basicallythere is a set of functions dedicated to building new +elements.(These arealso described in <libxml/tree.h>.) For example, +here is apiece ofcode that produces the XML document used in the previous +examples:

                    #include <libxml/tree.h>
                     xmlDocPtr doc;
                     xmlNodePtr tree, subtree;
                 
                @@ -76,59 +76,58 @@ piece ofcode that produces the XML document used in the previous examples:

                Not really rocket science ...

                Traversing the tree

                Basically by including -"tree.h"yourcode has access to the internal structure of all the elements -of the tree.The names should be somewhat simple like -parent,children, next, -prev,properties, etc... For example, still -with the previousexample:

                doc->children->children->children

                points to the title element,

                doc->children->children->next->children->children

                points to the text node containing the chapter title "The -Linuxadventure".

                NOTE: XML allows PIs and commentsto -bepresent before the document root, so doc->childrenmay -pointto an element which is not the document Root Element; a -functionxmlDocGetRootElement()was added for this purpose.

                Modifying the tree

                Functions are provided for reading and writing the document content. -Hereis an excerpt from the tree API:

                xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar *name, - constxmlChar *value);
                -

                This sets (or changes) an attribute carried by an ELEMENT node.The - value can be NULL.

                + xmlSetProp(subtree, "href", "linus.gif");

                Not really rocket science ...

                Traversing the tree

                Basically by including"tree.h"yourcode +has access to the internal structure of all the elementsof the tree.The names +should be somewhat simple +likeparent,children, +next,prev,properties, +etc... For example, stillwith the previousexample:

                doc->children->children->children

                points to the title element,

                doc->children->children->next->children->children

                points to the text node containing the chapter title +"TheLinuxadventure".

                NOTE: XML allows PIs and +commentstobepresent before the document root, so +doc->childrenmaypointto an element which is not the document +Root Element; afunctionxmlDocGetRootElement()was added for this +purpose.

                Modifying the tree

                Functions are provided for reading and writing the document content.Hereis +an excerpt from the tree API:

                xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar + *name,constxmlChar *value);
                +

                This sets (or changes) an attribute carried by an ELEMENT + node.Thevalue can be NULL.

                -
                const xmlChar *xmlGetProp(xmlNodePtr node, const - xmlChar*name);
                -

                This function returns a pointer to new copy of the - propertycontent. Note that the user must deallocate the result.

                +
                const xmlChar *xmlGetProp(xmlNodePtr node, + constxmlChar*name);
                +

                This function returns a pointer to new copy of thepropertycontent. + Note that the user must deallocate the result.

                -

                Two functions are provided for reading and writing the text associatedwith -elements:

                xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const - xmlChar*value);
                -

                This function takes an "external" string and converts it to - onetext node or possibly to a list of entity and text nodes. - Allnon-predefined entity references like &Gnome; will be - storedinternally as entity nodes, hence the result of the function may - not bea single node.

                +

                Two functions are provided for reading and writing the text +associatedwithelements:

                xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, + constxmlChar*value);
                +

                This function takes an "external" string and converts it toonetext + node or possibly to a list of entity and text nodes.Allnon-predefined + entity references like &Gnome; will bestoredinternally as entity + nodes, hence the result of the function maynot bea single node.

                -
                xmlChar *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, - intinLine);
                -

                This function is the inverse - ofxmlStringGetNodeList(). It generates a new - stringcontaining the content of the text and entity nodes. Note the - extraargument inLine. If this argument is set to 1, the function will - expandentity references. For example, instead of returning the - &Gnome;XML encoding in the string, it will substitute it with its - value (say,"GNU Network Object Model Environment").

                +
                xmlChar *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr + list,intinLine);
                +

                This function is the inverseofxmlStringGetNodeList(). + It generates a newstringcontaining the content of the text and entity + nodes. Note theextraargument inLine. If this argument is set to 1, the + function willexpandentity references. For example, instead of + returning the&Gnome;XML encoding in the string, it will substitute + it with itsvalue (say,"GNU Network Object Model Environment").

                -

                Saving a tree

                Basically 3 options are possible:

                void xmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, - int*size);
                +

                Saving a tree

                Basically 3 options are possible:

                void xmlDocDumpMemory(xmlDocPtr cur, + xmlChar**mem,int*size);

                Returns a buffer into which the document has been saved.

                extern void xmlDocDump(FILE *f, xmlDocPtr doc);

                Dumps a document to an open file descriptor.

                int xmlSaveFile(const char *filename, xmlDocPtr cur);
                -

                Saves the document to a file. In this case, the - compressioninterface is triggered if it has been turned on.

                +

                Saves the document to a file. In this case, + thecompressioninterface is triggered if it has been turned on.

                -

                Compression

                The library transparently handles compression when doing -file-basedaccesses. The level of compression on saves can be turned on either -globallyor individually for one file:

                int xmlGetDocCompressMode (xmlDocPtr doc);
                +

                Compression

                The library transparently handles compression when +doingfile-basedaccesses. The level of compression on saves can be turned on +eithergloballyor individually for one file:

                int xmlGetDocCompressMode (xmlDocPtr doc);

                Gets the document compression ratio (0-9).

                void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
                diff --git a/doc/libxml2.xsa b/doc/libxml2.xsa index 5dd19baa..0cfdca56 100644 --- a/doc/libxml2.xsa +++ b/doc/libxml2.xsa @@ -8,33 +8,9 @@ libxml2 - 2.6.24 - Apr 28 2006 + 2.6.25 + Jun 6 2006: http://xmlsoft.org/ - - Portability fixes: configure on Windows, testapi compile on - windows(Kasimier Buchcik, venkat naidu), Borland C++ 6 compile (Eric - Zurcher),HP-UX compiler workaround (Rick Jones), xml2-config bugfix, - gcc-4.1cleanups, Python detection scheme (Joseph Sacco), UTF-8 file paths - onWindows (Roland Schwingel). - - Improvements: xmlDOMWrapReconcileNamespaces xmlDOMWrapCloneNode - (KasimierBuchcik), XML catalog debugging (Rick Jones), update to Unicode - 4.01. - - Bug fixes: xmlParseChunk() problem in 2.6.23, xmlParseInNodeContext()on - HTML docs, URI behaviour on Windows (Rob Richards), comment streamingbug, - xmlParseComment (with William Brack), regexp bug fixes (DV &Youri - Golovanov), xmlGetNodePath on text/CDATA (Kasimier),one Relax-NG - interleave bug, xmllint --path and --valid,XSD bugfixes (Kasimier), - remove debugleft in Python bindings (Nic Ferrier), xmlCatalogAdd bug - (Martin Cole),xmlSetProp fixes (Rob Richards), HTML IDness (Rob - Richards), a largenumber of cleanups and small fixes based on Coverity - reports, bugin character ranges, Unicode tables const (Aivars Kalvans), - schemasfix (Stefan Kost), xmlRelaxNGParse error - deallocation,xmlSchemaAddSchemaDoc error deallocation, error handling on - unallowedcode point, ixmllint --nonet to never reach the net (Gary - Coady),line break in writer after end PI (Jason Viers). - - Documentation: man pages updates and cleanups (Daniel Leidert). - - New features: Relax NG structure error handlers. - - + Do not use or package 2.6.25 diff --git a/doc/namespaces.html b/doc/namespaces.html index 463bc48c..a4d6ace1 100644 --- a/doc/namespaces.html +++ b/doc/namespaces.html @@ -7,44 +7,44 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Namespaces
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                Namespaces

                Main Menu
                Related links

                The libxml2 library implements XML namespacessupport -byrecognizing namespace constructs in the input, and does namespace -lookupautomatically when building the DOM tree. A namespace declaration -isassociated with an in-memory structure and all elements or attributes -withinthat namespace point to it. Hence testing the namespace is a simple and -fastequality operation at the user level.

                I suggest that people using libxml2 use a namespace, and declare it in -theroot element of their document as the default namespace. Then they don't -needto use the prefix in the content but we will have a basis for future -semanticrefinement and merging of data from different sources. This doesn't -increasethe size of the XML output significantly, but significantly increases -itsvalue in the long-term. Example:

                <mydoc xmlns="http://mydoc.example.org/schemas/">
                +Namespaces
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                Namespaces

                Main Menu
                Related links

                The libxml2 library implements XML +namespacessupportbyrecognizing namespace constructs in the input, and +does namespacelookupautomatically when building the DOM tree. A namespace +declarationisassociated with an in-memory structure and all elements or +attributeswithinthat namespace point to it. Hence testing the namespace is a +simple andfastequality operation at the user level.

                I suggest that people using libxml2 use a namespace, and declare it +intheroot element of their document as the default namespace. Then they +don'tneedto use the prefix in the content but we will have a basis for +futuresemanticrefinement and merging of data from different sources. This +doesn'tincreasethe size of the XML output significantly, but significantly +increasesitsvalue in the long-term. Example:

                <mydoc xmlns="http://mydoc.example.org/schemas/">
                    <elem1>...</elem1>
                    <elem2>...</elem2>
                -</mydoc>

                The namespace value has to be an absolute URL, but the URL doesn't have -topoint to any existing resource on the Web. It will bind all the element -andattributes with that URL. I suggest to use an URL within a domain -youcontrol, and that the URL should contain some kind of version information -ifpossible. For example, "http://www.gnome.org/gnumeric/1.0/"is -agood namespace scheme.

                Then when you load a file, make sure that a namespace carrying -theversion-independent prefix is installed on the root element of your -document,and if the version information don't match something you know, warn -the userand be liberal in what you accept as the input. Also do *not* try to -basenamespace checking on the prefix value. <foo:text> may be exactly -thesame as <bar:text> in another document. What really matters is the -URIassociated with the element or the attribute, not the prefix string (which -isjust a shortcut for the full URI). In libxml, element and attributes have -annsfield pointing to an xmlNs structure detailing the -namespaceprefix and its URI.

                @@Interfaces@@

                xmlNodePtr node;
                +</mydoc>

                The namespace value has to be an absolute URL, but the URL doesn't +havetopoint to any existing resource on the Web. It will bind all the +elementandattributes with that URL. I suggest to use an URL within a +domainyoucontrol, and that the URL should contain some kind of version +informationifpossible. For example, +"http://www.gnome.org/gnumeric/1.0/"isagood namespace scheme.

                Then when you load a file, make sure that a namespace +carryingtheversion-independent prefix is installed on the root element of +yourdocument,and if the version information don't match something you know, +warnthe userand be liberal in what you accept as the input. Also do *not* try +tobasenamespace checking on the prefix value. <foo:text> may be +exactlythesame as <bar:text> in another document. What really matters +is theURIassociated with the element or the attribute, not the prefix string +(whichisjust a shortcut for the full URI). In libxml, element and attributes +haveannsfield pointing to an xmlNs structure detailing +thenamespaceprefix and its URI.

                @@Interfaces@@

                xmlNodePtr node;
                 if(!strncmp(node->name,"mytag",5)
                   && node->ns
                   && !strcmp(node->ns->href,"http://www.mysite.com/myns/1.0")) {
                   ...
                -}

                Usually people object to using namespaces together with validity -checking.I will try to make sure that using namespaces won't break validity -checking,so even if you plan to use or currently are using validation I -stronglysuggest adding namespaces to your document. A default namespace -schemexmlns="http://...."should not break validity even on -lessflexible parsers. Using namespaces to mix and differentiate content -comingfrom multiple DTDs will certainly break current validation schemes. To -checksuch documents one needs to use schema-validation, which is supported -inlibxml2 as well. See relagx-ngand w3c-schema.

                Daniel Veillard

                +}

                Usually people object to using namespaces together with validitychecking.I +will try to make sure that using namespaces won't break validitychecking,so +even if you plan to use or currently are using validation Istronglysuggest +adding namespaces to your document. A default +namespaceschemexmlns="http://...."should not break validity even +onlessflexible parsers. Using namespaces to mix and differentiate +contentcomingfrom multiple DTDs will certainly break current validation +schemes. Tochecksuch documents one needs to use schema-validation, which is +supportedinlibxml2 as well. See relagx-ngand w3c-schema.

                Daniel Veillard

                diff --git a/doc/news.html b/doc/news.html index 47fc8862..b67feaa1 100644 --- a/doc/news.html +++ b/doc/news.html @@ -7,483 +7,489 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Releases
                Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                Made with Libxml2 Logo

                The XML C parser and toolkit of Gnome

                Releases

                Main Menu
                Related links

                Items not finished and worked on, get in touch with the list if you wantto -help those

                • More testing on RelaxNG
                • +Releases
                  Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                  Made with Libxml2 Logo

                  The XML C parser and toolkit of Gnome

                  Releases

                  Main Menu
                  Related links

                  Items not finished and worked on, get in touch with the list if you +wanttohelp those

                  The change logdescribes the recents commitsto -the CVScode base.

                  There is the list of public releases:

                  2.6.25: Jun 6 2006

                  • portability fixes: Python detection (Joseph Sacco), compilation error - (William Brack and Graham Bennett), LynxOS patch (Olli Savia)
                  • -
                  • bug fixes: encoding buffer problem, mix of code and data in xmlIO.c - (Kjartan Maraas), entities in XSD validation (Kasimier Buchcik), various - XSD validation fixes (Kasimier), memory leak in pattern (Rob Richards and - Kasimier), attribute with colon in name (Rob Richards), XPath leak in - error reporting (Aleksey Sanin), XInclude text include of self - document.
                  • -
                  • improvements: Xpath optimizations (Kasimier), XPath object cache - (Kasimier),
                  • -

                  2.6.24: Apr 28 2006

                  • Portability fixes: configure on Windows, testapi compile on - windows(Kasimier Buchcik, venkat naidu), Borland C++ 6 compile (Eric - Zurcher),HP-UX compiler workaround (Rick Jones), xml2-config bugfix, - gcc-4.1cleanups, Python detection scheme (Joseph Sacco), UTF-8 file paths - onWindows (Roland Schwingel).
                  • -
                  • Improvements: xmlDOMWrapReconcileNamespaces xmlDOMWrapCloneNode - (KasimierBuchcik), XML catalog debugging (Rick Jones), update to Unicode - 4.01.
                  • -
                  • Bug fixes: xmlParseChunk() problem in 2.6.23, xmlParseInNodeContext()on - HTML docs, URI behaviour on Windows (Rob Richards), comment streamingbug, - xmlParseComment (with William Brack), regexp bug fixes (DV &Youri - Golovanov), xmlGetNodePath on text/CDATA (Kasimier),one Relax-NG - interleave bug, xmllint --path and --valid,XSD bugfixes (Kasimier), - remove debugleft in Python bindings (Nic Ferrier), xmlCatalogAdd bug - (Martin Cole),xmlSetProp fixes (Rob Richards), HTML IDness (Rob - Richards), a largenumber of cleanups and small fixes based on Coverity - reports, bugin character ranges, Unicode tables const (Aivars Kalvans), - schemasfix (Stefan Kost), xmlRelaxNGParse error - deallocation,xmlSchemaAddSchemaDoc error deallocation, error handling on - unallowedcode point, ixmllint --nonet to never reach the net (Gary - Coady),line break in writer after end PI (Jason Viers).
                  • +

                  The change logdescribes the recents +commitstothe CVScode +base.

                  There is the list of public releases:

                  2.6.26: Jun 6 2006

                  • portability fixes: Python detection (Joseph Sacco), compilation + error(William Brack and Graham Bennett), LynxOS patch (Olli Savia)
                  • +
                  • bug fixes: encoding buffer problem, mix of code and data in + xmlIO.c(Kjartan Maraas), entities in XSD validation (Kasimier Buchcik), + variousXSD validation fixes (Kasimier), memory leak in pattern (Rob + Richards andKasimier), attribute with colon in name (Rob Richards), XPath + leak inerror reporting (Aleksey Sanin), XInclude text include of + selfdocument.
                  • +
                  • improvements: Xpath optimizations (Kasimier), XPath object + cache(Kasimier)
                  • +

                  2.6.25: Jun 6 2006:

                  Do not use or package 2.6.25

                  2.6.24: Apr 28 2006

                  • Portability fixes: configure on Windows, testapi compile + onwindows(Kasimier Buchcik, venkat naidu), Borland C++ 6 compile + (EricZurcher),HP-UX compiler workaround (Rick Jones), xml2-config + bugfix,gcc-4.1cleanups, Python detection scheme (Joseph Sacco), UTF-8 + file pathsonWindows (Roland Schwingel).
                  • +
                  • Improvements: xmlDOMWrapReconcileNamespaces + xmlDOMWrapCloneNode(KasimierBuchcik), XML catalog debugging (Rick Jones), + update to Unicode4.01.
                  • +
                  • Bug fixes: xmlParseChunk() problem in 2.6.23, + xmlParseInNodeContext()onHTML docs, URI behaviour on Windows (Rob + Richards), comment streamingbug,xmlParseComment (with William Brack), + regexp bug fixes (DV &YouriGolovanov), xmlGetNodePath on text/CDATA + (Kasimier),one Relax-NGinterleave bug, xmllint --path and --valid,XSD + bugfixes (Kasimier),remove debugleft in Python bindings (Nic Ferrier), + xmlCatalogAdd bug(Martin Cole),xmlSetProp fixes (Rob Richards), HTML + IDness (RobRichards), a largenumber of cleanups and small fixes based on + Coverityreports, bugin character ranges, Unicode tables const (Aivars + Kalvans),schemasfix (Stefan Kost), xmlRelaxNGParse + errordeallocation,xmlSchemaAddSchemaDoc error deallocation, error + handling onunallowedcode point, ixmllint --nonet to never reach the net + (GaryCoady),line break in writer after end PI (Jason Viers).
                  • Documentation: man pages updates and cleanups (Daniel Leidert).
                  • New features: Relax NG structure error handlers.
                  • -

                  2.6.23: Jan 5 2006

                  • portability fixes: Windows (Rob Richards), getaddrinfo on Windows(Kolja - Nowak, Rob Richards), icc warnings (Kjartan Maraas),--with-minimum - compilation fixes (William Brack), error case handling fixon Solaris - (Albert Chin), don't use 'list' as parameter name reported bySamuel Diaz - Garcia, more old Unices portability fixes (Albert Chin),MinGW compilation - (Mark Junker), HP-UX compiler warnings (RickJones),
                  • -
                  • code cleanup: xmlReportError (Adrian Mouat), remove - xmlBufferClose(Geert Jansen), unreachable code (Oleksandr Kononenko), - refactoringparsing code (Bjorn Reese)
                  • -
                  • bug fixes: xmlBuildRelativeURI and empty path (William - Brack),combinatory explosion and performances in regexp code, leak - inxmlTextReaderReadString(), xmlStringLenDecodeEntities problem - (MassimoMorara), Identity Constraints bugs and a segfault (Kasimier - Buchcik),XPath pattern based evaluation bugs (DV & - Kasimier),xmlSchemaContentModelDump() memory leak (Kasimier), potential - leak inxmlSchemaCheckCSelectorXPath(), xmlTextWriterVSprintf() misuse - ofvsnprintf (William Brack), XHTML serialization fix (Rob Richards), - CRLFsplit problem (William), issues with non-namespaced attributes - inxmlAddChild() xmlAddNextSibling() and xmlAddPrevSibling() (Rob - Richards),HTML parsing of script, Python must not output to stdout (Nic - Ferrier),exclusive C14N namespace visibility (Aleksey Sanin), XSD - dataypetotalDigits bug (Kasimier Buchcik), error handling when writing to - anxmlBuffer (Rob Richards), runtest schemas error not reported - (HisashiFujinaka), signed/unsigned problem in date/time code (Albert - Chin), fixXSI driven XSD validation (Kasimier), parsing of xs:decimal - (Kasimier),fix DTD writer output (Rob Richards), leak in - xmlTextReaderReadInnerXml(Gary Coady), regexp bug affecting schemas - (Kasimier), configuration ofruntime debugging (Kasimier), - xmlNodeBufGetContent bug on entity refs(Oleksandr Kononenko), - xmlRegExecPushString2 bug (Sreeni Nair),compilation and build fixes - (Michael Day), removed dependancies onxmlSchemaValidError (Kasimier), bug - with <xml:foo/>, more XPathpattern based evaluation fixes - (Kasimier)
                  • -
                  • improvements: XSD Schemas redefinitions/restrictions (KasimierBuchcik), - node copy checks and fix for attribute (Rob Richards), countedtransition - bug in regexps, ctxt->standalone = -2 to indicate nostandalone - attribute was found, add xmlSchemaSetParserStructuredErrors()(Kasimier - Buchcik), add xmlTextReaderSchemaValidateCtxt() to API(Kasimier), handle - gzipped HTTP resources (Gary Coady), addhtmlDocDumpMemoryFormat. (Rob - Richards),
                  • -
                  • documentation: typo (Michael Day), libxml man page (Albert Chin), - savefunction to XML buffer (Geert Jansen), small doc fix (Aron - Stansvik),
                  • -

                  2.6.22: Sep 12 2005

                  • build fixes: compile without schematron (Stéphane Bidoul)
                  • -
                  • bug fixes: xmlDebugDumpNode on namespace node (Oleg Paraschenko)i,CDATA - push parser bug, xmlElemDump problem with XHTML1 doc,XML_FEATURE_xxx - clash with expat headers renamed XML_WITH_xxx, fix someoutput formatting - for meta element (Rob Richards), script and styleXHTML1 serialization - (David Madore), Attribute derivation fixups in XSD(Kasimier Buchcik), - better IDC error reports (Kasimier Buchcik)
                  • -
                  • improvements: add XML_SAVE_NO_EMPTY xmlSaveOption (Rob Richards), - addXML_SAVE_NO_XHTML xmlSaveOption, XML Schemas improvements preparing - forderive (Kasimier Buchcik).
                  • -
                  • documentation: generation of gtk-doc like docs, integration - withdevhelp.
                  • -

                  2.6.21: Sep 4 2005

                  • build fixes: Cygwin portability fixes (Gerrit P. Haase), - callingconvention problems on Windows (Marcus Boerger), cleanups based on - Linus'sparse tool, update of win32/configure.js (Rob Richards), remove - warningson Windows(Marcus Boerger), compilation without SAX1, detection - of thePython binary, use $GCC inestad of $CC = 'gcc' (Andrew W. - Nosenko),compilation/link with threads and old gcc, compile problem by - C370 onZ/OS,
                  • -
                  • bug fixes: http_proxy environments (Peter Breitenlohner), HTML UTF-8bug - (Jiri Netolicky), XPath NaN compare bug (William Brack),htmlParseScript - potential bug, Schemas regexp handling of spaces, Base64Schemas - comparisons NIST passes, automata build error xsd:all,xmlGetNodePath for - namespaced attributes (Alexander Pohoyda), xmlSchemasforeign namespaces - handling, XML Schemas facet comparison (KupriyanovAnatolij), - xmlSchemaPSimpleTypeErr error report (Kasimier Buchcik), xml:namespace - ahndling in Schemas (Kasimier), empty model group in Schemas(Kasimier), - wilcard in Schemas (Kasimier), URI composition (William),xs:anyType in - Schemas (Kasimier), Python resolver emmitting errormessages directly, - Python xmlAttr.parent (Jakub Piotr Clapa), trying tofix the file path/URI - conversion, xmlTextReaderGetAttribute fix (RobRichards), - xmlSchemaFreeAnnot memleak (Kasimier), HTML UTF-8serialization, streaming - XPath, Schemas determinism detection problem,XInclude bug, Schemas - context type (Dean Hill), validation fix (DerekPoon), - xmlTextReaderGetAttribute[Ns] namespaces (Rob Richards), Schemastype fix - (Kuba Nowakowski), UTF-8 parser bug, error in encoding - handling,xmlGetLineNo fixes, bug on entities handling, entity name - extraction inerror handling with XInclude, text nodes in HTML body tags - (Gary Coady),xml:id and IDness at the treee level fixes, XPath streaming - patternsbugs.
                  • -
                  • improvements: structured interfaces for schemas and RNG error - reports(Marcus Boerger), optimization of the char data inner loop - parsing(thanks to Behdad Esfahbod for the idea), schematron validation - thoughnot finished yet, xmlSaveOption to omit XML declaration, keyref - matcherror reports (Kasimier), formal expression handling code not - pluggedyet, more lax mode for the HTML parser, parser XML_PARSE_COMPACT - optionfor text nodes allocation.
                  • -
                  • documentation: xmllint man page had --nonet duplicated
                  • -

                  2.6.20: Jul 10 2005

                  • build fixes: Windows build (Rob Richards), Mingw compilation - (IgorZlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier - andandriy@google.com), use gcc weak references to pthread to avoid - thepthread dependancy on Linux, compilation problem (Steve Nairn), - compilingof subset (Morten Welinder), IPv6/ss_family compilation (William - Brack),compilation when disabling parts of the library, standalone - testdistribution.
                  • -
                  • bug fixes: bug in lang(), memory cleanup on errors (William Brack),HTTP - query strings (Aron Stansvik), memory leak in DTD (William), - integeroverflow in XPath (William), nanoftp buffer size, pattern "." apth - fixup(Kasimier), leak in tree reported by Malcolm Rowe, replaceNode - patch(Brent Hendricks), CDATA with NULL content (Mark Vakoc), xml:base - fixupon XInclude (William), pattern fixes (William), attribute bug - inexclusive c14n (Aleksey Sanin), xml:space and xml:lang with SAX2 - (RobRichards), namespace trouble in complex parsing (Malcolm Rowe), XSD - typeQNames fixes (Kasimier), XPath streaming fixups (William), RelaxNG - bug(Rob Richards), Schemas for Schemas fixes (Kasimier), removal of ID - (RobRichards), a small RelaxNG leak, HTML parsing in push mode bug - (JamesBursa), failure to detect UTF-8 parsing bugs in CDATA - sections,areBlanks() heuristic failure, duplicate attributes in DTD - bug(William).
                  • -
                  • improvements: lot of work on Schemas by Kasimier Buchcik both - onconformance and streaming, Schemas validation messages (Kasimier - Buchcik,Matthew Burgess), namespace removal at the python level - (BrentHendricks), Update to new Schemas regression tests from - W3C/Nist(Kasimier), xmlSchemaValidateFile() (Kasimier), implementation - ofxmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml (James - Wert),standalone test framework and programs, new DOM import - APIsxmlDOMWrapReconcileNamespaces() xmlDOMWrapAdoptNode() - andxmlDOMWrapRemoveNode(), extension of xmllint capabilities for SAX - andSchemas regression tests, xmlStopParser() available in pull mode - too,ienhancement to xmllint --shell namespaces support, Windows port of - thestandalone testing tools (Kasimier and - William),xmlSchemaValidateStream() xmlSchemaSAXPlug() and - xmlSchemaSAXUnplug() SAXSchemas APIs, Schemas xmlReader support.
                  • -

                  2.6.19: Apr 02 2005

                  • build fixes: drop .la from RPMs, --with-minimum build fix - (WilliamBrack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks - with AIX5.3 compiler, fixed elfgcchack.h generation and PLT reduction - code onLinux/ELF/gcc4
                  • -
                  • bug fixes: schemas type decimal fixups (William Brack), xmmlint - returncode (Gerry Murphy), small schemas fixes (Matthew Burgess and - GUYFabrice), workaround "DAV:" namespace brokeness in c14n (Aleksey - Sanin),segfault in Schemas (Kasimier Buchcik), Schemas attribute - validation(Kasimier), Prop related functions and xmlNewNodeEatName (Rob - Richards),HTML serialization of name attribute on a elements, Python - error handlersleaks and improvement (Brent Hendricks), uninitialized - variable inencoding code, Relax-NG validation bug, potential crash - ifgnorableWhitespace is NULL, xmlSAXParseDoc and xmlParseDoc - signatures,switched back to assuming UTF-8 in case no encoding is given - atserialization time
                  • -
                  • improvements: lot of work on Schemas by Kasimier Buchcik on - facetschecking and also mixed handling.
                  • -
                  • -

                  2.6.18: Mar 13 2005

                  • build fixes: warnings (Peter Breitenlohner), testapi.c - generation,Bakefile support (Francesco Montorsi), Windows compilation - (Joel Reed),some gcc4 fixes, HP-UX portability fixes (Rick Jones).
                  • -
                  • bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push - andxmlreader stopping on non-fatal errors, thread support for - dictionnariesreference counting (Gary Coady), internal subset and push - problem, URLsaved in xmlCopyDoc, various schemas bug fixes (Kasimier), - Python pathsfixup (Stephane Bidoul), xmlGetNodePath and namespaces, - xmlSetNsProp fix(Mike Hommey), warning should not count as error (William - Brack),xmlCreatePushParser empty chunk, XInclude parser flags (William), - cleanupFTP and HTTP code to reuse the uri parsing and IPv6 - (William),xmlTextWriterStartAttributeNS fix (Rob Richards), - XMLLINT_INDENT beingempty (William), xmlWriter bugs (Rob Richards), - multithreading on Windows(Rich Salz), xmlSearchNsByHref fix (Kasimier), - Python binding leak (BrentHendricks), aliasing bug exposed by gcc4 on - s390, xmlTextReaderNext bug(Rob Richards), Schemas decimal type fixes - (William Brack),xmlByteConsumed static buffer (Ben Maurer).
                  • -
                  • improvement: speedup parsing comments and DTDs, dictionnary support - forhash tables, Schemas Identity constraints (Kasimier), streaming - XPathsubset, xmlTextReaderReadString added (Bjorn Reese), Schemas - canonicalvalues handling (Kasimier), add xmlTextReaderByteConsumed +

                  2.6.23: Jan 5 2006

                  • portability fixes: Windows (Rob Richards), getaddrinfo on + Windows(KoljaNowak, Rob Richards), icc warnings (Kjartan + Maraas),--with-minimumcompilation fixes (William Brack), error case + handling fixon Solaris(Albert Chin), don't use 'list' as parameter name + reported bySamuel DiazGarcia, more old Unices portability fixes (Albert + Chin),MinGW compilation(Mark Junker), HP-UX compiler warnings + (RickJones),
                  • +
                  • code cleanup: xmlReportError (Adrian Mouat), removexmlBufferClose(Geert + Jansen), unreachable code (Oleksandr Kononenko),refactoringparsing code + (Bjorn Reese)
                  • +
                  • bug fixes: xmlBuildRelativeURI and empty path + (WilliamBrack),combinatory explosion and performances in regexp code, + leakinxmlTextReaderReadString(), xmlStringLenDecodeEntities + problem(MassimoMorara), Identity Constraints bugs and a segfault + (KasimierBuchcik),XPath pattern based evaluation bugs (DV + &Kasimier),xmlSchemaContentModelDump() memory leak (Kasimier), + potentialleak inxmlSchemaCheckCSelectorXPath(), xmlTextWriterVSprintf() + misuseofvsnprintf (William Brack), XHTML serialization fix (Rob + Richards),CRLFsplit problem (William), issues with non-namespaced + attributesinxmlAddChild() xmlAddNextSibling() and xmlAddPrevSibling() + (RobRichards),HTML parsing of script, Python must not output to stdout + (NicFerrier),exclusive C14N namespace visibility (Aleksey Sanin), + XSDdataypetotalDigits bug (Kasimier Buchcik), error handling when writing + toanxmlBuffer (Rob Richards), runtest schemas error not + reported(HisashiFujinaka), signed/unsigned problem in date/time code + (AlbertChin), fixXSI driven XSD validation (Kasimier), parsing of + xs:decimal(Kasimier),fix DTD writer output (Rob Richards), leak + inxmlTextReaderReadInnerXml(Gary Coady), regexp bug affecting + schemas(Kasimier), configuration ofruntime debugging + (Kasimier),xmlNodeBufGetContent bug on entity refs(Oleksandr + Kononenko),xmlRegExecPushString2 bug (Sreeni Nair),compilation and build + fixes(Michael Day), removed dependancies onxmlSchemaValidError + (Kasimier), bugwith <xml:foo/>, more XPathpattern based evaluation + fixes(Kasimier)
                  • +
                  • improvements: XSD Schemas redefinitions/restrictions + (KasimierBuchcik),node copy checks and fix for attribute (Rob Richards), + countedtransitionbug in regexps, ctxt->standalone = -2 to indicate + nostandaloneattribute was found, add + xmlSchemaSetParserStructuredErrors()(KasimierBuchcik), add + xmlTextReaderSchemaValidateCtxt() to API(Kasimier), handlegzipped HTTP + resources (Gary Coady), addhtmlDocDumpMemoryFormat. (RobRichards),
                  • +
                  • documentation: typo (Michael Day), libxml man page (Albert + Chin),savefunction to XML buffer (Geert Jansen), small doc fix (AronStansvik),
                  • +

                  2.6.22: Sep 12 2005

                  • build fixes: compile without schematron (Stéphane Bidoul)
                  • +
                  • bug fixes: xmlDebugDumpNode on namespace node (Oleg + Paraschenko)i,CDATApush parser bug, xmlElemDump problem with XHTML1 + doc,XML_FEATURE_xxxclash with expat headers renamed XML_WITH_xxx, fix + someoutput formattingfor meta element (Rob Richards), script and + styleXHTML1 serialization(David Madore), Attribute derivation fixups in + XSD(Kasimier Buchcik),better IDC error reports (Kasimier Buchcik)
                  • +
                  • improvements: add XML_SAVE_NO_EMPTY xmlSaveOption (Rob + Richards),addXML_SAVE_NO_XHTML xmlSaveOption, XML Schemas improvements + preparingforderive (Kasimier Buchcik).
                  • +
                  • documentation: generation of gtk-doc like docs, + integrationwithdevhelp.
                  • +

                  2.6.21: Sep 4 2005

                  • build fixes: Cygwin portability fixes (Gerrit P. + Haase),callingconvention problems on Windows (Marcus Boerger), cleanups + based onLinus'sparse tool, update of win32/configure.js (Rob Richards), + removewarningson Windows(Marcus Boerger), compilation without SAX1, + detectionof thePython binary, use $GCC inestad of $CC = 'gcc' (Andrew + W.Nosenko),compilation/link with threads and old gcc, compile problem + byC370 onZ/OS,
                  • +
                  • bug fixes: http_proxy environments (Peter Breitenlohner), HTML + UTF-8bug(Jiri Netolicky), XPath NaN compare bug (William + Brack),htmlParseScriptpotential bug, Schemas regexp handling of spaces, + Base64Schemascomparisons NIST passes, automata build error + xsd:all,xmlGetNodePath fornamespaced attributes (Alexander Pohoyda), + xmlSchemasforeign namespaceshandling, XML Schemas facet comparison + (KupriyanovAnatolij),xmlSchemaPSimpleTypeErr error report (Kasimier + Buchcik), xml:namespaceahndling in Schemas (Kasimier), empty model group + in Schemas(Kasimier),wilcard in Schemas (Kasimier), URI composition + (William),xs:anyType inSchemas (Kasimier), Python resolver emmitting + errormessages directly,Python xmlAttr.parent (Jakub Piotr Clapa), trying + tofix the file path/URIconversion, xmlTextReaderGetAttribute fix + (RobRichards),xmlSchemaFreeAnnot memleak (Kasimier), HTML + UTF-8serialization, streamingXPath, Schemas determinism detection + problem,XInclude bug, Schemascontext type (Dean Hill), validation fix + (DerekPoon),xmlTextReaderGetAttribute[Ns] namespaces (Rob Richards), + Schemastype fix(Kuba Nowakowski), UTF-8 parser bug, error in + encodinghandling,xmlGetLineNo fixes, bug on entities handling, entity + nameextraction inerror handling with XInclude, text nodes in HTML body + tags(Gary Coady),xml:id and IDness at the treee level fixes, XPath + streamingpatternsbugs.
                  • +
                  • improvements: structured interfaces for schemas and RNG + errorreports(Marcus Boerger), optimization of the char data inner + loopparsing(thanks to Behdad Esfahbod for the idea), schematron + validationthoughnot finished yet, xmlSaveOption to omit XML declaration, + keyrefmatcherror reports (Kasimier), formal expression handling code + notpluggedyet, more lax mode for the HTML parser, parser + XML_PARSE_COMPACToptionfor text nodes allocation.
                  • +
                  • documentation: xmllint man page had --nonet duplicated
                  • +

                  2.6.20: Jul 10 2005

                  • build fixes: Windows build (Rob Richards), Mingw + compilation(IgorZlatkovic), Windows Makefile (Igor), gcc warnings + (Kasimierandandriy@google.com), use gcc weak references to pthread to + avoidthepthread dependancy on Linux, compilation problem (Steve + Nairn),compilingof subset (Morten Welinder), IPv6/ss_family compilation + (WilliamBrack),compilation when disabling parts of the library, + standalonetestdistribution.
                  • +
                  • bug fixes: bug in lang(), memory cleanup on errors (William + Brack),HTTPquery strings (Aron Stansvik), memory leak in DTD + (William),integeroverflow in XPath (William), nanoftp buffer size, + pattern "." apthfixup(Kasimier), leak in tree reported by Malcolm Rowe, + replaceNodepatch(Brent Hendricks), CDATA with NULL content (Mark Vakoc), + xml:basefixupon XInclude (William), pattern fixes (William), attribute + buginexclusive c14n (Aleksey Sanin), xml:space and xml:lang with + SAX2(RobRichards), namespace trouble in complex parsing (Malcolm Rowe), + XSDtypeQNames fixes (Kasimier), XPath streaming fixups (William), + RelaxNGbug(Rob Richards), Schemas for Schemas fixes (Kasimier), removal + of ID(RobRichards), a small RelaxNG leak, HTML parsing in push mode + bug(JamesBursa), failure to detect UTF-8 parsing bugs in + CDATAsections,areBlanks() heuristic failure, duplicate attributes in + DTDbug(William).
                  • +
                  • improvements: lot of work on Schemas by Kasimier Buchcik + bothonconformance and streaming, Schemas validation messages + (KasimierBuchcik,Matthew Burgess), namespace removal at the python + level(BrentHendricks), Update to new Schemas regression tests + fromW3C/Nist(Kasimier), xmlSchemaValidateFile() (Kasimier), + implementationofxmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml + (JamesWert),standalone test framework and programs, new DOM + importAPIsxmlDOMWrapReconcileNamespaces() + xmlDOMWrapAdoptNode()andxmlDOMWrapRemoveNode(), extension of xmllint + capabilities for SAXandSchemas regression tests, xmlStopParser() + available in pull modetoo,ienhancement to xmllint --shell namespaces + support, Windows port ofthestandalone testing tools (Kasimier + andWilliam),xmlSchemaValidateStream() xmlSchemaSAXPlug() + andxmlSchemaSAXUnplug() SAXSchemas APIs, Schemas xmlReader support.
                  • +

                  2.6.19: Apr 02 2005

                  • build fixes: drop .la from RPMs, --with-minimum build + fix(WilliamBrack), use XML_SOCKLEN_T instead of SOCKLEN_T because it + breakswith AIX5.3 compiler, fixed elfgcchack.h generation and PLT + reductioncode onLinux/ELF/gcc4
                  • +
                  • bug fixes: schemas type decimal fixups (William Brack), + xmmlintreturncode (Gerry Murphy), small schemas fixes (Matthew Burgess + andGUYFabrice), workaround "DAV:" namespace brokeness in c14n + (AlekseySanin),segfault in Schemas (Kasimier Buchcik), Schemas + attributevalidation(Kasimier), Prop related functions and + xmlNewNodeEatName (RobRichards),HTML serialization of name attribute on a + elements, Pythonerror handlersleaks and improvement (Brent Hendricks), + uninitializedvariable inencoding code, Relax-NG validation bug, potential + crashifgnorableWhitespace is NULL, xmlSAXParseDoc and + xmlParseDocsignatures,switched back to assuming UTF-8 in case no encoding + is givenatserialization time
                  • +
                  • improvements: lot of work on Schemas by Kasimier Buchcik + onfacetschecking and also mixed handling.
                  • +
                  • +

                  2.6.18: Mar 13 2005

                  • build fixes: warnings (Peter Breitenlohner), + testapi.cgeneration,Bakefile support (Francesco Montorsi), Windows + compilation(Joel Reed),some gcc4 fixes, HP-UX portability fixes (Rick + Jones).
                  • +
                  • bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), + pushandxmlreader stopping on non-fatal errors, thread support + fordictionnariesreference counting (Gary Coady), internal subset and + pushproblem, URLsaved in xmlCopyDoc, various schemas bug fixes + (Kasimier),Python pathsfixup (Stephane Bidoul), xmlGetNodePath and + namespaces,xmlSetNsProp fix(Mike Hommey), warning should not count as + error (WilliamBrack),xmlCreatePushParser empty chunk, XInclude parser + flags (William),cleanupFTP and HTTP code to reuse the uri parsing and + IPv6(William),xmlTextWriterStartAttributeNS fix (Rob + Richards),XMLLINT_INDENT beingempty (William), xmlWriter bugs (Rob + Richards),multithreading on Windows(Rich Salz), xmlSearchNsByHref fix + (Kasimier),Python binding leak (BrentHendricks), aliasing bug exposed by + gcc4 ons390, xmlTextReaderNext bug(Rob Richards), Schemas decimal type + fixes(William Brack),xmlByteConsumed static buffer (Ben Maurer).
                  • +
                  • improvement: speedup parsing comments and DTDs, dictionnary + supportforhash tables, Schemas Identity constraints (Kasimier), + streamingXPathsubset, xmlTextReaderReadString added (Bjorn Reese), + Schemascanonicalvalues handling (Kasimier), add + xmlTextReaderByteConsumed(AronStansvik),
                  • Documentation: Wiki support (Joel Reed)
                  • -

                  2.6.17: Jan 16 2005

                  • build fixes: Windows, warnings removal (William Brack),maintainer-clean - dependency(William), build in a different directory(William), fixing - --with-minimum configure build (William), BeOS build(Marcin Konicki), - Python-2.4 detection (William), compilation on AIX (DanMcNichol)
                  • -
                  • bug fixes: xmlTextReaderHasAttributes (Rob Richards), - xmlCtxtReadFile()to use the catalog(s), loop on output (William Brack), - XPath memory leak,ID deallocation problem (Steve Shepard), debugDumpNode - crash (William),warning not using error callback (William), xmlStopParser - bug (William),UTF-16 with BOM on DTDs (William), namespace bug on empty - elements inpush mode (Rob Richards), line and col computations fixups - (AlekseySanin), xmlURIEscape fix (William), xmlXPathErr on bad range - (William),patterns with too many steps, bug in RNG choice optimization, - line numbersometimes missing.
                  • -
                  • improvements: XSD Schemas (Kasimier Buchcik), python - generator(William), xmlUTF8Strpos speedup (William), unicode Python - strings(William), XSD error reports (Kasimier Buchcik), Python __str__ - callserialize().
                  • -
                  • new APIs: added xmlDictExists(), GetLineNumber and GetColumnNumber - forthe xmlReader (Aleksey Sanin), Dynamic Shared Libraries APIs (mostly - JoelReed), error extraction API from regexps, new XMLSave option for - format(Phil Shafer)
                  • +

                  2.6.17: Jan 16 2005

                  • build fixes: Windows, warnings removal (William + Brack),maintainer-cleandependency(William), build in a different + directory(William), fixing--with-minimum configure build (William), BeOS + build(Marcin Konicki),Python-2.4 detection (William), compilation on AIX + (DanMcNichol)
                  • +
                  • bug fixes: xmlTextReaderHasAttributes (Rob + Richards),xmlCtxtReadFile()to use the catalog(s), loop on output (William + Brack),XPath memory leak,ID deallocation problem (Steve Shepard), + debugDumpNodecrash (William),warning not using error callback (William), + xmlStopParserbug (William),UTF-16 with BOM on DTDs (William), namespace + bug on emptyelements inpush mode (Rob Richards), line and col + computations fixups(AlekseySanin), xmlURIEscape fix (William), + xmlXPathErr on bad range(William),patterns with too many steps, bug in + RNG choice optimization,line numbersometimes missing.
                  • +
                  • improvements: XSD Schemas (Kasimier Buchcik), pythongenerator(William), + xmlUTF8Strpos speedup (William), unicode Pythonstrings(William), XSD + error reports (Kasimier Buchcik), Python __str__callserialize().
                  • +
                  • new APIs: added xmlDictExists(), GetLineNumber and + GetColumnNumberforthe xmlReader (Aleksey Sanin), Dynamic Shared Libraries + APIs (mostlyJoelReed), error extraction API from regexps, new XMLSave + option forformat(Phil Shafer)
                  • documentation: site improvement (John Fleck), FAQ entries(William).
                  • -

                  2.6.16: Nov 10 2004

                  • general hardening and bug fixing crossing all the API based on - newautomated regression testing
                  • +

                  2.6.16: Nov 10 2004

                  • general hardening and bug fixing crossing all the API based + onnewautomated regression testing
                  • build fix: IPv6 build and test on AIX (Dodji Seketeli)
                  • -
                  • bug fixes: problem with XML::Libxml reported by Petr Pajas, - encodingconversion functions return values, UTF-8 bug affecting XPath - reported byMarkus Bertheau, catalog problem with NULL entries (William - Brack)
                  • -
                  • documentation: fix to xmllint man page, some API function - descritpionwere updated.
                  • -
                  • improvements: DTD validation APIs provided at the Python level - (BrentHendricks)
                  • +
                  • bug fixes: problem with XML::Libxml reported by Petr + Pajas,encodingconversion functions return values, UTF-8 bug affecting + XPathreported byMarkus Bertheau, catalog problem with NULL entries + (WilliamBrack)
                  • +
                  • documentation: fix to xmllint man page, some API + functiondescritpionwere updated.
                  • +
                  • improvements: DTD validation APIs provided at the Python + level(BrentHendricks)

                  2.6.15: Oct 27 2004

                  • security fixes on the nanoftp and nanohttp modules
                  • -
                  • build fixes: xmllint detection bug in configure, building outside - thesource tree (Thomas Fitzsimmons)
                  • -
                  • bug fixes: HTML parser on broken ASCII chars in names (William), - Pythonpaths (Malcolm Tredinnick), xmlHasNsProp and default namespace - (William),saving to python file objects (Malcolm Tredinnick), DTD lookup - fix(Malcolm), save back <group> in catalogs (William), tree - buildfixes (DV and Rob Richards), Schemas memory bug, structured error - handleron Python 64bits, thread local memory deallocation, memory leak - reportedby Volker Roth, xmlValidateDtd in the presence of an internal - subset,entities and _private problem (William), xmlBuildRelativeURI - error(William).
                  • -
                  • improvements: better XInclude error reports (William), tree - debuggingmodule and tests, convenience functions at the Reader API - (GrahamBennett), add support for PI in the HTML parser.
                  • -

                  2.6.14: Sep 29 2004

                  • build fixes: configure paths for xmllint and xsltproc, - compilationwithout HTML parser, compilation warning cleanups (William - Brack &Malcolm Tredinnick), VMS makefile update (Craig Berry),
                  • -
                  • bug fixes: xmlGetUTF8Char (William Brack), QName properties - (KasimierBuchcik), XInclude testing, Notation serialization, - UTF8ToISO8859xtranscoding (Mark Itzcovitz), lots of XML Schemas cleanup - and fixes(Kasimier), ChangeLog cleanup (Stepan Kasal), memory fixes (Mark - Vakoc),handling of failed realloc(), out of bound array adressing in - Schemasdate handling, Python space/tabs cleanups (Malcolm Tredinnick), - NMTOKENSE20 validation fix (Malcolm),
                  • -
                  • improvements: added W3C XML Schemas testsuite (Kasimier Buchcik), - addxmlSchemaValidateOneElement (Kasimier), Python exception - hierearchy(Malcolm Tredinnick), Python libxml2 driver improvement - (MalcolmTredinnick), Schemas support for - xsi:schemaLocation,xsi:noNamespaceSchemaLocation, xsi:type (Kasimier - Buchcik)
                  • -

                  2.6.13: Aug 31 2004

                  • build fixes: Windows and zlib (Igor Zlatkovic), -O flag with - gcc,Solaris compiler warning, fixing RPM BuildRequires,
                  • -
                  • fixes: DTD loading on Windows (Igor), Schemas error reports - APIs(Kasimier Buchcik), Schemas validation crash, xmlCheckUTF8 (William - Brackand Julius Mittenzwei), Schemas facet check (Kasimier), default - namespaceproblem (William), Schemas hexbinary empty values, encoding - error couldgenrate a serialization loop.
                  • -
                  • Improvements: Schemas validity improvements (Kasimier), added --pathand - --load-trace options to xmllint
                  • +
                  • build fixes: xmllint detection bug in configure, building + outsidethesource tree (Thomas Fitzsimmons)
                  • +
                  • bug fixes: HTML parser on broken ASCII chars in names + (William),Pythonpaths (Malcolm Tredinnick), xmlHasNsProp and default + namespace(William),saving to python file objects (Malcolm Tredinnick), + DTD lookupfix(Malcolm), save back <group> in catalogs (William), + treebuildfixes (DV and Rob Richards), Schemas memory bug, structured + errorhandleron Python 64bits, thread local memory deallocation, memory + leakreportedby Volker Roth, xmlValidateDtd in the presence of an + internalsubset,entities and _private problem (William), + xmlBuildRelativeURIerror(William).
                  • +
                  • improvements: better XInclude error reports (William), + treedebuggingmodule and tests, convenience functions at the Reader + API(GrahamBennett), add support for PI in the HTML parser.
                  • +

                  2.6.14: Sep 29 2004

                  • build fixes: configure paths for xmllint and + xsltproc,compilationwithout HTML parser, compilation warning cleanups + (WilliamBrack &Malcolm Tredinnick), VMS makefile update (Craig + Berry),
                  • +
                  • bug fixes: xmlGetUTF8Char (William Brack), QName + properties(KasimierBuchcik), XInclude testing, Notation + serialization,UTF8ToISO8859xtranscoding (Mark Itzcovitz), lots of XML + Schemas cleanupand fixes(Kasimier), ChangeLog cleanup (Stepan Kasal), + memory fixes (MarkVakoc),handling of failed realloc(), out of bound array + adressing inSchemasdate handling, Python space/tabs cleanups (Malcolm + Tredinnick),NMTOKENSE20 validation fix (Malcolm),
                  • +
                  • improvements: added W3C XML Schemas testsuite (Kasimier + Buchcik),addxmlSchemaValidateOneElement (Kasimier), Python + exceptionhierearchy(Malcolm Tredinnick), Python libxml2 driver + improvement(MalcolmTredinnick), Schemas support + forxsi:schemaLocation,xsi:noNamespaceSchemaLocation, xsi:type + (KasimierBuchcik)
                  • +

                  2.6.13: Aug 31 2004

                  • build fixes: Windows and zlib (Igor Zlatkovic), -O flag withgcc,Solaris + compiler warning, fixing RPM BuildRequires,
                  • +
                  • fixes: DTD loading on Windows (Igor), Schemas error + reportsAPIs(Kasimier Buchcik), Schemas validation crash, xmlCheckUTF8 + (WilliamBrackand Julius Mittenzwei), Schemas facet check (Kasimier), + defaultnamespaceproblem (William), Schemas hexbinary empty values, + encodingerror couldgenrate a serialization loop.
                  • +
                  • Improvements: Schemas validity improvements (Kasimier), added + --pathand--load-trace options to xmllint
                  • documentation: tutorial update (John Fleck)
                  • -

                  2.6.12: Aug 22 2004

                  • build fixes: fix --with-minimum, elfgcchack.h fixes - (PeterBreitenlohner), perl path lookup (William), diff on Solaris - (AlbertChin), some 64bits cleanups.
                  • -
                  • Python: avoid a warning with 2.3 (William Brack), tab and space - mixes(William), wrapper generator fixes (William), Cygwin support (Gerrit - P.Haase), node wrapper fix (Marc-Antoine Parent), XML Schemas - support(Torkel Lyng)
                  • +

                  2.6.12: Aug 22 2004

                  • build fixes: fix --with-minimum, elfgcchack.h + fixes(PeterBreitenlohner), perl path lookup (William), diff on + Solaris(AlbertChin), some 64bits cleanups.
                  • +
                  • Python: avoid a warning with 2.3 (William Brack), tab and + spacemixes(William), wrapper generator fixes (William), Cygwin support + (GerritP.Haase), node wrapper fix (Marc-Antoine Parent), XML + Schemassupport(Torkel Lyng)
                  • Schemas: a lot of bug fixes and improvements from Kasimier Buchcik
                  • -
                  • fixes: RVT fixes (William), XPath context resets bug (William), - memorydebug (Steve Hay), catalog white space handling (Peter - Breitenlohner),xmlReader state after attribute reading (William), - structured errorhandler (William), XInclude generated xml:base fixup - (William), Windowsmemory reallocation problem (Steve Hay), Out of Memory - conditionshandling (William and Olivier Andrieu), htmlNewDoc() charset - bug,htmlReadMemory init (William), a posteriori validation DTD - base(William), notations serialization missing, xmlGetNodePath - (Dodji),xmlCheckUTF8 (Diego Tartara), missing line numbers on - entity(William)
                  • -
                  • improvements: DocBook catalog build scrip (William), xmlcatalog - tool(Albert Chin), xmllint --c14n option, no_proxy environment (Mike - Hommey),xmlParseInNodeContext() addition, extend xmllint --shell, allow - XIncludeto not generate start/end nodes, extend xmllint --version to - include CVStag (William)
                  • -
                  • documentation: web pages fixes, validity API docs fixes - (William)schemas API fix (Eric Haszlakiewicz), xmllint man page (John - Fleck)
                  • -

                  2.6.11: July 5 2004

                  • Schemas: a lot of changes and improvements by Kasimier Buchcik - forattributes, namespaces and simple types.
                  • -
                  • build fixes: --with-minimum (William Brack), some gcc - cleanup(William), --with-thread-alloc (William)
                  • -
                  • portability: Windows binary package change (Igor Zlatkovic), - Catalogpath on Windows
                  • -
                  • documentation: update to the tutorial (John Fleck), xmllint return - code(John Fleck), man pages (Ville Skytta),
                  • -
                  • bug fixes: C14N bug serializing namespaces (Aleksey Sanin), - testSAXproperly initialize the library (William), empty node set in - XPath(William), xmlSchemas errors (William), invalid charref problem - pointedby Morus Walter, XInclude xml:base generation (William), Relax-NG - bugwith div processing (William), XPointer and xml:base - problem(William),Reader and entities, xmllint return code for schemas - (William), readerstreaming problem (Steve Ball), DTD serialization - problem (William),libxml.m4 fixes (Mike Hommey), do not provide - destructors as methods onPython classes, xmlReader buffer bug, Python - bindings memory interfacesimprovement (with Stéphane Bidoul), Fixed the - push parser to be back tosynchronous behaviour.
                  • -
                  • improvement: custom per-thread I/O enhancement (Rob Richards), - registernamespace in debug shell (Stefano Debenedetti), Python based - regressiontest for non-Unix users (William), dynamically increase the - number ofXPath extension functions in Python and fix a memory leak - (Marc-AntoineParent and William)
                  • -
                  • performance: hack done with Arjan van de Ven to reduce ELF footprintand - generated code on Linux, plus use gcc runtime profiling to optimizethe - code generated in the RPM packages.
                  • +
                  • fixes: RVT fixes (William), XPath context resets bug + (William),memorydebug (Steve Hay), catalog white space handling + (PeterBreitenlohner),xmlReader state after attribute reading + (William),structured errorhandler (William), XInclude generated xml:base + fixup(William), Windowsmemory reallocation problem (Steve Hay), Out of + Memoryconditionshandling (William and Olivier Andrieu), htmlNewDoc() + charsetbug,htmlReadMemory init (William), a posteriori validation + DTDbase(William), notations serialization missing, + xmlGetNodePath(Dodji),xmlCheckUTF8 (Diego Tartara), missing line numbers + onentity(William)
                  • +
                  • improvements: DocBook catalog build scrip (William), + xmlcatalogtool(Albert Chin), xmllint --c14n option, no_proxy environment + (MikeHommey),xmlParseInNodeContext() addition, extend xmllint --shell, + allowXIncludeto not generate start/end nodes, extend xmllint --version + toinclude CVStag (William)
                  • +
                  • documentation: web pages fixes, validity API docs fixes(William)schemas + API fix (Eric Haszlakiewicz), xmllint man page (JohnFleck)
                  • +

                  2.6.11: July 5 2004

                  • Schemas: a lot of changes and improvements by Kasimier + Buchcikforattributes, namespaces and simple types.
                  • +
                  • build fixes: --with-minimum (William Brack), some gcccleanup(William), + --with-thread-alloc (William)
                  • +
                  • portability: Windows binary package change (Igor Zlatkovic),Catalogpath + on Windows
                  • +
                  • documentation: update to the tutorial (John Fleck), xmllint + returncode(John Fleck), man pages (Ville Skytta),
                  • +
                  • bug fixes: C14N bug serializing namespaces (Aleksey + Sanin),testSAXproperly initialize the library (William), empty node set + inXPath(William), xmlSchemas errors (William), invalid charref + problempointedby Morus Walter, XInclude xml:base generation (William), + Relax-NGbugwith div processing (William), XPointer and + xml:baseproblem(William),Reader and entities, xmllint return code for + schemas(William), readerstreaming problem (Steve Ball), DTD + serializationproblem (William),libxml.m4 fixes (Mike Hommey), do not + providedestructors as methods onPython classes, xmlReader buffer bug, + Pythonbindings memory interfacesimprovement (with Stéphane Bidoul), Fixed + thepush parser to be back tosynchronous behaviour.
                  • +
                  • improvement: custom per-thread I/O enhancement (Rob + Richards),registernamespace in debug shell (Stefano Debenedetti), Python + basedregressiontest for non-Unix users (William), dynamically increase + thenumber ofXPath extension functions in Python and fix a memory + leak(Marc-AntoineParent and William)
                  • +
                  • performance: hack done with Arjan van de Ven to reduce ELF + footprintandgenerated code on Linux, plus use gcc runtime profiling to + optimizethecode generated in the RPM packages.

                  2.6.10: May 17 2004

                  • Web page generated for ChangeLog
                  • build fixes: --without-html problems, make check without make all
                  • -
                  • portability: problem with xpath.c on Windows (MSC and Borland), - memcmpvs. strncmp on Solaris, XPath tests on Windows (Mark Vakoc), C++ do - notuse "list" as parameter name, make tests work with Python 1.5 - (EdDavis),
                  • -
                  • improvements: made xmlTextReaderMode public, small buffers - resizing(Morten Welinder), add --maxmem option to xmllint, - addxmlPopInputCallback() for Matt Sergeant, refactoring of - serializationescaping, added escaping customization
                  • -
                  • bugfixes: xsd:extension (Taihei Goi), assorted regexp bugs - (WilliamBrack), xmlReader end of stream problem, node deregistration with - reader,URI escaping and filemanes, XHTML1 formatting (Nick Wellnhofer), - regexptransition reduction (William), various XSD Schemas fixes - (KasimierBuchcik), XInclude fallback problem (William), weird problems - with DTD(William), structured error handler callback context (William), - reversexmlEncodeSpecialChars() behaviour back to escaping '"'
                  • +
                  • portability: problem with xpath.c on Windows (MSC and + Borland),memcmpvs. strncmp on Solaris, XPath tests on Windows (Mark + Vakoc), C++ donotuse "list" as parameter name, make tests work with + Python 1.5(EdDavis),
                  • +
                  • improvements: made xmlTextReaderMode public, small + buffersresizing(Morten Welinder), add --maxmem option to + xmllint,addxmlPopInputCallback() for Matt Sergeant, refactoring + ofserializationescaping, added escaping customization
                  • +
                  • bugfixes: xsd:extension (Taihei Goi), assorted regexp + bugs(WilliamBrack), xmlReader end of stream problem, node deregistration + withreader,URI escaping and filemanes, XHTML1 formatting (Nick + Wellnhofer),regexptransition reduction (William), various XSD Schemas + fixes(KasimierBuchcik), XInclude fallback problem (William), weird + problemswith DTD(William), structured error handler callback context + (William),reversexmlEncodeSpecialChars() behaviour back to escaping + '"'

                  2.6.9: Apr 18 2004

                  • implement xml:id Working Draft, relaxed XPath id() checking
                  • -
                  • bugfixes: xmlCtxtReset (Brent Hendricks), line number and CDATA - (DaveBeckett), Relax-NG compilation (William Brack), Regexp patches - (withWilliam), xmlUriEscape (Mark Vakoc), a Relax-NG notAllowed problem - (withWilliam), Relax-NG name classes compares (William), XInclude - duplicatefallback (William), external DTD encoding detection (William), a - DTDvalidation bug (William), xmlReader Close() fix, recusive - extentionschemas
                  • -
                  • improvements: use xmlRead* APIs in test tools (Mark Vakoc), - indentingsave optimization, better handle IIS broken HTTP redirect - behaviour (IanHummel), HTML parser frameset (James Bursa), libxml2-python - RPMdependancy, XML Schemas union support (Kasimier Buchcik), warning - removalclanup (William), keep ChangeLog compressed when installing from - RPMs
                  • -
                  • documentation: examples and xmlDocDumpMemory docs (John Fleck), - newexample (load, xpath, modify, save), xmlCatalogDump() comments,
                  • -
                  • Windows: Borland C++ builder (Eric Zurcher), work around - Microsoftcompiler NaN handling bug (Mark Vakoc)
                  • +
                  • bugfixes: xmlCtxtReset (Brent Hendricks), line number and + CDATA(DaveBeckett), Relax-NG compilation (William Brack), Regexp + patches(withWilliam), xmlUriEscape (Mark Vakoc), a Relax-NG notAllowed + problem(withWilliam), Relax-NG name classes compares (William), + XIncludeduplicatefallback (William), external DTD encoding detection + (William), aDTDvalidation bug (William), xmlReader Close() fix, + recusiveextentionschemas
                  • +
                  • improvements: use xmlRead* APIs in test tools (Mark + Vakoc),indentingsave optimization, better handle IIS broken HTTP + redirectbehaviour (IanHummel), HTML parser frameset (James Bursa), + libxml2-pythonRPMdependancy, XML Schemas union support (Kasimier + Buchcik), warningremovalclanup (William), keep ChangeLog compressed when + installing fromRPMs
                  • +
                  • documentation: examples and xmlDocDumpMemory docs (John + Fleck),newexample (load, xpath, modify, save), xmlCatalogDump() + comments,
                  • +
                  • Windows: Borland C++ builder (Eric Zurcher), work + aroundMicrosoftcompiler NaN handling bug (Mark Vakoc)

                  2.6.8: Mar 23 2004

                  • First step of the cleanup of the serialization code and APIs
                  • -
                  • XML Schemas: mixed content (Adam Dickmeiss), QName handling fixes - (AdamDickmeiss), anyURI for "" (John Belmonte)
                  • +
                  • XML Schemas: mixed content (Adam Dickmeiss), QName handling + fixes(AdamDickmeiss), anyURI for "" (John Belmonte)
                  • Python: Canonicalization C14N support added (Anthony Carrico)
                  • xmlDocCopyNode() extension (William)
                  • -
                  • Relax-NG: fix when processing XInclude results (William), - externalreference in interleave (William), missing error on - <choice>failure (William), memory leak in schemas datatype - facets.
                  • +
                  • Relax-NG: fix when processing XInclude results + (William),externalreference in interleave (William), missing error + on<choice>failure (William), memory leak in schemas + datatypefacets.
                  • xmlWriter: patch for better DTD support (Alfred Mickautsch)
                  • -
                  • bug fixes: xmlXPathLangFunction memory leak (Mike Hommey and - WilliamBrack), no ID errors if using HTML_PARSE_NOERROR, xmlcatalog - fallbacks toURI on SYSTEM lookup failure, XInclude parse flags - inheritance (William),XInclude and XPointer fixes for entities (William), - XML parser bugreported by Holger Rauch, nanohttp fd leak (William), - regexps chargroups '-' handling (William), dictionnary reference counting - problems,do not close stderr.
                  • +
                  • bug fixes: xmlXPathLangFunction memory leak (Mike Hommey + andWilliamBrack), no ID errors if using HTML_PARSE_NOERROR, + xmlcatalogfallbacks toURI on SYSTEM lookup failure, XInclude parse + flagsinheritance (William),XInclude and XPointer fixes for entities + (William),XML parser bugreported by Holger Rauch, nanohttp fd leak + (William),regexps chargroups '-' handling (William), dictionnary + reference countingproblems,do not close stderr.
                  • performance patches from Petr Pajas
                  • Documentation fixes: XML_CATALOG_FILES in man pages (Mike Hommey)
                  • -
                  • compilation and portability fixes: --without-valid, catalog - cleanups(Peter Breitenlohner), MingW patch (Roland Schwingel), - cross-compilationto Windows (Christophe de Vienne), --with-html-dir - fixup (Julio MerinoVidal), Windows build (Eric Zurcher)
                  • +
                  • compilation and portability fixes: --without-valid, + catalogcleanups(Peter Breitenlohner), MingW patch (Roland + Schwingel),cross-compilationto Windows (Christophe de Vienne), + --with-html-dirfixup (Julio MerinoVidal), Windows build (Eric + Zurcher)

                  2.6.7: Feb 23 2004

                  • documentation: tutorial updates (John Fleck), benchmark results
                  • xmlWriter: updates and fixes (Alfred Mickautsch, Lucas Brasilino)
                  • XPath optimization (Petr Pajas)
                  • DTD ID handling optimization
                  • -
                  • bugfixes: xpath number with > 19 fractional (William Brack), - pushmode with unescaped '>' characters, fix xmllint --stream --timing, - fixxmllint --memory --stream memory usage, - xmlAttrSerializeTxtContenthandling NULL, trying to fix Relax-NG/Perl - interface.
                  • +
                  • bugfixes: xpath number with > 19 fractional (William + Brack),pushmode with unescaped '>' characters, fix xmllint --stream + --timing,fixxmllint --memory --stream memory + usage,xmlAttrSerializeTxtContenthandling NULL, trying to fix + Relax-NG/Perlinterface.
                  • python: 2.3 compatibility, whitespace fixes (Malcolm Tredinnick)
                  • Added relaxng option to xmllint --shell
                  • -

                  2.6.6: Feb 12 2004

                  • nanohttp and nanoftp: buffer overflow error on URI parsing (Igor - andWilliam) reported by Yuuichi Teranishi
                  • -
                  • bugfixes: make test and path issues, xmlWriter attribute - serialization(William Brack), xmlWriter indentation (William), schemas - validation(Eric Haszlakiewicz), XInclude dictionnaries issues (William - and OlegParaschenko), XInclude empty fallback (William), HTML warnings - (William),XPointer in XInclude (William), Python namespace - serialization,isolat1ToUTF8 bound error (Alfred Mickautsch), output of - parameterentities in internal subset (William), internal subset bug in - push mode,<xs:all> fix (Alexey Sarytchev)
                  • -
                  • Build: fix for automake-1.8 (Alexander Winston), warnings - removal(Philip Ludlam), SOCKLEN_T detection fixes (Daniel Richard), - fix--with-minimum configuration.
                  • +

                  2.6.6: Feb 12 2004

                  • nanohttp and nanoftp: buffer overflow error on URI parsing + (IgorandWilliam) reported by Yuuichi Teranishi
                  • +
                  • bugfixes: make test and path issues, xmlWriter + attributeserialization(William Brack), xmlWriter indentation (William), + schemasvalidation(Eric Haszlakiewicz), XInclude dictionnaries issues + (Williamand OlegParaschenko), XInclude empty fallback (William), HTML + warnings(William),XPointer in XInclude (William), Python + namespaceserialization,isolat1ToUTF8 bound error (Alfred Mickautsch), + output ofparameterentities in internal subset (William), internal subset + bug inpush mode,<xs:all> fix (Alexey Sarytchev)
                  • +
                  • Build: fix for automake-1.8 (Alexander Winston), warningsremoval(Philip + Ludlam), SOCKLEN_T detection fixes (Daniel Richard),fix--with-minimum + configuration.
                  • XInclude: allow the 2001 namespace without warning.
                  • -
                  • Documentation: missing example/index.html (John Fleck), - versiondependancies (John Fleck)
                  • +
                  • Documentation: missing example/index.html (John + Fleck),versiondependancies (John Fleck)
                  • reader API: structured error reporting (Steve Ball)
                  • -
                  • Windows compilation: mingw, msys (Mikhail Grushinskiy), - functionprototype (Cameron Johnson), MSVC6 compiler warnings, - _WINSOCKAPI_patch
                  • -
                  • Parsers: added xmlByteConsumed(ctxt) API to get the byte offest - ininput.
                  • -

                  2.6.5: Jan 25 2004

                  • Bugfixes: dictionnaries for schemas (William Brack), regexp - segfault(William), xs:all problem (William), a number of XPointer - bugfixes(William), xmllint error go to stderr, DTD validation problem - withnamespace, memory leak (William), SAX1 cleanup and minimal options - fixes(Mark Vadoc), parser context reset on error (Shaun McCance), XPath - unionevaluation problem (William) , xmlReallocLoc with NULL (Aleksey - Sanin),XML Schemas double free (Steve Ball), XInclude with no href, - argumentcallbacks order for XPath callbacks (Frederic Peters)
                  • -
                  • Documentation: python scripts (William Brack), xslt stylesheets - (JohnFleck), doc (Sven Zimmerman), I/O example.
                  • -
                  • Python bindings: fixes (William), enum support (Stéphane - Bidoul),structured error reporting (Stéphane Bidoul)
                  • -
                  • XInclude: various fixes for conformance, problem related to - dictionnaryreferences (William & me), recursion (William)
                  • -
                  • xmlWriter: indentation (Lucas Brasilino), memory leaks - (AlfredMickautsch),
                  • +
                  • Windows compilation: mingw, msys (Mikhail + Grushinskiy),functionprototype (Cameron Johnson), MSVC6 compiler + warnings,_WINSOCKAPI_patch
                  • +
                  • Parsers: added xmlByteConsumed(ctxt) API to get the byte + offestininput.
                  • +

                  2.6.5: Jan 25 2004

                  • Bugfixes: dictionnaries for schemas (William Brack), + regexpsegfault(William), xs:all problem (William), a number of + XPointerbugfixes(William), xmllint error go to stderr, DTD validation + problemwithnamespace, memory leak (William), SAX1 cleanup and minimal + optionsfixes(Mark Vadoc), parser context reset on error (Shaun McCance), + XPathunionevaluation problem (William) , xmlReallocLoc with NULL + (AlekseySanin),XML Schemas double free (Steve Ball), XInclude with no + href,argumentcallbacks order for XPath callbacks (Frederic Peters)
                  • +
                  • Documentation: python scripts (William Brack), xslt + stylesheets(JohnFleck), doc (Sven Zimmerman), I/O example.
                  • +
                  • Python bindings: fixes (William), enum support + (StéphaneBidoul),structured error reporting (Stéphane Bidoul)
                  • +
                  • XInclude: various fixes for conformance, problem related + todictionnaryreferences (William & me), recursion (William)
                  • +
                  • xmlWriter: indentation (Lucas Brasilino), memory + leaks(AlfredMickautsch),
                  • xmlSchemas: normalizedString datatype (John Belmonte)
                  • code cleanup for strings functions (William)
                  • Windows: compiler patches (Mark Vakoc)
                  • -
                  • Parser optimizations, a few new XPath and dictionnary APIs for - futureXSLT optimizations.
                  • +
                  • Parser optimizations, a few new XPath and dictionnary APIs + forfutureXSLT optimizations.

                  2.6.4: Dec 24 2003

                  • Windows build fixes (Igor Zlatkovic)
                  • Some serious XInclude problems reported by Oleg Paraschenko and
                  • Unix and Makefile packaging fixes (me, William Brack,
                  • -
                  • Documentation improvements (John Fleck, William Brack), example - fix(Lucas Brasilino)
                  • -
                  • bugfixes: xmlTextReaderExpand() with xmlReaderWalker, XPath handling - ofNULL strings (William Brack) , API building reader or parser - fromfiledescriptor should not close it, changed XPath sorting to be - stableagain (William Brack), xmlGetNodePath() generating '(null)' - (WilliamBrack), DTD validation and namespace bug (William Brack), XML - Schemasdouble inclusion behaviour
                  • +
                  • Documentation improvements (John Fleck, William Brack), + examplefix(Lucas Brasilino)
                  • +
                  • bugfixes: xmlTextReaderExpand() with xmlReaderWalker, XPath + handlingofNULL strings (William Brack) , API building reader or + parserfromfiledescriptor should not close it, changed XPath sorting to + bestableagain (William Brack), xmlGetNodePath() generating + '(null)'(WilliamBrack), DTD validation and namespace bug (William Brack), + XMLSchemasdouble inclusion behaviour

                  2.6.3: Dec 10 2003

                  • documentation updates and cleanup (DV, William Brack, John Fleck)
                  • -
                  • added a repository of examples, examples from Aleksey Sanin, - DodjiSeketeli, Alfred Mickautsch
                  • -
                  • Windows updates: Mark Vakoc, Igor Zlatkovic, Eric Zurcher, - Mingw(Kenneth Haley)
                  • +
                  • added a repository of examples, examples from Aleksey + Sanin,DodjiSeketeli, Alfred Mickautsch
                  • +
                  • Windows updates: Mark Vakoc, Igor Zlatkovic, Eric Zurcher,Mingw(Kenneth + Haley)
                  • Unicode range checking (William Brack)
                  • code cleanup (William Brack)
                  • Python bindings: doc (John Fleck), bug fixes
                  • UTF-16 cleanup and BOM issues (William Brack)
                  • -
                  • bug fixes: ID and xmlReader validation, XPath (William Brack),xmlWriter - (Alfred Mickautsch), hash.h inclusion problem, HTML parser(James Bursa), - attribute defaulting and validation, some serializationcleanups, - XML_GET_LINE macro, memory debug when using threads (WilliamBrack), - serialization of attributes and entities content, xmlWriter(Daniel - Schulman)
                  • -
                  • XInclude bugfix, new APIs and update to the last version including - thenamespace change.
                  • -
                  • XML Schemas improvements: include (Robert Stepanek), import - andnamespace handling, fixed the regression tests troubles, added - examplesbased on Eric van der Vlist book, regexp fixes
                  • -
                  • preliminary pattern support for streaming (needed for - schemasconstraints), added xmlTextReaderPreservePattern() to collect - subdocumentwhen streaming.
                  • +
                  • bug fixes: ID and xmlReader validation, XPath (William + Brack),xmlWriter(Alfred Mickautsch), hash.h inclusion problem, HTML + parser(James Bursa),attribute defaulting and validation, some + serializationcleanups,XML_GET_LINE macro, memory debug when using threads + (WilliamBrack),serialization of attributes and entities content, + xmlWriter(DanielSchulman)
                  • +
                  • XInclude bugfix, new APIs and update to the last version + includingthenamespace change.
                  • +
                  • XML Schemas improvements: include (Robert Stepanek), importandnamespace + handling, fixed the regression tests troubles, addedexamplesbased on Eric + van der Vlist book, regexp fixes
                  • +
                  • preliminary pattern support for streaming (needed + forschemasconstraints), added xmlTextReaderPreservePattern() to + collectsubdocumentwhen streaming.
                  • various fixes in the structured error handling

                  2.6.2: Nov 4 2003

                  • XPath context unregistration fixes
                  • text node coalescing fixes (Mark Lilback)
                  • @@ -501,110 +507,112 @@ the CVScode base.

                    Ther

                  • DocBook XSLT processing bug fixed
                  • HTML serialization for <p> elements (William Brack and me)
                  • XPointer failure in XInclude are now handled as resource errors
                  • -
                  • fixed xmllint --html to use the HTML serializer on output - (added--xmlout to implement the previous behaviour of saving it using the - XMLserializer)
                  • +
                  • fixed xmllint --html to use the HTML serializer on output(added--xmlout + to implement the previous behaviour of saving it using + theXMLserializer)

                  2.6.1: Oct 28 2003

                  • Mostly bugfixes after the big 2.6.0 changes
                  • -
                  • Unix compilation patches: libxml.m4 (Patrick Welche), warnings - cleanup(William Brack)
                  • -
                  • Windows compilation patches (Joachim Bauch, Stephane Bidoul, - IgorZlatkovic)
                  • +
                  • Unix compilation patches: libxml.m4 (Patrick Welche), + warningscleanup(William Brack)
                  • +
                  • Windows compilation patches (Joachim Bauch, Stephane + Bidoul,IgorZlatkovic)
                  • xmlWriter bugfix (Alfred Mickautsch)
                  • chvalid.[ch]: couple of fixes from Stephane Bidoul
                  • context reset: error state reset, push parser reset (GrahamBennett)
                  • context reuse: generate errors if file is not readable
                  • -
                  • defaulted attributes for element coming from internal entities(Stephane - Bidoul)
                  • +
                  • defaulted attributes for element coming from internal + entities(StephaneBidoul)
                  • Python: tab and spaces mix (William Brack)
                  • Error handler could crash in DTD validation in 2.6.0
                  • xmlReader: do not use the document or element _private field
                  • testSAX.c: avoid a problem with some PIs (Massimo Morara)
                  • -
                  • general bug fixes: mandatory encoding in text decl, serializingDocument - Fragment nodes, xmlSearchNs 2.6.0 problem (Kasimier Buchcik),XPath errors - not reported, slow HTML parsing of large documents.
                  • -

                  2.6.0: Oct 20 2003

                  • Major revision release: should be API and ABI compatible but got a - lotof change
                  • -
                  • Increased the library modularity, far more options can be stripped - out,a --with-minimum configuration will weight around 160KBytes
                  • -
                  • Use per parser and per document dictionnary, allocate names and - smalltext nodes from the dictionnary
                  • -
                  • Switch to a SAX2 like parser rewrote most of the XML parser - core,provides namespace resolution and defaulted attributes, minimize - memoryallocations and copies, namespace checking and specific error - handling,immutable buffers, make predefined entities static structures, - etc...
                  • -
                  • rewrote all the error handling in the library, all errors can - beintercepted at a structured level, with precise - informationavailable.
                  • -
                  • New simpler and more generic XML and HTML parser APIs, allowing - toeasilly modify the parsing options and reuse parser context for - multipleconsecutive documents.
                  • -
                  • Similar new APIs for the xmlReader, for options and reuse, provided - newfunctions to access content as const strings, use them for - Pythonbindings
                  • -
                  • a lot of other smaller API improvements: xmlStrPrintf (Aleksey - Sanin),Walker i.e. reader on a document tree based on Alfred Mickautsch - code,make room in nodes for line numbers, reference counting and future - PSVIextensions, generation of character ranges to be checked with - fasteralgorithm (William), xmlParserMaxDepth (Crutcher Dunnavant), - bufferaccess
                  • +
                  • general bug fixes: mandatory encoding in text decl, + serializingDocumentFragment nodes, xmlSearchNs 2.6.0 problem (Kasimier + Buchcik),XPath errorsnot reported, slow HTML parsing of large + documents.
                  • +

                  2.6.0: Oct 20 2003

                  • Major revision release: should be API and ABI compatible but got alotof + change
                  • +
                  • Increased the library modularity, far more options can be strippedout,a + --with-minimum configuration will weight around 160KBytes
                  • +
                  • Use per parser and per document dictionnary, allocate names + andsmalltext nodes from the dictionnary
                  • +
                  • Switch to a SAX2 like parser rewrote most of the XML + parsercore,provides namespace resolution and defaulted attributes, + minimizememoryallocations and copies, namespace checking and specific + errorhandling,immutable buffers, make predefined entities static + structures,etc...
                  • +
                  • rewrote all the error handling in the library, all errors + canbeintercepted at a structured level, with + preciseinformationavailable.
                  • +
                  • New simpler and more generic XML and HTML parser APIs, + allowingtoeasilly modify the parsing options and reuse parser context + formultipleconsecutive documents.
                  • +
                  • Similar new APIs for the xmlReader, for options and reuse, + providednewfunctions to access content as const strings, use them + forPythonbindings
                  • +
                  • a lot of other smaller API improvements: xmlStrPrintf + (AlekseySanin),Walker i.e. reader on a document tree based on Alfred + Mickautschcode,make room in nodes for line numbers, reference counting + and futurePSVIextensions, generation of character ranges to be checked + withfasteralgorithm (William), xmlParserMaxDepth (Crutcher + Dunnavant),bufferaccess
                  • New xmlWriter API provided by Alfred Mickautsch
                  • Schemas: base64 support by Anthony Carrico
                  • -
                  • Parser<->HTTP integration fix, proper processing of the - Mime-Typeand charset informations if available.
                  • -
                  • Relax-NG: bug fixes including the one reported by Martijn Faassen - andzeroOrMore, better error reporting.
                  • -
                  • Python bindings (Stéphane Bidoul), never use stdout for - errorsoutput
                  • -
                  • Portability: all the headers have macros for export and - callingconvention definitions (Igor Zlatkovic), VMS update (Craig A. - Berry),Windows: threads (Jesse Pelton), Borland compiler (Eric Zurcher, - Igor),Mingw (Igor), typos (Mark Vakoc), beta version (Stephane - Bidoul),warning cleanups on AIX and MIPS compilers (William Brack), BeOS - (Marcin'Shard' Konicki)
                  • -
                  • Documentation fixes and README (William Brack), search fix - (William),tutorial updates (John Fleck), namespace docs (Stefan Kost)
                  • -
                  • Bug fixes: xmlCleanupParser (Dave Beckett), threading - uninitializedmutexes, HTML doctype lowercase, SAX/IO (William), - compression detectionand restore (William), attribute declaration in DTDs - (William), namespaceon attribute in HTML output (William), input filename - (Rob Richards),namespace DTD validation, xmlReplaceNode (Chris Ryland), - I/O callbacks(Markus Keim), CDATA serialization (Shaun McCance), - xmlReader (PeterDerr), high codepoint charref like &#x10FFFF;, buffer - access in pushmode (Justin Fletcher), TLS threads on Windows (Jesse - Pelton), XPath bug(William), xmlCleanupParser (Marc Liyanage), CDATA - output (William), HTTPerror handling.
                  • -
                  • xmllint options: --dtdvalidfpi for Tobias Reif, --sax1 for - compattesting, --nodict for building without tree dictionnary, --nocdata - toreplace CDATA by text, --nsclean to remove surperfluous - namespacedeclarations
                  • +
                  • Parser<->HTTP integration fix, proper processing of + theMime-Typeand charset informations if available.
                  • +
                  • Relax-NG: bug fixes including the one reported by Martijn + FaassenandzeroOrMore, better error reporting.
                  • +
                  • Python bindings (Stéphane Bidoul), never use stdout forerrorsoutput
                  • +
                  • Portability: all the headers have macros for export + andcallingconvention definitions (Igor Zlatkovic), VMS update (Craig + A.Berry),Windows: threads (Jesse Pelton), Borland compiler (Eric + Zurcher,Igor),Mingw (Igor), typos (Mark Vakoc), beta version + (StephaneBidoul),warning cleanups on AIX and MIPS compilers (William + Brack), BeOS(Marcin'Shard' Konicki)
                  • +
                  • Documentation fixes and README (William Brack), search + fix(William),tutorial updates (John Fleck), namespace docs (Stefan + Kost)
                  • +
                  • Bug fixes: xmlCleanupParser (Dave Beckett), + threadinguninitializedmutexes, HTML doctype lowercase, SAX/IO + (William),compression detectionand restore (William), attribute + declaration in DTDs(William), namespaceon attribute in HTML output + (William), input filename(Rob Richards),namespace DTD validation, + xmlReplaceNode (Chris Ryland),I/O callbacks(Markus Keim), CDATA + serialization (Shaun McCance),xmlReader (PeterDerr), high codepoint + charref like &#x10FFFF;, bufferaccess in pushmode (Justin Fletcher), + TLS threads on Windows (JessePelton), XPath bug(William), + xmlCleanupParser (Marc Liyanage), CDATAoutput (William), HTTPerror + handling.
                  • +
                  • xmllint options: --dtdvalidfpi for Tobias Reif, --sax1 + forcompattesting, --nodict for building without tree dictionnary, + --nocdatatoreplace CDATA by text, --nsclean to remove + surperfluousnamespacedeclarations
                  • added xml2-config --libtool-libs option from Kevin P. Fleming
                  • -
                  • a lot of profiling and tuning of the code, speedup patch - forxmlSearchNs() by Luca Padovani. The xmlReader should do far - lessallocation and it speed should get closer to SAX. Chris Anderson - workedon speeding and cleaning up repetitive checking code.
                  • +
                  • a lot of profiling and tuning of the code, speedup + patchforxmlSearchNs() by Luca Padovani. The xmlReader should do + farlessallocation and it speed should get closer to SAX. Chris + Andersonworkedon speeding and cleaning up repetitive checking code.
                  • cleanup of "make tests"
                  • libxml-2.0-uninstalled.pc from Malcolm Tredinnick
                  • -
                  • deactivated the broken docBook SGML parser code and plugged the - XMLparser instead.
                  • +
                  • deactivated the broken docBook SGML parser code and plugged + theXMLparser instead.

                  2.5.11: Sep 9 2003

                  A bugfix only release:

                  • risk of crash in Relax-NG
                  • risk of crash when using multithreaded programs

                  2.5.10: Aug 15 2003

                  A bugfixes only release

                  • Windows Makefiles (William Brack)
                  • UTF-16 support fixes (Mark Itzcovitz)
                  • -
                  • Makefile and portability (William Brack) automake, Linux alpha, Mingwon - Windows (Mikhail Grushinskiy)
                  • +
                  • Makefile and portability (William Brack) automake, Linux alpha, + MingwonWindows (Mikhail Grushinskiy)
                  • HTML parser (Oliver Stoeneberg)
                  • XInclude performance problem reported by Kevin Ruscoe
                  • XML parser performance problem reported by Grant Goodale
                  • xmlSAXParseDTD() bug fix from Malcolm Tredinnick
                  • and a couple other cleanup
                  • -

                  2.5.9: Aug 9 2003

                  • bugfixes: IPv6 portability, xmlHasNsProp (Markus Keim), Windows - build(Wiliam Brake, Jesse Pelton, Igor), Schemas (Peter Sobisch), - threading(Rob Richards), hexBinary type (), UTF-16 BOM (Dodji - Seketeli),xmlReader, Relax-NG schemas compilation, namespace handling, - EXSLT (SeanGriffin), HTML parsing problem (William Brack), DTD validation - for mixedcontent + namespaces, HTML serialization, library - initialization,progressive HTML parser
                  • +

                  2.5.9: Aug 9 2003

                  • bugfixes: IPv6 portability, xmlHasNsProp (Markus Keim), + Windowsbuild(Wiliam Brake, Jesse Pelton, Igor), Schemas (Peter + Sobisch),threading(Rob Richards), hexBinary type (), UTF-16 BOM + (DodjiSeketeli),xmlReader, Relax-NG schemas compilation, namespace + handling,EXSLT (SeanGriffin), HTML parsing problem (William Brack), DTD + validationfor mixedcontent + namespaces, HTML serialization, + libraryinitialization,progressive HTML parser
                  • better interfaces for Relax-NG error handling (Joachim Bauch, )
                  • adding xmlXIncludeProcessTree() for XInclud'ing in a subtree
                  • doc fixes and improvements (John Fleck)
                  • @@ -612,123 +620,121 @@ the CVScode base.

                    Ther

                  • couple of new UTF-8 helper functions (William Brack)
                  • general encoding cleanup + ISO-8859-x without iconv (Peter Jacobi)
                  • xmlTextReader cleanup + enum for node types (Bjorn Reese)
                  • -
                  • general compilation/warning cleanup Solaris/HP-UX/... - (WilliamBrack)
                  • -

                  2.5.8: Jul 6 2003

                  • bugfixes: XPath, XInclude, file/URI mapping, UTF-16 save - (MarkItzcovitz), UTF-8 checking, URI saving, error printing (William - Brack),PI related memleak, compilation without schemas or without xpath - (JoergSchmitz-Linneweber/Garry Pennington), xmlUnlinkNode problem with - DTDs,rpm problem on , i86_64, removed a few compilation problems from - 2.5.7,xmlIOParseDTD, and xmlSAXParseDTD (Malcolm Tredinnick)
                  • +
                  • general compilation/warning cleanup Solaris/HP-UX/...(WilliamBrack)
                  • +

                  2.5.8: Jul 6 2003

                  • bugfixes: XPath, XInclude, file/URI mapping, UTF-16 + save(MarkItzcovitz), UTF-8 checking, URI saving, error printing + (WilliamBrack),PI related memleak, compilation without schemas or without + xpath(JoergSchmitz-Linneweber/Garry Pennington), xmlUnlinkNode problem + withDTDs,rpm problem on , i86_64, removed a few compilation problems + from2.5.7,xmlIOParseDTD, and xmlSAXParseDTD (Malcolm Tredinnick)
                  • portability: DJGPP (MsDos) , OpenVMS (Craig A. Berry)
                  • William Brack fixed multithreading lock problems
                  • IPv6 patch for FTP and HTTP accesses (Archana Shah/Wipro)
                  • -
                  • Windows fixes (Igor Zlatkovic, Eric Zurcher), threading - (StéphaneBidoul)
                  • +
                  • Windows fixes (Igor Zlatkovic, Eric Zurcher), + threading(StéphaneBidoul)
                  • A few W3C Schemas Structure improvements
                  • W3C Schemas Datatype improvements (Charlie Bozeman)
                  • -
                  • Python bindings for thread globals (Stéphane Bidoul), and - method/classgenerator
                  • +
                  • Python bindings for thread globals (Stéphane Bidoul), + andmethod/classgenerator
                  • added --nonet option to xmllint
                  • documentation improvements (John Fleck)
                  • -

                  2.5.7: Apr 25 2003

                  • Relax-NG: Compiling to regexp and streaming validation on top of - thexmlReader interface, added to xmllint --stream
                  • +

                  2.5.7: Apr 25 2003

                  • Relax-NG: Compiling to regexp and streaming validation on top + ofthexmlReader interface, added to xmllint --stream
                  • xmlReader: Expand(), Next() and DOM access glue, bug fixes
                  • Support for large files: RGN validated a 4.5GB instance
                  • Thread support is now configured in by default
                  • -
                  • Fixes: update of the Trio code (Bjorn), WXS Date and Duration - fixes(Charles Bozeman), DTD and namespaces (Brent Hendricks), HTML push - parserand zero bytes handling, some missing Windows file path - conversions,behaviour of the parser and validator in the presence of "out - of memory"error conditions
                  • -
                  • extended the API to be able to plug a garbage collecting - memoryallocator, added xmlMallocAtomic() and modified the - allocationsaccordingly.
                  • -
                  • Performances: removed excessive malloc() calls, speedup of the push - andxmlReader interfaces, removed excessive thread locking
                  • +
                  • Fixes: update of the Trio code (Bjorn), WXS Date and + Durationfixes(Charles Bozeman), DTD and namespaces (Brent Hendricks), + HTML pushparserand zero bytes handling, some missing Windows file + pathconversions,behaviour of the parser and validator in the presence of + "outof memory"error conditions
                  • +
                  • extended the API to be able to plug a garbage + collectingmemoryallocator, added xmlMallocAtomic() and modified + theallocationsaccordingly.
                  • +
                  • Performances: removed excessive malloc() calls, speedup of the + pushandxmlReader interfaces, removed excessive thread locking
                  • Documentation: man page (John Fleck), xmlReader documentation
                  • Python: adding binding for xmlCatalogAddLocal (Brent M Hendricks)
                  • -

                  2.5.6: Apr 1 2003

                  • Fixed W3C XML Schemas datatype, should be compliant now except - forbinHex and base64 which are not supported yet.
                  • -
                  • bug fixes: non-ASCII IDs, HTML output, XInclude on large docs - andXInclude entities handling, encoding detection on external subsets, - XMLSchemas bugs and memory leaks, HTML parser (James Bursa)
                  • +

                  2.5.6: Apr 1 2003

                  • Fixed W3C XML Schemas datatype, should be compliant now exceptforbinHex + and base64 which are not supported yet.
                  • +
                  • bug fixes: non-ASCII IDs, HTML output, XInclude on large + docsandXInclude entities handling, encoding detection on external + subsets,XMLSchemas bugs and memory leaks, HTML parser (James Bursa)
                  • portability: python/trio (Albert Chin), Sun compiler warnings
                  • documentation: added --relaxng option to xmllint man page (John)
                  • -
                  • improved error reporting: xml:space, start/end tag mismatches, Relax - NGerrors
                  • -

                  2.5.5: Mar 24 2003

                  • Lot of fixes on the Relax NG implementation. More testing - includingDocBook and TEI examples.
                  • +
                  • improved error reporting: xml:space, start/end tag mismatches, + RelaxNGerrors
                  • +

                  2.5.5: Mar 24 2003

                  • Lot of fixes on the Relax NG implementation. More + testingincludingDocBook and TEI examples.
                  • Increased the support for W3C XML Schemas datatype
                  • Several bug fixes in the URI handling layer
                  • -
                  • Bug fixes: HTML parser, xmlReader, DTD validation, XPath, - encodingconversion, line counting in the parser.
                  • +
                  • Bug fixes: HTML parser, xmlReader, DTD validation, + XPath,encodingconversion, line counting in the parser.
                  • Added support for $XMLLINT_INDENT environment variable, FTP delete
                  • Fixed the RPM spec file name
                  • -

                  2.5.4: Feb 20 2003

                  • Conformance testing and lot of fixes on Relax NG and - XIncludeimplementation
                  • +

                  2.5.4: Feb 20 2003

                  • Conformance testing and lot of fixes on Relax NG + andXIncludeimplementation
                  • Implementation of XPointer element() scheme
                  • -
                  • Bug fixes: XML parser, XInclude entities merge, validity checking - onnamespaces, -

                    2 serialization bugs, node info generation problems, a DTD - regexpgeneration problem.

                    +
                  • Bug fixes: XML parser, XInclude entities merge, validity + checkingonnamespaces, +

                    2 serialization bugs, node info generation problems, a + DTDregexpgeneration problem.

                  • Portability: windows updates and path canonicalization (Igor)
                  • A few typo fixes (Kjartan Maraas)
                  • Python bindings generator fixes (Stephane Bidoul)
                  • -

                  2.5.3: Feb 10 2003

                  • RelaxNG and XML Schemas datatypes improvements, and added a - firstversion of RelaxNG Python bindings
                  • -
                  • Fixes: XLink (Sean Chittenden), XInclude (Sean Chittenden), API fix - forserializing namespace nodes, encoding conversion bug, - XHTML1serialization
                  • +

                  2.5.3: Feb 10 2003

                  • RelaxNG and XML Schemas datatypes improvements, and added afirstversion + of RelaxNG Python bindings
                  • +
                  • Fixes: XLink (Sean Chittenden), XInclude (Sean Chittenden), API + fixforserializing namespace nodes, encoding conversion + bug,XHTML1serialization
                  • Portability fixes: Windows (Igor), AMD 64bits RPM spec file

                  2.5.2: Feb 5 2003

                  • First implementation of RelaxNG, added --relaxng flag to xmllint
                  • Schemas support now compiled in by default.
                  • -
                  • Bug fixes: DTD validation, namespace checking, XInclude and - entities,delegateURI in XML Catalogs, HTML parser, XML reader (Stéphane - Bidoul),XPath parser and evaluation, UTF8ToUTF8 serialization, XML - reader memoryconsumption, HTML parser, HTML serialization in the presence - ofnamespaces
                  • +
                  • Bug fixes: DTD validation, namespace checking, XInclude + andentities,delegateURI in XML Catalogs, HTML parser, XML reader + (StéphaneBidoul),XPath parser and evaluation, UTF8ToUTF8 serialization, + XMLreader memoryconsumption, HTML parser, HTML serialization in the + presenceofnamespaces
                  • added an HTML API to check elements and attributes.
                  • -
                  • Documentation improvement, PDF for the tutorial (John Fleck), - docpatches (Stefan Kost)
                  • +
                  • Documentation improvement, PDF for the tutorial (John Fleck),docpatches + (Stefan Kost)
                  • Portability fixes: NetBSD (Julio Merino), Windows (Igor Zlatkovic)
                  • -
                  • Added python bindings for XPointer, contextual error reporting(Stéphane - Bidoul)
                  • +
                  • Added python bindings for XPointer, contextual error + reporting(StéphaneBidoul)
                  • URI/file escaping problems (Stefano Zacchiroli)

                  2.5.1: Jan 8 2003

                  • Fixes a memory leak and configuration/compilation problems in 2.5.0
                  • documentation updates (John)
                  • a couple of XmlTextReader fixes
                  • -

                  2.5.0: Jan 6 2003

                  2.5.0: Jan 6 2003

                  • New XmltextReader interfacebased on + C#API(with help of Stéphane Bidoul)
                  • Windows: more exports, including the new API (Igor)
                  • XInclude fallback fix
                  • -
                  • Python: bindings for the new API, packaging (Stéphane - Bidoul),drv_libxml2.py Python xml.sax driver (Stéphane Bidoul), fixes, - speedupand iterators for Python-2.2 (Hannu Krosing)
                  • -
                  • Tutorial fixes (john Fleck and Niraj Tolia) xmllint man - update(John)
                  • +
                  • Python: bindings for the new API, packaging + (StéphaneBidoul),drv_libxml2.py Python xml.sax driver (Stéphane Bidoul), + fixes,speedupand iterators for Python-2.2 (Hannu Krosing)
                  • +
                  • Tutorial fixes (john Fleck and Niraj Tolia) xmllint manupdate(John)
                  • Fix an XML parser bug raised by Vyacheslav Pindyura
                  • Fix for VMS serialization (Nigel Hall) and config (Craig A. Berry)
                  • Entities handling fixes
                  • -
                  • new API to optionally track node creation and deletion - (LukasSchroeder)
                  • +
                  • new API to optionally track node creation and + deletion(LukasSchroeder)
                  • Added documentation for the XmltextReader interface and some XML guidelines

                  2.4.30: Dec 12 2002

                  • 2.4.29 broke the python bindings, rereleasing
                  • -
                  • Improvement/fixes of the XML API generator, and couple of minor - codefixes.
                  • -

                  2.4.29: Dec 11 2002

                  • Windows fixes (Igor): Windows CE port, pthread linking, python - bindings(Stéphane Bidoul), Mingw (Magnus Henoch), and export list - updates
                  • +
                  • Improvement/fixes of the XML API generator, and couple of + minorcodefixes.
                  • +

                  2.4.29: Dec 11 2002

                  • Windows fixes (Igor): Windows CE port, pthread linking, + pythonbindings(Stéphane Bidoul), Mingw (Magnus Henoch), and export + listupdates
                  • Fix for prev in python bindings (ERDI Gergo)
                  • Fix for entities handling (Marcus Clarke)
                  • -
                  • Refactored the XML and HTML dumps to a single code path, fixed - XHTML1dump
                  • +
                  • Refactored the XML and HTML dumps to a single code path, + fixedXHTML1dump
                  • Fix for URI parsing when handling URNs with fragment identifiers
                  • Fix for HTTP URL escaping problem
                  • added an TextXmlReader (C#) like API (work in progress)
                  • -
                  • Rewrote the API in XML generation script, includes a C parser and - savesmore informations needed for C# bindings
                  • +
                  • Rewrote the API in XML generation script, includes a C parser + andsavesmore informations needed for C# bindings

                  2.4.28: Nov 22 2002

                  • a couple of python binding fixes
                  • 2 bug fixes in the XML push parser
                  • potential memory leak removed (Martin Stoilov)
                  • @@ -737,40 +743,41 @@ the CVScode base.

                    Ther

                  • autodetection of XHTML1 and specific serialization rules added
                  • nasty threading bug fixed (William Brack)

                  2.4.27: Nov 17 2002

                  • fixes for the Python bindings
                  • -
                  • 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 (PetrPajas), entities processing
                  • +
                  • a number of bug fixes: SGML catalogs,xmlParseBalancedChunkMemory(),HTML + parser, Schemas (Charles Bozeman),document fragment support(Christian + Glahn), xmlReconciliateNs (BrianStafford), XPointer,xmlFreeNode(), + xmlSAXParseMemory (Peter Jones),xmlGetNodePath (PetrPajas), entities + processing
                  • added grep to xmllint --shell
                  • VMS update patch from Craig A. Berry
                  • -
                  • cleanup of the Windows build with support for more compilers - (Igor),better thread support on Windows
                  • +
                  • cleanup of the Windows build with support for more + compilers(Igor),better thread support on Windows
                  • cleanup of Unix Makefiles and spec file
                  • Improvements to the documentation (John Fleck)

                  2.4.26: Oct 18 2002

                  • Patches for Windows CE port, improvements on Windows paths handling
                  • -
                  • Fixes to the validation code (DTD and Schemas), xmlNodeGetPath() ,HTML - serialization, Namespace compliance, and a number of smallproblems
                  • -

                  2.4.25: Sep 26 2002

                  • A number of bug fixes: XPath, validation, Python bindings, DOM andtree, - xmlI/O, Html
                  • +
                  • Fixes to the validation code (DTD and Schemas), xmlNodeGetPath() + ,HTMLserialization, Namespace compliance, and a number of + smallproblems
                  • +

                  2.4.25: Sep 26 2002

                  • A number of bug fixes: XPath, validation, Python bindings, DOM + andtree,xmlI/O, Html
                  • Serious rewrite of XInclude
                  • -
                  • Made XML Schemas regexp part of the default build and APIs, small - fixand improvement of the regexp core
                  • +
                  • Made XML Schemas regexp part of the default build and APIs, smallfixand + improvement of the regexp core
                  • Changed the validation code to reuse XML Schemas regexp APIs
                  • -
                  • Better handling of Windows file paths, improvement of Makefiles - (Igor,Daniel Gehriger, Mark Vakoc)
                  • -
                  • Improved the python I/O bindings, the tests, added resolver and - regexpAPIs
                  • +
                  • Better handling of Windows file paths, improvement of + Makefiles(Igor,Daniel Gehriger, Mark Vakoc)
                  • +
                  • Improved the python I/O bindings, the tests, added resolver + andregexpAPIs
                  • New logos from Marc Liyanage
                  • Tutorial improvements: John Fleck, Christopher Harris
                  • -
                  • Makefile: Fixes for AMD x86_64 (Mandrake), DESTDIR - (ChristopheMerlet)
                  • +
                  • Makefile: Fixes for AMD x86_64 (Mandrake), + DESTDIR(ChristopheMerlet)
                  • removal of all stderr/perror use for error reporting
                  • Better error reporting: XPath and DTD validation
                  • update of the trio portability layer (Bjorn Reese)

                  2.4.24: Aug 22 2002

                  • XPath fixes (William), xf:escape-uri() (Wesley Terpstra)
                  • -
                  • Python binding fixes: makefiles (William), generator, rpm build, - x86-64(fcrozat)
                  • +
                  • Python binding fixes: makefiles (William), generator, rpm + build,x86-64(fcrozat)
                  • HTML <style> and boolean attributes serializer fixes
                  • C14N improvements by Aleksey
                  • doc cleanups: Rick Jones
                  • @@ -780,97 +787,98 @@ the CVScode base.

                    Ther

                  • c14n fixes, testsuite and performances: Aleksey Sanin
                  • added xmlDocFormatDump: Chema Celorio
                  • new tutorial: John Fleck
                  • -
                  • new hash functions and performances: Sander Vesik, portability fix - fromPeter Jacobi
                  • -
                  • a number of bug fixes: XPath (William Brack, Richard Jinks), XML - andHTML parsers, ID lookup function
                  • +
                  • new hash functions and performances: Sander Vesik, portability + fixfromPeter Jacobi
                  • +
                  • a number of bug fixes: XPath (William Brack, Richard Jinks), XMLandHTML + parsers, ID lookup function
                  • removal of all remaining sprintf: Aleksey Sanin
                  • -

                  2.4.22: May 27 2002

                  • a number of bug fixes: configure scripts, base handling, parser, - memoryusage, HTML parser, XPath, documentation (Christian - Cornelssen),indentation, URI parsing
                  • -
                  • Optimizations for XMLSec, fixing and making public some of the - networkprotocol handlers (Aleksey)
                  • +

                  2.4.22: May 27 2002

                  • a number of bug fixes: configure scripts, base handling, + parser,memoryusage, HTML parser, XPath, documentation + (ChristianCornelssen),indentation, URI parsing
                  • +
                  • Optimizations for XMLSec, fixing and making public some of + thenetworkprotocol handlers (Aleksey)
                  • performance patch from Gary Pennington
                  • -
                  • Charles Bozeman provided date and time support for XML - Schemasdatatypes
                  • -

                  2.4.21: Apr 29 2002

                  This release is both a bug fix release and also contains the early -XMLSchemas structuresand datatypescode, beware, -allinterfaces are likely to change, there is huge holes, it is clearly a work -inprogress and don't even think of putting this code in a production -system,it's actually not compiled in by default. The real fixes are:

                  • a couple of bugs or limitations introduced in 2.4.20
                  • +
                  • Charles Bozeman provided date and time support for + XMLSchemasdatatypes
                  • +

                  2.4.21: Apr 29 2002

                  This release is both a bug fix release and also contains the +earlyXMLSchemas structuresand +datatypescode, +beware,allinterfaces are likely to change, there is huge holes, it is clearly +a workinprogress and don't even think of putting this code in a +productionsystem,it's actually not compiled in by default. The real fixes +are:

                  • a couple of bugs or limitations introduced in 2.4.20
                  • patches for Borland C++ and MSC by Igor
                  • some fixes on XPath strings and conformance patches by RichardJinks
                  • patch from Aleksey for the ExcC14N specification
                  • OSF/1 bug fix by Bjorn

                  2.4.20: Apr 15 2002

                  • bug fixes: file descriptor leak, XPath, HTML output, DTD validation
                  • XPath conformance testing by Richard Jinks
                  • -
                  • Portability fixes: Solaris, MPE/iX, Windows, OSF/1, python - bindings,libxml.m4
                  • -

                  2.4.19: Mar 25 2002

                  • bug fixes: half a dozen XPath bugs, Validation, ISO-Latin to - UTF8encoder
                  • +
                  • Portability fixes: Solaris, MPE/iX, Windows, OSF/1, + pythonbindings,libxml.m4
                  • +

                  2.4.19: Mar 25 2002

                  • bug fixes: half a dozen XPath bugs, Validation, ISO-Latin + toUTF8encoder
                  • portability fixes in the HTTP code
                  • memory allocation checks using valgrind, and profiling tests
                  • revamp of the Windows build and Makefiles
                  • -

                  2.4.18: Mar 18 2002

                  • bug fixes: tree, SAX, canonicalization, validation, - portability,XPath
                  • +

                  2.4.18: Mar 18 2002

                  • bug fixes: tree, SAX, canonicalization, + validation,portability,XPath
                  • removed the --with-buffer option it was becoming unmaintainable
                  • serious cleanup of the Python makefiles
                  • speedup patch to XPath very effective for DocBook stylesheets
                  • Fixes for Windows build, cleanup of the documentation
                  • -

                  2.4.17: Mar 8 2002

                  • a lot of bug fixes, including "namespace nodes have no parents - inXPath"
                  • -
                  • fixed/improved the Python wrappers, added more examples and - moreregression tests, XPath extension functions can now return - node-sets
                  • +

                  2.4.17: Mar 8 2002

                  • a lot of bug fixes, including "namespace nodes have no + parentsinXPath"
                  • +
                  • fixed/improved the Python wrappers, added more examples + andmoreregression tests, XPath extension functions can now + returnnode-sets
                  • added the XML Canonicalization support from Aleksey Sanin
                  • -

                  2.4.16: Feb 20 2002

                  • a lot of bug fixes, most of them were triggered by the XML - Testsuitefrom OASIS and W3C. Compliance has been significantly - improved.
                  • +

                  2.4.16: Feb 20 2002

                  • a lot of bug fixes, most of them were triggered by the XMLTestsuitefrom + OASIS and W3C. Compliance has been significantlyimproved.
                  • a couple of portability fixes too.

                  2.4.15: Feb 11 2002

                  • Fixed the Makefiles, especially the python module ones
                  • A few bug fixes and cleanup
                  • Includes cleanup
                  • -

                  2.4.14: Feb 8 2002

                  • Change of License to the MITLicensebasically - for integration in XFree86 codebase, and removingconfusion around the - previous dual-licensing
                  • -
                  • added Python bindings, beta software but should already be - quitecomplete
                  • -
                  • a large number of fixes and cleanups, especially for all - treemanipulations
                  • -
                  • cleanup of the headers, generation of a reference API definition - inXML
                  • +

                  2.4.14: Feb 8 2002

                  • Change of License to the MITLicensebasicallyfor + integration in XFree86 codebase, and removingconfusion around theprevious + dual-licensing
                  • +
                  • added Python bindings, beta software but should already + bequitecomplete
                  • +
                  • a large number of fixes and cleanups, especially for + alltreemanipulations
                  • +
                  • cleanup of the headers, generation of a reference API + definitioninXML

                  2.4.13: Jan 14 2002

                  • update of the documentation: John Fleck and Charlie Bozeman
                  • cleanup of timing code from Justin Fletcher
                  • -
                  • fixes for Windows and initial thread support on Win32: Igor and - SergueiNarojnyi
                  • +
                  • fixes for Windows and initial thread support on Win32: Igor + andSergueiNarojnyi
                  • Cygwin patch from Robert Collins
                  • added xmlSetEntityReferenceFunc() for Keith Isdale work on xsldbg
                  • -

                  2.4.12: Dec 7 2001

                  • a few bug fixes: thread (Gary Pennington), xmllint (Geert - Kloosterman),XML parser (Robin Berjon), XPointer (Danny Jamshy), I/O - cleanups(robert)
                  • +

                  2.4.12: Dec 7 2001

                  • a few bug fixes: thread (Gary Pennington), xmllint + (GeertKloosterman),XML parser (Robin Berjon), XPointer (Danny Jamshy), + I/Ocleanups(robert)
                  • Eric Lavigne contributed project files for MacOS
                  • some makefiles cleanups
                  • -

                  2.4.11: Nov 26 2001

                  • fixed a couple of errors in the includes, fixed a few bugs, some - codecleanups
                  • +

                  2.4.11: Nov 26 2001

                  • fixed a couple of errors in the includes, fixed a few bugs, + somecodecleanups
                  • xmllint man pages improvement by Heiko Rupp
                  • updated VMS build instructions from John A Fotheringham
                  • Windows Makefiles updates from Igor

                  2.4.10: Nov 10 2001

                  • URI escaping fix (Joel Young)
                  • added xmlGetNodePath() (for paths or XPointers generation)
                  • Fixes namespace handling problems when using DTD and validation
                  • -
                  • improvements on xmllint: Morus Walter patches for --format and--encode, - Stefan Kost and Heiko Rupp improvements on the --shell
                  • +
                  • improvements on xmllint: Morus Walter patches for --format + and--encode,Stefan Kost and Heiko Rupp improvements on the --shell
                  • fixes for xmlcatalog linking pointed by Weiqi Gao
                  • fixes to the HTML parser

                  2.4.9: Nov 6 2001

                  • fixes more catalog bugs
                  • avoid a compilation problem, improve xmlGetLineNo()
                  • -

                  2.4.8: Nov 4 2001

                  • fixed SGML catalogs broken in previous release, updated - xmlcatalogtool
                  • +

                  2.4.8: Nov 4 2001

                  • fixed SGML catalogs broken in previous release, + updatedxmlcatalogtool
                  • fixed a compile errors and some includes troubles.

                  2.4.7: Oct 30 2001

                  • exported some debugging interfaces
                  • serious rewrite of the catalog code
                  • -
                  • integrated Gary Pennington thread safety patch, added configure - optionand regression tests
                  • +
                  • integrated Gary Pennington thread safety patch, added + configureoptionand regression tests
                  • removed an HTML parser bug
                  • fixed a couple of potentially serious validation bugs
                  • integrated the SGML DocBook support in xmllint
                  • @@ -886,10 +894,10 @@ system,it's actually not compiled in by default. The real fixes are:

                    • fixed half a dozen bugs reported for libxml or libxslt
                    • updated xmlcatalog to be able to modify SGML super catalogs

                    2.4.5: Sep 14 2001

                    • Remove a few annoying bugs in 2.4.4
                    • -
                    • forces the HTML serializer to output decimal charrefs since someversion - of Netscape can't handle hexadecimal ones
                    • -

                    1.8.16: Sep 14 2001

                    • maintenance release of the old libxml1 branch, couple of bug - andportability fixes
                    • +
                    • forces the HTML serializer to output decimal charrefs since + someversionof Netscape can't handle hexadecimal ones
                    • +

                    1.8.16: Sep 14 2001

                    • maintenance release of the old libxml1 branch, couple of + bugandportability fixes

                    2.4.4: Sep 12 2001

                    • added --convert to xmlcatalog, bug fixes and cleanups of XMLCatalog
                    • a few bug fixes and some portability changes
                    • some documentation cleanups
                    • @@ -908,13 +916,13 @@ system,it's actually not compiled in by default. The real fixes are:

                      • cleanup for alpha and ia64 targets
                      • patch to allow saving through HTTP PUT or POST

                      2.4.0: July 10 2001

                      • Fixed a few bugs in XPath, validation, and tree handling.
                      • -
                      • Fixed XML Base implementation, added a couple of examples to - theregression tests
                      • +
                      • Fixed XML Base implementation, added a couple of examples + totheregression tests
                      • A bit of cleanup
                      • -

                      2.3.14: July 5 2001

                      • fixed some entities problems and reduce memory requirement - whensubstituting them
                      • -
                      • lots of improvements in the XPath queries interpreter can - besubstantially faster
                      • +

                      2.3.14: July 5 2001

                      • fixed some entities problems and reduce memory + requirementwhensubstituting them
                      • +
                      • lots of improvements in the XPath queries interpreter + canbesubstantially faster
                      • Makefiles and configure cleanups
                      • Fixes to XPath variable eval, and compare on empty node set
                      • HTML tag closing bug fixed
                      • @@ -928,38 +936,38 @@ system,it's actually not compiled in by default. The real fixes are:

                        • fixed line number counting
                        • fixed serious problems in the XInclude processing
                        • added support for UTF8 BOM at beginning of entities
                        • -
                        • fixed a strange gcc optimizer bugs in xpath handling of float, - gcc-3.0miscompile uri.c (William), Thomas Leitner provided a fix for - theoptimizer on Tru64
                        • -
                        • incorporated Yon Derek and Igor Zlatkovic fixes and improvements - forcompilation on Windows MSC
                        • +
                        • fixed a strange gcc optimizer bugs in xpath handling of + float,gcc-3.0miscompile uri.c (William), Thomas Leitner provided a fix + fortheoptimizer on Tru64
                        • +
                        • incorporated Yon Derek and Igor Zlatkovic fixes and + improvementsforcompilation on Windows MSC
                        • update of libxml-doc.el (Felix Natter)
                        • fixed 2 bugs in URI normalization code
                        • -

                        2.3.11: June 17 2001

                        • updates to trio, Makefiles and configure should fix some - portabilityproblems (alpha)
                        • -
                        • fixed some HTML serialization problems (pre, script, and - block/inlinehandling), added encoding aware APIs, cleanup of this - code
                        • +

                        2.3.11: June 17 2001

                        • updates to trio, Makefiles and configure should fix + someportabilityproblems (alpha)
                        • +
                        • fixed some HTML serialization problems (pre, script, + andblock/inlinehandling), added encoding aware APIs, cleanup of + thiscode
                        • added xmlHasNsProp()
                        • -
                        • implemented a specific PI for encoding support in the DocBook - SGMLparser
                        • -
                        • some XPath fixes (-Infinity, / as a function parameter and - namespacesnode selection)
                        • +
                        • implemented a specific PI for encoding support in the + DocBookSGMLparser
                        • +
                        • some XPath fixes (-Infinity, / as a function parameter + andnamespacesnode selection)
                        • fixed a performance problem and an error in the validation code
                        • fixed XInclude routine to implement the recursive behaviour
                        • fixed xmlFreeNode problem when libxml is included statically twice
                        • added --version to xmllint for bug reports

                        2.3.10: June 1 2001

                        • fixed the SGML catalog support
                        • -
                        • a number of reported bugs got fixed, in XPath, iconv detection,XInclude - processing
                        • +
                        • a number of reported bugs got fixed, in XPath, iconv + detection,XIncludeprocessing
                        • XPath string function should now handle unicode correctly

                        2.3.9: May 19 2001

                        Lots of bugfixes, and added a basic SGML catalog support:

                        • HTML push bugfix #54891 and another patch from Jonas Borgström
                        • some serious speed optimization again
                        • some documentation cleanups
                        • trying to get better linking on Solaris (-R)
                        • XPath API cleanup from Thomas Broyer
                        • -
                        • Validation bug fixed #54631, added a patch from Gary Pennington, - fixedxmlValidGetValidElements()
                        • +
                        • Validation bug fixed #54631, added a patch from Gary + Pennington,fixedxmlValidGetValidElements()
                        • Added an INSTALL file
                        • Attribute removal added to API: #54433
                        • added a basic support for SGML catalogs
                        • @@ -970,10 +978,10 @@ system,it's actually not compiled in by default. The real fixes are:

                          1.8.13: May 14 2001

                          • bugfixes release of the old libxml1 branch used by Gnome

                          2.3.8: May 3 2001

                          • Integrated an SGML DocBook parser for the Gnome project
                          • Fixed a few things in the HTML parser
                          • -
                          • Fixed some XPath bugs raised by XSLT use, tried to fix the - floatingpoint portability issue
                          • -
                          • Speed improvement (8M/s for SAX, 3M/s for DOM, 1.5M/s forDOM+validation - using the XML REC as input and a 700MHz celeron).
                          • +
                          • Fixed some XPath bugs raised by XSLT use, tried to fix thefloatingpoint + portability issue
                          • +
                          • Speed improvement (8M/s for SAX, 3M/s for DOM, 1.5M/s + forDOM+validationusing the XML REC as input and a 700MHz celeron).
                          • incorporated more Windows cleanup
                          • added xmlSaveFormatFile()
                          • fixed problems in copying nodes with entities references (gdome)
                          • @@ -988,33 +996,33 @@ system,it's actually not compiled in by default. The real fixes are:

                            • Improved validation speed sensible for DocBook
                            • fixed a big bug with ID declared in external parsed entities
                            • portability fixes, update of Trio from Bjorn Reese
                            • -

                            2.3.6: April 8 2001

                            • Code cleanup using extreme gcc compiler warning options, found - andcleared half a dozen potential problem
                            • +

                            2.3.6: April 8 2001

                            • Code cleanup using extreme gcc compiler warning options, + foundandcleared half a dozen potential problem
                            • the Eazel team found an XML parser bug
                            • -
                            • cleaned up the user of some of the string formatting function. used - thetrio library code to provide the one needed when the platform is - missingthem
                            • -
                            • xpath: removed a memory leak and fixed the predicate evaluationproblem, - extended the testsuite and cleaned up the result. XPointer seemsbroken - ...
                            • -

                            2.3.5: Mar 23 2001

                            • Biggest change is separate parsing and evaluation of XPath - expressions,there is some new APIs for this too
                            • -
                            • included a number of bug fixes(XML push parser, 51876, - notations,52299)
                            • +
                            • cleaned up the user of some of the string formatting function. + usedthetrio library code to provide the one needed when the platform + ismissingthem
                            • +
                            • xpath: removed a memory leak and fixed the predicate + evaluationproblem,extended the testsuite and cleaned up the result. + XPointer seemsbroken...
                            • +

                            2.3.5: Mar 23 2001

                            • Biggest change is separate parsing and evaluation of + XPathexpressions,there is some new APIs for this too
                            • +
                            • included a number of bug fixes(XML push parser, + 51876,notations,52299)
                            • Fixed some portability issues

                            2.3.4: Mar 10 2001

                            • Fixed bugs #51860 and #51861
                            • -
                            • Added a global variable xmlDefaultBufferSize to allow default - buffersize to be application tunable.
                            • -
                            • Some cleanup in the validation code, still a bug left and this - partshould probably be rewritten to support ambiguous content model - :-\
                            • -
                            • Fix a couple of serious bugs introduced or raised by changes in - 2.3.3parser
                            • +
                            • Added a global variable xmlDefaultBufferSize to allow defaultbuffersize + to be application tunable.
                            • +
                            • Some cleanup in the validation code, still a bug left and + thispartshould probably be rewritten to support ambiguous content + model:-\
                            • +
                            • Fix a couple of serious bugs introduced or raised by changes + in2.3.3parser
                            • Fixed another bug in xmlNodeGetContent()
                            • Bjorn fixed XPath node collection and Number formatting
                            • Fixed a loop reported in the HTML parsing
                            • -
                            • blank space are reported even if the Dtd content model proves that - theyare formatting spaces, this is for XML conformance
                            • +
                            • blank space are reported even if the Dtd content model proves + thattheyare formatting spaces, this is for XML conformance

                            2.3.3: Mar 1 2001

                            • small change in XPath for XSLT
                            • documentation cleanups
                            • fix in validation by Gary Pennington
                            • @@ -1024,18 +1032,17 @@ system,it's actually not compiled in by default. The real fixes are:

                              • fixed a bug in xmlNodeGetContent
                              • ID/IDREF support partly rewritten by Gary Pennington

                              2.3.1: Feb 15 2001

                              • some XPath and HTML bug fixes for XSLT
                              • -
                              • small extension of the hash table interfaces for DOM - gdome2implementation
                              • +
                              • small extension of the hash table interfaces for + DOMgdome2implementation
                              • A few bug fixes

                              2.3.0: Feb 8 2001 (2.2.12 was on 25 Jan but I didn't kept track)

                              • Lots of XPath bug fixes
                              • -
                              • Add a mode with Dtd lookup but without validation error reporting - forXSLT
                              • +
                              • Add a mode with Dtd lookup but without validation error + reportingforXSLT
                              • Add support for text node without escaping (XSLT)
                              • bug fixes for xmlCheckFilename
                              • validation code bug fixes from Gary Pennington
                              • Patch from Paul D. Smith correcting URI path normalization
                              • -
                              • Patch to allow simultaneous install of libxml-devel - andlibxml2-devel
                              • +
                              • Patch to allow simultaneous install of libxml-develandlibxml2-devel
                              • the example Makefile is now fixed
                              • added HTML to the RPM packages
                              • tree copying bugfixes
                              • @@ -1063,19 +1070,19 @@ system,it's actually not compiled in by default. The real fixes are:

                                • xmlIOParseDTD() added
                                • various small fixes in the HTML, URI, HTTP and XPointer support
                                • some cleanup of the Makefile, autoconf and the distribution content
                                • -

                                2.2.6: Oct 25 2000:

                                • Added an hash table module, migrated a number of internal structure - tothose
                                • +

                                2.2.6: Oct 25 2000:

                                • Added an hash table module, migrated a number of internal + structuretothose
                                • Fixed a posteriori validation problems
                                • HTTP module cleanups
                                • -
                                • HTML parser improvements (tag errors, script/style handling, - attributenormalization)
                                • +
                                • HTML parser improvements (tag errors, script/style + handling,attributenormalization)
                                • coalescing of adjacent text nodes
                                • couple of XPath bug fixes, exported the internal API

                                2.2.5: Oct 15 2000:

                                • XPointer implementation and testsuite
                                • -
                                • Lot of XPath fixes, added variable and functions registration, - moretests
                                • -
                                • Portability fixes, lots of enhancements toward an easy Windows buildand - release
                                • +
                                • Lot of XPath fixes, added variable and functions + registration,moretests
                                • +
                                • Portability fixes, lots of enhancements toward an easy Windows + buildandrelease
                                • Late validation fixes
                                • Integrated a lot of contributed patches
                                • added memory management docs
                                • @@ -1085,113 +1092,113 @@ system,it's actually not compiled in by default. The real fixes are:

                                  • Serious bug fixes on the URI and HTML code

                                  2.2.3: Sep 17 2000

                                  • bug fixes
                                  • cleanup of entity handling code
                                  • -
                                  • overall review of all loops in the parsers, all sprintf usage has - beenchecked too
                                  • -
                                  • Far better handling of larges Dtd. Validating against DocBook XML - Dtdworks smoothly now.
                                  • +
                                  • overall review of all loops in the parsers, all sprintf usage + hasbeenchecked too
                                  • +
                                  • Far better handling of larges Dtd. Validating against DocBook + XMLDtdworks smoothly now.

                                  1.8.10: Sep 6 2000

                                  • bug fix release for some Gnome projects

                                  2.2.2: August 12 2000

                                  • mostly bug fixes
                                  • started adding routines to access xml parser context options

                                  2.2.1: July 21 2000

                                  • a purely bug fixes release
                                  • fixed an encoding support problem when parsing from a memory block
                                  • fixed a DOCTYPE parsing problem
                                  • -
                                  • removed a bug in the function allowing to override the memoryallocation - routines
                                  • +
                                  • removed a bug in the function allowing to override the + memoryallocationroutines

                                  2.2.0: July 14 2000

                                  • applied a lot of portability fixes
                                  • -
                                  • better encoding support/cleanup and saving (content is now - alwaysencoded in UTF-8)
                                  • +
                                  • better encoding support/cleanup and saving (content is nowalwaysencoded + in UTF-8)
                                  • the HTML parser now correctly handles encodings
                                  • added xmlHasProp()
                                  • fixed a serious problem with &#38;
                                  • propagated the fix to FTP client
                                  • cleanup, bugfixes, etc ...
                                  • -
                                  • Added a page about libxml - Internationalizationsupport
                                  • +
                                  • Added a page about libxmlInternationalizationsupport

                                  1.8.9: July 9 2000

                                  • fixed the spec the RPMs should be better
                                  • -
                                  • fixed a serious bug in the FTP implementation, released 1.8.9 to - solverpmfind users problem
                                  • +
                                  • fixed a serious bug in the FTP implementation, released 1.8.9 + tosolverpmfind users problem

                                  2.1.1: July 1 2000

                                  • fixes a couple of bugs in the 2.1.0 packaging
                                  • improvements on the HTML parser
                                  • -

                                  2.1.0 and 1.8.8: June 29 2000

                                  • 1.8.8 is mostly a commodity package for upgrading to libxml2 - accordingto new instructions. It fixes a nasty - problemabout &#38; charref parsing
                                  • -
                                  • 2.1.0 also ease the upgrade from libxml v1 to the recent version. - italso contains numerous fixes and enhancements: +

                                  2.1.0 and 1.8.8: June 29 2000

                                  • 1.8.8 is mostly a commodity package for upgrading to libxml2accordingto + new instructions. It fixes a nastyproblemabout + &#38; charref parsing
                                  • +
                                  • 2.1.0 also ease the upgrade from libxml v1 to the recent version.italso + contains numerous fixes and enhancements:
                                    • added xmlStopParser() to stop parsing
                                    • improved a lot parsing speed when there is large CDATA blocs
                                    • includes XPath patches provided by Picdar Technology
                                    • -
                                    • tried to fix as much as possible DTD validation and - namespacerelated problems
                                    • +
                                    • tried to fix as much as possible DTD validation andnamespacerelated + problems
                                    • output to a given encoding has been added/tested
                                    • lot of various fixes
                                  • -

                                  2.0.0: Apr 12 2000

                                  • First public release of libxml2. If you are using libxml, it's a - goodidea to check the 1.x to 2.x upgrade instructions. NOTE: while - initiallyscheduled for Apr 3 the release occurred only on Apr 12 due to - massiveworkload.
                                  • -
                                  • The include are now located under $prefix/include/libxml (instead - of$prefix/include/gnome-xml), they also are referenced by +

                                  2.0.0: Apr 12 2000

                                  • First public release of libxml2. If you are using libxml, it's + agoodidea to check the 1.x to 2.x upgrade instructions. NOTE: + whileinitiallyscheduled for Apr 3 the release occurred only on Apr 12 due + tomassiveworkload.
                                  • +
                                  • The include are now located under $prefix/include/libxml + (insteadof$prefix/include/gnome-xml), they also are referenced by
                                    #include <libxml/xxx.h>

                                    instead of

                                    #include "xxx.h"
                                  • a new URI module for parsing URIs and following strictly RFC 2396
                                  • -
                                  • the memory allocation routines used by libxml can now be - overloadeddynamically by using xmlMemSetup()
                                  • -
                                  • The previously CVS only tool tester has been - renamedxmllintand is now installed as part of the - libxml2package
                                  • -
                                  • The I/O interface has been revamped. There is now ways to plug - inspecific I/O modules, either at the URI scheme detection level - usingxmlRegisterInputCallbacks() or by passing I/O functions when - creating aparser context using xmlCreateIOParserCtxt()
                                  • -
                                  • there is a C preprocessor macro LIBXML_VERSION providing the - versionnumber of the libxml module in use
                                  • -
                                  • a number of optional features of libxml can now be excluded atconfigure - time (FTP/HTTP/HTML/XPath/Debug)
                                  • +
                                  • the memory allocation routines used by libxml can now + beoverloadeddynamically by using xmlMemSetup()
                                  • +
                                  • The previously CVS only tool tester has + beenrenamedxmllintand is now installed as part of + thelibxml2package
                                  • +
                                  • The I/O interface has been revamped. There is now ways to + pluginspecific I/O modules, either at the URI scheme detection + levelusingxmlRegisterInputCallbacks() or by passing I/O functions + whencreating aparser context using xmlCreateIOParserCtxt()
                                  • +
                                  • there is a C preprocessor macro LIBXML_VERSION providing + theversionnumber of the libxml module in use
                                  • +
                                  • a number of optional features of libxml can now be excluded + atconfiguretime (FTP/HTTP/HTML/XPath/Debug)

                                  2.0.0beta: Mar 14 2000

                                  • This is a first Beta release of libxml version 2
                                  • -
                                  • It's available only fromxmlsoft.orgFTP, it's packaged as - libxml2-2.0.0beta and available as tar andRPMs
                                  • -
                                  • This version is now the head in the Gnome CVS base, the old one - isavailable under the tag LIB_XML_1_X
                                  • -
                                  • This includes a very large set of changes. From a programmatic pointof - view applications should not have to be modified too much, check theupgrade page
                                  • +
                                  • It's available only fromxmlsoft.orgFTP, it's packaged + aslibxml2-2.0.0beta and available as tar andRPMs
                                  • +
                                  • This version is now the head in the Gnome CVS base, the old + oneisavailable under the tag LIB_XML_1_X
                                  • +
                                  • This includes a very large set of changes. From a programmatic + pointofview applications should not have to be modified too much, check + theupgrade page
                                  • Some interfaces may changes (especially a bit about encoding).
                                  • the updates includes: -
                                    • fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems - correctlyhandled now
                                    • -
                                    • Better handling of entities, especially well-formedness checkingand - proper PEref extensions in external subsets
                                    • + -
                                    • Serious progress were made toward compliance, here are the result of the testagainst - theOASIS testsuite (except the Japanese tests since I don't support - thatencoding yet). This URL is rebuilt every couple of hours using the - CVShead version.
                                    • +
                                    • Serious progress were made toward compliance, here are the result of the + testagainsttheOASIS testsuite (except the Japanese tests since I + don't supportthatencoding yet). This URL is rebuilt every couple of hours + using theCVShead version.

                                    1.8.7: Mar 6 2000

                                    • This is a bug fix release:
                                    • -
                                    • It is possible to disable the ignorable blanks heuristic used - bylibxml-1.x, a new function xmlKeepBlanksDefault(0) will allow this. - Notethat for adherence to XML spec, this behaviour will be disabled - bydefault in 2.x . The same function will allow to keep compatibility - forold code.
                                    • -
                                    • Blanks in <a> </a> constructs are not ignored - anymore,avoiding heuristic is really the Right Way :-\
                                    • -
                                    • The unchecked use of snprintf which was breaking - libxml-1.8.6compilation on some platforms has been fixed
                                    • -
                                    • nanoftp.c nanohttp.c: Fixed '#' and '?' stripping when - processingURIs
                                    • -

                                    1.8.6: Jan 31 2000

                                    • added a nanoFTP transport module, debugged until the new version of rpmfindcan - useit without troubles
                                    • -

                                    1.8.5: Jan 21 2000

                                    • adding APIs to parse a well balanced chunk of XML (production [43] contentof theXML - spec)
                                    • +
                                    • It is possible to disable the ignorable blanks heuristic + usedbylibxml-1.x, a new function xmlKeepBlanksDefault(0) will allow + this.Notethat for adherence to XML spec, this behaviour will be + disabledbydefault in 2.x . The same function will allow to keep + compatibilityforold code.
                                    • +
                                    • Blanks in <a> </a> constructs are not + ignoredanymore,avoiding heuristic is really the Right Way :-\
                                    • +
                                    • The unchecked use of snprintf which was breakinglibxml-1.8.6compilation + on some platforms has been fixed
                                    • +
                                    • nanoftp.c nanohttp.c: Fixed '#' and '?' stripping + whenprocessingURIs
                                    • +

                                    1.8.6: Jan 31 2000

                                    • added a nanoFTP transport module, debugged until the new version of rpmfindcanuseit + without troubles
                                    • +

                                    1.8.5: Jan 21 2000

                                    • adding APIs to parse a well balanced chunk of XML (production [43] contentof + theXMLspec)
                                    • fixed a hideous bug in xmlGetProp pointed by Rune.Djurhuus@fast.no
                                    • -
                                    • Jody Goldberg <jgoldberg@home.com> provided another patch - tryingto solve the zlib checks problems
                                    • -
                                    • The current state in gnome CVS base is expected to ship as 1.8.5 - withgnumeric soon
                                    • +
                                    • Jody Goldberg <jgoldberg@home.com> provided another patchtryingto + solve the zlib checks problems
                                    • +
                                    • The current state in gnome CVS base is expected to ship as + 1.8.5withgnumeric soon

                                    1.8.4: Jan 13 2000

                                    • bug fixes, reintroduced xmlNewGlobalNs(), fixed xmlNewNs()
                                    • all exit() call should have been removed from libxml
                                    • fixed a problem with INCLUDE_WINSOCK on WIN32 platform
                                    • @@ -1202,50 +1209,50 @@ system,it's actually not compiled in by default. The real fixes are:

                                      • fixed the DTD parsing code to work with the xhtml DTD
                                      • added xmlRemoveProp(), xmlRemoveID() and xmlRemoveRef()
                                      • Fixed bugs in xmlNewNs()
                                      • -
                                      • External entity loading code has been revamped, now it - usesxmlLoadExternalEntity(), some fix on entities processing were - added
                                      • +
                                      • External entity loading code has been revamped, now + itusesxmlLoadExternalEntity(), some fix on entities processing + wereadded
                                      • cleaned up WIN32 includes of socket stuff
                                      • -

                                      1.8.2: Dec 21 1999

                                      • I got another problem with includes and C++, I hope this issue is - fixedfor good this time
                                      • -
                                      • Added a few tree modification functions: - xmlReplaceNode,xmlAddPrevSibling, xmlAddNextSibling, xmlNodeSetName - andxmlDocSetRootElement
                                      • +

                                      1.8.2: Dec 21 1999

                                      • I got another problem with includes and C++, I hope this issue + isfixedfor good this time
                                      • +
                                      • Added a few tree modification + functions:xmlReplaceNode,xmlAddPrevSibling, xmlAddNextSibling, + xmlNodeSetNameandxmlDocSetRootElement
                                      • Tried to improve the HTML output with help from Chris Lahey
                                      • -

                                      1.8.1: Dec 18 1999

                                      • various patches to avoid troubles when using libxml with C++ - compilersthe "namespace" keyword and C escaping in include files
                                      • +

                                      1.8.1: Dec 18 1999

                                      • various patches to avoid troubles when using libxml with + C++compilersthe "namespace" keyword and C escaping in include files
                                      • a problem in one of the core macros IS_CHAR was corrected
                                      • -
                                      • fixed a bug introduced in 1.8.0 breaking default namespace - processing,and more specifically the Dia application
                                      • -
                                      • fixed a posteriori validation (validation after parsing, or by using - aDtd not specified in the original document)
                                      • +
                                      • fixed a bug introduced in 1.8.0 breaking default + namespaceprocessing,and more specifically the Dia application
                                      • +
                                      • fixed a posteriori validation (validation after parsing, or by + usingaDtd not specified in the original document)
                                      • fixed a bug in

                                      1.8.0: Dec 12 1999

                                      • cleanup, especially memory wise
                                      • -
                                      • the parser should be more reliable, especially the HTML one, it - shouldnot crash, whatever the input !
                                      • -
                                      • Integrated various patches, especially a speedup improvement for - largedataset from Carl - Nygard,configure with --with-buffers to enable them.
                                      • +
                                      • the parser should be more reliable, especially the HTML one, + itshouldnot crash, whatever the input !
                                      • +
                                      • Integrated various patches, especially a speedup improvement + forlargedataset from CarlNygard,configure with + --with-buffers to enable them.
                                      • attribute normalization, oops should have been added long ago !
                                      • -
                                      • attributes defaulted from DTDs should be available, xmlSetProp() - nowdoes entities escaping by default.
                                      • +
                                      • attributes defaulted from DTDs should be available, xmlSetProp()nowdoes + entities escaping by default.

                                      1.7.4: Oct 25 1999

                                      • Lots of HTML improvement
                                      • Fixed some errors when saving both XML and HTML
                                      • More examples, the regression tests should now look clean
                                      • Fixed a bug with contiguous charref

                                      1.7.3: Sep 29 1999

                                      • portability problems fixed
                                      • -
                                      • snprintf was used unconditionally, leading to link problems on - systemwere it's not available, fixed
                                      • -

                                      1.7.1: Sep 24 1999

                                      • The basic type for strings manipulated by libxml has been renamed - in1.7.1 from CHARto xmlChar. The - reasonis that CHAR was conflicting with a predefined type on Windows. - Howeveron non WIN32 environment, compatibility is provided by the way of - a#define .
                                      • -
                                      • Changed another error : the use of a structure field called errno, - andleading to troubles on platforms where it's a macro
                                      • +
                                      • snprintf was used unconditionally, leading to link problems + onsystemwere it's not available, fixed
                                      • +

                                      1.7.1: Sep 24 1999

                                      • The basic type for strings manipulated by libxml has been + renamedin1.7.1 from CHARto xmlChar. + Thereasonis that CHAR was conflicting with a predefined type on + Windows.Howeveron non WIN32 environment, compatibility is provided by the + way ofa#define .
                                      • +
                                      • Changed another error : the use of a structure field called + errno,andleading to troubles on platforms where it's a macro

                                      1.7.0: Sep 23 1999

                                      • Added the ability to fetch remote DTD or parsed entities, see the nanohttpmodule.
                                      • -
                                      • Added an errno to report errors by another mean than a simple - printflike callback
                                      • +
                                      • Added an errno to report errors by another mean than a simpleprintflike + callback
                                      • Finished ID/IDREF support and checking when validation
                                      • Serious memory leaks fixed (there is now a memory wrappermodule)
                                      • Improvement of XPathimplementation
                                      • diff --git a/doc/python.html b/doc/python.html index 7d451c57..adb3d36d 100644 --- a/doc/python.html +++ b/doc/python.html @@ -7,69 +7,66 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Python and bindings
                                        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                        Made with Libxml2 Logo

                                        The XML C parser and toolkit of Gnome

                                        Python and bindings

                                        Developer Menu
                                        API Indexes
                                        Related links

                                        There are a number of language bindings and wrappers available forlibxml2, -the list below is not exhaustive. Please contact the xml-bindings@gnome.org(archives) inorder to -get updates to this list or to discuss the specific topic of libxml2or -libxslt wrappers or bindings:

                                        • Libxml++seems - themost up-to-date C++ bindings for libxml2, check the documentationand - the examples.
                                        • -
                                        • There is another C++ - wrapperbased on the gdome2 bindingsmaintained by Tobias Peters.
                                        • +Python and bindings
                                          Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                          Made with Libxml2 Logo

                                          The XML C parser and toolkit of Gnome

                                          Python and bindings

                                          Developer Menu
                                          API Indexes
                                          Related links

                                          There are a number of language bindings and wrappers available +forlibxml2,the list below is not exhaustive. Please contact the xml-bindings@gnome.org(archives) inorder +toget updates to this list or to discuss the specific topic of +libxml2orlibxslt wrappers or bindings:

                                          The distribution includes a set of Python bindings, which are guaranteedto -be maintained as part of the library in the future, though the -Pythoninterface have not yet reached the completeness of the C API.

                                          Note that some of the Python purist dislike the default set of -Pythonbindings, rather than complaining I suggest they have a look at lxml the more pythonic bindings for -libxml2and libxsltand help -MartijnFaassencomplete those.

                                          Stéphane -Bidoulmaintains a -Windows portof the Python bindings.

                                          Note to people interested in building bindings, the API is formalized asan XML API description filewhich allows toautomate -a large part of the Python bindings, this includes functiondescriptions, -enums, structures, typedefs, etc... The Python script used tobuild the -bindings is python/generator.py in the source distribution.

                                          To install the Python bindings there are 2 options:

                                          • If you use an RPM based distribution, simply install the libxml2-pythonRPM(and - if needed the libxslt-pythonRPM).
                                          • -
                                          • Otherwise use the libxml2-pythonmodule - distributioncorresponding to your installed version oflibxml2 and - libxslt. Note that to install it you will need both libxml2and libxslt - installed and run "python setup.py build install" in themodule tree.
                                          • -

                                          The distribution includes a set of examples and regression tests for -thepython bindings in the python/testsdirectory. Here are -someexcerpts from those tests:

                                          tst.py:

                                          This is a basic test of the file interface and DOM navigation:

                                          import libxml2, sys
                                          +  
                                        • LibxmlJisaneffort + to create a 100% JAXP-compatible Java wrapper for libxml2andlibxslt as + part of GNU ClasspathX project.
                                        • +
                                        • Patrick McPhee provides Rexx bindings fof libxml2 and libxslt, + lookforRexxXML.
                                        • +
                                        • SatimageprovidesXMLLibosax.This + is an osax for Mac OS X with a set of commands toimplement inAppleScript + the XML DOM, XPATH and XSLT. Also includescommands forProperty-lists + (Apple's fast lookup table XML format.)
                                        • +
                                        • Francesco Montorsi developped wxXml2wrappersthat + interface libxml2, allowing wxWidgets applications toload/save/editXML + instances.
                                        • +

                                          The distribution includes a set of Python bindings, which are +guaranteedtobe maintained as part of the library in the future, though +thePythoninterface have not yet reached the completeness of the C API.

                                          Note that some of the Python purist dislike the default set +ofPythonbindings, rather than complaining I suggest they have a look at lxml the more pythonic bindings +forlibxml2and libxsltand helpMartijnFaassencomplete +those.

                                          StéphaneBidoulmaintains aWindows portof the Python +bindings.

                                          Note to people interested in building bindings, the API is formalized asan XML API description filewhich allows +toautomatea large part of the Python bindings, this includes +functiondescriptions,enums, structures, typedefs, etc... The Python script +used tobuild thebindings is python/generator.py in the source +distribution.

                                          To install the Python bindings there are 2 options:

                                          • If you use an RPM based distribution, simply install the libxml2-pythonRPM(andif + needed the libxslt-pythonRPM).
                                          • +
                                          • Otherwise use the libxml2-pythonmoduledistributioncorresponding + to your installed version oflibxml2 andlibxslt. Note that to install it + you will need both libxml2and libxsltinstalled and run "python setup.py + build install" in themodule tree.
                                          • +

                                          The distribution includes a set of examples and regression tests +forthepython bindings in the python/testsdirectory. Here +aresomeexcerpts from those tests:

                                          tst.py:

                                          This is a basic test of the file interface and DOM navigation:

                                          import libxml2, sys
                                           
                                           doc = libxml2.parseFile("tst.xml")
                                           if doc.name != "tst.xml":
                                          @@ -83,25 +80,25 @@ child = root.children
                                           if child.name != "foo":
                                               print "child.name failed"
                                               sys.exit(1)
                                          -doc.freeDoc()

                                          The Python module is called libxml2; parseFile is the equivalent -ofxmlParseFile (most of the bindings are automatically generated, and the -xmlprefix is removed and the casing convention are kept). All node seen at -thebinding level share the same subset of accessors:

                                          • name: returns the node name
                                          • +doc.freeDoc()

                                          The Python module is called libxml2; parseFile is the +equivalentofxmlParseFile (most of the bindings are automatically generated, +and thexmlprefix is removed and the casing convention are kept). All node +seen atthebinding level share the same subset of accessors:

                                          • name: returns the node name
                                          • type: returns a string indicating the node type
                                          • -
                                          • content: returns the content of the node, it is based - onxmlNodeGetContent() and hence is recursive.
                                          • -
                                          • parent, children, - last,next, prev, - doc,properties: pointing to the associated - element in the tree,those may return None in case no such link - exists.
                                          • -

                                          Also note the need to explicitly deallocate documents with freeDoc() -.Reference counting for libxml2 trees would need quite a lot of work -tofunction properly, and rather than risk memory leaks if not -implementedcorrectly it sounds safer to have an explicit function to free a -tree. Thewrapper python objects like doc, root or child are them -automatically garbagecollected.

                                          validate.py:

                                          This test check the validation interfaces and redirection of -errormessages:

                                          import libxml2
                                          +  
                                        • content: returns the content of the node, it is + basedonxmlNodeGetContent() and hence is recursive.
                                        • +
                                        • parent, + children,last,next, + prev,doc,properties: pointing to + the associatedelement in the tree,those may return None in case no such + linkexists.
                                        • +

                                          Also note the need to explicitly deallocate documents with +freeDoc().Reference counting for libxml2 trees would need quite a lot of +worktofunction properly, and rather than risk memory leaks if +notimplementedcorrectly it sounds safer to have an explicit function to free +atree. Thewrapper python objects like doc, root or child are +themautomatically garbagecollected.

                                          validate.py:

                                          This test check the validation interfaces and redirection +oferrormessages:

                                          import libxml2
                                           
                                           #deactivate error messages from the validation
                                           def noerr(ctx, str):
                                          @@ -116,28 +113,29 @@ doc = ctxt.doc()
                                           valid = ctxt.isValid()
                                           doc.freeDoc()
                                           if valid != 0:
                                          -    print "validity check failed"

                                          The first thing to notice is the call to registerErrorHandler(), itdefines -a new error handler global to the library. It is used to avoid seeingthe -error messages when trying to validate the invalid document.

                                          The main interest of that test is the creation of a parser context -withcreateFileParserCtxt() and how the behaviour can be changed before -callingparseDocument() . Similarly the informations resulting from the -parsing phaseare also available using context methods.

                                          Contexts like nodes are defined as class and the libxml2 wrappers maps -theC function interfaces in terms of objects method as much as possible. -Thebest to get a complete view of what methods are supported is to look at -thelibxml2.py module containing all the wrappers.

                                          push.py:

                                          This test show how to activate the push parser interface:

                                          import libxml2
                                          +    print "validity check failed"

                                          The first thing to notice is the call to registerErrorHandler(), +itdefinesa new error handler global to the library. It is used to avoid +seeingtheerror messages when trying to validate the invalid document.

                                          The main interest of that test is the creation of a parser +contextwithcreateFileParserCtxt() and how the behaviour can be changed +beforecallingparseDocument() . Similarly the informations resulting from +theparsing phaseare also available using context methods.

                                          Contexts like nodes are defined as class and the libxml2 wrappers mapstheC +function interfaces in terms of objects method as much as possible.Thebest to +get a complete view of what methods are supported is to look atthelibxml2.py +module containing all the wrappers.

                                          push.py:

                                          This test show how to activate the push parser interface:

                                          import libxml2
                                           
                                           ctxt = libxml2.createPushParser(None, "<foo", 4, "test.xml")
                                           ctxt.parseChunk("/>", 2, 1)
                                           doc = ctxt.doc()
                                           
                                          -doc.freeDoc()

                                          The context is created with a special call based on -thexmlCreatePushParser() from the C library. The first argument is an -optionalSAX callback object, then the initial set of data, the length and the -name ofthe resource in case URI-References need to be computed by the -parser.

                                          Then the data are pushed using the parseChunk() method, the last -callsetting the third argument terminate to 1.

                                          pushSAX.py:

                                          this test show the use of the event based parsing interfaces. In this -casethe parser does not build a document, but provides callback information -asthe parser makes progresses analyzing the data being provided:

                                          import libxml2
                                          +doc.freeDoc()

                                          The context is created with a special call based +onthexmlCreatePushParser() from the C library. The first argument is +anoptionalSAX callback object, then the initial set of data, the length and +thename ofthe resource in case URI-References need to be computed by +theparser.

                                          Then the data are pushed using the parseChunk() method, the +lastcallsetting the third argument terminate to 1.

                                          pushSAX.py:

                                          this test show the use of the event based parsing interfaces. In +thiscasethe parser does not build a document, but provides callback +informationasthe parser makes progresses analyzing the data being +provided:

                                          import libxml2
                                           log = ""
                                           
                                           class callback:
                                          @@ -185,15 +183,16 @@ reference = "startDocument:startElement foo {'url': 'tst'}:" + \
                                                       "characters: bar:endElement foo:endDocument:"
                                           if log != reference:
                                               print "Error got: %s" % log
                                          -    print "Expected: %s" % reference

                                          The key object in that test is the handler, it provides a number of -entrypoints which can be called by the parser as it makes progresses to -indicatethe information set obtained. The full set of callback is larger than -whatthe callback class in that specific example implements (see the -SAXdefinition for a complete list). The wrapper will only call those supplied -bythe object when activated. The startElement receives the names of the -elementand a dictionary containing the attributes carried by this element.

                                          Also note that the reference string generated from the callback shows -asingle character call even though the string "bar" is passed to the -parserfrom 2 different call to parseChunk()

                                          xpath.py:

                                          This is a basic test of XPath wrappers support

                                          import libxml2
                                          +    print "Expected: %s" % reference

                                          The key object in that test is the handler, it provides a number +ofentrypoints which can be called by the parser as it makes progresses +toindicatethe information set obtained. The full set of callback is larger +thanwhatthe callback class in that specific example implements (see +theSAXdefinition for a complete list). The wrapper will only call those +suppliedbythe object when activated. The startElement receives the names of +theelementand a dictionary containing the attributes carried by this +element.

                                          Also note that the reference string generated from the callback +showsasingle character call even though the string "bar" is passed to +theparserfrom 2 different call to parseChunk()

                                          xpath.py:

                                          This is a basic test of XPath wrappers support

                                          import libxml2
                                           
                                           doc = libxml2.parseFile("tst.xml")
                                           ctxt = doc.xpathNewContext()
                                          @@ -205,15 +204,15 @@ if res[0].name != "doc" or res[1].name != "foo":
                                               print "xpath query: wrong node set value"
                                               sys.exit(1)
                                           doc.freeDoc()
                                          -ctxt.xpathFreeContext()

                                          This test parses a file, then create an XPath context to evaluate -XPathexpression on it. The xpathEval() method execute an XPath query and -returnsthe result mapped in a Python way. String and numbers are natively -converted,and node sets are returned as a tuple of libxml2 Python nodes -wrappers. Likethe document, the XPath context need to be freed explicitly, -also not thatthe result of the XPath query may point back to the document -tree and hencethe document must be freed after the result of the query is -used.

                                          xpathext.py:

                                          This test shows how to extend the XPath engine with functions written -inpython:

                                          import libxml2
                                          +ctxt.xpathFreeContext()

                                          This test parses a file, then create an XPath context to +evaluateXPathexpression on it. The xpathEval() method execute an XPath query +andreturnsthe result mapped in a Python way. String and numbers are +nativelyconverted,and node sets are returned as a tuple of libxml2 Python +nodeswrappers. Likethe document, the XPath context need to be freed +explicitly,also not thatthe result of the XPath query may point back to the +documenttree and hencethe document must be freed after the result of the +query isused.

                                          xpathext.py:

                                          This test shows how to extend the XPath engine with functions +writteninpython:

                                          import libxml2
                                           
                                           def foo(ctx, x):
                                               return x + 1
                                          @@ -225,9 +224,10 @@ res = ctxt.xpathEval("foo(1)")
                                           if res != 2:
                                               print "xpath extension failure"
                                           doc.freeDoc()
                                          -ctxt.xpathFreeContext()

                                          Note how the extension function is registered with the context (but -thatpart is not yet finalized, this may change slightly in the future).

                                          tstxpath.py:

                                          This test is similar to the previous one but shows how the -extensionfunction can access the XPath evaluation context:

                                          def foo(ctx, x):
                                          +ctxt.xpathFreeContext()

                                          Note how the extension function is registered with the context +(butthatpart is not yet finalized, this may change slightly in the +future).

                                          tstxpath.py:

                                          This test is similar to the previous one but shows how +theextensionfunction can access the XPath evaluation context:

                                          def foo(ctx, x):
                                               global called
                                           
                                               #
                                          @@ -236,16 +236,16 @@ extensionfunction can access the XPath evaluation context:

                                          def foo(ctx,
                                               pctxt = libxml2.xpathParserContext(_obj=ctx)
                                               ctxt = pctxt.context()
                                               called = ctxt.function()
                                          -    return x + 1

                                          All the interfaces around the XPath parser(or rather evaluation) -contextare not finalized, but it should be sufficient to do contextual work -at theevaluation point.

                                          Memory debugging:

                                          last but not least, all tests starts with the following prologue:

                                          #memory debug specific
                                          +    return x + 1

                                          All the interfaces around the XPath parser(or rather evaluation)contextare +not finalized, but it should be sufficient to do contextual workat +theevaluation point.

                                          Memory debugging:

                                          last but not least, all tests starts with the following prologue:

                                          #memory debug specific
                                           libxml2.debugMemory(1)

                                          and ends with the following epilogue:

                                          #memory debug specific
                                           libxml2.cleanupParser()
                                           if libxml2.debugMemory(1) == 0:
                                               print "OK"
                                           else:
                                               print "Memory leak %d bytes" % (libxml2.debugMemory(1))
                                          -    libxml2.dumpMemory()

                                          Those activate the memory debugging interface of libxml2 where -allallocated block in the library are tracked. The prologue then cleans up -thelibrary state and checks that all allocated memory has been freed. If not -itcalls dumpMemory() which saves that list in a .memdumpfile.

                                          Daniel Veillard

                                          + libxml2.dumpMemory()

                                          Those activate the memory debugging interface of libxml2 whereallallocated +block in the library are tracked. The prologue then cleans upthelibrary state +and checks that all allocated memory has been freed. If notitcalls +dumpMemory() which saves that list in a .memdumpfile.

                                          Daniel Veillard

                                        diff --git a/doc/threads.html b/doc/threads.html index 09a2b229..e6fe497c 100644 --- a/doc/threads.html +++ b/doc/threads.html @@ -7,17 +7,16 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -Thread safety
                                        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                        Made with Libxml2 Logo

                                        The XML C parser and toolkit of Gnome

                                        Thread safety

                                        Developer Menu
                                        API Indexes
                                        Related links

                                        Starting with 2.4.7, libxml2 makes provisions to ensure that -concurrentthreads can safely work in parallel parsing different documents. -There ishowever a couple of things to do to ensure it:

                                        • configure the library accordingly using the --with-threads options
                                        • -
                                        • call xmlInitParser() in the "main" thread before using any of - thelibxml2 API (except possibly selecting a different memory - allocator)
                                        • -

                                        Note that the thread safety cannot be ensured for multiple threads -sharingthe same document, the locking must be done at the application level, -libxmlexports a basic mutex and reentrant mutexes API in -<libxml/threads.h>.The parts of the library checked for thread safety -are:

                                        XPath is supposed to be thread safe now, but this +wasn'ttestedseriously.

                                        Daniel Veillard

                                        diff --git a/doc/tree.html b/doc/tree.html index 8cf4c0f3..238cd6db 100644 --- a/doc/tree.html +++ b/doc/tree.html @@ -7,23 +7,22 @@ H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family: Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link, A:visited, A:active { text-decoration: underline } -The tree output
                                        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                        Made with Libxml2 Logo

                                        The XML C parser and toolkit of Gnome

                                        The tree output

                                        Developer Menu
                                        API Indexes
                                        Related links

                                        The parser returns a tree built during the document analysis. The -valuereturned is an xmlDocPtr(i.e., a pointer to -anxmlDocstructure). This structure contains information -suchas the file name, the document type, and a -childrenpointerwhich is the root of the document (or more -exactly the first child under theroot which is the document). The tree is -made of xmlNodes,chained in double-linked lists of siblings -and with a children<->parentrelationship. An xmlNode can also carry -properties (a chain of xmlAttrstructures). An attribute may have a value -which is a list of TEXT orENTITY_REF nodes.

                                        Here is an example (erroneous with respect to the XML spec since -thereshould be only one ELEMENT under the root):

                                         structure.gif

                                        In the source package there is a small program (not installed by -default)called xmllintwhich parses XML files given as -argument andprints them back as parsed. This is useful for detecting errors -both in XMLcode and in the XML parser itself. It has an option ---debugwhich prints the actual in-memory structure of the -document; here is theresult with the examplegiven -before:

                                        DOCUMENT
                                        +The tree output
                                        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                        Made with Libxml2 Logo

                                        The XML C parser and toolkit of Gnome

                                        The tree output

                                        Developer Menu
                                        API Indexes
                                        Related links

                                        The parser returns a tree built during the document analysis. +Thevaluereturned is an xmlDocPtr(i.e., a pointer +toanxmlDocstructure). This structure contains +informationsuchas the file name, the document type, and +achildrenpointerwhich is the root of the document (or +moreexactly the first child under theroot which is the document). The tree +ismade of xmlNodes,chained in double-linked lists of +siblingsand with a children<->parentrelationship. An xmlNode can also +carryproperties (a chain of xmlAttrstructures). An attribute may have a +valuewhich is a list of TEXT orENTITY_REF nodes.

                                        Here is an example (erroneous with respect to the XML spec +sincethereshould be only one ELEMENT under the root):

                                         structure.gif

                                        In the source package there is a small program (not installed +bydefault)called xmllintwhich parses XML files given +asargument andprints them back as parsed. This is useful for detecting +errorsboth in XMLcode and in the XML parser itself. It has an +option--debugwhich prints the actual in-memory structure of +thedocument; here is theresult with the examplegivenbefore:

                                        DOCUMENT
                                         version=1.0
                                         standalone=true
                                           ELEMENT EXAMPLE
                                        diff --git a/doc/upgrade.html b/doc/upgrade.html
                                        index b44ca96c..590b8a42 100644
                                        --- a/doc/upgrade.html
                                        +++ b/doc/upgrade.html
                                        @@ -7,102 +7,102 @@ H1 {font-family: Verdana,Arial,Helvetica}
                                         H2 {font-family: Verdana,Arial,Helvetica}
                                         H3 {font-family: Verdana,Arial,Helvetica}
                                         A:link, A:visited, A:active { text-decoration: underline }
                                        -Upgrading 1.x code
                                        Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                        Made with Libxml2 Logo

                                        The XML C parser and toolkit of Gnome

                                        Upgrading 1.x code

                                        Developer Menu
                                        API Indexes
                                        Related links

                                        Incompatible changes:

                                        Version 2 of libxml2 is the first version introducing serious -backwardincompatible changes. The main goals were:

                                        • a general cleanup. A number of mistakes inherited from the very - earlyversions couldn't be changed due to compatibility constraints. - Examplethe "childs" element in the nodes.
                                        • -
                                        • Uniformization of the various nodes, at least for their header and - linkparts (doc, parent, children, prev, next), the goal is a - simplerprogramming model and simplifying the task of the DOM - implementors.
                                        • -
                                        • better conformances to the XML specification, for example version - 1.xhad an heuristic to try to detect ignorable white spaces. As a result - theSAX event generated were ignorableWhitespace() while the spec - requirescharacter() in that case. This also mean that a number of DOM - nodecontaining blank text may populate the DOM tree which were not - presentbefore.
                                        • -

                                        How to fix libxml-1.x code:

                                        So client code of libxml designed to run with version 1.x may have to -bechanged to compile against version 2.x of libxml. Here is a list of -changesthat I have collected, they may not be sufficient, so in case you find -otherchange which are required, drop -me amail:

                                        1. The package name have changed from libxml to libxml2, the library - nameis now -lxml2 . There is a new xml2-config script which should be - used toselect the right parameters libxml2
                                        2. -
                                        3. Node childsfield has been - renamedchildrenso s/childs/children/g should be - applied(probability of having "childs" anywhere else is close to 0+
                                        4. -
                                        5. The document don't have anymore a rootelement it - hasbeen replaced by childrenand usually you will get - alist of element here. For example a Dtd element for the internal - subsetand it's declaration may be found in that list, as well as - processinginstructions or comments found before or after the document - root element.Use xmlDocGetRootElement(doc)to get the - root element ofa document. Alternatively if you are sure to not reference - DTDs nor havePIs or comments before or after the root - elements/->root/->children/g will probably do it.
                                        6. -
                                        7. The white space issue, this one is more complex, unless special case - ofvalidating parsing, the line breaks and spaces usually used for - indentingand formatting the document content becomes significant. So they - arereported by SAX and if your using the DOM tree, corresponding nodes - aregenerated. Too approach can be taken: -
                                          1. lazy one, use the compatibility - callxmlKeepBlanksDefault(0)but be aware that you - arerelying on a special (and possibly broken) set of heuristics - oflibxml to detect ignorable blanks. Don't complain if it breaks - ormake your application not 100% clean w.r.t. to it's input.
                                          2. -
                                          3. the Right Way: change you code to accept possibly - insignificantblanks characters, or have your tree populated with - weird blank textnodes. You can spot them using the commodity - functionxmlIsBlankNode(node)returning 1 for such - blanknodes.
                                          4. -

                                          Note also that with the new default the output functions don't add - anyextra indentation when saving a tree in order to be able to round - trip(read and save) without inflating the document with extra - formattingchars.

                                          +Upgrading 1.x code
                                          Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
                                          Made with Libxml2 Logo

                                          The XML C parser and toolkit of Gnome

                                          Upgrading 1.x code

                                          Developer Menu
                                          API Indexes
                                          Related links

                                          Incompatible changes:

                                          Version 2 of libxml2 is the first version introducing +seriousbackwardincompatible changes. The main goals were:

                                          • a general cleanup. A number of mistakes inherited from the + veryearlyversions couldn't be changed due to compatibility + constraints.Examplethe "childs" element in the nodes.
                                          • +
                                          • Uniformization of the various nodes, at least for their header + andlinkparts (doc, parent, children, prev, next), the goal is + asimplerprogramming model and simplifying the task of the + DOMimplementors.
                                          • +
                                          • better conformances to the XML specification, for example version1.xhad + an heuristic to try to detect ignorable white spaces. As a resulttheSAX + event generated were ignorableWhitespace() while the + specrequirescharacter() in that case. This also mean that a number of + DOMnodecontaining blank text may populate the DOM tree which were + notpresentbefore.
                                          • +

                                          How to fix libxml-1.x code:

                                          So client code of libxml designed to run with version 1.x may have +tobechanged to compile against version 2.x of libxml. Here is a list +ofchangesthat I have collected, they may not be sufficient, so in case you +findotherchange which are required, dropme amail:

                                          1. The package name have changed from libxml to libxml2, the librarynameis + now -lxml2 . There is a new xml2-config script which should beused + toselect the right parameters libxml2
                                          2. +
                                          3. Node childsfield has + beenrenamedchildrenso s/childs/children/g should + beapplied(probability of having "childs" anywhere else is close to 0+
                                          4. +
                                          5. The document don't have anymore a rootelement + ithasbeen replaced by childrenand usually you will + getalist of element here. For example a Dtd element for the + internalsubsetand it's declaration may be found in that list, as well + asprocessinginstructions or comments found before or after the + documentroot element.Use xmlDocGetRootElement(doc)to get + theroot element ofa document. Alternatively if you are sure to not + referenceDTDs nor havePIs or comments before or after the + rootelements/->root/->children/g will probably do it.
                                          6. +
                                          7. The white space issue, this one is more complex, unless special + caseofvalidating parsing, the line breaks and spaces usually used + forindentingand formatting the document content becomes significant. So + theyarereported by SAX and if your using the DOM tree, corresponding + nodesaregenerated. Too approach can be taken: +
                                            1. lazy one, use the + compatibilitycallxmlKeepBlanksDefault(0)but be aware + that youarerelying on a special (and possibly broken) set of + heuristicsoflibxml to detect ignorable blanks. Don't complain if it + breaksormake your application not 100% clean w.r.t. to it's + input.
                                            2. +
                                            3. the Right Way: change you code to accept + possiblyinsignificantblanks characters, or have your tree populated + withweird blank textnodes. You can spot them using the + commodityfunctionxmlIsBlankNode(node)returning 1 for + suchblanknodes.
                                            4. +

                                            Note also that with the new default the output functions don't + addanyextra indentation when saving a tree in order to be able to + roundtrip(read and save) without inflating the document with + extraformattingchars.

                                          8. -
                                          9. The include path has changed to $prefix/libxml/ and the - includesthemselves uses this new prefix in includes instructions... If - you areusing (as expected) the +
                                          10. The include path has changed to $prefix/libxml/ and + theincludesthemselves uses this new prefix in includes instructions... + Ifyou areusing (as expected) the
                                            xml2-config --cflags
                                            -

                                            output to generate you compile commands this will probably work out - ofthe box

                                            +

                                            output to generate you compile commands this will probably work + outofthe box

                                          11. -
                                          12. xmlDetectCharEncoding takes an extra argument indicating the length - inbyte of the head of the document available for character detection.
                                          13. -

                                          Ensuring both libxml-1.x and libxml-2.x compatibility

                                          Two new version of libxml (1.8.11) and libxml2 (2.3.4) have been -releasedto allow smooth upgrade of existing libxml v1code while -retainingcompatibility. They offers the following:

                                          1. similar include naming, one should - use#include<libxml/...>in both cases.
                                          2. -
                                          3. similar identifiers defined via macros for the child and root - fields:respectively - xmlChildrenNodeandxmlRootNode
                                          4. -
                                          5. a new macro LIBXML_TEST_VERSIONwhich should beinserted - once in the client code
                                          6. -

                                          So the roadmap to upgrade your existing libxml applications is -thefollowing:

                                          1. install the libxml-1.8.8 (and libxml-devel-1.8.8) packages
                                          2. -
                                          3. find all occurrences where the xmlDoc rootfield isused - and change it to xmlRootNode
                                          4. -
                                          5. similarly find all occurrences where the - xmlNodechildsfield is used and change it - toxmlChildrenNode
                                          6. -
                                          7. add a LIBXML_TEST_VERSIONmacro somewhere in - yourmain()or in the library init entry point
                                          8. +
                                          9. xmlDetectCharEncoding takes an extra argument indicating the + lengthinbyte of the head of the document available for character + detection.
                                          10. +

                                          Ensuring both libxml-1.x and libxml-2.x compatibility

                                          Two new version of libxml (1.8.11) and libxml2 (2.3.4) have beenreleasedto +allow smooth upgrade of existing libxml v1code whileretainingcompatibility. +They offers the following:

                                          1. similar include naming, one + shoulduse#include<libxml/...>in both cases.
                                          2. +
                                          3. similar identifiers defined via macros for the child and + rootfields:respectivelyxmlChildrenNodeandxmlRootNode
                                          4. +
                                          5. a new macro LIBXML_TEST_VERSIONwhich should + beinsertedonce in the client code
                                          6. +

                                          So the roadmap to upgrade your existing libxml applications +isthefollowing:

                                          1. install the libxml-1.8.8 (and libxml-devel-1.8.8) packages
                                          2. +
                                          3. find all occurrences where the xmlDoc rootfield + isusedand change it to xmlRootNode
                                          4. +
                                          5. similarly find all occurrences where + thexmlNodechildsfield is used and change + ittoxmlChildrenNode
                                          6. +
                                          7. add a LIBXML_TEST_VERSIONmacro somewhere + inyourmain()or in the library init entry point
                                          8. Recompile, check compatibility, it should still work
                                          9. -
                                          10. Change your configure script to look first for xml2-config and fallback - using xml-config . Use the --cflags and --libs output of the commandas - the Include and Linking parameters needed to use libxml.
                                          11. -
                                          12. install libxml2-2.3.x and libxml2-devel-2.3.x (libxml-1.8.y - andlibxml-devel-1.8.y can be kept simultaneously)
                                          13. -
                                          14. remove your config.cache, relaunch your configuration mechanism, - andrecompile, if steps 2 and 3 were done right it should compile - as-is
                                          15. -
                                          16. Test that your application is still running correctly, if not this - maybe due to extra empty nodes due to formating spaces being kept in - libxml2contrary to libxml1, in that case insert xmlKeepBlanksDefault(1) - in yourcode before calling the parser (next - toLIBXML_TEST_VERSIONis a fine place).
                                          17. -

                                          Following those steps should work. It worked for some of my own code.

                                          Let me put some emphasis on the fact that there is far more changes -fromlibxml 1.x to 2.x than the ones you may have to patch for. The overall -codehas been considerably cleaned up and the conformance to the XML -specificationhas been drastically improved too. Don't take those changes as -an excuse tonot upgrade, it may cost a lot on the long term ...

                                          Daniel Veillard

                                          +
                                        8. Change your configure script to look first for xml2-config and + fallbackusing xml-config . Use the --cflags and --libs output of the + commandasthe Include and Linking parameters needed to use libxml.
                                        9. +
                                        10. install libxml2-2.3.x and libxml2-devel-2.3.x + (libxml-1.8.yandlibxml-devel-1.8.y can be kept simultaneously)
                                        11. +
                                        12. remove your config.cache, relaunch your configuration + mechanism,andrecompile, if steps 2 and 3 were done right it should + compileas-is
                                        13. +
                                        14. Test that your application is still running correctly, if not thismaybe + due to extra empty nodes due to formating spaces being kept + inlibxml2contrary to libxml1, in that case insert + xmlKeepBlanksDefault(1)in yourcode before calling the parser + (nexttoLIBXML_TEST_VERSIONis a fine place).
                                        15. +

                                        Following those steps should work. It worked for some of my own code.

                                        Let me put some emphasis on the fact that there is far more +changesfromlibxml 1.x to 2.x than the ones you may have to patch for. The +overallcodehas been considerably cleaned up and the conformance to the +XMLspecificationhas been drastically improved too. Don't take those changes +asan excuse tonot upgrade, it may cost a lot on the long term ...

                                        Daniel Veillard

                                        diff --git a/doc/xml.html b/doc/xml.html index ab68aa37..72a0a9c6 100644 --- a/doc/xml.html +++ b/doc/xml.html @@ -18,26 +18,27 @@ href="index.html">website

                                        "Programmingwith -libxml2 is like the thrilling embrace of an exotic stranger." "Programmingwithlibxml2 +is like the thrilling embrace of an exotic stranger." MarkPilgrim

                                        -

                                        Libxml2 is the XML C parser and toolkit developed for the Gnome -project(but usable outside of the Gnome platform), it is free software -availableunder the MITLicense. -XML itself is a metalanguage to design markup languages, i.e.text language -where semantic and structure are added to the content usingextra "markup" -information enclosed between angle brackets. HTML is the mostwell-known -markup language. Though the library is written in C a -variety of language bindingsmake it available inother environments.

                                        +

                                        Libxml2 is the XML C parser and toolkit developed for the Gnomeproject(but +usable outside of the Gnome platform), it is free softwareavailableunder the +MITLicense.XML +itself is a metalanguage to design markup languages, i.e.text languagewhere +semantic and structure are added to the content usingextra +"markup"information enclosed between angle brackets. HTML is the +mostwell-knownmarkup language. Though the library is written in C avariety of language bindingsmake it available inother +environments.

                                        -

                                        Libxml2 is known to be very portable, the library should build and -workwithout serious troubles on a variety of systems (Linux, Unix, -Windows,CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)

                                        +

                                        Libxml2 is known to be very portable, the library should build +andworkwithout serious troubles on a variety of systems (Linux, +Unix,Windows,CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...)

                                        -

                                        Libxml2 implements a number of existing standards related to -markuplanguages:

                                        +

                                        Libxml2 implements a number of existing standards related +tomarkuplanguages:

                                        -

                                        In most cases libxml2 tries to implement the specifications in arelatively -strictly compliant way. As of release 2.4.16, libxml2 passed all1800+ tests -from the OASIS XML -TestsSuite.

                                        +

                                        In most cases libxml2 tries to implement the specifications in +arelativelystrictly compliant way. As of release 2.4.16, libxml2 passed +all1800+ testsfrom the OASIS +XMLTestsSuite.

                                        -

                                        To some extent libxml2 provides support for the following -additionalspecifications but doesn't claim to implement them completely:

                                        +

                                        To some extent libxml2 provides support for the +followingadditionalspecifications but doesn't claim to implement them +completely:

                                        • Document Object Model (DOM) http://www.w3.org/TR/DOM-Level-2-Core/the - document model, but it doesn't implement the API itself, gdome2 doesthis - on top of libxml2
                                        • -
                                        • RFC - 959:libxml2 implements a basic FTP client code
                                        • -
                                        • RFC - 1945:HTTP/1.0, again a basic HTTP client code
                                        • -
                                        • SAX: a SAX2 like interface and a minimal SAX1 implementation - compatiblewith early expat versions
                                        • + href="http://www.w3.org/TR/DOM-Level-2-Core/">http://www.w3.org/TR/DOM-Level-2-Core/thedocument + model, but it doesn't implement the API itself, gdome2 doesthison top of + libxml2 +
                                        • RFC959:libxml2 + implements a basic FTP client code
                                        • +
                                        • RFC1945:HTTP/1.0, + again a basic HTTP client code
                                        • +
                                        • SAX: a SAX2 like interface and a minimal SAX1 + implementationcompatiblewith early expat versions

                                        A partial implementation of XML Schemas Part1: -Structureis being worked on but it would be far too early to make -anyconformance statement about it at the moment.

                                        +href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schemas +Part1:Structureis being worked on but it would be far too early to +makeanyconformance statement about it at the moment.

                                        Separate documents: