<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2004 The Apache Software Foundation
  
   Licensed 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.
-->
<!DOCTYPE component-specification PUBLIC 
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
	
<component-specification class="org.apache.tapestry.html.Shell" allow-informal-parameters="yes">

  <description>
  Provides the outer tags in an HTML page: &lt;html&gt;, &lt;head&gt; and &lt;title&gt;.
  </description>

  <parameter name="title" 
  	type="java.lang.String" 
  	required="yes"
  	direction="in">
    <description>
    The title for the page.
    </description>
  </parameter>
  
  <parameter name="stylesheet" 
  	type="org.apache.tapestry.IAsset"
  	direction="in">
    <description>
    If specified, provides an external stylesheet for the page.
    </description>
  </parameter>
  
  <parameter name="stylesheets" type="java.lang.Object" direction="in">
  	<description>
  	Array or collection of stylesheet assets.
  	</description>	
  </parameter>

  <parameter name="doctype" 
  	type="java.lang.String"
  	direction="in"
  	default-value='"HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\""'>
    <description>
    Used to specify the full definition of the DOCTYPE element in the response page,
    for example 'math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd"' 

    The list of currently valid DOCTYPE settings can be found here:
    http://www.w3.org/QA/2002/04/valid-dtd-list.html

    If the parameter is null or empty, no DOCTYPE tag will be rendered
    </description>
  </parameter>

  <parameter name="DTD" 
  	type="java.lang.String"
  	direction="in"
  	default-value='null'>
    <description>
    This parameter is deprecated. Please use the 'doctype' parameter instead.

    Used to specify the DOCTYPE DTD of the response page.
    </description>
  </parameter>
  
  <parameter 
  	name="renderContentType" 
  	type="boolean"
  	direction="in"
  	default-value="true">
    <description>
    Determines whether to render an http-equiv element with the Content Type of this response.
    </description>
  </parameter>
  
  <parameter 
  	name="refresh" 
  	type="int"
  	direction="in">
    <description>
    If specified, the page will refresh itself after the specified delay (in seconds).
    </description>
  </parameter>
  
  <parameter 
  	name="delegate" 
  	type="org.apache.tapestry.IRender"
  	direction="in">
    <description>
    If specified, the delegate is rendered before the close of the &lt;head&gt;
    tag (typically used to provide &lt;meta&gt; tags).
    </description>
  </parameter>
  
</component-specification>
