<?xml version="1.0"  encoding="iso-8859-1" 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="Download">

  <s2 title="Download">
    <p>Use the links below to download &XercesCName; from one of
       our mirrors.  You <em>must</em> <link anchor="verify">verify the
       integrity</link> of the downloaded files using signatures downloaded
       from our main distribution directory.</p>

    <p>You can download the &XercesCName; distributions from
       the <jump href="http://www.apache.org/dist/xerces/c/">master
       distribution directory</jump> or, preferably, its <jump
       href="[preferred]/xerces/c/">mirror</jump>. Only current
       recommended releases are available on the main distribution
       site and its mirrors.</p>
       
    <p>Older releases are available from the
       <jump href="http://archive.apache.org/dist/xerces/c/">archive
       download site</jump>, but you should be aware that there is a lot
       of accumulated "cruft" in the archives, and many confusingly
       named files. Anything labeled "current" is likely not.</p>
  </s2>

  <s2 title="Mirror">
    <p>The currently selected mirror is <em>[preferred]</em>.  If you
       encounter a problem with this mirror, please select another
       mirror.  If all mirrors are failing, there are <em>backup</em>
       mirrors (at the end of the mirrors list) that should be available.</p>


<form action="[location]" method="get" id="SelectMirror">
Other mirrors: <select name="Preferred">
[if-any http]
  [for http]<option value="[http]">[http]</option>[end]
[end]
[if-any ftp]
  [for ftp]<option value="[ftp]">[ftp]</option>[end]
[end]
[if-any backup]
  [for backup]<option value="[backup]">[backup] (backup)</option>[end]
[end]
</select>
<input type="submit" value="Change" />
</form>

    <p>You may also consult the <jump href="http://www.apache.org/mirrors/">complete
       list of mirrors</jump>.</p>
  </s2>

  <s2 title="Latest 3-Series Release">

    <p>The &XercesCName; &XercesCLatest; release is available in source code
       distributions only. If binaries are produced at a future point, this
       page will be updated.</p>

    <s3 title="Source Distributions">
      <p>
         <jump href="[preferred]/xerces/c/3/sources/xerces-c-&XercesCLatest;.zip">xerces-c-&XercesCLatest;.zip</jump>
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.zip.asc">PGP</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.zip.sha1">SHA1</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.zip.sha256">SHA2</jump>]<br/>

         <jump href="[preferred]/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.gz">xerces-c-&XercesCLatest;.tar.gz</jump>
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.gz.asc">PGP</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.gz.sha1">SHA1</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.gz.sha256">SHA2</jump>]<br/>

         <jump href="[preferred]/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.bz2">xerces-c-&XercesCLatest;.tar.bz2</jump>
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.bz2.asc">PGP</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.bz2.sha1">SHA1</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.bz2.sha256">SHA2</jump>]<br/>

         <jump href="[preferred]/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.xz">xerces-c-&XercesCLatest;.tar.xz</jump>
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.xz.asc">PGP</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.xz.sha1">SHA1</jump>]
         [<jump href="http://www.apache.org/dist/xerces/c/3/sources/xerces-c-&XercesCLatest;.tar.xz.sha256">SHA2</jump>]

      </p>
    </s3>
  </s2>

  <anchor name="verify"/>
  <s2 title="Verify the integrity of the files">

    <p>It is essential that you verify the integrity of the downloaded
       files using the PGP or MD5/SHA files.  Please read <jump
       href="http://httpd.apache.org/dev/verification.html">Verifying
       HTTP Server Releases</jump> for more information on why you
       should verify our releases.</p>

    <p>The PGP signatures can be verified using PGP or GPG. First
       download the <jump href="http://www.apache.org/dist/xerces/c/KEYS">&XercesCName; KEYS</jump>
       as well as the <code>.asc</code> signature file for the particular
       distribution.  Make sure you get these files from the <jump
       href="http://www.apache.org/dist/xerces/c/">main distribution
       directory</jump>, rather than from a mirror. Then verify the
       signatures using:</p>

<source>
% pgpk -a KEYS
% pgpv &lt;distribution-name>.asc
</source>
<p><em>or</em></p>
<source>
% pgp -ka KEYS
% pgp &lt;distribution-name>.asc
</source>
<p><em>or</em></p>
<source>
% gpg --import KEYS
% gpg --verify &lt;distribution-name>.asc
</source>

    <p>Alternatively, you can verify the digests on the files. A
       command line program called <code>md5</code> or <code>md5sum</code>
       is included in most UNIX distributions.  It is also available as
       part of <jump href="http://www.gnu.org/software/textutils/textutils.html">GNU
       Textutils</jump>.  Windows users can get binary md5 programs from <jump
       href="http://www.fourmilab.ch/md5/">here</jump>, <jump
       href="http://www.pc-tools.net/win32/freeware/console/">here</jump>, or
       <jump href="http://www.slavasoft.com/fsum/">here</jump>.</p>

  </s2>

</s1>
