Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
<?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]*&#x25;?">
<!ENTITY AsciiName    "[A-Za-z0-9_-]*">
<!ENTITY ValidContentType  "&AsciiName;/&AsciiName;(;&WS;(charset=)?&AsciiName;)?">
<!ENTITY ValidPageEncoding  "&AsciiName;/&AsciiName;">
<!ENTITY Buffer     "[0-9]+kb">
<!ENTITY RTexpr     "&#x25;=.*&#x25;">
]>


<!--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>
New to GrepCode? Check out our FAQ X