<!-- $Id$ -->
<!--
   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.
-->
<appendix id="spec">
	<title>Tapestry Specification DTDs</title>
	

<para>
This appendix describes the four types of specifications
used in Tapestry.
</para>
 
<table>
	<title>Tapestry Specifications</title>
	<tgroup cols="5">
<thead>
<row>
	<entry>Type</entry>
	<entry>File Extension</entry>
	<entry>Root Element</entry>
	<entry>Public ID</entry>
	<entry>System ID</entry>
</row>
</thead>
<tbody>
<row>
	<entry>Application</entry>
	<entry>application</entry>
	<entry>&spec.application;</entry>
	<entry><literal>-//Howard Lewis Ship//Tapestry Specification 1.3//EN</literal></entry>
	<entry><literal>http://tapestry.sf.net/dtd/Tapestry_1_3.dtd</literal></entry>
</row>

<row>
	<entry>Page</entry>
	<entry>page</entry>
	<entry>&spec.page-specification;</entry>
	<entry><literal>-//Howard Lewis Ship//Tapestry Specification 1.3//EN</literal></entry>
	<entry><literal>http://tapestry.sf.net/dtd/Tapestry_1_3.dtd</literal></entry>
</row>

<row>
	<entry>Component</entry>
	<entry>jwc</entry>
	<entry>&spec.component-specification;</entry>
	<entry><literal>-//Howard Lewis Ship//Tapestry Specification 1.3//EN</literal></entry>
	<entry><literal>http://tapestry.sf.net/dtd/Tapestry_1_3.dtd</literal></entry>
</row>

<row>
	<entry>Library</entry>
	<entry>library</entry>
	<entry>&spec.library-specification;</entry>
	<entry><literal>-//Howard Lewis Ship//Tapestry Specification 1.3//EN</literal></entry>
	<entry><literal>http://tapestry.sf.net/dtd/Tapestry_1_3.dtd</literal></entry>
</row>

<row>
	<entry>Script</entry>
	<entry>script</entry>
	<entry>&script-spec.script;</entry>
	<entry><literal>-//Howard Lewis Ship//Tapestry Script 1.2//EN</literal></entry>
	<entry><literal>http://tapestry.sf.net/dtd/Tapestry_1_2.dtd</literal></entry>
</row>

</tbody>
</tgroup>
</table>

<para>
The four general Tapestry specifications (&spec.application;, &spec.component-specification;
&spec.page-specification; and &spec.library-specification;) all share the same DTD, but use different
root elements.
</para>

<section id="spec.application">
	<title><sgmltag class="starttag">application</sgmltag> element</title>
	

<para>
<emphasis>root element</emphasis>
</para>

<para>
The application specification defines the pages and components specific to a single Tapestry application.
It also defines any libraries that are used within the application.
</para>

<figure>
	<title><sgmltag class="starttag">application</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>User presentable name of application.</entry>
</row>
<row>
	<entry>engine-class</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>Name of an implementation of IEngine to instantiate.</entry>
</row>
</tbody>
</tgroup>

</informaltable>
</figure>

<figure>
	<title><sgmltag class="starttag">application</sgmltag> Elements</title>
<literallayout>
  &spec.description; *, &spec.property; *,
  (&spec.page; | &spec.component-alias; | &spec.service; | &spec.library; | &spec.extension;) *
</literallayout>
</figure>

</section>  <!-- spec.application -->

<section id="spec.bean">
	<title><sgmltag class="starttag">bean</sgmltag> element</title>
	
	
<para>
Appears in:
&spec.component-specification; and &spec.page-specification;
</para>	
	
<para>
A <sgmltag class="starttag">bean</sgmltag> is used to add behaviors to a page or component via aggregation.
Each <sgmltag class="starttag">bean</sgmltag> defines a named JavaBean that is instantiated on demand.
Beans are accessed through the OGNL expression <literal>beans.<replaceable>name</replaceable></literal>.
</para>

<para>
Once a bean is instantiated and initialized, it will be retained by the page or component
for some period of time, specified by the bean's lifecycle.
</para>

