eduardop 01/07/27 16:45:23
Modified: src/share/dtd jspxml.xsd
Log:
Converted the descripton for XML syntax to the final version of the XML Schema spec
Note that this description is *not* normative, and it is included only as
documentation
Revision Changes Path
1.6 +523 -361 jakarta-servletapi-4/src/share/dtd/jspxml.xsd
Index: jspxml.xsd
===================================================================
RCS file: /home/cvs/jakarta-servletapi-4/src/share/dtd/jspxml.xsd,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- jspxml.xsd 2001/04/27 16:57:47 1.5
+++ jspxml.xsd 2001/07/27 23:45:23 1.6
@@ -1,367 +1,529 @@
<?xml version ="1.0"?>
<!DOCTYPE schema [
<!-- Patterns -->
-<!ENTITY Identifier "(\p{L}|_|$)(\p{N}|\p{L}|_|$)*">
-<!ENTITY TypeName "&Identifier;(\.&Identifier;)*">
-<!ENTITY WS "\s*">
-<!ENTITY Import "&TypeName;(\.\*)?">
-<!ENTITY ImportList "&Import;(&WS;,&WS;&Import;)*">
-<!ENTITY SetProp "(&Identifier;|\*)">
-<!ENTITY RelativeURL "[^:#/\?]*(:{0,0}|[#/\?].*)">
-<!ENTITY Length "[0-9]*%?">
-<!ENTITY AsciiName "[A-Za-z0-9_-]*">
-<!ENTITY ContentType "&AsciiName;/&AsciiName;(;&WS;(encoding=)?&AsciiName;)?">
-<!ENTITY Buffer "[0-9]+kb">
+<!ENTITY Identifier "(\p{L}|_|$)(\p{N}|\p{L}|_|$)*">
+<!ENTITY TypeName "&Identifier;(\.&Identifier;)*">
+<!ENTITY WS "\s*">
+<!ENTITY Import "&TypeName;(\.\*)?">
+<!ENTITY ImportList "&Import;(&WS;,&WS;&Import;)*">
+<!ENTITY SetProp "(&Identifier;|\*)">
+<!ENTITY RelativeURL "[^:#/\?]*(:{0,0}|[#/\?].*)">
+<!ENTITY Length "[0-9]*%?">
+<!ENTITY AsciiName "[A-Za-z0-9_-]*">
+<!ENTITY ValidContentType "&AsciiName;/&AsciiName;(;&WS;(charset=)?&AsciiName;)?">
+<!ENTITY ValidPageEncoding "&AsciiName;/&AsciiName;">
+<!ENTITY Buffer "[0-9]+kb">
+<!ENTITY RTexpr "%=.*%">
]>
-<!--Conforms to w3c http://www.w3.org/1999/XMLSchema draft of 7 April 2000-->
-<schema xmlns = "http://www.w3.org/1999/XMLSchema"
- xmlns:jsp = "http://java.sun.com/JSP/Page"
- targetNamespace = "http://java.sun.com/xschema/jsp_1_2.xsd"
- elementFormDefault = "qualified"
- attributeFormDefault = "unqualified">
-
- <annotation>
- <documentation>
- XML Schema for JSP 1.2.
- Contributed 00/7/22 Bob Foster, WebGain.
-
- Note: All patterns tested with ActiveState Perl
- 5.6.0.616-MSWin32. (\p{L}|_) form is used instead
- of equivalent [\p{L}_] because when tested \p{L}
- didn't work inside []. Tested patterns were
- copied to schema eliminating ^ and $ at start
- and end and replacing \$ with $.
-
- Suggested status of schema:
-
- This schema is based upon the 7 April 2000 final draft of the
- w3c XMLSchema working group (http://www.w3.org/XML/Schema).
- XMLSchema is still a work in progress and the schema may
- need to be updated to reflect later versions.
-
- A JSP translator should reject an XML-format file that is
- not strictly valid according to this schema or does not observe
- the constraints documented here. A translator is not required
- to use this schema for validation, to use a validating parser
- or even to be namespace-aware.
- </documentation>
- </annotation>
-
- <complexType name = "Body" content = "mixed">
- <annotation>
- <documentation>
- Body defines the "top-level" elements in root and beanInfo.
- </documentation>
- </annotation>
- <group ref = "Bodygroup" minOccurs = "0" maxOccurs = "unbounded"/>
- </complexType>
-
- <group name = "Bodygroup">
- <choice>
- <element ref = "directive.page"/>
- <element ref = "directive.include"/>
- <element ref = "scriptlet"/>
- <element ref = "declaration"/>
- <element ref = "expression"/>
- <element ref = "useBean"/>
- <element ref = "setProperty"/>
- <element ref = "getProperty"/>
- <element ref = "include"/>
- <element ref = "forward"/>
- <element ref = "plugin"/>
- <element ref = "text"/>
- </choice>
- </group>
-
- <simpleType name = "Bool" base = "NMTOKEN">
- <annotation>
- <documentation>
- Bool would be boolean except it does not accept 1 and 0.
- </documentation>
- </annotation>
- <enumeration value = "true"/>
- <enumeration value = "false"/>
- <enumeration value = "yes"/>
- <enumeration value = "no"/>
- </simpleType>
-
- <simpleType name = "Identifier" base = "string">
- <annotation>
- <documentation>
- Identifier is an unqualified Java identifier.
- </documentation>
- </annotation>
- <pattern value = "&Identifier;"/>
- </simpleType>
-
- <simpleType name = "TypeName" base = "string">
- <annotation>
- <documentation>
- TypeName is one or more Java identifiers separated by dots
- with no whitespace.
- </documentation>
- </annotation>
- <pattern value = "&TypeName;"/>
- </simpleType>
-
- <simpleType name = "ImportList" base = "string">
- <annotation>
- <documentation>
- ImportList is one or more typeNames separated by commas.
- Whitespace is allowed before and after the comma.
- </documentation>
- </annotation>
- <pattern value = "&ImportList;"/>
- </simpleType>
-
- <simpleType name = "SetProp" base = "string">
- <annotation>
- <documentation>
- SetProp is an Identifier or *.
- </documentation>
- </annotation>
- <pattern value = "&SetProp;"/>
- </simpleType>
-
- <simpleType name = "RelativeURL" base = "uriReference">
- <annotation>
- <documentation>
- RelativeURL is a uriReference with no colon character
- before the first /, ? or #, if any (RFC2396).
- </documentation>
- </annotation>
- <pattern value = "&RelativeURL;"/>
- </simpleType>
-
- <simpleType name = "Length" base = "string">
- <annotation>
- <documentation>
- Length is nn or nn%.
- </documentation>
- </annotation>
- <pattern value = "&Length;"/>
- </simpleType>
-
- <element name = "root" type = "Body">
- <annotation>
- <documentation>
- The root element of all JSP documents is named root.
-
- In a document, root must be used as:
-
- <jsp:root xmlns:jsp="jsp-1.2-schema-namespace-identifier">
- ...
- </jsp:root>
-
- In other words, the namespace prefix "jsp:" must be explicitly
- specified for all JSP-defined elements. This allows both
- Schema-validating parsers and parsers that are not
- namespace-aware to operate properly.
-
- Authors may, if they wish, include schema location information.
- If specified, the information may appear as attributes of
- the root element as follows:
-
- xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
- xsi:schemaLocation="jsp-1.2-schema-namespace-identifier
- jsp-1.2-schema-xsd-file-location"
-
- Documents that are intended to be schema-valid should not
- specify the system identifier of a DTD in a DOCTYPE declaration.
- (The JSP DTD exports no general entities and is not conditional
- on any parameter entities.)
- </documentation>
- </annotation>
- <attribute name = "root" use = "required" type = "string"/>
- </element>
-
- <element name = "directive.page">
- <annotation>
- <documentation>
- directive.page is the "page directive".
- </documentation>
- </annotation>
- <complexType content = "empty">
- <attribute name = "language" use = "default" value = "java" type =
"string"/>
- <attribute name = "extends" type = "TypeName"/>
- <attribute name = "contentType" use = "default" value = "text/html;
ISO-8859-1">
- <simpleType base = "string">
- <pattern value = "&ContentType;"/>
- </simpleType>
- </attribute>
- <attribute name = "import" type = "ImportList"/>
- <attribute name = "session" use = "default" value = "true" type =
"Bool"/>
- <attribute name = "buffer" use = "default" value = "8kb">
- <simpleType base = "string">
- <pattern value = "&Buffer;"/>
- </simpleType>
- </attribute>
- <attribute name = "autoFlush" use = "default" value = "true" type =
"Bool"/>
- <attribute name = "isThreadSafe" use = "default" value = "true" type =
"Bool"/>
- <attribute name = "info" type = "string"/>
- <attribute name = "errorPage" type = "RelativeURL"/>
- </complexType>
- </element>
-
- <element name = "directive.include">
- <annotation>
- <documentation>
- directive.include is the "include directive".
- This element does not appear on XML views of JSP pages.
- </documentation>
- </annotation>
- <complexType content = "empty">
- <attribute name = "file" use = "required" type = "RelativeURL"/>
- </complexType>
- </element>
-
- <element name = "scriptlet" type = "string"/>
-
- <element name = "declaration" type = "string"/>
-
- <element name = "expression" type = "string"/>
-
- <element name = "text" type = "string"/>
-
- <element name = "useBean">
- <annotation>
- <documentation>
- useBean instantiates or accesses a bean in the specified scope.
-
- Constraint: The allowed combinations of attributes are:
-
- class [type] | type [( class | beanName)]
-
- </documentation>
- </annotation>
- <complexType base = "Body" derivedBy = "extension">
- <attribute name = "id" use = "required" type = "Identifier"/>
- <attribute name = "class" type = "TypeName"/>
- <attribute name = "type" type = "TypeName"/>
- <attribute name = "beanName" type = "TypeName"/>
- <attribute name = "scope" use = "default" value = "page">
- <simpleType base = "NMTOKEN">
- <enumeration value = "page"/>
- <enumeration value = "session"/>
- <enumeration value = "request"/>
- <enumeration value = "application"/>
- </simpleType>
- </attribute>
- </complexType>
- </element>
-
- <element name = "setProperty">
- <annotation>
- <documentation>
- setProperty changes the value of an object property.
-
- Constraint: The object named by the name must have been
- "introduced" to the JSP processor using either the
- jsp:useBean action or a custom action with an associated
- VariableInfo entry for this name.
-
- ???The spec is interpreted as restricting the values of
- property to (Identifier | '*').
-
- Constraint: The allowed combinations of attributes are:
-
- (property="*" | property="^*" (value | param))
-
- </documentation>
- </annotation>
- <complexType content = "empty">
- <attribute name = "name" use = "required" type = "Identifier"/>
- <attribute name = "property" use = "required" type = "SetProp"/>
- <attribute name = "value" type = "string"/>
- <attribute name = "param" type = "string"/>
- </complexType>
- </element>
-
- <element name = "getProperty">
- <annotation>
- <documentation>
- getProperty obtains the value of an object property.
-
- Constraint: The object named by the name must have been
- "introduced" to the JSP processor using either the
- jsp:useBean action or a custom action with an associated
- VariableInfo entry for this name.
-
- ???The spec is interpreted as restricting the values of
- property to Identifier.
- </documentation>
- </annotation>
- <complexType content = "empty">
- <attribute name = "name" use = "required" type = "Identifier"/>
- <attribute name = "property" use = "required" type = "Identifier"/>
- </complexType>
- </element>
-
- <element name = "include">
- <complexType content = "elementOnly">
- <element ref = "param" minOccurs = "0" maxOccurs = "unbounded"/>
- <attribute name = "flush" use = "default" value = "false" type =
"Bool"/>
- <attribute name = "page" use = "required" type = "RelativeURL"/>
- </complexType>
- </element>
-
- <element name = "forward">
- <complexType content = "elementOnly">
- <element ref = "param" minOccurs = "0" maxOccurs = "unbounded"/>
- <attribute name = "page" use = "required" type = "RelativeURL"/>
- </complexType>
- </element>
-
- <element name = "plugin">
- <complexType content = "elementOnly">
- <sequence>
- <element ref = "params" minOccurs = "0" maxOccurs = "1"/>
- <element name = "fallback" minOccurs = "0" maxOccurs = "1"/>
- </sequence>
- <attribute name = "type" use = "required">
- <simpleType base = "NMTOKEN">
- <enumeration value = "bean"/>
- <enumeration value = "applet"/>
- </simpleType>
- </attribute>
- <attribute name = "code" type = "uriReference"/>
- <attribute name = "codebase" type = "uriReference"/>
- <attribute name = "align">
- <simpleType base = "NMTOKEN">
- <enumeration value = "top"/>
- <enumeration value = "middle"/>
- <enumeration value = "bottom"/>
- <enumeration value = "left"/>
- <enumeration value = "right"/>
- </simpleType>
- </attribute>
- <attribute name = "archive">
- <simpleType base = "uriReference" derivedBy = "list"/>
- </attribute>
- <attribute name = "height" type = "Length"/>
- <attribute name = "hspace" type = "int"/>
- <attribute name = "jreversion" use = "default" value = "1.2" type =
"string"/>
- <attribute name = "name" type = "NMTOKEN"/>
- <attribute name = "vspace" type = "int"/>
- <attribute name = "width" type = "Length"/>
- <attribute name = "nspluginurl" type = "uriReference"/>
- <attribute name = "iepluginurl" type = "uriReference"/>
- </complexType>
- </element>
-
- <element name = "params">
- <complexType content = "elementOnly">
- <element ref = "param" minOccurs = "1" maxOccurs = "unbounded"/>
- </complexType>
- </element>
-
- <element name = "param">
- <complexType content = "empty">
- <attribute name = "name" use = "required" type = "NMTOKEN"/>
- <attribute name = "value" use = "required" type = "string"/>
- </complexType>
- </element>
-
-</schema>
+<!--Conforms to w3c http://www.w3.org/2001/XMLSchema -->
+
+<xsd:schema
+ xmlns = "http://java.sun.com/JSP/Page"
+ xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
+ xmlns:jsp = "http://java.sun.com/JSP/Page"
+ targetNamespace = "http://java.sun.com/JSP/Page"
+ elementFormDefault = "qualified"
+ attributeFormDefault = "unqualified">
+
+ <xsd:annotation>
+ <xsd:documentation>
+ XML Schema for JSP 1.2.
+
+ This schema is based upon the recent (May 5th, 2001)
+ W3C recommendation for XML Schema.
+
+ A JSP translator should reject an XML-format file that is
+ not strictly valid according to this schema or does not observe
+ the constraints documented here. A translator is not required
+ to use this schema for validation or to use a validating parser.
+ </xsd:documentation>
+ </xsd:annotation>
+
+
+ <!-- Complex Types -->
+
+ <xsd:complexType name = "Body">
+ <xsd:annotation>
+ <xsd:documentation>
+ Body defines the "top-level" elements in root and beanInfo.
+ There are probably other elements that should use it.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:group ref = "Bodygroup" minOccurs = "0" maxOccurs = "unbounded"/>
+ </xsd:complexType>
+
+ <xsd:complexType name = "BasicType">
+ <xsd:simpleContent>
+ <xsd:extension base = "xsd:string">
+ <xsd:attribute ref = "jsp:id"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <!-- groups -->
+
+ <xsd:group name = "Bodygroup">
+ <xsd:choice>
+ <xsd:element ref = "directive.page"/>
+ <xsd:element ref = "directive.include"/>
+ <xsd:element ref = "scriptlet"/>
+ <xsd:element ref = "declaration"/>
+ <xsd:element ref = "expression"/>
+ <xsd:element ref = "useBean"/>
+ <xsd:element ref = "setProperty"/>
+ <xsd:element ref = "getProperty"/>
+ <xsd:element ref = "include"/>
+ <xsd:element ref = "forward"/>
+ <xsd:element ref = "plugin"/>
+ <xsd:element ref = "text"/>
+ <xsd:any namespace="##other" processContents = "lax"/>
+ </xsd:choice>
+ </xsd:group>
+
+
+ <!-- jsp:id attribute -->
+
+ <xsd:attribute name = "id" type = "xsd:string"/>
+
+<!--
+This should be requesting jsp:id to be unique within all elements
+in the document.
+
+ <xsd:unique name="dummy">
+ <xsd:selector xpath="*"/>
+ <xsd:field xpath="jsp:/@id"/>
+ </xsd:unique>
+-->
+
+ <!-- Simple types are next -->
+
+ <xsd:simpleType name = "RTE">
+ <xsd:annotation>
+ <xsd:documentation>
+ A request-time expression value
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&RTexpr;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "Bool">
+ <xsd:annotation>
+ <xsd:documentation>
+ Bool would be boolean except it does not accept 1 and 0.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:NMTOKEN" >
+ <xsd:enumeration value = "true"/>
+ <xsd:enumeration value = "false"/>
+ <xsd:enumeration value = "yes"/>
+ <xsd:enumeration value = "no"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "Identifier">
+ <xsd:annotation>
+ <xsd:documentation>
+ Identifier is an unqualified Java identifier.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&Identifier;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "TypeName">
+ <xsd:annotation>
+ <xsd:documentation>
+ TypeName is one or more Java identifiers separated by dots
+ with no whitespace.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&TypeName;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "ImportList">
+ <xsd:annotation>
+ <xsd:documentation>
+ ImportList is one or more typeNames separated by commas.
+ Whitespace is allowed before and after the comma.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&ImportList;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "SetProp">
+ <xsd:annotation>
+ <xsd:documentation>
+ SetProp is an Identifier or *.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&SetProp;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "RelativeURL">
+ <xsd:annotation>
+ <xsd:documentation>
+ RelativeURL is a uriReference with no colon character
+ before the first /, ? or #, if any (RFC2396).
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:anyURI">
+ <xsd:pattern value = "&RelativeURL;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "RTERelativeURL">
+ <xsd:union memberTypes = "RelativeURL RTE"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "Length">
+ <xsd:annotation>
+ <xsd:documentation>
+ Length is nn or nn%.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&Length;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name = "ExplicitBufferSize">
+ <xsd:annotation>
+ <xsd:documentation>
+ Buffer Size with an explicit value
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&Buffer;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "NoneBufferSize">
+ <xsd:annotation>
+ <xsd:documentation>
+ Buffer Size with a "none" value
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:enumeration value = "none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "BufferSize">
+ <xsd:annotation>
+ <xsd:documentation>
+ Buffer size is xkb or none.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:union memberTypes = "ExplicitBufferSize NoneBufferSize"/>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "ContentType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Contetn Type for this page
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&ValidContentType;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "PageEncoding">
+ <xsd:annotation>
+ <xsd:documentation>
+ Page Encoding for this page. Default is that of ContentType.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:string">
+ <xsd:pattern value = "&ValidPageEncoding;"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "Scope">
+ <xsd:annotation>
+ <xsd:documentation>
+ valid scope values
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:NMTOKEN">
+ <xsd:enumeration value = "page"/>
+ <xsd:enumeration value = "session"/>
+ <xsd:enumeration value = "request"/>
+ <xsd:enumeration value = "application"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "PlugInType">
+ <xsd:annotation>
+ <xsd:documentation>
+ valid values for a plugin type
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:NMTOKEN">
+ <xsd:enumeration value = "bean"/>
+ <xsd:enumeration value = "applet"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name = "AlignType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Buffer size is xkb.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base = "xsd:NMTOKEN">
+ <xsd:enumeration value = "top"/>
+ <xsd:enumeration value = "middle"/>
+ <xsd:enumeration value = "bottom"/>
+ <xsd:enumeration value = "left"/>
+ <xsd:enumeration value = "right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <!-- Elements follow -->
+
+ <xsd:element name = "root">
+ <xsd:annotation>
+ <xsd:documentation>
+ The root element of all JSP documents is named root.
+
+ Authors may, if they wish, include schema location information.
+ If specified, the information may appear as attributes of
+ the root element as follows:
+
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/JSP/Page xsd-file-location"
+
+ Documents should not specify the system identifier of a DTD
+ in a DOCTYPE declaration.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base = "Body">
+ <xsd:attribute name = "version" fixed = "1.2" type = "xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "directive.page">
+ <xsd:annotation>
+ <xsd:documentation>
+ directive.page is the "page directive".
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "language" default = "java" type = "xsd:string"/>
+ <xsd:attribute name = "extends" type = "TypeName"/>
+ <xsd:attribute name = "contentType" default = "text/html; ISO-8859-1" type =
"ContentType"/>
+ <xsd:attribute name = "pageEncoding" use = "optional" type = "PageEncoding"/>
+ <xsd:attribute name = "import" type = "ImportList"/>
+ <xsd:attribute name = "session" default = "true" type = "Bool"/>
+ <xsd:attribute name = "buffer" default = "8kb" type = "BufferSize"/>
+ <xsd:attribute name = "autoFlush" default = "true" type = "Bool"/>
+ <xsd:attribute name = "isThreadSafe" default = "true" type = "Bool"/>
+ <xsd:attribute name = "info" type = "xsd:string"/>
+ <xsd:attribute name = "errorPage" type = "RelativeURL"/>
+ <xsd:attribute name = "isErrorPage" default = "false" type = "Bool"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "directive.include">
+ <xsd:annotation>
+ <xsd:documentation>
+ directive.include is the "include directive".
+ This element does not appear on XML views of JSP pages.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "file" use = "required" type = "RelativeURL"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "scriptlet" type = "BasicType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The representation of a scriplet.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name = "declaration" type = "BasicType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The reprsentation of a declaration.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name = "expression" type = "BasicType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The representation of an expression.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name = "text" type = "BasicType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Verbatim template text.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name = "useBean">
+ <xsd:annotation>
+ <xsd:documentation>
+ useBean instantiates or accesses a bean in the specified scope.
+
+ Constraint: The allowed combinations of attributes are:
+
+ class [type] | type [( class | beanName)]
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="Body">
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "id" use = "required" type = "Identifier"/>
+ <xsd:attribute name = "class" type = "TypeName"/>
+ <xsd:attribute name = "type" type = "TypeName"/>
+ <xsd:attribute name = "beanName" type = "TypeName"/>
+ <xsd:attribute name = "scope" default = "page" type = "Scope"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "setProperty">
+ <xsd:annotation>
+ <xsd:documentation>
+ setProperty changes the value of an object property.
+
+ Constraint: The object named by the name must have been
+ "introduced" to the JSP processor using either the
+ jsp:useBean action or a custom action with an associated
+ VariableInfo entry for this name.
+
+ Exact valid combinations are not expressable in XML Schema.
+ They are:
+
+ name="Identifier" property="*"
+ name="Identifier" property="Identfiier" param="string"
+ name="Identifier" property="Identifier" value="string"
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "name" use = "required" type = "Identifier"/>
+ <xsd:attribute name = "property" use = "required" type = "SetProp"/>
+ <xsd:attribute name = "param" type = "xsd:string"/>
+ <xsd:attribute name = "value" type = "xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "getProperty">
+ <xsd:annotation>
+ <xsd:documentation>
+ getProperty obtains the value of an object property.
+
+ Constraint: The object named by the name must have been
+ "introduced" to the JSP processor using either the
+ jsp:useBean action or a custom action with an associated
+ VariableInfo entry for this name.
+
+ ???The spec is interpreted as restricting the values of
+ property to Identifier.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "name" use = "required" type = "Identifier"/>
+ <xsd:attribute name = "property" use = "required" type = "Identifier"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "include">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref = "param" minOccurs = "0" maxOccurs = "unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "flush" default = "false" type = "Bool"/>
+ <xsd:attribute name = "page" use = "required" type = "RTERelativeURL"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "forward">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref = "param" minOccurs = "0" maxOccurs = "unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "page" use = "required" type = "RTERelativeURL"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "plugin">
+ <xsd:complexType> <!-- content only! -->
+ <xsd:sequence>
+ <xsd:element ref = "params" minOccurs = "0" maxOccurs = "1"/>
+ <xsd:element name = "fallback" minOccurs = "0" maxOccurs = "1" type =
"Body"/>
+ </xsd:sequence>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "type" use = "required" type = "PlugInType"/>
+ <xsd:attribute name = "code" type = "xsd:anyURI"/>
+ <xsd:attribute name = "codebase" type = "xsd:anyURI"/>
+ <xsd:attribute name = "align" type = "AlignType"/>
+ <xsd:attribute name = "archive">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:anyURI"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name = "height" type = "Length"/>
+ <xsd:attribute name = "hspace" type = "xsd:int"/>
+ <xsd:attribute name = "jreversion" default = "1.2" type = "xsd:string"/>
+ <xsd:attribute name = "name" type = "xsd:NMTOKEN"/>
+ <xsd:attribute name = "vspace" type = "xsd:int"/>
+ <xsd:attribute name = "width" type = "Length"/>
+ <xsd:attribute name = "nspluginurl" type = "xsd:anyURI"/>
+ <xsd:attribute name = "iepluginurl" type = "xsd:anyURI"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "params">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref = "param" minOccurs = "1" maxOccurs = "unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute ref = "jsp:id"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name = "param">
+ <xsd:complexType>
+ <xsd:attribute ref = "jsp:id"/>
+ <xsd:attribute name = "name" use = "required" type = "xsd:NMTOKEN"/>
+ <xsd:attribute name = "value" use = "required" type = "xsd:string"/>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>