<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC
  "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
 
-->
<taglib>
    <tlib-version>2.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>portlet_3_0</short-name>
    <uri>http://xmlns.jcp.org/portlet_3_0</uri>
    <description>Pluto Tag Library</description>
    <tag>
        <name>defineObjects</name>
        <tag-class>org.apache.pluto.tags.DefineObjectsTag362</tag-class>
        <tei-class>org.apache.pluto.tags.DefineObjectsTag362$TEI</tei-class>
        <body-content>empty</body-content>
    </tag>
    <tag>
        <name>param</name>
        <tag-class>org.apache.pluto.tags.ParamTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>value</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>type</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
    <tag>
        <name>property</name>
        <tag-class>org.apache.pluto.tags.PropertyTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>value</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>    
    <tag>
        <name>actionURL</name>
        <tag-class>org.apache.pluto.tags.ActionURLTag362</tag-class>
        <tei-class>org.apache.pluto.tags.PortletURLTag168$TEI</tei-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>windowState</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>portletMode</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
	   <attribute>
            <name>var</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>        
        <attribute>
            <name>secure</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>copyCurrentRenderParameters</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>        
        <attribute>
            <name>escapeXml</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
		<attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>        
    </tag>
    <tag>
        <name>renderURL</name>
        <tag-class>org.apache.pluto.tags.RenderURLTag362</tag-class>
        <tei-class>org.apache.pluto.tags.PortletURLTag168$TEI</tei-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>windowState</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>portletMode</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>secure</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>var</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>copyCurrentRenderParameters</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>        
        <attribute>
            <name>escapeXml</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>        
    </tag>
    <tag>
        <name>resourceURL</name>
        <tag-class>org.apache.pluto.tags.ResourceURLTag286</tag-class>
        <tei-class>org.apache.pluto.tags.BaseURLTag$TEI</tei-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>var</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>        
        <attribute>
            <name>secure</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>escapeXml</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
		<attribute>
            <name>id</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
		<attribute>
            <name>cacheability</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>                                        
    </tag>    
    <tag>
        <name>namespace</name>
        <tag-class>org.apache.pluto.tags.NamespaceTag</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>
