<?xml version="1.0"?>
<!--
  Copyright 1999-2011 The Apache Software Foundation

  Licensed 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.
-->
<document url="./index.xml">

 <properties>
   <title>Apache Standard Taglib: JSP[tm] Standard Tag Library (JSTL) implementations</title>
 </properties>

 <body>

  <section name="Standard Taglib">

    <big><b>JSP(tm) Standard Tag Library implementations</b></big>

    <p>Apache hosts the Apache Standard Taglib, an implementation of
      the <a href="http://www.oracle.com/technetwork/java/jstl-137486.html">JSP Standard Tag
      Library (JSTL)</a> specification. Various versions are available.
    </p>

    <table>
      <tr>
        <td><b>Version</b></td>
        <td><b>JSTL version</b></td>
        <td><b>Requirements</b></td>
        <td><b>Getting the Taglib</b></td>
      </tr>
      <tr>
        <td>Standard 1.2.3</td>
        <td>JSTL 1.2</td>
        <td>Servlet 2.5, JavaServer Pages 2.1</td>
        <td><a href="http://tomcat.apache.org/download-taglibs.cgi">download</a> (<a href="apidocs/">javadoc</a>)</td>
      </tr>
      <tr>
        <td>Standard 1.1</td>
        <td>JSTL 1.1</td>
        <td>Servlet 2.4, JavaServer Pages 2.0</td>
        <td><a href="http://archive.apache.org/dist/jakarta/taglibs/standard/">download</a></td>
      </tr>
      <tr>
        <td>Standard 1.0</td>
        <td>JSTL 1.0</td>
        <td>Servlet 2.3, JavaServer Pages 1.2</td>
        <td><a href="http://archive.apache.org/dist/jakarta/taglibs/standard/">download</a></td>
      </tr>
    </table>

  </section>

  <section name="News">
    <table>
      <tr>
        <td><b>Date</b></td>
        <td><b>Item</b></td>
      </tr>
      <tr>
        <td>2015/02/20</td>
        <td>The Apache Standard Taglib 1.2.3, a minor bugfix version, has been released.</td>
      </tr>
      <tr>
        <td>2014/01/02</td>
        <td>The Apache Standard Taglib 1.2.1, an implementation of JSTL 1.2, has been released.</td>
      </tr>
      <tr>
        <td>2009/04/22</td>
        <td>Moved to a Maven based build system. </td>
      </tr>
      <tr>
        <td>2008/12/21</td>
        <td>A patch  from Robert Goff has moved the trunk of the Standard Taglib up towards JSTL 1.2 level. </td>
      </tr>
      <tr>
      <td>10/25/2004</td>
      <td>Standard Taglib version 1.1.2 - A minor bug fix update - is now available. </td>
      </tr>
      <tr>
      <td>07/20/2004</td>
      <td>Standard Taglib version 1.1.1 released - A minor bug fix update - is now available. </td>
      </tr>
      <tr>
      <td>01/30/2004</td>
      <td>Standard Taglib version 1.1.0 - First official release of our implementation of JSTL 1.1 - is now available. </td>
      </tr>
      <tr>
      <td>09/25/2003</td>
      <td>Standard Taglib version 1.1.0-B1 - early access (Beta 1) of our implementation of JSTL 1.1 - is now available. </td>
      </tr>
    </table>

  </section>

  <section name="JSTL Books" href="Books">

    <p>The following books about JSTL are available:</p>

    <ul>
      <li><a href="http://www.manning.com/bayern/"><i>JSTL in Action</i></a>, Shawn Bayern, Manning</li>
      <li><a href="http://oreilly.com/catalog/9781565927469/"><i>JavaServer Pages</i></a>, Hans Bergsten, O'Reilly</li>
      <li><i>Core JSTL: Mastering the JSP Standard Tag Library</i>, David Geary, Sun Microsystems Press</li>
    </ul>

  </section>

  </body>

</document>
