| <?xml version ="1.0"?> |
| <!-- |
| Copyright 2004 The Apache Software Foundation |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE 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 ValidContentType "&AsciiName;/&AsciiName;(;&WS;(charset=)?&AsciiName;)?"> |
| <!ENTITY ValidPageEncoding "&AsciiName;/&AsciiName;"> |
| <!ENTITY Buffer "[0-9]+kb"> |
| <!ENTITY RTexpr "%=.*%"> |
| ]> |
| |
| |
| <!--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 2.0. |
| |
| 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> |
| |
| <!-- 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> |
| |
| |
| <!-- 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> |
| Content type and character encoding 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. |
| </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 = "2.0" 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 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:attribute name = "isELIgnored" 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 name = "file" use = "required" type = "RelativeURL"/> |
| </xsd:complexType> |
| </xsd:element> |
| |
| <xsd:element name = "scriptlet" type = "xsd:string"> |
| <xsd:annotation> |
| <xsd:documentation> |
| The representation of a scriplet. |
| </xsd:documentation> |
| </xsd:annotation> |
| </xsd:element> |
| |
| <xsd:element name = "declaration" type = "xsd:string"> |
| <xsd:annotation> |
| <xsd:documentation> |
| The reprsentation of a declaration. |
| </xsd:documentation> |
| </xsd:annotation> |
| </xsd:element> |
| |
| <xsd:element name = "expression" type = "xsd:string"> |
| <xsd:annotation> |
| <xsd:documentation> |
| The representation of an expression. |
| </xsd:documentation> |
| </xsd:annotation> |
| </xsd:element> |
| |
| <xsd:element name = "text" type = "xsd:string"> |
| <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 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 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 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 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 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 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:complexType> |
| </xsd:element> |
| |
| <xsd:element name = "param"> |
| <xsd:complexType> |
| <xsd:attribute name = "name" use = "required" type = "xsd:NMTOKEN"/> |
| <xsd:attribute name = "value" use = "required" type = "xsd:string"/> |
| </xsd:complexType> |
| </xsd:element> |
| |
| </xsd:schema> |