<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
     targetNamespace="http://java.sun.com/xml/ns/j2ee"
     xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     elementFormDefault="qualified"
     attributeFormDefault="unqualified"
     version="2.0">

  <xsd:annotation>
    <xsd:documentation>
      @(#)web-jsptaglibrary_2_0.xsds	1.38 10/08/03
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      Copyright 2003 Sun Microsystems, Inc., 901 San Antonio
      Road, Palo Alto, California 94303, U.S.A. All rights
      reserved.

      Sun Microsystems, Inc. has intellectual property rights
      relating to technology described in this document. In
      particular, and without limitation, these intellectual
      property rights may include one or more of the U.S. patents
      listed at http://www.sun.com/patents and one or more
      additional patents or pending patent applications in the
      U.S. and other countries.

      This document and the technology which it describes are
      distributed under licenses restricting their use, copying,
      distribution, and decompilation. No part of this document
      may be reproduced in any form by any means without prior
      written authorization of Sun and its licensors, if any.

      Third-party software, including font technology, is
      copyrighted and licensed from Sun suppliers.

      Sun, Sun Microsystems, the Sun logo, Solaris, Java, J2EE,
      JavaServer Pages, Enterprise JavaBeans and the Java Coffee
      Cup logo are trademarks or registered trademarks of Sun
      Microsystems, Inc. in the U.S. and other countries.

      Federal Acquisitions: Commercial Software - Government Users
      Subject to Standard License Terms and Conditions.

    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>
      <![CDATA[

	This is the XML Schema for the JSP Taglibrary
	descriptor.  All Taglibrary descriptors must
	indicate the tag library schema by using the Taglibrary
	namespace:

	http://java.sun.com/xml/ns/j2ee

	and by indicating the version of the schema by
	using the version element as shown below:

	    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      xsi:schemaLocation="..."
	      version="2.0">
	      ...
	    </taglib>

	The instance documents may indicate the published
	version of the schema using xsi:schemaLocation attribute
	for J2EE namespace with the following location:

	http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd

	]]>
    </xsd:documentation>
  </xsd:annotation>

  <xsd:include schemaLocation="j2ee_1_4.xsd"/>


<!-- **************************************************** -->


  <xsd:element name="taglib" type="j2ee:tldTaglibType">
    <xsd:annotation>
      <xsd:documentation>

	The taglib tag is the document root.
	The definition of taglib is provided
	by the tldTaglibType.

      </xsd:documentation>
    </xsd:annotation>
    <xsd:unique name="tag-name-uniqueness">
      <xsd:annotation>
	<xsd:documentation>

	  The taglib element contains, among other things, tag and
	  tag-file elements.
	  The name subelements of these elements must each be unique.

	</xsd:documentation>
      </xsd:annotation>
      <xsd:selector xpath="j2ee:tag|j2ee:tag-file"/>
      <xsd:field    xpath="j2ee:name"/>
    </xsd:unique>

    <xsd:unique name="function-name-uniqueness">
      <xsd:annotation>
	<xsd:documentation>

	  The taglib element contains function elements.
	  The name subelements of these elements must each be unique.

	</xsd:documentation>
      </xsd:annotation>
      <xsd:selector xpath="j2ee:function"/>
      <xsd:field    xpath="j2ee:name"/>
    </xsd:unique>

  </xsd:element>


<!-- **************************************************** -->

  <xsd:complexType name="body-contentType">
    <xsd:annotation>
      <xsd:documentation>

        Specifies the type of body that is valid for a tag.
	This value is used by the JSP container to validate
	that a tag invocation has the correct body syntax and
	by page composition tools to assist the page author
	in providing a valid tag body.

	There are currently four values specified:

	tagdependent    The body of the tag is interpreted by the tag
			implementation itself, and is most likely
			in a different "language", e.g embedded SQL
			statements.

	JSP             The body of the tag contains nested JSP
			syntax.

	empty           The body must be empty

	scriptless      The body accepts only template text, EL
			Expressions, and JSP action elements.  No
			scripting elements are allowed.

      </xsd:documentation>
    </xsd:annotation>

    <xsd:simpleContent>
      <xsd:restriction base="j2ee:string">
	<xsd:enumeration value="tagdependent"/>
	<xsd:enumeration value="JSP"/>
	<xsd:enumeration value="empty"/>
	<xsd:enumeration value="scriptless"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="extensibleType" abstract="true">
    <xsd:annotation>
      <xsd:documentation>

	The extensibleType is an abstract base type that is used to
	define the type of extension-elements. Instance documents
	must substitute a known type to define the extension by
	using xsi:type attribute to define the actual type of
	extension-elements.

      </xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="functionType">
    <xsd:annotation>
      <xsd:documentation>

	The function element is used to provide information on each
	function in the tag library that is to be exposed to the EL.

	The function element may have several subelements defining:

	description         Optional tag-specific information

	display-name        A short name that is intended to be
			    displayed by tools

	icon                Optional icon element that can be used
			    by tools

	name                A unique name for this function

	function-class      Provides the name of the Java class that
			    implements the function

	function-signature  Provides the signature, as in the Java
			    Language Specification, of the Java
			    method that is to be used to implement
			    the function.

	example             Optional informal description of an
			    example of a use of this function

	function-extension  Zero or more extensions that provide extra
			    information about this function, for tool
			    consumption

      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:group ref="j2ee:descriptionGroup"/>
      <xsd:element name="name"
		   type="j2ee:tld-canonical-nameType">
	<xsd:annotation>
	  <xsd:documentation>

	    A unique name for this function.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
      <xsd:element name="function-class"
		   type="j2ee:fully-qualified-classType">
	<xsd:annotation>
	  <xsd:documentation>

	    Provides the fully-qualified class name of the Java
	    class containing the static method that implements
	    the function.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="function-signature"
		   type="j2ee:string">
	<xsd:annotation>
	  <xsd:documentation>

	    Provides the signature, of the static Java method that is
	    to be used to implement the function.  The syntax of the
	    function-signature element is as follows:

		FunctionSignature ::= ReturnType S MethodName S?
				      '(' S? Parameters? S? ')'

                ReturnType        ::= Type

		MethodName        ::= Identifier

		Parameters        ::=   Parameter
				      | ( Parameter S? ',' S? Parameters )

                Parameter         ::= Type

		Where:

 		    * Type is a basic type or a fully qualified
		      Java class name (including package name),
		      as per the 'Type' production in the Java
		      Language Specification, Second Edition,
		      Chapter 18.

                    * Identifier is a Java identifier, as per
		      the 'Identifier' production in the Java
		      Language Specification, Second
		      Edition, Chapter 18.

	    Example:

	    java.lang.String nickName( java.lang.String, int )

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="example"
		   type="j2ee:xsdStringType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    The example element contains an informal description
	    of an example of the use of this function.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="function-extension"
		   type="j2ee:tld-extensionType"
		   minOccurs="0"
		   maxOccurs="unbounded">
	<xsd:annotation>
	  <xsd:documentation>

	    Function extensions are for tool use only and must not affect
	    the behavior of a container.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="tagFileType">
    <xsd:annotation>
      <xsd:documentation>

	Defines an action in this tag library that is implemented
	as a .tag file.

	The tag-file element has two required subelements:

	description       Optional tag-specific information

	display-name      A short name that is intended to be
			  displayed by tools

	icon              Optional icon element that can be used
			  by tools

	name              The unique action name

	path              Where to find the .tag file implementing this
			  action, relative to the root of the web
			  application or the root of the JAR file for a
			  tag library packaged in a JAR.  This must
			  begin with /WEB-INF/tags if the .tag file
			  resides in the WAR, or /META-INF/tags if the
			  .tag file resides in a JAR.

	example           Optional informal description of an
			  example of a use of this tag

	tag-extension     Zero or more extensions that provide extra
			  information about this tag, for tool
			  consumption

      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:group ref="j2ee:descriptionGroup"/>
      <xsd:element name="name"
		   type="j2ee:tld-canonical-nameType"/>
      <xsd:element name="path"
		   type="j2ee:pathType"/>
      <xsd:element name="example"
		   type="j2ee:xsdStringType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    The example element contains an informal description
	    of an example of the use of a tag.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="tag-extension"
		   type="j2ee:tld-extensionType"
		   minOccurs="0"
		   maxOccurs="unbounded">
	<xsd:annotation>
	  <xsd:documentation>

	    Tag extensions are for tool use only and must not affect
	    the behavior of a container.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="tagType">
    <xsd:annotation>
      <xsd:documentation>

	The tag defines a unique tag in this tag library.  It has one
	attribute, id.

	The tag element may have several subelements defining:

	description       Optional tag-specific information

	display-name      A short name that is intended to be
			  displayed by tools

	icon              Optional icon element that can be used
			  by tools

	name              The unique action name

	tag-class         The tag handler class implementing
			  javax.servlet.jsp.tagext.JspTag

	tei-class         An optional subclass of
			  javax.servlet.jsp.tagext.TagExtraInfo

	body-content      The body content type

	variable          Optional scripting variable information

	attribute         All attributes of this action that are
			  evaluated prior to invocation.

	dynamic-attributes Whether this tag supports additional
			   attributes with dynamic names.  If
			   true, the tag-class must implement the
			   javax.servlet.jsp.tagext.DynamicAttributes
			   interface.  Defaults to false.

	example           Optional informal description of an
			  example of a use of this tag

	tag-extension     Zero or more extensions that provide extra
			  information about this tag, for tool
			  consumption

      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:group ref="j2ee:descriptionGroup"/>
      <xsd:element name="name"
		   type="j2ee:tld-canonical-nameType"/>
      <xsd:element name="tag-class"
		   type="j2ee:fully-qualified-classType">
	<xsd:annotation>
	  <xsd:documentation>

	    Defines the subclass of javax.serlvet.jsp.tagext.JspTag
	    that implements the request time semantics for
	    this tag. (required)

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="tei-class"
		   type="j2ee:fully-qualified-classType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    Defines the subclass of javax.servlet.jsp.tagext.TagExtraInfo
	    for this tag. (optional)

	    If this is not given, the class is not consulted at
	    translation time.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
      <xsd:element name="body-content"
		   type="j2ee:body-contentType">
	<xsd:annotation>
	  <xsd:documentation>

	    Specifies the format for the body of this tag.
	    The default in JSP 1.2 was "JSP" but because this
	    is an invalid setting for simple tag handlers, there
	    is no longer a default in JSP 2.0.  A reasonable
	    default for simple tag handlers is "scriptless" if
	    the tag can have a body.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
      <xsd:element name="variable"
		   type="j2ee:variableType"
		   minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="attribute"
		   type="j2ee:tld-attributeType"
		   minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="dynamic-attributes"
		   type="j2ee:generic-booleanType"
		   minOccurs="0"/>
      <xsd:element name="example"
		   type="j2ee:xsdStringType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    The example element contains an informal description
	    of an example of the use of a tag.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="tag-extension"
		   type="j2ee:tld-extensionType"
		   minOccurs="0"
		   maxOccurs="unbounded">
	<xsd:annotation>
	  <xsd:documentation>

	    Tag extensions are for tool use only and must not affect
	    the behavior of a container.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="tld-attributeType">
    <xsd:annotation>
      <xsd:documentation>

	The attribute element defines an attribute for the nesting
	tag.  The attributre element may have several subelements
	defining:

	description     a description of the attribute

	name            the name of the attribute

	required        whether the attribute is required or
			optional

	rtexprvalue     whether the attribute is a runtime attribute

	type            the type of the attributes

	fragment        whether this attribute is a fragment

      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
		   type="j2ee:descriptionType"
		   minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="name"
		   type="j2ee:java-identifierType"/>
      <xsd:element name="required"
		   type="j2ee:generic-booleanType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    Defines if the nesting attribute is required or
	    optional.

	    If not present then the default is "false", i.e
	    the attribute is optional.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>

      <xsd:choice>
	<xsd:sequence>
	  <xsd:element name="rtexprvalue"
		       type="j2ee:generic-booleanType"
		       minOccurs="0">
	    <xsd:annotation>
	      <xsd:documentation>

		Defines if the nesting attribute can have scriptlet
		expressions as a value, i.e the value of the
		attribute may be dynamically calculated at request
		time, as opposed to a static value determined at
		translation time.

		If not present then the default is "false", i.e the
		attribute has a static value

	      </xsd:documentation>
	    </xsd:annotation>

	  </xsd:element>
	  <xsd:element name="type"
		       type="j2ee:fully-qualified-classType"
		       minOccurs="0">
	    <xsd:annotation>
	      <xsd:documentation>

		Defines the Java type of the attributes value.  For
		static values (those determined at translation time)
		the type is always java.lang.String.

	      </xsd:documentation>
	    </xsd:annotation>
	  </xsd:element>
	</xsd:sequence>
	<xsd:element name="fragment"
		     type="j2ee:generic-booleanType"
		     minOccurs="0">
	  <xsd:annotation>
	    <xsd:documentation>

	      "true" if this attribute is of type
	      javax.jsp.tagext.JspFragment, representing dynamic
	      content that can be re-evaluated as many times
	      as needed by the tag handler.  If omitted or "false",
	      the default is still type="java.lang.String"

	    </xsd:documentation>
	  </xsd:annotation>
	</xsd:element>
      </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="tld-canonical-nameType">

    <xsd:annotation>
      <xsd:documentation>

	Defines the canonical name of a tag or attribute being
	defined.

	The name must conform to the lexical rules for an NMTOKEN.

      </xsd:documentation>
    </xsd:annotation>

    <xsd:simpleContent>
      <xsd:restriction base="j2ee:xsdNMTOKENType"/>
    </xsd:simpleContent>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="tld-extensionType">
    <xsd:annotation>
      <xsd:documentation>

	The tld-extensionType is used to indicate
	extensions to a specific TLD element.

	It is used by elements to designate an extension block
	that is targeted to a specific extension designated by
	a set of extension elements that are declared by a
	namespace. The namespace identifies the extension to
	the tool that processes the extension.

	The type of the extension-element is abstract. Therefore,
	a concrete type must be specified by the TLD using
	xsi:type attribute for each extension-element.

      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="extension-element"
		   type="j2ee:extensibleType"
		   maxOccurs="unbounded"/>
    </xsd:sequence>

    <xsd:attribute name="namespace"
		   use="required"
		   type="xsd:anyURI"/>
    <xsd:attribute name="id" type="xsd:ID"/>

  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="tldTaglibType">
    <xsd:annotation>
      <xsd:documentation>

	The taglib tag is the document root, it defines:

	description     a simple string describing the "use" of this
			taglib, should be user discernable

	display-name    the display-name element contains a
			short name that is intended to be displayed
			by tools

	icon            optional icon that can be used by tools

	tlib-version    the version of the tag library implementation

	short-name      a simple default short name that could be
			used by a JSP authoring tool to create
			names with a mnemonic value; for example,
			the it may be used as the prefered prefix
			value in taglib directives

	uri             a uri uniquely identifying this taglib

	validator       optional TagLibraryValidator information

	listener        optional event listener specification

	tag             tags in this tag library

	tag-file        tag files in this tag library

	function        zero or more EL functions defined in this
			tag library

	taglib-extension zero or more extensions that provide extra
			information about this taglib, for tool
			consumption

      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="j2ee:descriptionGroup"/>
      <xsd:element name="tlib-version"
		   type="j2ee:dewey-versionType">
	<xsd:annotation>
	  <xsd:documentation>

	    Describes this version (number) of the taglibrary.
	    It is described as a dewey decimal.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>

      <xsd:element name="short-name"
		   type="j2ee:tld-canonical-nameType">
	<xsd:annotation>
	  <xsd:documentation>

	    Defines a simple default name that could be used by
	    a JSP authoring tool to create names with a
	    mnemonicvalue; for example, it may be used as the
	    preferred prefix value in taglib directives.  Do
	    not use white space, and do not start with digits
	    or underscore.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="uri"
		   type="j2ee:xsdAnyURIType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    Defines a public URI that uniquely identifies this
	    version of the taglibrary.  Leave it empty if it
	    does not apply.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>
      <xsd:element name="validator"
		   type="j2ee:validatorType"
		   minOccurs="0">
      </xsd:element>
      <xsd:element name="listener"
		   type="j2ee:listenerType"
		   minOccurs="0" maxOccurs="unbounded">
      </xsd:element>
      <xsd:element name="tag"
		   type="j2ee:tagType"
		   minOccurs="0"
		   maxOccurs="unbounded"/>
      <xsd:element name="tag-file"
		   type="j2ee:tagFileType"
		   minOccurs="0"
		   maxOccurs="unbounded"/>
      <xsd:element name="function"
		   type="j2ee:functionType"
		   minOccurs="0"
		   maxOccurs="unbounded"/>
      <xsd:element name="taglib-extension"
		   type="j2ee:tld-extensionType"
		   minOccurs="0"
		   maxOccurs="unbounded">
	<xsd:annotation>
	  <xsd:documentation>

	    Taglib extensions are for tool use only and must not affect
	    the behavior of a container.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="version"
		   type="j2ee:dewey-versionType"
		   fixed="2.0"
		   use="required">
      <xsd:annotation>
	<xsd:documentation>

	  Describes the JSP version (number) this taglibrary
	  requires in order to function (dewey decimal)

	</xsd:documentation>
      </xsd:annotation>

    </xsd:attribute>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="validatorType">
    <xsd:annotation>
      <xsd:documentation>

	A validator that can be used to validate
	the conformance of a JSP page to using this tag library is
	defined by a validatorType.

      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description"
		   type="j2ee:descriptionType"
		   minOccurs="0"
		   maxOccurs="unbounded"/>
      <xsd:element name="validator-class"
		   type="j2ee:fully-qualified-classType">
	<xsd:annotation>
	  <xsd:documentation>

	    Defines the TagLibraryValidator class that can be used
	    to validate the conformance of a JSP page to using this
	    tag library.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
      <xsd:element name="init-param"
		   type="j2ee:param-valueType"
		   minOccurs="0" maxOccurs="unbounded">
	<xsd:annotation>
	  <xsd:documentation>

	    The init-param element contains a name/value pair as an
	    initialization param.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>

    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="variable-scopeType">
    <xsd:annotation>
      <xsd:documentation>

	This type defines scope of the scripting variable.  See
	TagExtraInfo for details.  The allowed values are,
	"NESTED", "AT_BEGIN" and "AT_END".

      </xsd:documentation>
    </xsd:annotation>

    <xsd:simpleContent>
      <xsd:restriction base="j2ee:string">
	<xsd:enumeration value="NESTED"/>
	<xsd:enumeration value="AT_BEGIN"/>
	<xsd:enumeration value="AT_END"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="variableType">
    <xsd:annotation>
      <xsd:documentation>

	The variableType provides information on the scripting
	variables defined by using this tag.  It is a (translation
	time) error for a tag that has one or more variable
	subelements to have a TagExtraInfo class that returns a
	non-null value from a call to getVariableInfo().

	The subelements of variableType are of the form:

	description              Optional description of this
				 variable

	name-given               The variable name as a constant

	name-from-attribute      The name of an attribute whose
				 (translation time) value will
				 give the name of the
				 variable.  One of name-given or
				 name-from-attribute is required.

	variable-class           Name of the class of the variable.
				 java.lang.String is default.

	declare                  Whether the variable is declared
				 or not.  True is the default.

	scope                    The scope of the scripting varaible
				 defined.  NESTED is default.

      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description"
		   type="j2ee:descriptionType"
		   minOccurs="0" maxOccurs="unbounded"/>
      <xsd:choice>
	<xsd:element name="name-given"
		     type="j2ee:java-identifierType">
	  <xsd:annotation>
	    <xsd:documentation>

	      The name for the scripting variable.

	    </xsd:documentation>
	  </xsd:annotation>
	</xsd:element>

	<xsd:element name="name-from-attribute"
		     type="j2ee:java-identifierType">
	  <xsd:annotation>
	    <xsd:documentation>

	      The name of an attribute whose
	      (translation-time) value will give the name of
	      the variable.

	    </xsd:documentation>
	  </xsd:annotation>
	</xsd:element>
      </xsd:choice>
      <xsd:element name="variable-class"
		   type="j2ee:fully-qualified-classType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    The optional name of the class for the scripting
	    variable.  The default is java.lang.String.

	  </xsd:documentation>
	</xsd:annotation>

      </xsd:element>

      <xsd:element name="declare"
		   type="j2ee:generic-booleanType"
		   minOccurs="0">

	<xsd:annotation>
	  <xsd:documentation>

	    Whether the scripting variable is to be defined
	    or not.  See TagExtraInfo for details.  This
	    element is optional and "true" is the default.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
      <xsd:element name="scope"
		   type="j2ee:variable-scopeType"
		   minOccurs="0">
	<xsd:annotation>
	  <xsd:documentation>

	    The element is optional and "NESTED" is the default.

	  </xsd:documentation>
	</xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

</xsd:schema>