<variablelist>
	<title>bean lifecycle</title>
	<varlistentry>
		<term>none</term>
		<listitem>
			<para>
			The bean is not retained, a new bean will be created on each access.
			</para>
		</listitem>
	</varlistentry>

	<varlistentry>
		<term>page</term>
		<listitem>
			<para>
			The bean is retained for the lifecycle of the page itself.
			</para>
		</listitem>
	</varlistentry>
	
	<varlistentry>
		<term>render</term>
		<listitem> 
			<para>
			The bean is retained until the current render operation completes.
			This will discard the bean when a page or form finishes rewinding.
			</para>
		</listitem>
	</varlistentry>
		
	<varlistentry>
		<term>request</term>
		<listitem>
			<para>
			The bean is retained until the end of the current request.
			</para>
		</listitem>
	</varlistentry>
	

</variablelist>

<para>
Caution should be taken when using lifeycle <literal>page</literal>.  A bean is associated
with a particular instance of a page within a particular JVM.  Consecutive requests
may be processed using different instances of the page, possibly in different JVMs (if the application
is operating in a clustered environment).  No state particular to a single client session should
be stored in a page.
</para>

<para>
Beans must be public classes with a default (no arguments) constructor. Properties of the bean
may be configured using the &spec.set-property; and &spec.set-string-property; elements.
</para>

<figure>
	<title><sgmltag class="starttag">bean</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the bean, which must be a valid Java identifier.</entry>
</row>
<row>
	<entry>class</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the class to instantiate.</entry>
</row>
<row>
	<entry>lifecycle</entry>
	<entry><literal>none|page|render|request</literal></entry>
	<entry>no</entry>
	<entry><literal>request</literal></entry>
	<entry>As described above; duration that bean is retained.</entry>
</row>
</tbody>
</tgroup>

</informaltable>
</figure>


<figure>
	<title><sgmltag class="starttag">bean</sgmltag> Elements</title>
<literallayout>
  &spec.description; *, &spec.property; *,
  (&spec.set-property; | &spec.set-string-property;) *
</literallayout>
</figure>


</section> <!-- spec.bean -->	
 
<section id="spec.binding">
	<title><sgmltag class="starttag">binding</sgmltag> element</title>

<para>
Appears in: &spec.component;
</para>

<para>
Binds a parameter of an embedded component to an OGNL expression rooted
in its container.
</para>

<para>
In an instantiated component, bindings can be accessed with
the OGNL expression <literal>bindings.<replaceable>name</replaceable></literal>.
</para>


<figure>
	<title><sgmltag class="starttag">binding</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the parameter to bind.</entry>
</row>
<row>
	<entry>expression</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The OGNL expression, relative to the container, to be bound to the parameter.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.binding -->

<section id="spec.configure">
	<title><sgmltag class="starttag">configure</sgmltag> element</title>

<para>
Appears in: &spec.extension;
</para>

<para>
Allows a JavaBeans property of the extension to be set from a statically defined value.  The
<sgmltag class="starttag">configure</sgmltag> element
wraps around the static value.  The value is trimmed of leading and trailing
whitespace and optionally converted to a specified type before being assigned
to the property.
</para>

<figure>
	<title><sgmltag class="starttag">configure</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>property-name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the extension property to configure.</entry>
</row>
<row>
	<entry>type</entry>
	<entry><literal>boolean|int|long|double|String</literal></entry>
	<entry>no</entry>
	<entry><literal>String</literal></entry>
	<entry>The conversion to apply to the value.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>



</section> <!-- spec.configure -->

<section id="spec.component">
	<title><sgmltag class="starttag">component</sgmltag> element</title>
	
<para>
Appears in: &spec.component-specification; and &spec.page-specification;
</para>

<para>
Defines an embedded component within a container (a page or another component).
</para>

<para>
In an instantiated component, embedded components can be accessed with
the OGNL expression <literal>components.<replaceable>id</replaceable></literal>.
</para>


<figure>
	<title><sgmltag class="starttag">component</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>id</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>Identifier for the component here and in the component's template.  Must be
	a valid Java identifier.</entry>
