Distributing Xerces-C++

| Questions |

- What platforms / compilers are being used to build the binary distribution kits?
- What are the differences between Xerces-C and XML4C?
- Which DLL's do I need to distribute with my application?
- How do I package the sources to create a binary drop?
- I do not see binaries for my platform. When will they be available?
- When will a port to my platform be available?
- How can I port Xerces to my favourite platform?
- What application do you use to create the documentation?
- Can I use Xerces in my product?
- How do I uninstall Xerces-C++?
- I am getting a tar checksum error on Solaris. What's the problem?

| What platforms / compilers are being used to build the binary distribution kits? |

Xerces binaries has been built on the following platforms with these compilers

Operating System | Compiler
32-bit binary |
Windows NT 4.0 SP5 | MSVC 6.0 SP3
Redhat Linux 7.2 | Intel C++ Compiler v6, icc
AIX 5.1 | xlC_r 5.0.2
Solaris 2.7 | Forte C++ Version 6 Update 2
HP-UX 11.0 | aCC A.03.13 with pthreads
SuSE Linux 7.2 (S390) | g++ 2.95
64-bit binary |
Windows XP, IA64 | Intel C++ Compiler v7, ecl
Redhat Linux 7.2, IA64 | Intel C++ Compiler v6, ecc
AIX 5.1 | xlC_r 5.0.2
Solaris 2.7 | Forte C++ Version 6 Update 2
HP-UX 11.0 | aCC A.03.13 with pthreads

| What are the differences between Xerces-C and XML4C? |

Xerces-C has intrinsic support for ASCII, UTF-8, UTF-16 (Big/Small Endian), UCS4 (Big/Small Endian), EBCDIC code pages IBM037 and IBM1140 encodings, ISO-8859-1 (aka Latin1) and Windows-1252. This means that it can parse input XML files in these above mentioned encodings.

However, if you wish to parse XML files in any other encodings, say in Shift-JIS, Big5 etc., then you cannot use Xerces-C. XML4C addresses this need. It combines Xerces-C and International Components for Unicode (ICU) and provides support for over 100 different encodings. XML4C also uses ICU Resource Bundle to load the messages.

ICU is also an open source project but is licensed under the X License. XML4C is published by IBM and can be downloaded from their Alphaworks site. The license to use XML4C is simply to comply with the Apache license (because of Xerces-C) and X License (because of ICU).

XML4C binaries are published for the same set of platforms / compilers as Xerces-C++, see FAQ: What platforms / compilers are being used to build the binary distribution kits? and the documentation in Alphaworks.

| Which DLL's do I need to distribute with my application? |

As mentioned above, there are two configurations in which Xerces-C binaries are shipped. One is from the Apache site, while the other is from IBM published at IBM's Alphaworks Site.

If you are using the binaries from the Apache download site site, then you only need to distribute one file:
xerces-c_2_3_0.dll for Windows NT/2000, or
libxerces-c23.0.so for AIX, or
libxerces-c.so.23.0 for Solaris/Linux, or
libxerces-c.sl.23.0 for HP-UX.

However, if you are using the XML4C binaries then in addition to the library file mentioned above, you also need to ship:

1. ICU shared library file:
   icuuc*.dll for Windows NT/2000, or
   libicuuc*.a for AIX, or
   libicuuc*.so for Solaris/Linux, or
   libicuuc*.sl for HP-UX.
2. ICU converter data shared library file:
   icudt*.dll for Windows NT/2000, or
   libicudt*.a for AIX, or
   libicudt*.so for Solaris/Linux, or
   libicudt*.sl for HP-UX.
3. The Xerces-C++ Message file:
   XercesMessages*.dll for Windows NT/2000, or
   libXercesMessages*.a for AIX, or
   libXercesMessages*.so for Solaris/Linux, or
   libXercesMessages*.sl for HP-UX.

| How do I package the sources to create a binary drop? |

You have to first compile the sources inside your IDE to create the required DLLs and EXEs. Then you need to copy over the binaries to another directory for the binary drop. A perl script has been provided to give you a jump start. You need to install perl on your machine for the script to work. If you have changed your source tree, you have to modify the script to suit your current directory structure. To invoke the script, go to the \<Xerces>\scripts directory, and type:

    perl packageBinaries.pl

You will get a message that somewhat looks like this (changes always happen, we are evolving you see!):

    Usage is: packageBinaries <options>
    options are:  -s <source_directory>
                  -o <target_directory>
                  -c <C compiler name> (e.g. gcc or xlc_r)
                  -x <C++ compiler name> (e.g. g++ or xlC_r)
                  -m <message loader> can be 'inmem', 'icu' or 'iconv'
                  -n <net accessor> can be 'fileonly' or 'libwww'
                  -t <transcoder> can be 'icu' or 'native'
                  -r <thread option> can be 'pthread' or 'dce' (only used on HP-11)
                  -h to get help on these commands
    Example: perl packageBinaries.pl -s$HOME/xerces-c-src2_3_0
                                     -o$HOME/xerces-c2_3_0
                                     -cgcc -xg++ -minmem
                                     -nfileonly -tnative

Make sure that your compiler can be invoked from the command line and follow the instructions to produce a binary drop.

| I do not see binaries for my platform. When will they be available?"> |

| The reason why you see binaries only for some specific platforms is that we have had the maximum requests for them. Moreover, we have limited resources and hence cannot publish binaries for every platform. If you wish to contribute your time and effort in building binaries for a specific platform/environment then please send a mail to the Xerces-C++ mailing list. We can definitely use any extra help in this open source project

| When will a port to my platform be available? |

We would like to see Xerces ported to as many platforms as there are. Again, due to limited resources we cannot do all the ports. We will help you make this port happen. Here are some Porting Guidelines.

We strongly encourage you to submit the changes that are required to make it work on another platform. We will incorporate these changes in the source code base and make them available in the future releases.

All porting changes may be sent to the Xerces-C++ mailing list .

| How can I port Xerces to my favourite platform? |

| Here are some Porting Guidelines.

| What application do you use to create the documentation? |

We have used an internal XML based application to create the documentation. The documentation files are all written in XML and the application, internally codenamed StyleBook, makes use of XSL to transform it into an HTML document that you are seeing right now. It is currently available on the Apache open source website as Cocoon.

The API documentation is automatically generated using Doxygen and GraphViz.

| Can I use Xerces in my product? |

| Yes! Read the license agreement first and if you still have further questions, then please address them to the Xerces-C++ mailing list .

| How do I uninstall Xerces-C++? |

| Xerces-C++ only installs itself in a single directory and does not set any registry entries. Thus, to uninstall, you only need to remove the directory where you installed it, and all Xerces-C++ related files will be removed.

| I am getting a tar checksum error on Solaris. What's the problem? |

| The problem is caused by a limitation in the original tar spec, which prevented it from archiving files with long pathnames. Unfortunately, various current versions of tar use different extensions for eliminating this restriction which are incompatible with each other (or they do not remove the restriction at all). Rather than altering the pathnames for the Xerces-C++ package, which would make them compatible with the original tar spec but make it more difficult to know what was where, it was decided to use GNU tar (gtar), which handles arbitrarily long pathnames and is freely available on every platform on which Xerces-C++ is supported. If you don't already have GNU tar installed on your system, you can obtain it from the Free Software Foundation http://www.gnu.org/software/tar/tar.html. For additional background information on this problem, see the online manual GNU tar and POSIX tar for the utility.

Copyright © 2003 The Apache Software Foundation. All Rights Reserved.