<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

 Copyright 2009 Sun Microsystems, Inc. All rights reserved.

 The contents of this file are subject to the terms of either the GNU
 General Public License Version 2 only ("GPL") or the Common Development
 and Distribution License("CDDL") (collectively, the "License").  You
 may not use this file except in compliance with the License. You can obtain
 a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
 or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
 language governing permissions and limitations under the License.

 When distributing the software, include this License Header Notice in each
 file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
 Sun designates this particular file as subject to the "Classpath" exception
 as provided by Sun in the GPL Version 2 section of the License file that
 accompanied this code.  If applicable, add the following below the License
 Header, with the fields enclosed by brackets [] replaced by your own
 identifying information: "Portions Copyrighted [year]
 [name of copyright owner]"

 Contributor(s):

 If you wish your version of this file to be governed by only the CDDL or
 only the GPL Version 2, indicate your decision by adding "[Contributor]
 elects to include this software in this distribution under the [CDDL or GPL
 Version 2] license."  If you don't indicate a single choice of license, a
 recipient has the option to distribute your version of this file under
 either the CDDL, the GPL Version 2 or to extend the choice of license to
 its licensees as provided above.  However, if you add GPL Version 2 code
 and therefore, elected the GPL Version 2 license, then the option applies
 only if the new code is made subject to such option by the copyright
 holder.
-->

<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
                version="2.0">
    <description>JSTL 1.2 core library</description>
    <namespace>http://java.sun.com/jsp/jstl/core</namespace>
    <tag>
        <description>
            Catches any Throwable that occurs in its body and optionally
            exposes it.
        </description>
        <tag-name>catch</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.CatchHandler</handler-class>
        <attribute>
            <description>
                Name of the exported scoped variable for the
                exception thrown from a nested action. The type of the
                scoped variable is the type of the exception thrown.
            </description>
            <name>var</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
    </tag>
    <tag>
        <description>
            Simple conditional tag that establishes a context for
            mutually exclusive conditional operations, marked by
            &lt;when&gt; and &lt;otherwise&gt;
        </description>
        <tag-name>choose</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.ChooseHandler</handler-class>
    </tag>
    <tag>
        <description>
            Simple conditional tag, which evalutes its body if the
            supplied condition is true and optionally exposes a Boolean
            scripting variable representing the evaluation of this condition
        </description>
        <tag-name>if</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.IfHandler</handler-class>
        <attribute>
            <description>
                The test condition that determines whether or
                not the body content should be processed.
            </description>
            <name>test</name>
            <required>true</required>
            <type>boolean</type>
        </attribute>
        <attribute>
            <description>
                Name of the exported scoped variable for the
                resulting value of the test condition. The type
                of the scoped variable is Boolean.
            </description>
            <name>var</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
        <attribute>
            <description>
                Scope for var.
            </description>
            <name>scope</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
    </tag>
    <tag>
        <description>
            The basic iteration tag, accepting many different
            collection types and supporting subsetting and other
            functionality
        </description>
        <tag-name>forEach</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.ForEachHandler</handler-class>
        <attribute>
            <description>
                Collection of items to iterate over.
            </description>
            <name>items</name>
            <required>false</required>
            <type>java.lang.Object</type>
        </attribute>
        <attribute>
            <description>
                If items specified:
                Iteration begins at the item located at the
                specified index. First item of the collection has
                index 0.
                If items not specified:
                Iteration begins with index set at the value
                specified.
            </description>
            <name>begin</name>
            <required>false</required>
            <type>int</type>
        </attribute>
        <attribute>
            <description>
                If items specified:
                Iteration ends at the item located at the
                specified index (inclusive).
                If items not specified:
                Iteration ends when index reaches the value
                specified.
            </description>
            <name>end</name>
            <required>false</required>
            <type>int</type>
        </attribute>
        <attribute>
            <description>
                Iteration will only process every step items of
                the collection, starting with the first one.
            </description>
            <name>step</name>
            <required>false</required>
            <type>int</type>
        </attribute>
        <attribute>
            <description>
                Name of the exported scoped variable for the
                current item of the iteration. This scoped
                variable has nested visibility. Its type depends
                on the object of the underlying collection.
            </description>
            <name>var</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
        <attribute>
            <description>
                Name of the exported scoped variable for the
                status of the iteration. Object exported is of type
                javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable
                has nested
                visibility.
            </description>
            <name>varStatus</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
    </tag>
    <tag>
        <description>
            Subtag of &lt;choose&gt; that follows &lt;when&gt; tags
            and runs only if all of the prior conditions evaluated to
            'false'
        </description>
        <tag-name>otherwise</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.ChooseOtherwiseHandler</handler-class>
    </tag>
    <tag>
        <description>
            &lt;p&gt;Sets the result of an expression evaluation based on the
            value of the attributes. If "scope" the is present, but has a zero
            length or is equal to the string "page", &lt;code&gt;TagException&lt;/code&gt;
            is
            thrown with an informative error message, ensuring page location
            information is saved.&lt;/p&gt;

            &lt;p&gt;This handler operates in one of two ways.

            &lt;ol&gt;

            &lt;li&gt;&lt;p&gt;The user has set "var", "value" and (optionally)
            "scope" attributes.&lt;/p&gt;&lt;/li&gt;

            &lt;li&gt;&lt;p&gt;The user has set "target", "property", and
            "value"
            attributes.&lt;/p&gt;&lt;/li&gt;


            &lt;/ol&gt;

            &lt;p&gt;The first case takes precedence over the second.&lt;/p&gt;


        </description>
        <tag-name>set</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.SetHandler</handler-class>
        <attribute>
            <description>
                Name of the exported scoped variable to hold the value
                specified in the action. The type of the scoped variable is
                whatever type the value expression evaluates to.
            </description>
            <name>var</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
        <attribute>
            <description>
                Expression to be evaluated.
            </description>
            <name>value</name>
            <required>false</required>
            <type>java.lang.Object</type>
        </attribute>
        <attribute>
            <description>
                Target object whose property will be set. Must evaluate to
                a JavaBeans object with setter property property, or to a
                java.util.Map object.
            </description>
            <name>target</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
        <attribute>
            <description>
                Name of the property to be set in the target object.
            </description>
            <name>property</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
        <attribute>
            <description>
                Scope for var.
            </description>
            <name>scope</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
    </tag>
    <tag>
        <description>
            Subtag of &lt;choose&gt; that includes its body if its
            condition evalutes to 'true'
        </description>
        <tag-name>when</tag-name>
        <handler-class>com.sun.faces.facelets.tag.jstl.core.ChooseWhenHandler</handler-class>
        <attribute>
            <description>
                The test condition that determines whether or not the
                body content should be processed.
            </description>
            <name>test</name>
            <required>true</required>
            <type>boolean</type>
        </attribute>
    </tag>
</facelet-taglib>
