<?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.
-->
<xsd:schema targetNamespace="urn:oasis:names:tc:opendocument:xmlns:container"
	elementFormDefault="qualified" attributeFormDefault="unqualified"
	version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:container="urn:oasis:names:tc:opendocument:xmlns:container"
	xmlns:enc="http://www.w3.org/2001/04/xmlenc#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
	jaxb:version="2.0"
	xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd">
	<xsd:annotation>
		<xsd:documentation>
   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.

			NOTE: urn:oasis:names:tc:opendocument:xmlns:container is *not* an
			official namespace by OASIS, but the Adobe UCF specification defines
			that a conforming META-INF/container.xml *must* use the *default*
			namespace, eg:

			&lt;container
			xmlns="urn:oasis:names:tc:opendocument:xmlns:container"&gt;
			...
			&lt;/container&gt; </xsd:documentation>
		<xsd:appinfo>
			<!-- See http://docs.rakeshv.org/java/jaxb/users-guide/jaxb-custom.html -->
			<jaxb:globalBindings />
			<jaxb:schemaBindings>
				<jaxb:package name="org.oasis_open.names.tc.opendocument.xmlns.container" />
			</jaxb:schemaBindings>
		</xsd:appinfo>
	</xsd:annotation>

	<!-- xmldsig-core-schema.xsd is also included by xenc-schema.xsd -->
	<xsd:import namespace='http://www.w3.org/2000/09/xmldsig#'
		schemaLocation='./xmldsig-core-schema.xsd' />
		<!--schemaLocation="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd" -->
	<xsd:import namespace="http://www.w3.org/2001/04/xmlenc#"
		schemaLocation="xenc-schema.xsd" />
		<!--schemaLocation='http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd' -->

	<xsd:element name="container" type="container:Container"></xsd:element>

	<xsd:complexType name="Container">

		<xsd:sequence>
			<xsd:choice minOccurs="0" maxOccurs="2">
				<xsd:element name="rootFiles">
					<xsd:complexType>
						<xsd:choice maxOccurs="unbounded">
							<xsd:any namespace="##other" processContents="lax" />
							<xsd:element name="rootFile" type="container:RootFile" />
						</xsd:choice>
						<xsd:anyAttribute namespace="##other"
							processContents="lax" />
					</xsd:complexType>
				</xsd:element>
				<xsd:any namespace="##other" 
					processContents="lax" maxOccurs="unbounded" />
			</xsd:choice>

			<xsd:sequence minOccurs="0">
				<xsd:element name="relationships">
					<xsd:complexType>
						<xsd:choice maxOccurs="unbounded">
							<xsd:any namespace="##other" processContents="lax" />
							<xsd:element name="relationship" type="container:Relationship" />
						</xsd:choice>
						<xsd:anyAttribute namespace="##other"
							processContents="lax" />
					</xsd:complexType>
				</xsd:element>
				<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
					processContents="lax">
					<xsd:annotation>
						<xsd:appinfo>
							<jaxb:property name="any5" />
						</xsd:appinfo>
					</xsd:annotation>

				</xsd:any>
			</xsd:sequence>


			<xsd:sequence minOccurs="0">
				<xsd:element name="signatures">
					<xsd:complexType>
						<xsd:choice maxOccurs="unbounded">
							<!-- Can't use ##other as dsig: is in other <xsd:any namespace="##other" 
								processContents="lax"> <xsd:annotation> <xsd:appinfo> <jaxb:property name="any6" 
								/> </xsd:appinfo> </xsd:annotation> </xsd:any> -->
							<xsd:element ref="dsig:Signature" />
						</xsd:choice>
						<xsd:anyAttribute namespace="##other"
							processContents="lax" />
					</xsd:complexType>
				</xsd:element>
				<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
					processContents="lax">
					<xsd:annotation>
						<xsd:appinfo>
							<jaxb:property name="any7" />
						</xsd:appinfo>
					</xsd:annotation>
				</xsd:any>
			</xsd:sequence>

			<xsd:sequence minOccurs="0">
				<xsd:element name="encryption">
					<xsd:complexType>
						<xsd:choice maxOccurs="unbounded">
							<xsd:element ref="enc:EncryptedData" />
							<xsd:element ref="enc:EncryptedKey" />
							<!-- Can't use ##other as enc: is in other <xsd:any namespace="##other" 
								processContents="lax"> <xsd:annotation> <xsd:appinfo> <jaxb:property name="any8" 
								/> </xsd:appinfo> </xsd:annotation> </xsd:any> -->
						</xsd:choice>
						<xsd:anyAttribute namespace="##other"
							processContents="lax" />
					</xsd:complexType>
				</xsd:element>

				<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
					processContents="lax">
					<xsd:annotation>
						<xsd:appinfo>
							<jaxb:property name="any9" />
						</xsd:appinfo>
					</xsd:annotation>
				</xsd:any>
			</xsd:sequence>

		</xsd:sequence>

		<xsd:attribute name="version" type="xsd:string" fixed="1.0"></xsd:attribute>
		<xsd:anyAttribute namespace="##other"
			processContents="lax" />

	</xsd:complexType>

	<xsd:complexType name="RootFile">
		<xsd:sequence>
			<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="full-path" type="xsd:string" use="required">
		</xsd:attribute>
		<xsd:attribute name="media-type" type="xsd:string" use="required">
		</xsd:attribute>
		<xsd:anyAttribute namespace="##other"
			processContents="lax" />

	</xsd:complexType>

	<xsd:complexType name="Relationship">
		<xsd:sequence>
			<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xsd:sequence>
		<xsd:attribute name="type" type="xsd:string"></xsd:attribute>
		<xsd:attribute name="target" type="xsd:string"></xsd:attribute>
		<xsd:anyAttribute namespace="##other"
			processContents="lax" />
	</xsd:complexType>
</xsd:schema>
