Listing 4. The TLD is an XML file that describes the tag by associating the name of the tag with the corresponding Java class. Here the TLD defines a tag named css that is bound to the CSSTag class and declares the link and value tag attributes.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC 
        "-//Sun Microsystems, Inc.//
        DTD JSP Tag Library  1.2//EN" 
        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
        <tlib-version>1.0</tlib-version>
        <jsp-version>1.2</jsp-version>
        <short-name>custom</short-name>
        <uri>http://www.ilog.com/jviews/tlds/css.tld</uri>
        <description>This tag library contains a tag for a 
                sample custom JSF Component.</description>
        <tag>
                <name>css</name>
                <tag-class>path.to.CSSTag</tag-class>
                <description>A component that displays the style 
                        inline or a link a to a css file</description>
                <attribute>
                        <name>id</name>
                        <required>false</required>
                        <rtexprvalue>false</rtexprvalue>
                        <type>java.lang.String</type>
                        <description>The id of this component.
                        </description>
                </attribute>
                <attribute>
                        <name>binding</name>
                        <required>false</required>
                        <rtexprvalue>false</rtexprvalue>
                        <type>java.lang.String</type>
                        <description>The value binding expression 
                                linking this component to a property in a
                                backing bean. If this attribute is set, the 
                                tag does not create the component itself but
                                retrieves it from the bean property. This
                                attribute must be a value binding.
                        </description>
                </attribute>
                <attribute>
                        <name>value</name>
                        <required>true</required>
                        <rtexprvalue>false</rtexprvalue>
                        <type>java.lang.String</type>
                        <description>The inline css text or the url to 
                                the css file to link.</description>
                </attribute>
                <attribute>
                        <name>link</name>
                        <required>false</required>
                        <rtexprvalue>false</rtexprvalue>
                        <type>java.lang.String</type>
                        <description>Whether the value is a link or 
                                the inline style.</description>
                </attribute>
        </tag>
</taglib>