</row>
<row>
	<entry>type</entry>
	<entry>string</entry>
	<entry>no</entry>
	<entry/>
	<entry>A component type to instantiate.</entry>
</row>
<row>
	<entry>copy-of</entry>
	<entry>string</entry>
	<entry>no</entry>
	<entry/>
	<entry>The name of a previously defined component.  The type and bindings of that
	component will be copied to this component.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

<para>
Either <literal>type</literal> or <literal>copy-of</literal> must be specified.
</para>

<para>
A component type is either a simple name or a qualified name.  A simple name is the name of
an component either provided by the framework, or
provided by the application (if the page or component is defined in an application),
or provided by the library (if the page or component is defined in a library).
</para>

<para>
A qualified name is a library id, a colon, and a simple name of a component provided
by the named library (for example, <literal>contrib:Palette</literal>).  
Library ids are defined by a &spec.library; element in the
containing library or application.
</para>
	
<figure>
	<title><sgmltag class="starttag">component</sgmltag> Elements</title>
<literallayout>
  &spec.property; *,
  (&spec.binding; | &spec.field-binding; | &spec.inherited-binding; | &spec.static-binding; | &spec.string-binding;) *
</literallayout>
</figure>

	
</section> <!-- spec.component -->

<section id="spec.component-alias">
	<title><sgmltag class="starttag">component-alias</sgmltag> element</title>
	
<para>
Appears in: &spec.application; and 	&spec.library-specification;
</para>

<para>
Defines a component type that may latter be used in a &spec.component; element
(for pages and components also defined by this application or library).
</para>

<figure>
	<title><sgmltag class="starttag">component-alias</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>type</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>A name to be used as a component type.</entry>
</row>
<row>
	<entry>specification-path</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The complete resource path to the component's specification (including leading
	slash and file extension).</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.component-alias -->


<section id="spec.component-specification">
	<title><sgmltag class="starttag">component-specification</sgmltag> element</title>

<para>
<emphasis>root element</emphasis>
</para>

<para>
Defines a new component, in terms of its API (&spec.parameter;s), embedded components, beans and
assets.
</para>

<para>
The structure of a <sgmltag class="starttag">component-specification</sgmltag>
is very similar to a &spec.page-specification; except components have additional attributes
and elements related to parameters.
</para>


<figure>
	<title><sgmltag class="starttag">component-specification</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>class</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The Java class to instantiate, which must implement the
	interface &IComponent;.  Typically, this is
	&BaseComponent; or a subclass of it.</entry>
</row>
<row>
	<entry>allow-body</entry>
	<entry><literal>yes|no</literal></entry>
	<entry>no</entry>
	<entry><literal>yes</literal></entry>
	<entry>
	<para>If <literal>yes</literal>, then any body for this component, from its
	containing page or component's template, is retained and may be 
	produced using a &RenderBody; component.
	</para>
	<para>If <literal>no</literal>, then any body for this component is
	discarded.
	</para>	
	</entry>
