<?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.
 -->
<xs:schema targetNamespace="urn:tomcat6" xmlns="urn:tomcat6"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"
	attributeFormDefault="unqualified">
	<xs:element name="Context">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="Valve" />
				<xs:element ref="Parameter" />
				<xs:element ref="Environment" />
				<xs:element ref="Resource" />
			</xs:choice>
			<xs:attribute name="path" type="xs:string" use="required" />
		</xs:complexType>
	</xs:element>
	<xs:element name="Parameter">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
			<xs:attribute name="value" type="xs:string" use="required" />
			<xs:attribute name="description" type="xs:string" use="optional" />
			<xs:attribute name="override" type="xs:boolean" default="false" />
		</xs:complexType>
	</xs:element>
	<xs:element name="Environment">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
			<xs:attribute name="value" type="xs:string" use="required" />
			<xs:attribute name="type" type="xs:NMTOKEN" use="required" />
			<xs:attribute name="description" type="xs:string" use="optional" />
			<xs:attribute name="override" type="xs:boolean" default="false" />
		</xs:complexType>
	</xs:element>
	<xs:element name="Resource">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="name" type="xs:NMTOKEN" use="required" />
			<xs:attribute name="type" type="xs:NMTOKEN" use="required" />
			<xs:attribute name="description" type="xs:string" use="optional" />
			<xs:attribute name="override" type="xs:boolean" default="false" />
			<xs:attribute name="auth">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="Application" />
						<xs:enumeration value="Container" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="scope" default="Shareable">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="Unshareable" />
						<xs:enumeration value="Shareable" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:anyAttribute namespace="##any" processContents="lax" />
		</xs:complexType>
	</xs:element>
	<xs:element name="Valve">
		<xs:complexType>
			<xs:sequence />
			<xs:attribute name="className" type="xs:NMTOKEN" use="required" />
			<xs:anyAttribute namespace="##any" processContents="lax" />
		</xs:complexType>
	</xs:element>
</xs:schema>