<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://my.big.org" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:my="http://my.big.org">
	<!-- ============================================================= -->
	<!-- ============================================================= -->
	<element name="AbstractObject" type="anyType" abstract="true"/>
	<!-- ============================================================= -->
	<element name="O1" type="my:O1_Type" substitutionGroup="my:AbstractObject"/>
	<!-- =========================================================== -->
	<complexType name="O1_Type">
		<complexContent>
			<restriction base="anyType">
				<sequence>
					<element name="s1" type="string"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="O2" type="my:O2_Type" substitutionGroup="my:O1"/>
	<!-- =========================================================== -->
	<complexType name="O2_Type">
		<complexContent>
			<extension base="my:O1_Type">
				<sequence>
					<element name="s2" type="string"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="O3" type="my:O3_Type" substitutionGroup="my:O1"/>
	<!-- =========================================================== -->
	<complexType name="O3_Type">
		<complexContent>
			<extension base="my:O1_Type">
				<sequence>
					<element name="s3" type="string"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<!-- =========================================================== -->
	<element name="p" type="my:P_Type"/>
	<!-- =========================================================== -->
	<complexType name="P_Type">
		<sequence minOccurs="0">
			<element ref="my:AbstractObject"/>
		</sequence>
		<attribute name="ref" type="anyURI"/>
	</complexType>
	<!-- =========================================================== -->
	<element name="p1" type="my:P1_Type" substitutionGroup="my:p"/>
	<!-- =========================================================== -->
	<complexType name="P1_Type">
		<complexContent>
			<restriction base="my:P_Type">
				<sequence minOccurs="0">
					<element ref="my:O1"/>
				</sequence>
				<attribute name="ref" type="anyURI"/>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="p2" type="my:P2_Type" substitutionGroup="my:p1"/>
	<!-- =========================================================== -->
	<complexType name="P2_Type">
		<complexContent>
			<restriction base="my:P1_Type">
				<sequence minOccurs="0">
					<element ref="my:O2"/>
				</sequence>
				<attribute name="ref" type="anyURI"/>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="p3" type="my:P3_Type" substitutionGroup="my:p1"/>
	<!-- =========================================================== -->
	<complexType name="P3_Type">
		<complexContent>
			<restriction base="my:P1_Type">
				<sequence minOccurs="0">
					<element ref="my:O3"/>
				</sequence>
				<attribute name="ref" type="anyURI"/>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<!-- =========================================================== -->
	<element name="a1" type="my:A1_Type"/>
	<!-- =========================================================== -->
	<complexType name="A1_Type">
		<sequence maxOccurs="unbounded">
			<element ref="my:O1"/>
		</sequence>
	</complexType>
	<!-- =========================================================== -->
	<element name="a2" type="my:A2_Type" substitutionGroup="my:a1"/>
	<!-- =========================================================== -->
	<complexType name="A2_Type">
		<complexContent>
			<restriction base="my:A1_Type">
				<sequence maxOccurs="unbounded">
					<element ref="my:O2"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="a3" type="my:A3_Type" substitutionGroup="my:a1"/>
	<!-- =========================================================== -->
	<complexType name="A3_Type">
		<complexContent>
			<restriction base="my:A1_Type">
				<sequence maxOccurs="unbounded">
					<element ref="my:O3"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<!-- =========================================================== -->
	<element name="b1" type="my:B1_Type"/>
	<!-- =========================================================== -->
	<complexType name="B1_Type">
		<sequence>
			<element ref="my:O1" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<!-- =========================================================== -->
	<element name="b2" type="my:B2_Type" substitutionGroup="my:b1"/>
	<!-- =========================================================== -->
	<complexType name="B2_Type">
		<complexContent>
			<restriction base="my:B1_Type">
				<sequence>
					<choice maxOccurs="unbounded">
						<element ref="my:O2"/>
					</choice>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="b3" type="my:B3_Type" substitutionGroup="my:b1"/>
	<!-- =========================================================== -->
	<complexType name="B3_Type">
		<complexContent>
			<restriction base="my:B1_Type">
				<sequence>
					<choice maxOccurs="unbounded">
						<element ref="my:O3"/>
					</choice>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
	<!-- =========================================================== -->
	<element name="Bucket">
		<complexType>
			<sequence maxOccurs="unbounded">
				<choice>
					<element ref="my:p"/>
					<element ref="my:a1"/>
					<element ref="my:b1"/>
				</choice>
			</sequence>
		</complexType>
	</element>
	<!-- =========================== -->
</schema>