<?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.1</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>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><a href="http://www.sun.com/books/catalog/geary_corejstl.xml"><i>Core JSTL: Mastering the JSP Standard Tag Library</i></a>, David Geary, Sun Microsystems Press</li>
    </ul>

  </section>

  </body>

</document>
