<?xml version="1.0" standalone="no"?>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->

<!DOCTYPE s1 SYSTEM "sbk:/style/dtd/document.dtd">

<s1 title="Installation">

    <anchor name="Windows"/>
    <s2 title="Windows">

      <p>This section contains installation instructions for the Windows
         platform.</p>

      <s3 title="Source distribution">
        <p>The &XercesCName; source is available in the source distribution:
           &XercesC3SrcInstallDir;.zip.</p>

        <p>Install the &XercesCName; source distribution by using <code>unzip</code>
		on the &XercesC3SrcInstallDir;.zip archive in the Windows environment. You can
		use WinZip, or any other UnZip utility:</p>
<source>
unzip &XercesC3SrcInstallDir;.zip
</source>
        <p>This creates the &apos;&XercesC3SrcInstallDir;&apos; sub-directory
		containing the &XercesCName; source distribution. </p>

        <p>To build the &XercesCName; source after installation,
        please follow the <jump href="build-&XercesC3Series;.html">Build Instructions</jump>.</p>

      </s3>

<!--
      <s3 title="Binary distribution">
        <p>Install the &XercesCName; binary distribution by using <code>unzip</code>
	   on the &XercesC3InstallDir;-{arch}-windows-{compiler}.zip archive in
           the Windows environment. Here {arch} denotes the CPU architecture
           and {compiler} denotes the C++ compiler of your choice. You can use
           WinZip, or any other UnZip utility. For example:</p>

<source>
unzip &XercesC3InstallDir;-x86-windows-vc-8.0.zip
</source>

        <p>This creates a &apos;&XercesC3InstallDir;-x86-windows-vc-8.0&apos;
           sub-directory containing the &XercesCName; binary distribution.</p>

        <p>You need to add the &apos;&XercesC3InstallDir;-{arch}-windows-{compiler}\bin&apos;
	   directory to your path.
           To do this go to the start menu, click the settings menu and
           select control panel. When the control panel opens, double
           click on System and select the &apos;Environment&apos; tab.
	   Locate the PATH variable under system variables and add
           &lt;full-path-to-&XercesC3InstallDir;-{arch}-windows-{compiler}>\bin
           to the PATH variable.</p>

        <p>Additionally, if you don't have the corresponding version of
           Microsoft Visual C++ installed, you may need to download and
           install the C/C++ runtime libraries from the Microsoft website.
           For example, for Visual Studio 2008 (9.0) the package is called
           "Microsoft Visual C++ 2008 Redistributable Package".</p>

        <p>The binary distribution contains the pre-built parser libraries
           and sample executables. Please refer to the
           <jump href="samples-&XercesC3Series;.html">Samples</jump> for how to run the
           samples.</p>

      </s3>
-->
    </s2>

    <anchor name="Unix"/>
    <s2 title="UNIX">

      <p>This section contains installation instructions for the UNIX,
         Linux, and Mac OS X platforms.</p>

      <s3 title="Source distribution">
        <p>The &XercesCName; source is available in the source distribution:
           &XercesC3SrcInstallDir;.tar.gz (other formats also available).</p>

        <p>Install the &XercesCName; source distribution
           &XercesC3SrcInstallDir;.tar.gz by extracting the files
           from the compressed archive:</p>
<source>
gzip -d &XercesC3SrcInstallDir;.tar.gz
tar -xf &XercesC3SrcInstallDir;.tar
</source>
        <p>This creates the &apos;&XercesC3SrcInstallDir;&apos; sub-directory
	   containing the &XercesCName; source distribution. </p>

        <p>To build the &XercesCName; source after installation,
           please follow the <jump href="build-&XercesC3Series;.html">Build Instructions</jump>.</p>

      </s3>

<!--
      <s3 title="Binary distribution">
        <p>Install the binary distribution &XercesC3InstallDir;-{arch}-{os}-{compiler}.tar.gz
           by extracting the files from the compressed archive. Here {arch}
           denotes the CPU architecture, {os} denotes the operating system,
           and {compiler} denotes the C++ compiler of your choice.
           For example:</p>
