<?xml version="1.0" encoding="UTF-8"?>
<schema
	targetNamespace="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
	xmlns="http://www.w3.org/2001/XMLSchema"
	xmlns:portlet="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified" attributeFormDefault="unqualified"
	version="1.0" xml:lang="en">
	<annotation>
		<documentation>
			This is the XML Schema for the Portlet 1.0 deployment
			descriptor.
		</documentation>
	</annotation>
	<annotation>
		<documentation>
			The following conventions apply to all J2EE 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.
		</documentation>
	</annotation>
	<!-- *********************************************************** -->
	<import namespace="http://www.w3.org/XML/1998/namespace"
		schemaLocation="http://www.w3.org/2001/xml.xsd" />
	<element name="portlet-app" type="portlet:portlet-appType">
		<annotation>
			<documentation>
				The portlet-app element is the root of the deployment
				descriptor for a portlet application. This element has a
				required attribute version to specify to which version
				of the schema the deployment descriptor conforms.
			</documentation>
		</annotation>
		<unique name="portlet-name-uniqueness">
			<annotation>
				<documentation>
					The portlet element contains the name of a portlet.
					This name must be unique within the portlet
					application.
				</documentation>
			</annotation>
			<selector xpath="portlet:portlet" />
			<field xpath="portlet:portlet-name" />
		</unique>
		<unique name="custom-portlet-mode-uniqueness">
			<annotation>
				<documentation>
					The custom-portlet-mode element contains the
					portlet-mode. This portlet mode must be unique
					within the portlet application.
				</documentation>
			</annotation>
			<selector xpath="portlet:custom-portlet-mode" />
			<field xpath="portlet:portlet-mode" />
		</unique>
		<unique name="custom-window-state-uniqueness">
			<annotation>
				<documentation>
					The custom-window-state element contains the
					window-state. This window state must be unique
					within the portlet application.
				</documentation>
			</annotation>
			<selector xpath="portlet:custom-window-state" />
			<field xpath="portlet:window-state" />
		</unique>
		<unique name="user-attribute-name-uniqueness">
			<annotation>
				<documentation>
					The user-attribute element contains the name the
					attribute. This name must be unique within the
					portlet application.
				</documentation>
			</annotation>
			<selector xpath="portlet:user-attribute" />
			<field xpath="portlet:name" />
		</unique>
	</element>
	<complexType name="portlet-appType">
		<sequence>
			<element name="portlet" type="portlet:portletType"
				minOccurs="0" maxOccurs="unbounded">
				<unique name="init-param-name-uniqueness">
					<annotation>
						<documentation>
							The init-param element contains the name the
							attribute. This name must be unique within
							the portlet.
						</documentation>
					</annotation>
					<selector xpath="portlet:init-param" />
					<field xpath="portlet:name" />
				</unique>
				<unique name="supports-mime-type-uniqueness">
					<annotation>
						<documentation>
							The supports element contains the supported
							mime-type. This mime type must be unique
							within the portlet.
						</documentation>
					</annotation>
					<selector xpath="portlet:supports" />
					<field xpath="mime-type" />
				</unique>
				<unique name="preference-name-uniqueness">
					<annotation>
						<documentation>
							The preference element contains the name the
							preference. This name must be unique within
							the portlet.
						</documentation>
					</annotation>
					<selector
						xpath="portlet:portlet-preferences/portlet:preference" />
					<field xpath="portlet:name" />
				</unique>
				<unique name="security-role-ref-name-uniqueness">
					<annotation>
						<documentation>
							The security-role-ref element contains the
							role-name. This role name must be unique
							within the portlet.
						</documentation>
					</annotation>
					<selector xpath="portlet:security-role-ref" />
					<field xpath="portlet:role-name" />
				</unique>
			</element>
			<element name="custom-portlet-mode"
				type="portlet:custom-portlet-modeType" minOccurs="0"
				maxOccurs="unbounded" />
			<element name="custom-window-state"
				type="portlet:custom-window-stateType" minOccurs="0"
				maxOccurs="unbounded" />
			<element name="user-attribute"
				type="portlet:user-attributeType" minOccurs="0"
				maxOccurs="unbounded" />
			<element name="security-constraint"
				type="portlet:security-constraintType" minOccurs="0"
				maxOccurs="unbounded" />
		</sequence>
		<attribute name="version" type="string" use="required" />
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="custom-portlet-modeType">
		<annotation>
			<documentation>
				A custom portlet mode that one or more portlets in this
				portlet application supports. Used in: portlet-app
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="portlet-mode"
				type="portlet:portlet-modeType" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="custom-window-stateType">
		<annotation>
			<documentation>
				A custom window state that one or more portlets in this
				portlet application supports. Used in: portlet-app
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="window-state"
				type="portlet:window-stateType" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="expiration-cacheType">
		<annotation>
			<documentation>
				Expriation-cache defines expiration-based caching for
				this portlet. The parameter indicates the time in
				seconds after which the portlet output expires. -1
				indicates that the output never expires. Used in:
				portlet
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="int" />
		</simpleContent>
	</complexType>
	<complexType name="init-paramType">
		<annotation>
			<documentation>
				The init-param element contains a name/value pair as an
				initialization param of the portlet Used in:portlet
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="name" type="portlet:nameType" />
			<element name="value" type="portlet:valueType" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="keywordsType">
		<annotation>
			<documentation>
				Locale specific keywords associated with this portlet.
				The kewords are separated by commas. Used in:
				portlet-info
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="mime-typeType">
		<annotation>
			<documentation>
				MIME type name, e.g. "text/html". The MIME type may also
				contain the wildcard character '*', like "text/*" or
				"*/*". Used in: supports
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="nameType">
		<annotation>
			<documentation>
				The name element contains the name of a parameter. Used
				in: init-param, ...
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="portletType">
		<annotation>
			<documentation>
				The portlet element contains the declarative data of a
				portlet. Used in: portlet-app
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="portlet-name"
				type="portlet:portlet-nameType" />
			<element name="display-name" type="portlet:display-nameType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="portlet-class"
				type="portlet:portlet-classType" />
			<element name="init-param" type="portlet:init-paramType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="expiration-cache"
				type="portlet:expiration-cacheType" minOccurs="0" />
			<element name="supports" type="portlet:supportsType"
				maxOccurs="unbounded" />
			<element name="supported-locale"
				type="portlet:supported-localeType" minOccurs="0"
				maxOccurs="unbounded" />
			<choice>
				<sequence>
					<element name="resource-bundle"
						type="portlet:resource-bundleType" />
					<element name="portlet-info"
						type="portlet:portlet-infoType" minOccurs="0" />
				</sequence>
				<element name="portlet-info"
					type="portlet:portlet-infoType" />
			</choice>
			<element name="portlet-preferences"
				type="portlet:portlet-preferencesType" minOccurs="0" />
			<element name="security-role-ref"
				type="portlet:security-role-refType" minOccurs="0"
				maxOccurs="unbounded" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<simpleType name="portlet-classType">
		<annotation>
			<documentation>
				The portlet-class element contains the fully qualified
				class name of the portlet. Used in: portlet
			</documentation>
		</annotation>
		<restriction base="portlet:fully-qualified-classType" />
	</simpleType>
	<complexType name="portlet-collectionType">
		<annotation>
			<documentation>
				The portlet-collectionType is used to identify a subset
				of portlets within a portlet application to which a
				security constraint applies. Used in:
				security-constraint
			</documentation>
		</annotation>
		<sequence>
			<element name="portlet-name" type="portlet:portlet-nameType"
				maxOccurs="unbounded" />
		</sequence>
	</complexType>
	<complexType name="portlet-infoType">
		<sequence>
			<element name="title" type="portlet:titleType" />
			<element name="short-title" type="portlet:short-titleType"
				minOccurs="0" />
			<element name="keywords" type="portlet:keywordsType"
				minOccurs="0" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="portlet-modeType">
		<annotation>
			<documentation>
				Portlet modes. The specification pre-defines the
				following values as valid portlet mode constants:
				"edit", "help", "view". Portlet mode names are not case
				sensitive. Used in: custom-portlet-mode, supports
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="portlet-nameType">
		<annotation>
			<documentation>
				The portlet-name element contains the canonical name of
				the portlet. Each portlet name is unique within the
				portlet application. Used in: portlet, portlet-mapping
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="portlet-preferencesType">
		<annotation>
			<documentation>
				Portlet persistent preference store. Used in: portlet
			</documentation>
		</annotation>
		<sequence>
			<element name="preference" type="portlet:preferenceType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="preferences-validator"
				type="portlet:preferences-validatorType" minOccurs="0" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="preferenceType">
		<annotation>
			<documentation>
				Persistent preference values that may be used for
				customization and personalization by the portlet. Used
				in: portlet-preferences
			</documentation>
		</annotation>
		<sequence>
			<element name="name" type="portlet:nameType" />
			<element name="value" type="portlet:valueType" minOccurs="0"
				maxOccurs="unbounded" />
			<element name="read-only" type="portlet:read-onlyType"
				minOccurs="0" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<simpleType name="preferences-validatorType">
		<annotation>
			<documentation>
				The class specified under preferences-validator
				implements the PreferencesValidator interface to
				validate the preferences settings. Used in:
				portlet-preferences
			</documentation>
		</annotation>
		<restriction base="portlet:fully-qualified-classType" />
	</simpleType>
	<simpleType name="read-onlyType">
		<annotation>
			<documentation>
				read-only indicates that a setting cannot be changed in
				any of the standard portlet modes ("view","edit" or
				"help"). Per default all preferences are modifiable.
				Valid values are: - true for read-only - false for
				modifiable Used in: preferences
			</documentation>
		</annotation>
		<restriction base="portlet:string">
			<enumeration value="true" />
			<enumeration value="false" />
		</restriction>
	</simpleType>
	<complexType name="resource-bundleType">
		<annotation>
			<documentation>
				Filename of the resource bundle containing the language
				specific portlet informations in different languages.
				Used in: portlet-info
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="role-linkType">
		<annotation>
			<documentation>
				The role-link element is a reference to a defined
				security role. The role-link element must contain the
				name of one of the security roles defined in the
				security-role elements. Used in: security-role-ref
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="security-constraintType">
		<annotation>
			<documentation>
				The security-constraintType is used to associate
				intended security constraints with one or more portlets.
				Used in: portlet-app
			</documentation>
		</annotation>
		<sequence>
			<element name="display-name" type="portlet:display-nameType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="portlet-collection"
				type="portlet:portlet-collectionType" />
			<element name="user-data-constraint"
				type="portlet:user-data-constraintType" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="security-role-refType">
		<annotation>
			<documentation>
				The security-role-ref element contains the declaration
				of a security role reference in the code of the web
				application. The declaration consists of an optional
				description, the security role name used in the code,
				and an optional link to a security role. If the security
				role is not specified, the Deployer must choose an
				appropriate security role. The value of the role name
				element must be the String used as the parameter to the
				EJBContext.isCallerInRole(String roleName) method or the
				HttpServletRequest.isUserInRole(String role) method.
				Used in: portlet
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="role-name" type="portlet:role-nameType" />
			<element name="role-link" type="portlet:role-linkType"
				minOccurs="0" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="short-titleType">
		<annotation>
			<documentation>
				Locale specific short version of the static title. Used
				in: portlet-info
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="supportsType">
		<annotation>
			<documentation>
				Supports indicates the portlet modes a portlet supports
				for a specific content type. All portlets must support
				the view mode. Used in: portlet
			</documentation>
		</annotation>
		<sequence>
			<element name="mime-type" type="portlet:mime-typeType" />
			<element name="portlet-mode" type="portlet:portlet-modeType"
				minOccurs="0" maxOccurs="unbounded" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="supported-localeType">
		<annotation>
			<documentation>
				Indicated the locales the portlet supports. Used in:
				portlet
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="titleType">
		<annotation>
			<documentation>
				Locale specific static title for this portlet. Used in:
				portlet-info
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<simpleType name="transport-guaranteeType">
		<annotation>
			<documentation>
				The transport-guaranteeType specifies that the
				communication between client and portlet should be NONE,
				INTEGRAL, or CONFIDENTIAL. NONE means that the portlet
				does not require any transport guarantees. A value of
				INTEGRAL means that the portlet requires that the data
				sent between the client and portlet be sent in such a
				way that it can't be changed in transit. CONFIDENTIAL
				means that the portlet requires that the data be
				transmitted in a fashion that prevents other entities
				from observing the contents of the transmission. In most
				cases, the presence of the INTEGRAL or CONFIDENTIAL flag
				will indicate that the use of SSL is required. Used in:
				user-data-constraint
			</documentation>
		</annotation>
		<restriction base="portlet:string">
			<enumeration value="NONE" />
			<enumeration value="INTEGRAL" />
			<enumeration value="CONFIDENTIAL" />
		</restriction>
	</simpleType>
	<complexType name="user-attributeType">
		<annotation>
			<documentation>
				User attribute defines a user specific attribute that
				the portlet application needs. The portlet within this
				application can access this attribute via the request
				parameter USER_INFO map. Used in: portlet-app
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="name" type="portlet:nameType" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="user-data-constraintType">
		<annotation>
			<documentation>
				The user-data-constraintType is used to indicate how
				data communicated between the client and portlet should
				be protected. Used in: security-constraint
			</documentation>
		</annotation>
		<sequence>
			<element name="description" type="portlet:descriptionType"
				minOccurs="0" maxOccurs="unbounded" />
			<element name="transport-guarantee"
				type="portlet:transport-guaranteeType" />
		</sequence>
		<attribute name="id" type="string" use="optional" />
	</complexType>
	<complexType name="valueType">
		<annotation>
			<documentation>
				The value element contains the value of a parameter.
				Used in: init-param
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<complexType name="window-stateType">
		<annotation>
			<documentation>
				Portlet window state. Window state names are not case
				sensitive. Used in: custom-window-state
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string" />
		</simpleContent>
	</complexType>
	<!--- everything below is copied from j2ee_1_4.xsd -->
	<complexType name="descriptionType">
		<annotation>
			<documentation>
				The description element is used to provide text
				describing the parent element. The description element
				should include any information that the portlet
				application war file producer wants to provide to the
				consumer of the portlet application war file (i.e., to
				the Deployer). Typically, the tools used by the portlet
				application war file consumer will display the
				description when processing the parent element that
				contains the description. It has an optional attribute
				xml:lang to indicate which language is used in the
				description according to RFC 1766
				(http://www.ietf.org/rfc/rfc1766.txt). The default value
				of this attribute is English(“en”). Used in: init-param,
				portlet, portlet-app, security-role
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string">
				<attribute ref="xml:lang" />
			</extension>
		</simpleContent>
	</complexType>
	<complexType name="display-nameType">
		<annotation>
			<documentation>
				The display-name type contains a short name that is
				intended to be displayed by tools. It is used by
				display-name elements. The display name need not be
				unique. Example: ...
				<display-name xml:lang="en">
					Employee Self Service
				</display-name>

				It has an optional attribute xml:lang to indicate which
				language is used in the description according to RFC
				1766 (http://www.ietf.org/rfc/rfc1766.txt). The default
				value of this attribute is English(“en”).
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="portlet:string">
				<attribute ref="xml:lang" />
			</extension>
		</simpleContent>
	</complexType>
	<simpleType name="fully-qualified-classType">
		<annotation>
			<documentation>
				The elements that use this type designate the name of a
				Java class or interface.
			</documentation>
		</annotation>
		<restriction base="portlet:string" />
	</simpleType>
	<simpleType name="role-nameType">
		<annotation>
			<documentation>
				The role-nameType designates the name of a security
				role.

				The name must conform to the lexical rules for an
				NMTOKEN.
			</documentation>
		</annotation>
		<restriction base="NMTOKEN" />
	</simpleType>
	<simpleType name="string">
		<annotation>
			<documentation>
				This is a special string datatype that is defined by
				J2EE as a base type for defining collapsed strings. When
				schemas require trailing/leading space elimination as
				well as collapsing the existing whitespace, this base
				type may be used.
			</documentation>
		</annotation>
		<restriction base="string">
			<whiteSpace value="collapse" />
		</restriction>
	</simpleType>
</schema>
