<?xml version="1.0"?>
<!--
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.
-->
<!--
 +======================================================================+
 |****                                                              ****|
 |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|
 |****                    DO NOT EDIT DIRECTLY                      ****|
 |****                                                              ****|
 +======================================================================+
 | TEMPLATE FILE: download-page-template.xml                            |
 | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
 +======================================================================+
 |                                                                      |
 | 1) Re-generate using: mvn commons:download-page                      |
 |                                                                      |
 | 2) Set the following properties in the component's pom:              |
 |    - commons.componentid (required, alphabetic, lower case)          |
 |    - commons.release.version (required)                              |
 |    - commons.release.name    (required)                              |
 |    - commons.binary.suffix   (optional)                              |
 |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
 |    - commons.release.desc    (optional)                              |
 |    - commons.release.subdir  (optional)                              |
 |                                                                      |
 |    - commons.release.2/3.version       (conditional)                 |
 |    - commons.release.2/3.name          (conditional)                 |
 |    - commons.release.2/3.binary.suffix (optional)                    |
 |    - commons.release.2/3.desc          (optional)                    |
 |    - commons.release.2/3.subdir        (optional)                    |
 |                                                                      |
 | 3) Example Properties                                                |
 |    (commons.release.name inherited by parent:                        |
 |     ${project.artifactId}-${commons.release.version}                 |
 |                                                                      |
 |  <properties>                                                        |
 |    <commons.componentid>math</commons.componentid>                   |
 |    <commons.release.version>1.2</commons.release.version>            |
 |  </properties>                                                       |
 |                                                                      |
 +======================================================================+
-->
<document>
  <properties>
    <title>Download Apache Commons Text</title>
    <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
  </properties>
  <body>
    <section name="Download Apache Commons Text">
    <subsection name="Using a Mirror">
      <p>
        We recommend you use a mirror to download our release
        builds, but you <strong>must</strong> <a href="http://www.apache.org/info/verification.html">verify the integrity</a> of
        the downloaded files using signatures downloaded from our main
        distribution directories. Recent releases (48 hours) may not yet
        be available from all the mirrors.
      </p>

      <p>
        You are currently using <b>[preferred]</b>.  If you
        encounter a problem with this mirror, please select another
        mirror.  If all mirrors are failing, there are <i>backup</i>
        mirrors (at the end of the mirrors list) that should be
        available.
        <br></br>
        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
      </p>

      <form action="[location]" method="get" id="SelectMirror">
        <p>
          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"></input>
        </p>
      </form>

      <p>
        It is essential that you
        <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
        of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
        failing that using the <code>MD5</code> hash (<code>*.md5</code> checksum files).
      </p>
      <p>
        The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
        file contains the public PGP keys used by Apache Commons developers
        to sign releases.
      </p>
    </subsection>
    </section>
    <section name="Apache Commons Text 1.2 (Java 7+)">
      <subsection name="Binaries">
        <table>
          <tr>
              <td><a href="[preferred]/commons/text/binaries/commons-text-1.2-bin.tar.gz">commons-text-1.2-bin.tar.gz</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/binaries/commons-text-1.2-bin.tar.gz.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/binaries/commons-text-1.2-bin.tar.gz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/commons/text/binaries/commons-text-1.2-bin.zip">commons-text-1.2-bin.zip</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/binaries/commons-text-1.2-bin.zip.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/binaries/commons-text-1.2-bin.zip.asc">pgp</a></td>
          </tr>
        </table>
      </subsection>
      <subsection name="Source">
        <table>
          <tr>
              <td><a href="[preferred]/commons/text/source/commons-text-1.2-src.tar.gz">commons-text-1.2-src.tar.gz</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/source/commons-text-1.2-src.tar.gz.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/source/commons-text-1.2-src.tar.gz.asc">pgp</a></td>
          </tr>
          <tr>
              <td><a href="[preferred]/commons/text/source/commons-text-1.2-src.zip">commons-text-1.2-src.zip</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/source/commons-text-1.2-src.zip.md5">md5</a></td>
              <td><a href="https://www.apache.org/dist/commons/text/source/commons-text-1.2-src.zip.asc">pgp</a></td>
          </tr>
        </table>
      </subsection>
    </section>
    <section name="Archives">
        <p>
          Older releases can be obtained from the archives.
        </p>
        <ul>
          <li class="download"><a href="[preferred]/commons/text/">browse download area</a></li>
          <li><a href="https://archive.apache.org/dist/commons/text/">archives...</a></li>
        </ul>
    </section>
  </body>
</document>
