<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <description>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    <short-name>SimpleTagLibrary</short-name>
    <uri>/SimpleTagLibrary</uri>
    <tag>
	<description>Outputs Hello, World</description>
        <name>helloWorld</name>
	<tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>
	<body-content>empty</body-content>
    </tag>
    <tag>
        <description>Repeats the body of the tag 'num' times</description>
        <name>repeat</name>
        <tag-class>jsp2.examples.simpletag.RepeatSimpleTag</tag-class>
        <body-content>scriptless</body-content>
        <variable>
            <description>Current invocation count (1 to num)</description>
            <name-given>count</name-given>
        </variable>
        <attribute>
            <name>num</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
    <tag>
	<description>Populates the page context with a BookBean</description>
        <name>findBook</name>
	<tag-class>jsp2.examples.simpletag.FindBookSimpleTag</tag-class>
	<body-content>empty</body-content>
	<attribute>
	    <name>var</name>
	    <required>true</required>
	    <rtexprvalue>true</rtexprvalue>
	</attribute>
    </tag>
    <tag>
        <description>
            Takes 3 fragments and invokes them in a random order
        </description>
        <name>shuffle</name>
        <tag-class>jsp2.examples.simpletag.ShuffleSimpleTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>fragment1</name>
            <required>true</required>
	    <fragment>true</fragment>
        </attribute>
        <attribute>
            <name>fragment2</name>
            <required>true</required>
	    <fragment>true</fragment>
        </attribute>
        <attribute>
            <name>fragment3</name>
            <required>true</required>
	    <fragment>true</fragment>
        </attribute>
    </tag>
    <tag>
        <description>Outputs a colored tile</description>
        <name>tile</name>
        <tag-class>jsp2.examples.simpletag.TileSimpleTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>color</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>label</name>
            <required>true</required>
        </attribute>
    </tag>
    <tag>
	<description>
	  Tag that echoes all its attributes and body content
	</description>
	<name>echoAttributes</name>
	<tag-class>jsp2.examples.simpletag.EchoAttributesTag</tag-class>
	<body-content>empty</body-content>
	<dynamic-attributes>true</dynamic-attributes>
    </tag>
    <function>
        <description>Reverses the characters in the given String</description>
        <name>reverse</name>
	<function-class>jsp2.examples.el.Functions</function-class>
	<function-signature>java.lang.String reverse( java.lang.String )</function-signature>
    </function>
    <function>
        <description>Counts the number of vowels (a,e,i,o,u) in the given String</description>
        <name>countVowels</name>
	<function-class>jsp2.examples.el.Functions</function-class>
	<function-signature>java.lang.String numVowels( java.lang.String )</function-signature>
    </function>
    <function>
	<description>Converts the string to all caps</description>
        <name>caps</name>
	<function-class>jsp2.examples.el.Functions</function-class>
	<function-signature>java.lang.String caps( java.lang.String )</function-signature>
    </function>
</taglib>

