<?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>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>BIRT Tag Library</short-name>
    <uri>http://www.eclipse.org/birt/taglibs/birt.tld</uri>
    <description>
        This Tag Library makes user develope JSP with BIRT Viewer component easily.
    </description>
    
    <!--**********************************************-->
    <!--             Viewer Tag                       -->
    <!--**********************************************-->
    <tag>
        <name>viewer</name>
        <tag-class>org.eclipse.birt.report.taglib.ViewerTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            The viewer tag is to specify how to import and control BIRT Report Viewer into JSP page.
            This tag will use Ajax framework to retrieve report content.
        </description>

        <attribute>
            <name>id</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the current viewer id. It should be unique.
                It can contain number,letter or underline.
            </description>            
        </attribute>    

        <attribute>
            <name>pattern</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies which servlet pattern to be used to preview report.
                Default value is frameset.
                ( frameset or run )
            </description>
        </attribute>
                        
        <attribute>
            <name>baseURL</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies base URL of BIRT viewer.
                Default to the current context.
            </description>
        </attribute>
        
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report title displayed at the top.
            </description>
        </attribute>

        <attribute>
            <name>isHostPage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether the viewer occupies the whole page.
                Default to false.
            </description>
        </attribute>

       <attribute>
            <name>scrolling </name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the IFrame style "scrolling ".
                If isHostPage is true, ignore this attribute.
                ( auto | yes | no )
            </description>
        </attribute>

       <attribute>
            <name>position</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the style "position" of report container.
                If isHostPage is true, ignore this attribute.
                ( static | absolute | fixed | relative )
            </description>
        </attribute>

       <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the style of report container.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>
                        
        <attribute>
            <name>height</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the height of report container in pixels.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>width</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the width of report container in pixels.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>top</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the top of report container in pixels.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>left</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                 Sets the left of report container in pixels.
                 If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>frameborder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                 Specifies whether displays the iframe border.
                Default to no. 
                If isHostPage is true, ignore this attribute.
                ( Yes | No )
            </description>
        </attribute>
                        
        <attribute>
            <name>reportDesign</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report design file name.
                ( Absolute path, relative path or URL )
            </description>    
        </attribute>        

        <attribute>
            <name>reportDocument</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report document file name. 
                Noted: only support "file:" URL format.
                ( Absolute path, relative path or URL ) 
            </description>    
        </attribute>        

        <attribute>
            <name>reportletId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the instance id of reportlet.
                The "reportDocument" attribute should be required.
                Noted: frameset pattern doesn't support reportlet.
            </description>    
        </attribute>
                
        <attribute>
            <name>bookmark</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the targeted bookmark name.
            </description>            
        </attribute>
        
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the Locale information.
            </description>            
        </attribute>

        <attribute>
            <name>timeZone</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
            </description>            
        </attribute>

        <attribute>
            <name>svg</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether supports the SVG output format or not.
            </description>            
        </attribute>

        <attribute>
            <name>format</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the output format of report.
            </description>            
        </attribute>

        <attribute>
            <name>emitterId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the emitter id for the report output.
            </description>            
        </attribute>
        
        <attribute>
            <name>pageOverflow</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the page overflow setting for the PDF format.
                One of the following values:
                0 for "auto", 1 for "actual size", 2 for "fit to page". 
            </description>            
        </attribute>
        
        <attribute>
            <name>rtl</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether supports rtl page or not.
            </description>            
        </attribute>
                
        <attribute>
            <name>pageNum</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies output page number when render document file.
            </description>            
        </attribute>

        <attribute>
            <name>pageRange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies page range when render document file.
            </description>            
        </attribute>
                                
        <attribute>
            <name>resourceFolder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the referenced resource folder.
                Default value is defined in web.xml.
            </description>            
        </attribute>
                                            
        <attribute>
            <name>forceOverwriteDocument</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether forces to overwrite the generated document.
                If allowPageBreak is false,ignore this attribute.
                Default value is defined in web.xml.
            </description>            
        </attribute>

        <attribute>
            <name>showTitle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether shows the report title.
                Default to true.
            </description>            
        </attribute>
        
        <attribute>
            <name>showToolBar</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether shows the toolbar.
                Default to true.
            </description>            
        </attribute>

        <attribute>
            <name>showNavigationBar</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether shows the Navigation Bar.
                If allowPageBreak is false,ignore this attribute.
                Default to true.
            </description>            
        </attribute>

        <attribute>
            <name>showParameterPage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether show the parameter dialog or not.
                Default to true.
            </description>            
        </attribute>

        <attribute>
            <name>isReportlet</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether render reportlet by bookmark.
                Default to false.
            </description>            
        </attribute>
        
    </tag>

     <!--**********************************************-->
    <!--             Report Tag                       -->
    <!--**********************************************-->
    <tag>
        <name>report</name>
        <tag-class>org.eclipse.birt.report.taglib.ReportTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            The report tag can provide fast report preview without Ajax framework. 
            The report content can be output to web browser directly.
        </description>

        <attribute>
            <name>id</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the current viewer id. It should be unique.
                It can contain number,letter or underline.
            </description>            
        </attribute>    
                
        <attribute>
            <name>baseURL</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies base URL of BIRT viewer.
                Default to the current context.
                If report container is DIV, ignore this attribute.
            </description>
        </attribute>
        
        <attribute>
            <name>isHostPage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether the viewer occupies the whole page.
                Default to false.
            </description>
        </attribute>

       <attribute>
            <name>scrolling </name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the DIV/IFrame style "scrolling ".
                If isHostPage is true, ignore this attribute.
                ( auto | yes | no )
            </description>
        </attribute>

       <attribute>
            <name>position</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the style "position" of report container.
                If isHostPage is true, ignore this attribute.
                ( static | absolute | fixed | relative )
            </description>
        </attribute>

       <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the style of report container.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>
                        
        <attribute>
            <name>height</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the height of report container in pixels.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>width</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the width of report container in pixels.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>top</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the top of report container in pixels.
                If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>left</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                 Sets the left of report container in pixels.
                 If isHostPage is true, ignore this attribute.
            </description>
        </attribute>

        <attribute>
            <name>frameborder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                 Specifies whether displays the iframe border.
                 Available when user IFrame.
                Default to no.
                ( Yes | No )
            </description>
        </attribute>

        <attribute>
            <name>reportDesign</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report design file name.
                ( Absolute path, relative path or URL )
            </description>    
        </attribute>        

        <attribute>
            <name>reportDocument</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report document file name. 
                Noted: only support "file:" URL format.
                ( Absolute path, relative path or URL ) 
            </description>    
        </attribute>

        <attribute>
            <name>reportletId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the instance id of reportlet.
                The "reportDocument" attribute should be required.
            </description>    
        </attribute>
                            
        <attribute>
            <name>bookmark</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the targeted bookmark name.
            </description>            
        </attribute>
        
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the Locale information.
            </description>            
        </attribute>

        <attribute>
            <name>timeZone</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
            </description>            
        </attribute>

        <attribute>
            <name>svg</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether supports the SVG output format or not.
            </description>            
        </attribute>

        <attribute>
            <name>format</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the output format of report.
            </description>            
        </attribute>
        
        <attribute>
            <name>emitterId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the emitter id for the report output.
            </description>            
        </attribute>

        <attribute>
            <name>pageOverflow</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the page overflow setting for the PDF format.
                One of the following values:
                0 for "auto", 1 for "actual size", 2 for "fit to page". 
            </description>            
        </attribute>
        
        <attribute>
            <name>rtl</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether supports rtl page or not.
            </description>            
        </attribute>

        <attribute>
            <name>showParameterPage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether show the parameter dialog or not.
                Default to true.
                If report container is DIV, ignore this attribute.
            </description>            
        </attribute>
                                                
        <attribute>
            <name>resourceFolder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the referenced resource folder.
                Default value is defined in web.xml.
            </description>            
        </attribute>            
                                    
        <attribute>
            <name>reportContainer</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies iframe or div as report container.
                Default to iframe.
                ( iframe | div )
            </description>            
        </attribute>

        <attribute>
            <name>pageNum</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies output page number when render document file.
            </description>            
        </attribute>

        <attribute>
            <name>pageRange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies page range when render document file.
            </description>            
        </attribute>

        <attribute>
            <name>isReportlet</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether render reportlet by bookmark.
                Default to false.
            </description>            
        </attribute>
                
    </tag>    
    
    <!--**********************************************-->
    <!--             Report Parameter Tag             -->
    <!--**********************************************-->
     <tag>
        <name>param</name>
        <tag-class>org.eclipse.birt.report.taglib.ParamTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            The param tag specifies the parameters defined in report design file.
        </description>
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter name.
            </description>
        </attribute>
        <attribute>
            <name>pattern</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter pattern format.
            </description>
        </attribute>     
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter value. If doesn't set, value is null.
            </description>
        </attribute>
        <attribute>
            <name>displayText</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter display text.
            </description>
        </attribute>
        <attribute>
            <name>delim</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the delimiter for multiple values.
                Defaults to pipe "|".
            </description>
        </attribute>
        <attribute>
            <name>isLocale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether the report parameter value is a locale/format related string.
            </description>
        </attribute>
     </tag>   

    <!--**********************************************-->
    <!--             Report Parameter Value Tag       -->
    <!--**********************************************-->
     <tag>
        <name>value</name>
        <tag-class>org.eclipse.birt.report.taglib.ParamValueTag</tag-class>        
        <body-content>JSP</body-content>
        <description>
            The param value tag specifies multiple values for a given param tag.
        </description>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter value. If doesn't set, value is null.
            </description>
        </attribute>
        <attribute>
            <name>displayText</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter display text.
            </description>
        </attribute>
     </tag>   
     
    <!--**********************************************-->
    <!--             ParameterPage Tag                -->
    <!--**********************************************-->
    <tag>
        <name>parameterPage</name>
        <tag-class>org.eclipse.birt.report.taglib.RequesterTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            The parameterPage tag can help developers to display BIRT parameter page or create a user-defined parameter page.
            This tag can collect these parameters and submit to BIRT servlet to handle request.
        </description>
        
        <attribute>
            <name>id</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the parameter page id.It should be unique.
                It can contain number,letter or underline.                
            </description>            
        </attribute>    
        
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the parameter page name. 
                If attribute 'isCustom' is true, this name should be required and unique.
            </description>
        </attribute>

        <attribute>
            <name>isCustom</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether uses the user-defined parameter page.
                If false, use the BIRT parameter dialog.
                Default to false.
            </description>
        </attribute>

        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report title displayed at the top.
            </description>
        </attribute>
                        
          <attribute>
            <name>baseURL</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies base URL of BIRT viewer. 
                Default to the current context.
            </description>
        </attribute>
        
        <attribute>
            <name>scrolling </name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the DIV/IFrame style "scrolling ".
                ( auto | yes | no )
            </description>
        </attribute>
        
       <attribute>
            <name>position</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the style "position" of parameter page.
                ( static | absolute | fixed | relative )
            </description>
        </attribute>

       <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the style of parameter page.
            </description>
        </attribute>
                        
        <attribute>
            <name>height</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the height of parameter page in pixels.
            </description>
        </attribute>

        <attribute>
            <name>width</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the width of parameter page in pixels.
            </description>
        </attribute>

        <attribute>
            <name>top</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Sets the top of parameter page in pixels.
            </description>
        </attribute>

        <attribute>
            <name>left</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                 Sets the left of parameter page in pixels.
            </description>
        </attribute>

        <attribute>
            <name>frameborder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                 Specifies whether displays the iframe border.
                Default to no.
                If set "isCustom" to true, ignore this attribute.
                ( Yes | No )
            </description>
        </attribute>
                        
        <attribute>
            <name>reportDesign</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report design file name.
                ( Absolute path, relative path or URL )
            </description>    
        </attribute>        

        <attribute>
            <name>reportDocument</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report document file name. 
                Noted: only support "file:" URL format.
                ( Absolute path, relative path or URL ) 
            </description>    
        </attribute>        

        <attribute>
            <name>reportletId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the instance id of reportlet.
                The "reportDocument" attribute should be required.
                Noted: frameset pattern doesn't support reportlet.
            </description>    
        </attribute>

        <attribute>
            <name>pattern</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the servlet pattern for request submit. 
                BIRT supports three patterns: frameset, run and preview. 
                Can refer to the user-defined servlet pattern.
                Default to frameset.
            </description>            
        </attribute>

        <attribute>
            <name>target</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the target window for request submit.
            </description>            
        </attribute>
                        
        <attribute>
            <name>bookmark</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the targeted bookmark name.
            </description>            
        </attribute>
        
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the Locale information.
            </description>            
        </attribute>

        <attribute>
            <name>timeZone</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
            </description>            
        </attribute>

        <attribute>
            <name>svg</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether supports the SVG output format or not.
            </description>            
        </attribute>

        <attribute>
            <name>format</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the output format of report.
            </description>            
        </attribute>
        
        <attribute>
            <name>emitterId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the emitter id for the report output.
            </description>            
        </attribute>
        
        <attribute>
            <name>pageOverflow</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the page overflow setting for the PDF format.
                One of the following values:
                0 for "auto", 1 for "actual size", 2 for "fit to page". 
            </description>            
        </attribute>

        <attribute>
            <name>rtl</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether supports rtl page or not.
            </description>            
        </attribute>
                            
        <attribute>
            <name>resourceFolder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the referenced resource folder.
                Default value is defined in web.xml.
            </description>            
        </attribute>            
                                
        <attribute>
            <name>forceOverwriteDocument</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether forces to overwrite the generated document.
                If allowPageBreak is false,ignore this attribute.
                Default value is defined in web.xml.
            </description>            
        </attribute>

        <attribute>
            <name>showTitle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether shows the report title.
                Default to true.
            </description>            
        </attribute>
        
        <attribute>
            <name>showToolBar</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether shows the toolbar.
                Default to true.
            </description>            
        </attribute>

        <attribute>
            <name>showNavigationBar</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether shows the Navigation Bar.
                If allowPageBreak is false,ignore this attribute.
                Default to true.
            </description>            
        </attribute>

        <attribute>
            <name>isReportlet</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether render reportlet by bookmark.
                Default to false.
            </description>            
        </attribute>
                        
    </tag>

    <!--**********************************************-->
    <!--      Report Parameter Definition Tag         -->
    <!--**********************************************-->
     <tag>
        <name>paramDef</name>
        <tag-class>org.eclipse.birt.report.taglib.ParamDefTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            The param tag is used to generate html code for defined parameter in ParameterPage tag.
        </description>
        <attribute>
            <name>id</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the id of parameter control.It should be unique.
                It can contain number,letter or underline.
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter name.
            </description>
        </attribute>
        <attribute>
            <name>pattern</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter pattern format.
                It is used to parse defined parameter value string.
            </description>
        </attribute>     
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter value. If doesn't set, use default value.
            </description>
        </attribute>
        <attribute>
            <name>displayText</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the report parameter display text.
            </description>
        </attribute>
        <attribute>
            <name>isLocale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies whether the report parameter value is a locale/format related string.
                It is used to parse defined parameter value string.
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the title attribute of parameter control.
            </description>
        </attribute>        
        <attribute>
            <name>cssClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the css class attribute of parameter control.
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                Specifies the parameter control style.
            </description>
        </attribute>        
     </tag>                
</taglib>