- Add xsd for JSP 2.1.
authorremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 1 Dec 2006 17:02:24 +0000 (17:02 +0000)
committerremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 1 Dec 2006 17:02:24 +0000 (17:02 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@481296 13f79535-47bb-0310-9956-ffa450edef68

java/javax/servlet/jsp/resources/jsp_2_1.xsd [new file with mode: 0644]
java/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd [new file with mode: 0644]

diff --git a/java/javax/servlet/jsp/resources/jsp_2_1.xsd b/java/javax/servlet/jsp/resources/jsp_2_1.xsd
new file mode 100644 (file)
index 0000000..b4e9bc7
--- /dev/null
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+           targetNamespace="http://java.sun.com/xml/ns/javaee"
+           xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+           xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+           elementFormDefault="qualified"
+           attributeFormDefault="unqualified"
+           version="2.1">
+  <xsd:annotation>
+    <xsd:documentation>
+      @(#)jsp_2_1.xsds 1.5 08/11/05
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright 2003-2005 Sun Microsystems, Inc.
+      4150 Network Circle
+      Santa Clara, California 95054
+      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>
+
+      This is the XML Schema for the JSP 2.1 deployment descriptor
+      types.  The JSP 2.1 schema contains all the special
+      structures and datatypes that are necessary to use JSP files
+      from a web application.
+
+      The contents of this schema is used by the web-app_2_5.xsd
+      file to define JSP specific content.
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Java EE
+      deployment descriptor elements unless indicated otherwise.
+
+      - In elements that specify a pathname to a file within the
+       same JAR file, relative filenames (i.e., those not
+       starting with "/") are considered relative to the root of
+       the JAR file's namespace.  Absolute filenames (i.e., those
+       starting with "/") also specify names in the root of the
+       JAR file's namespace.  In general, relative names are
+       preferred.  The exception is .war files where absolute
+       names are preferred for consistency with the Servlet API.
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="javaee_5.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+       The jsp-configType is used to provide global configuration
+       information for the JSP files in a web application. It has
+       two subelements, taglib and jsp-property-group.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="taglib"
+                  type="javaee:taglibType"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xsd:element name="jsp-property-group"
+                  type="javaee:jsp-property-groupType"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-fileType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+       The jsp-file element contains the full path to a JSP file
+       within the web application beginning with a `/'.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:pathType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-property-groupType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+       The jsp-property-groupType is used to group a number of
+       files so they can be given global property information.
+       All files so described are deemed to be JSP files.  The
+       following additional properties can be described:
+
+           - Control whether EL is ignored.
+           - Control whether scripting elements are invalid.
+           - Indicate pageEncoding information.
+           - Indicate that a resource is a JSP document (XML).
+           - Prelude and Coda automatic includes.
+            - Control whether the character sequence #{ is allowed
+              when used as a String literal.
+            - Control whether template text containing only
+              whitespaces must be removed from the response output.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="url-pattern"
+                  type="javaee:url-patternType"
+                  maxOccurs="unbounded"/>
+      <xsd:element name="el-ignored"
+                  type="javaee:true-falseType"
+                  minOccurs="0">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           Can be used to easily set the isELIgnored
+           property of a group of JSP pages.  By default, the
+           EL evaluation is enabled for Web Applications using
+           a Servlet 2.4 or greater web.xml, and disabled
+           otherwise.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="page-encoding"
+                  type="javaee:string"
+                  minOccurs="0">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           The valid values of page-encoding are those of the
+           pageEncoding page directive.  It is a
+           translation-time error to name different encodings
+           in the pageEncoding attribute of the page directive
+           of a JSP page and in a JSP configuration element
+           matching the page.  It is also a translation-time
+           error to name different encodings in the prolog
+           or text declaration of a document in XML syntax and
+           in a JSP configuration element matching the document.
+           It is legal to name the same encoding through
+           mulitple mechanisms.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="scripting-invalid"
+                  type="javaee:true-falseType"
+                  minOccurs="0">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           Can be used to easily disable scripting in a
+           group of JSP pages.  By default, scripting is
+           enabled.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="is-xml"
+                  type="javaee:true-falseType"
+                  minOccurs="0">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           If true, denotes that the group of resources
+           that match the URL pattern are JSP documents,
+           and thus must be interpreted as XML documents.
+           If false, the resources are assumed to not
+           be JSP documents, unless there is another
+           property group that indicates otherwise.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="include-prelude"
+                  type="javaee:pathType"
+                  minOccurs="0"
+                  maxOccurs="unbounded">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           The include-prelude element is a context-relative
+           path that must correspond to an element in the
+           Web Application.  When the element is present,
+           the given path will be automatically included (as
+           in an include directive) at the beginning of each
+           JSP page in this jsp-property-group.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="include-coda"
+                  type="javaee:pathType"
+                  minOccurs="0"
+                  maxOccurs="unbounded">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           The include-coda element is a context-relative
+           path that must correspond to an element in the
+           Web Application.  When the element is present,
+           the given path will be automatically included (as
+           in an include directive) at the end of each
+           JSP page in this jsp-property-group.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="deferred-syntax-allowed-as-literal"
+                  type="javaee:true-falseType"
+                  minOccurs="0">
+       <xsd:annotation>
+         <xsd:documentation>
+
+             The character sequence #{ is reserved for EL expressions.
+             Consequently, a translation error occurs if the #{
+             character sequence is used as a String literal, unless
+             this element is enabled (true). Disabled (false) by
+             default.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="trim-directive-whitespaces"
+                  type="javaee:true-falseType"
+                  minOccurs="0">
+       <xsd:annotation>
+         <xsd:documentation>
+
+             Indicates that template text containing only whitespaces
+             must be removed from the response output. It has no
+             effect on JSP documents (XML syntax). Disabled (false)
+             by default.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="taglibType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+       The taglibType defines the syntax for declaring in
+       the deployment descriptor that a tag library is
+       available to the application.  This can be done
+       to override implicit map entries from TLD files and
+       from the container.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="taglib-uri"
+                  type="javaee:string">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           A taglib-uri element describes a URI identifying a
+           tag library used in the web application.  The body
+           of the taglib-uri element may be either an
+           absolute URI specification, or a relative URI.
+           There should be no entries in web.xml with the
+           same taglib-uri value.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="taglib-location"
+                  type="javaee:pathType">
+       <xsd:annotation>
+         <xsd:documentation>
+
+           the taglib-location element contains the location
+           (as a resource relative to the root of the web
+           application) where to find the Tag Library
+           Description file for the tag library.
+
+         </xsd:documentation>
+       </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
+
diff --git a/java/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd b/java/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd
new file mode 100644 (file)
index 0000000..7154689
--- /dev/null
@@ -0,0 +1,1160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<xsd:schema
+     targetNamespace="http://java.sun.com/xml/ns/javaee"
+     xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+     elementFormDefault="qualified"
+     attributeFormDefault="unqualified"
+     version="2.1">
+
+  <xsd:annotation>
+    <xsd:documentation>
+      @(#)web-jsptaglibrary_2_1.xsds   1.1
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright 2003-2005 Sun Microsystems, Inc.
+      4150 Network Circle
+      Santa Clara, California 95054
+      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/javaee
+
+       and by indicating the version of the schema by
+       using the version element as shown below:
+
+           <taglib xmlns="http://java.sun.com/xml/ns/javaee"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="..."
+             version="2.1">
+             ...
+           </taglib>
+
+       The instance documents may indicate the published
+       version of the schema using xsi:schemaLocation attribute
+       for Java EE namespace with the following location:
+
+       http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd
+
+       ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="javaee_5.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="taglib" type="javaee: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="javaee:tag|javaee:tag-file"/>
+      <xsd:field    xpath="javaee: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="javaee:function"/>
+      <xsd:field    xpath="javaee: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="javaee: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="javaee:descriptionGroup"/>
+      <xsd:element name="name"
+                  type="javaee: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="javaee: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="javaee: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="javaee: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="javaee: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="javaee:descriptionGroup"/>
+      <xsd:element name="name"
+                  type="javaee:tld-canonical-nameType"/>
+      <xsd:element name="path"
+                  type="javaee:pathType"/>
+      <xsd:element name="example"
+                  type="javaee: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="javaee: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="javaee:descriptionGroup"/>
+      <xsd:element name="name"
+                  type="javaee:tld-canonical-nameType"/>
+      <xsd:element name="tag-class"
+                  type="javaee: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="javaee: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="javaee: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="javaee:variableType"
+                  minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="attribute"
+                  type="javaee:tld-attributeType"
+                  minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="dynamic-attributes"
+                  type="javaee:generic-booleanType"
+                  minOccurs="0"/>
+      <xsd:element name="example"
+                  type="javaee: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="javaee: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 attribute 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
+
+        deferred-value  present if this attribute is to be parsed as a
+                        javax.el.ValueExpression
+
+        deferred-method present if this attribute is to be parsed as a
+                        javax.el.MethodExpression
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                  type="javaee:descriptionType"
+                  minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="name"
+                  type="javaee:java-identifierType"/>
+      <xsd:element name="required"
+                  type="javaee: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:sequence minOccurs="0">
+           <xsd:element name="rtexprvalue"
+                        type="javaee:generic-booleanType">
+             <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="javaee:fully-qualified-classType"
+                        minOccurs="0">
+             <xsd:annotation>
+               <xsd:documentation>
+
+                 Defines the Java type of the attributes value.
+                  If this element is omitted, the expected type is
+                  assumed to be "java.lang.Object".
+
+               </xsd:documentation>
+             </xsd:annotation>
+           </xsd:element>
+         </xsd:sequence>
+
+          <xsd:choice>
+           <xsd:element name="deferred-value"
+                        type="javaee:tld-deferred-valueType"
+                        minOccurs="0">
+             <xsd:annotation>
+               <xsd:documentation>
+
+                  Present if the value for this attribute is to be
+                  passed to the tag handler as a
+                  javax.el.ValueExpression. This allows for deferred
+                  evaluation of EL expressions. An optional subelement
+                  will contain the expected type that the value will
+                  be coerced to after evaluation of the expression.
+                  The type defaults to Object if one is not provided.
+
+               </xsd:documentation>
+             </xsd:annotation>
+           </xsd:element>
+           <xsd:element name="deferred-method"
+                      type="javaee:tld-deferred-methodType"
+                      minOccurs="0">
+             <xsd:annotation>
+               <xsd:documentation>
+
+                Present if the value for this attribute is to be
+                passed to the tag handler as a
+                javax.el.MethodExpression. This allows for deferred
+                evaluation of an EL expression that identifies a
+                method to be invoked on an Object. An optional
+                subelement will contain the expected method
+                signature. The signature defaults to "void method()"
+                if one is not provided.
+
+               </xsd:documentation>
+             </xsd:annotation>
+           </xsd:element>
+          </xsd:choice>
+        </xsd:sequence>
+
+       <xsd:element name="fragment"
+                    type="javaee: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="javaee:xsdNMTOKENType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-deferred-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines information about how to provide the value for a
+        tag handler attribute that accepts a javax.el.MethodExpression.
+
+       The deferred-method element has one optional subelement:
+
+       method-signature  Provides the signature, as in the Java
+                          Language Specifies, that is expected for
+                          the method being identified by the
+                          expression.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="method-signature"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Provides the expected signature of the method identified
+            by the javax.el.MethodExpression.
+
+            This disambiguates overloaded methods and ensures that
+            the return value is of the expected type.
+
+            The syntax of the method-signature element is identical
+            to that of the function-signature element.  See the
+            documentation for function-signature for more details.
+
+           The name of the method is for documentation purposes only
+           and is ignored by the JSP container.
+
+            Example:
+
+              boolean validate(java.lang.String)
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-deferred-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines information about how to provide the value for a
+        tag handler attribute that accepts a javax.el.ValueExpression.
+
+       The deferred-value element has one optional subelement:
+
+       type            the expected type of the attribute
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully-qualified name of the Java type that is the
+            expected type for this deferred expression.  If this
+            element is omitted, the expected type is assumed to be
+            "java.lang.Object".
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </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="javaee: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="javaee:descriptionGroup"/>
+      <xsd:element name="tlib-version"
+                  type="javaee: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="javaee: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="javaee: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="javaee:validatorType"
+                  minOccurs="0">
+      </xsd:element>
+      <xsd:element name="listener"
+                  type="javaee:listenerType"
+                  minOccurs="0" maxOccurs="unbounded">
+      </xsd:element>
+      <xsd:element name="tag"
+                  type="javaee:tagType"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xsd:element name="tag-file"
+                  type="javaee:tagFileType"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xsd:element name="function"
+                  type="javaee:functionType"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xsd:element name="taglib-extension"
+                  type="javaee: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="javaee:dewey-versionType"
+                  fixed="2.1"
+                  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="javaee:descriptionType"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xsd:element name="validator-class"
+                  type="javaee: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="javaee: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="javaee: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="javaee:descriptionType"
+                  minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:choice>
+       <xsd:element name="name-given"
+                    type="javaee: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="javaee: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="javaee: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="javaee: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="javaee: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>
+