<source>
gzip -d &XercesC3InstallDir;-x86-linux-gcc-3.4.tar.gz
tar -xf &XercesC3InstallDir;-x86-linux-gcc-3.4.tar
</source>
        <p>This will create an '&XercesC3InstallDir;-x86-linux-gcc-3.4'
           sub-directory containing the &XercesCName; binary distribution.</p>

        <p>You will need to add the
           &XercesC3InstallDir;-{arch}-{os}-{compiler}/bin directory to your
           PATH environment variable:</p>

        <p>For Bourne Shell, K Shell or Bash, type: </p>
<source>
export PATH="$PATH:&lt;full-path-to-&XercesC3InstallDir;-{arch}-{os}-{compiler}>/bin"
</source>
		<p>For C Shell, type:</p>
<source>
setenv PATH "$PATH:&lt;full-path-to-&XercesC3InstallDir;-{arch}-{os}-{compiler}>/bin"
</source>

        <p>If you wish to make this setting permanent, you need to change
	   your profile by changing your setup files which can be either
           .profile or .kshrc.</p>

        <p>In addition, you will also need to set the library search path.
           (LIBPATH on AIX, LD_LIBRARY_PATH on Solaris and Linux,
            SHLIB_PATH on HP-UX, and DYLD_LIBRARY_PATH on Mac OS X).</p>

        <p>In the following shell commands, the &lt;xerces-path>
           denotes the full path to the
           &XercesC3InstallDir;-{arch}-{os}-{compiler} directory. For
           Bourne Shell, K Shell or Bash, type:</p>
<source>
export LIBPATH=&lt;xerces-path>/lib:$LIBPATH (AIX)
export LD_LIBRARY_PATH=&lt;xerces-path>/lib:$LD_LIBRARY_PATH (Solaris, Linux)
export SHLIB_PATH=&lt;xerces-path>/lib:$SHLIB_PATH (HP-UX)
export DYLD_LIBRARY_PATH=&lt;xerces-path>/lib:$DYLD_LIBRARY_PATH (Mac OS X)
</source>

    	<p>For C Shell, type:</p>
<source>
setenv LIBPATH "&lt;xerces-path>/lib:$LIBPATH" (AIX)
setenv LD_LIBRARY_PATH "&lt;xerces-path>/lib:$LD_LIBRARY_PATH" (Solaris, Linux)
setenv SHLIB_PATH "&lt;xerces-path>/lib:$SHLIB_PATH" (HP-UX)
setenv DYLD_LIBRARY_PATH "&lt;xerces-path>/lib:$DYLD_LIBRARY_PATH" (Mac OS X)
</source>

        <p>The binary distribution contains the pre-built parser libraries
           and sample executables. Please refer to the
           <jump href="samples-&XercesC3Series;.html">Samples</jump> for how to run the
           samples.</p>
      </s3>
-->

   </s2>

    <anchor name="Cygwin"/>
    <s2 title="Cygwin">

      <p>This section contains installation instructions for the Cygwin
         platform.</p>

      <s3 title="Source distribution">
        <p>The &XercesCName; source is available in the source distribution:
           &XercesC3SrcInstallDir;.tar.gz (other formats available).</p>

        <p>Install the &XercesCName; source distribution
           &XercesC3SrcInstallDir;.tar.gz by extracting the files
           from the compressed archive:</p>
<source>
tar -xfz &XercesC3SrcInstallDir;.tar.gz
</source>
        <p>This creates the &apos;&XercesC3SrcInstallDir;&apos; sub-directory
	   containing the &XercesCName; source distribution. </p>

        <p>To build the &XercesCName; source after installation,
           please follow the <jump href="build-&XercesC3Series;.html">Build Instructions</jump>.
        </p>

      </s3>

      <s3 title="Binary distribution">
        <p>Precompiled Xerces-C++ libraries for Cygwin may be provided as
           part of the Cygwin package repository. To install the binary
           distribution run Cygwin setup.exe.
           When you reach the Packages step of the Cygwin Setup wizard,
           expand the Devel category, then click in the New column next
           to "xerces-c-devel" until it reads "&XercesC3Version;-X".</p>

      </s3>
   </s2>
</s1>
