<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
	"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<!--********************************************************************************
 * CruiseControl, a Continuous Integration Toolkit
 * Copyright (c) 2001, ThoughtWorks, Inc.
 * 651 W Washington Ave. Suite 600
 * Chicago, IL 60661 USA
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *     + Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *
 *     + Redistributions in binary form must reproduce the above
 *       copyright notice, this list of conditions and the following
 *       disclaimer in the documentation and/or other materials provided
 *       with the distribution.
 *
 *     + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
 *       names of its contributors may be used to endorse or promote
 *       products derived from this software without specific prior
 *       written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ********************************************************************************-->
<taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>simple</shortname>
    <uri></uri>
    <info>
        A simple tab library for the examples
    </info>
    <tag>
        <name>xsl</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.XSLTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <info>
            Transforms the xml build log using XSL.
        </info>
        <attribute>
            <name>xslFile</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>xslRootContext</name>
            <required>false</required>
        </attribute>
    </tag>
    <tag>
        <name>currentbuildstatus</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.CurrentBuildStatusTag</tagclass>
        <bodycontent>empty</bodycontent>
        <info>
            Report when the build started, or when it will start again.
        </info>
    </tag>
    <tag>
        <name>nav</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.NavigationTag</tagclass>
        <teiclass>net.sourceforge.cruisecontrol.taglib.NavigationTagExtraInfo</teiclass>
        <bodycontent>JSP</bodycontent>
        <info>
            Builds the navigation
        </info>
        <attribute>
            <name>dateFormat</name>
            <required>false</required>
        </attribute>
        <attribute>
            <name>startingBuildNumber</name>
            <required>false</required>
        </attribute>
        <attribute>
            <name>finalBuildNumber</name>
            <required>false</required>
        </attribute>
    </tag>
    <tag>
        <name>artifactsLink</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.ArtifactsLinkTag</tagclass>
        <teiclass>net.sourceforge.cruisecontrol.taglib.ArtifactsLinkTagExtraInfo</teiclass>
        <bodycontent>JSP</bodycontent>
        <info>
            Inserts link to the artifacts FileServlet
        </info>
    </tag>
    <tag>
        <name>buildInfo</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.BuildInfoTag</tagclass>
        <teiclass>net.sourceforge.cruisecontrol.taglib.BuildInfoTagExtraInfo</teiclass>
        <bodycontent>empty</bodycontent>
        <info>
            Inserts information about the various builds into the page scope.
        </info>
    </tag>
    <tag>
        <name>tabsheet</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.TabSheetTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <info>
            Creates a tab sheet that tabs can be placed into.
        </info>
    </tag>
    <tag>
        <name>tab</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.TabTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <info>Creates a tab that selected content gets put into.</info>
        <attribute>
            <name>name</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>label</name>
            <required>true</required>
        </attribute>
    </tag>
    <tag>
        <name>link</name>
        <tagclass>net.sourceforge.cruisecontrol.taglib.LinkTag</tagclass>
        <teiclass>net.sourceforge.cruisecontrol.taglib.LinkTagExtraInfo</teiclass>
        <bodycontent>empty</bodycontent>
        <info>Builds up a link URL</info>
        <attribute>
            <name>id</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>exclude</name>
            <required>false</required>
        </attribute>
    </tag>
</taglib>