</row>
<row>
	<entry>allow-informal-parameters</entry>
	<entry><literal>yes|no </literal></entry>
	<entry>no</entry>
	<entry><literal>yes</literal></entry>
	<entry>
	<para>If <literal>yes</literal>, then any informal parameters
	(bindings that don't match a formal parameter) specified here, or in
	the component's tag within its container's template, are retained.
	Typically, they are converted into additional HTML attributes.
	</para>
	<para>If <literal>no</literal>, then informal parameters
	are not allowed in the specification, and discarded if in the template.
	</para>
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

<figure>
	<title><sgmltag class="starttag">component-specification</sgmltag> Elements</title>
<literallayout>
  &spec.description; *, &spec.parameter; *, &spec.reserved-parameter; *, &spec.property; *,
  (&spec.bean; | &spec.component; | &spec.external-asset; | &spec.context-asset; | &spec.private-asset;)*
</literallayout>
</figure>


</section> <!-- spec.component-specification -->

<section id="spec.context-asset">
	<title><sgmltag class="starttag">context-asset</sgmltag> element</title>

<para>
Specifies an asset located relative to the web application context root folder.
Context assets may be localized.
</para>

<para>
Assets for an instantiated component (or page) 
may be accessed using the OGNL expression <literal>assets.<replaceable>name</replaceable></literal>.
</para>

<figure>
	<title><sgmltag class="starttag">context-asset</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the asset, which must be a valid Java identifier.</entry>
</row>
<row>
	<entry>path</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The path to the asset, assuming a root directory matching the servlet context
	root directory.  The path should begin with leading forward slash.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.context-asset -->

<section id="spec.description">
	<title><sgmltag class="starttag">description</sgmltag> element</title>
	
<para>
Appears in: <emphasis>many</emphasis>
</para>

<para>
A description may be attached to a many different elements.  Descriptions are used
by an intelligent IDE to provide help.  The Tapestry Inspector may also display a description.
</para>

<note>
<para>
The DTD supports multiple <sgmltag class="starttag">description</sgmltag> elements, each
localized to a different language.  In practice, a single description, in English, is typically
used.  This approach to providing a localized description is likely to change in the future, and
it is probably safest to expect just a single <sgmltag class="starttag">description</sgmltag> tag
to be allowed in the next revision of the DTD.
</para>
</note>
	
<para>
The descriptive text appears inside the <sgmltag class="starttag">description</sgmltag> tags.  Leading
and trailing whitespace is removed and interior whitespace may be altered or removed.  Descriptions
should be short; external documentation can provide greater details.
</para>

<figure>
	<title><sgmltag class="starttag">description</sgmltag> element</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>

</thead>
<tbody>
<row>
	<entry>xml:lang</entry>
	<entry>string</entry>
	<entry>no</entry>
	<entry/>
	<entry>The language the message is localized to as an ISO language string.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>
	
</section> <!-- spec.description -->

<section id="spec.extension">
	<title><sgmltag class="starttag">extension</sgmltag> element</title>

<para>
Appears in: &spec.application; and &spec.library-specification;
</para>

<para>
Defines an extension, a JavaBean that is instantiated as needed to provide
a global service to the application.
</para>

<figure>
	<title><sgmltag class="starttag">extension</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>

</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>A name for the extension, which can (and should) look like
	a qualified class name, but may also include the dash character.
	</entry>
</row>
<row>
	<entry>class</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The Java class to instantiate.  The class must have a zero-arguments
	constructor.</entry>
</row>
<row>
	<entry>immediate</entry>
	<entry><literal>yes|no</literal></entry>
	<entry>no</entry>
	<entry><literal>no</literal></entry>
	<entry>If <literal>yes</literal>, the extension is instantiated when the specification is read.  If 
	<literal>no</literal>, then the extension is not created until first needed.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>


<figure>
	<title><sgmltag class="starttag">component-specification</sgmltag> Elements</title>
<literallayout>
  &spec.property; *, &spec.configure; *
</literallayout>
</figure>

</section> <!-- spec.extension -->

<section id="spec.external-asset">
	<title><sgmltag class="starttag">external-asset</sgmltag> element</title>

<para>
Appears in: &spec.component-specification; and &spec.page-specification;
</para>

<para>
Defines an asset at an arbitrary URL.  The URL may begin with a slash to indicate an asset on the same
web server as the application, or may be a complete URL to an arbitrary location on the Internet.
</para>

<para>
External assets may be accessed at runtime with the OGNL expression
<literal>assets.<replaceable>name</replaceable></literal>.
</para>

<figure>
	<title><sgmltag class="starttag">external-asset</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>

</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>A name for the asset. Asset names must be valid Java identifiers.
	</entry>
</row>
<row>
	<entry>URL</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The URL used to access the asset.</entry>
</row>
per</tbody>
</tgroup>
</informaltable>
</figure>


</section> <!-- spec.external-asset -->

<section id="spec.field-binding">
	<title><sgmltag class="starttag">field-binding</sgmltag> element</title>

<para>
Appears in: &spec.component;
</para>

<para>
Binds a parameter of an embedded component to a public static final field.
</para>

<note>
<para>
Although the same result can be accomplished using a &spec.binding;
element and the OGNL expression
<literal>@<replaceable>class-name</replaceable>@<replaceable>field-name</replaceable></literal>,
using a <sgmltag class="starttag">field-binding</sgmltag>
is more efficient, because Tapestry knows that the value is
invariant.
</para>
</note>

<para>
The class name must be the qualified class name.  If the package
is ommitted, <literal>java.lang</literal> is assumed (this makes
it easier to reference common fields
such as <literal>Boolean.TRUE</literal>).
</para>

<para>
In an instantiated component, bindings can be accessed with
the OGNL expression <literal>bindings.<replaceable>name</replaceable></literal>.
</para>


<figure>
	<title><sgmltag class="starttag">field-binding</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the parameter to bind.</entry>
</row>
<row>
	<entry>field-name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of a public static final field, in the form
	<literal><replaceable>class-name.field-name</replaceable></literal>.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>


</section> <!-- spec.field-binding -->

<section id="spec.inherited-binding">
	<title><sgmltag class="starttag">inherited-binding</sgmltag> element</title>

<para>
Appears in: &spec.component;
</para>

<para>
Binds a parameter of an embedded component to a parameter
of its container.
</para>


<para>
In an instantiated component, bindings can be accessed with
the OGNL expression <literal>bindings.<replaceable>name</replaceable></literal>.
</para>


<figure>
	<title><sgmltag class="starttag">inherited-binding</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the parameter to bind.</entry>
</row>
<row>
	<entry>parameter-name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of a parameter of the containing component.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>




</section> <!-- spec.inherited-binding -->

<section id="spec.library">
	<title><sgmltag class="starttag">library</sgmltag> element</title>
	
<para>
Appears in: &spec.application; and &spec.library-specification;
</para>

<para>
Establishes that the containing application or library uses components defined in
another library, and sets the prefix used to reference those components.
</para>

<figure>
	<title><sgmltag class="starttag">library</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>id</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The id associated with the library.  Components within the library
	can be referenced with the component type
	<literal><replaceable>id</replaceable>:<replaceable>name</replaceable></literal>.
	</entry>
</row>
<row>
	<entry>specification-path</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The complete resource path for the library specification.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>





</section> <!-- spec.library -->

<section id="spec.library-specification">
	<title><sgmltag class="starttag">library-specification</sgmltag> element</title>
	
<para>
<emphasis>root element</emphasis>
</para>

<para>
Defines the pages, components, services and libraries used by a library.  Very similar
to &spec.application;, but without attributes related application name or engine class.
</para>

<para>
The 	<sgmltag class="starttag">library-specification</sgmltag>
element has no attributes.
</para>
	

<figure>
	<title><sgmltag class="starttag">library-specification</sgmltag> Elements</title>
<literallayout>
  &spec.description; *, &spec.property; *,
  (&spec.page; | &spec.component-alias; | &spec.service; | &spec.library; | &spec.extension;) *
</literallayout>
</figure>


</section> <!-- spec.library-specification -->

<section id="spec.page">
	<title><sgmltag class="starttag">page</sgmltag> element</title>

<para>
Appears in: &spec.application; and &spec.library-specification;
</para>

<para>
Defines a page within an application (or contributed by a library).
Relates a logical name for the page to the path to the page's specification file.
</para>

<figure>
	<title><sgmltag class="starttag">page</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name for the page, which must start with a letter,
	and may contain letters, numbers, underscores and the dash
	character.
	</entry>
</row>
<row>
	<entry>specification-path</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>
	The complete resource path to the page's specification.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.page -->

<section id="spec.page-specification">
	<title><sgmltag class="starttag">page-specification</sgmltag> element</title>

<para>
<emphasis>root element</emphasis>
</para>

<para>
Defines a page within an application (or a library).  The 
<sgmltag class="starttag">page-specification</sgmltag>
is a subset of &spec.component-specification;
with attributes and entities related to parameters removed.
</para>


<figure>
	<title><sgmltag class="starttag">page-specification</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>class</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The Java class to instantiate, which must implement the
	interface &IPage;.  Typically, this is
	&BasePage; or a subclass of it.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

<figure>
	<title><sgmltag class="starttag">page-specification</sgmltag> Elements</title>
<literallayout>
  &spec.description; *, &spec.property; *,
  (&spec.bean; | &spec.component; | &spec.external-asset; | &spec.context-asset; | &spec.private-asset;)*
</literallayout>
</figure>


</section> <!-- spec.page-specification -->

<section id="spec.parameter">
	<title><sgmltag class="starttag">parameter</sgmltag> element</title>

<para>
Appears in: &spec.component-specification;
</para>

<para>
Defines a formal parameter of a component.
</para>

<figure>
	<title><sgmltag class="starttag">parameter</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the parameter, which must be 
	a valid Java identifier.</entry>
</row>
<row>
  <entry>java-type</entry>
  <entry>scalar name, or class name</entry>
  <entry>no</entry>
  <entry/>
  <entry>Required for connected parameters.  Specifies
   the type of the JavaBean property that a connected
   parameter writes and reads.  The property must
    match this exact value, which can be a fully specified class name,
    or the name of a scalar Java type.
   </entry>
  </row>
  
<row>
  <entry>required</entry>
  <entry><literal>yes|no</literal></entry>
  <entry>no</entry>
  <entry><literal>no</literal></entry>
  <entry>If <literal>yes</literal>, then the parameter must be
  bound (though it is possible that the binding's value
  will still be null).
 </entry>
</row>

<row>
  <entry>property-name</entry>
  <entry>string</entry>
  <entry>no</entry>
  <entry/>
  <entry>For connected parameters only; allows the name of the property
  to differ from the name of the parameter.  If not specified,
  the property name will be the same as the parameter name.
  </entry>
</row>

<row>
  <entry>direction</entry>
  <entry><literal>in|form|custom</literal></entry>
  <entry>no</entry>
  <entry><literal>custom</literal></entry>
  <entry>
  <para>
  Identifies the semantics of how the parameter is used by the
  component.  <literal>custom</literal>, the default, means the
  component explicitly controls reading and writing values through
  the binding.
  </para>
  
  <para>
  <literal>in</literal> means the property is set from the parameter
  before the component renders, and is reset back to default value
  after the component renders.
  </para>
  
  <para>
  <literal>form</literal> means that the property is set from the
  parameter when the component renders (as with <literal>in</literal>).
  When the form is submitted, the value is read from the property
  and used to set the binding value after the component rewinds.
  </para>
  </entry>
</row>

</tbody>
</tgroup>
</informaltable>
</figure>



</section> <!-- spec.parameter -->

<section id="spec.private-asset">
	<title><sgmltag class="starttag">private-asset</sgmltag> element</title>

<para>
Specifies located from the classpath.  These exist to support
reusable components packages (as part of a &spec.library-specification;)
packaged in a JAR.  Private assets will be localized.
</para>

<para>
Assets for an instantiated component (or page) 
may be accessed using the OGNL expression <literal>assets.<replaceable>name</replaceable></literal>.
</para>

<figure>
	<title><sgmltag class="starttag">private-asset</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the asset, which must be a valid Java identifier.</entry>
</row>
<row>
	<entry>resource-path</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The path to the asset on the classpath.  The path should begin with leading forward slash.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.private-asset -->

<section id="spec.property">
	<title><sgmltag class="starttag">property</sgmltag> element</title>
	
<para>
Appears in: <emphasis>many</emphasis>
</para>

<para>
The <sgmltag class="starttag">property</sgmltag> element is used to store meta-data
about some other element (it is contained within).  Tapestr ignores this meta-data
Any number of name/value pairs may be stored.  The value is the static text the <sgmltag class="starttag">property</sgmltag>
tag wraps around.
</para>

<figure>
	<title><sgmltag class="starttag">property</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the property.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>
</section> <!-- spec.property -->

<section id="spec.reserved-parameter">
	<title><sgmltag class="starttag">reserved-parameter</sgmltag> element</title>
	
<para>
Appears in: &spec.component-specification;
</para>

<para>
Used in components that allow informal parameters to limit the possible
informal parameters (so that there aren't conflicts with HTML attributes
generated by the component).
</para>

<para>
All formal parameters are automatically reserved.
</para>

<para>
Comparisons are caseless, so an informal parameter of "SRC", "sRc", etc., will match
a reserved parameter named "src" (or any variation), and be excluded.
</para>


<figure>
	<title><sgmltag class="starttag">reserved-parameter</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the reserved parameter.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>


</section> <!-- spec.reserved-parameter -->

<section id="spec.service">
	<title><sgmltag class="starttag">service</sgmltag> element</title>

<para>
Appears in: &spec.application; and &spec.library-specification;
</para>

<para>
Defines an &IEngineService; provided by the application or by a library.
</para>

<para>
The framework provides several services (home, direct, action, external, etc.).
Applications may override these services by defining different
services with the same names.
</para>

<para>
Libraries that provide services should use a qualified name (that is, put
a package prefix in front of the name) to avoid name collisions.
</para>


<figure>
	<title><sgmltag class="starttag">service</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the service.</entry>
</row>
<row>
	<entry>class</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The complete class name to instantiate.  The class must have
	a zero-arguments constructor and implement the interface
	&IEngineService;
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.service -->

<section id="spec.set-property">
	<title><sgmltag class="starttag">set-property</sgmltag> element</title>
	
<para>
Appears in: &spec.bean;
</para>

<para>
Allows a property of a helper bean to be set to an OGNL expression (evaluated
on the containing component or page).
</para>


<figure>
	<title><sgmltag class="starttag">set-property</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the helper bean property to set.</entry>
</row>
<row>
	<entry>expression</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The OGNL expression used to set the property.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.set-property -->

<section id="spec.set-string-property">
	<title><sgmltag class="starttag">set-string-property</sgmltag> element</title>

<para>
Appears in: &spec.bean;
</para>

<para>
Allows a property of a helper bean to be set to a localized string
value of its containing page or component.
</para>


<figure>
	<title><sgmltag class="starttag">set-string-property</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the helper bean property to set.</entry>
</row>
<row>
	<entry>key</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>A string property key of the containing page or component.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>

</section> <!-- spec.set-string-property -->

<section id="spec.static-binding">
	<title><sgmltag class="starttag">static-binding</sgmltag> element</title>

<para>
Appears in: &spec.component;
</para>

<para>
Binds a parameter of an embedded component to a static value.  The value,
which is stored as a string, is the wrapped contents
of the <sgmltag class="starttag">static-binding</sgmltag> tag.  Leading
and trailing whitespace is removed.
</para>

<para>
In an instantiated component, bindings can be accessed with
the OGNL expression <literal>bindings.<replaceable>name</replaceable></literal>.
</para>


<figure>
	<title><sgmltag class="starttag">static-binding</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the parameter to bind.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>


</section> <!-- spec.static-binding -->

<section id="spec.string-binding">
	<title><sgmltag class="starttag">string-binding</sgmltag> element</title>

<para>
Appears in: &spec.component;
</para>

<para>
Binds a parameter of an embedded component to a localized
string of its containing page or component.
</para>

<para>
In an instantiated component, bindings can be accessed with
the OGNL expression <literal>bindings.<replaceable>name</replaceable></literal>.
</para>


<figure>
	<title><sgmltag class="starttag">string-binding</sgmltag> Attributes</title>
<informaltable>
<tgroup cols="5">
<thead>
<row>
  <entry>Name</entry>
  <entry>Type</entry>
  <entry>Required ?</entry>
  <entry>Default Value</entry>
  <entry>Description</entry>
</row>
</thead>
<tbody>
<row>
	<entry>name</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The name of the parameter to bind.</entry>
</row>
<row>
	<entry>key</entry>
	<entry>string</entry>
	<entry>yes</entry>
	<entry/>
	<entry>The localized property key to retrieve.
	</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</figure>
</section> <!-- spec.string-binding -->

</appendix>
