<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
 Copyright (c) 2000-2021 Ericsson Telecom AB
 All rights reserved. This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v2.0
 which accompanies this distribution, and is available at
 https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html

 Contributors:
  Balasko, Jeno
  Raduly, Csaba
-->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
		xmlns:ns76="http://www.chapter_7_6.org"
		targetNamespace="http://www.chapter_7_6.org">


	<complexType name="e23">
		<simpleContent>
			<extension base="string">
				<attribute name="foo" type="float"/>
				<attribute name="bar" type="integer"/>
			</extension>
		</simpleContent>
	</complexType>


	<complexType name="e24">
		<simpleContent>
			<restriction base="ns76:e23">
				<length value="4"/>
			</restriction>
		</simpleContent>
	</complexType>


	<annotation>
		<documentation xml:lang="en">
			The base definitions:
		</documentation>
	</annotation>


	<complexType name="e25seq"> 
		<sequence>
			<element name="titleElemBase" type="string"/>
			<element name="forenameElemBase" type="string"/>
			<element name="surnameElemBase" type="string"/>
		</sequence>
		<attribute name="genderAttrBase" type="integer"/>
		<attributeGroup ref="ns76:g25attr2"/>
	</complexType>


	<group name="g25seq">
		<sequence>
			<element name="familyStatusElemInGroup" type="string"/>
			<element name="spouseElemInGroup" type="string" minOccurs="0"/>
		</sequence>
	</group>	


	<attributeGroup name="g25attr1">
		<attribute name="birthPlaceAttrGroup" type="string"/>
		<attribute name="birthDateAttrGroup" type="string"/>
	</attributeGroup>	
	
	
	<attributeGroup name="g25attr2">
		<attribute name="jobPositionAttrGroup" type="string"/>
	</attributeGroup>	


	<annotation>
		<documentation xml:lang="en">
			Now a type is defined that extends e25seq by adding a new element, group and attributes:
		</documentation>
	</annotation>


	<complexType name="e26seq">
		<complexContent>
			<extension base="ns76:e25seq">
				<sequence>
					<element name="ageElemExt" type="integer"/>
					<group ref="ns76:g25seq"/>
				</sequence>
				<attribute name="unitOfAge" type="string"/>
				<attributeGroup ref="ns76:g25attr1"/>
			</extension>
		</complexContent>
	</complexType>


	<!-- Additional base definition:-->


	<complexType name="e25seqRecurrence">
		<sequence minOccurs="0" maxOccurs="unbounded">
			<element name="titleElemBase" type="string"/>
			<element name="forenameElemBase" type="string"/>
			<element name="surnameElemBase" type="string"/>
		</sequence>
		<attribute name="genderAttrBase" type="integer"/>
		<attributeGroup ref="ns76:g25attr2"/>
	</complexType>


	<!-- The extending type definition: -->


	<complexType name="e26seqReccurrence">
		<complexContent>
			<extension base="ns76:e25seq">
				<sequence minOccurs="0" maxOccurs="unbounded">
					<group ref="ns76:g25seq"/>
					<element name="ageElemExt" type="integer"/>
				</sequence>
				<attribute name="unitOfAge" type="string"/>
			</extension>
		</complexContent>
	</complexType>


	<complexType name="e26seqDoubleRecurrence">
		<complexContent>
			<extension base="ns76:e25seqRecurrence">
				<sequence minOccurs="0" maxOccurs="unbounded">
					<group ref="ns76:g25seq"/>
					<element name="ageElemExt" type="integer"/>
				</sequence>
				<attribute name="unitOfAge" type="string"/>
			</extension>
		</complexContent>
	</complexType>


	<complexType name="e25cho"> 
		<choice>
			<element name="titleElemBase" type="string"/>
			<element name="forenameElemBase" type="string"/>
			<element name="surnameElemBase" type="string"/>
		</choice>
		<attribute name="genderAttrBase" type="string"/>
	</complexType>

	
	<annotation>
		<documentation xml:lang="en">
			and
		</documentation>
	</annotation>

	
	<complexType name="e26cho">
		<complexContent>
			<extension base="ns76:e25cho">
				<choice>
					<element name="ageElemExt" type="integer"/>
					<element name="birthdayElemExt" type="date"/>
				</choice>
				<attribute name="unitAttrExt" type="string"/>
			</extension>
		</complexContent>
	</complexType>


	<complexType name="e27cho">
		<complexContent>
			<extension base="ns76:e25seq">
				<choice>
					<element name="ageElemExt" type="integer"/>
					<element name="birthdayElemExt" type="date"/>
				</choice>
				<attribute name="unitAttrExt" type="string"/>
			</extension>
		</complexContent>
	</complexType>


	<complexType name="e27seq">
		<complexContent>
			<extension base="ns76:e25cho">
				<sequence>
					<element name="ageElemExt" type="integer"/>
				</sequence>
				<attribute name="unitAttrExt" type="string"/>
			</extension>
		</complexContent>
	</complexType>


	<complexType name="X">
		<sequence>
			<element name="x" type="string"/>
			<element name="y" minOccurs="0">
				<complexType>
					<complexContent>
						<extension base="ns76:X">
							<sequence>
								<element name="z" type="string"/>
							</sequence>
						</extension>
					</complexContent>
				</complexType>
			</element>
		</sequence>
	</complexType>


	<complexType name="e28">
		<complexContent>
			<restriction base="anyType">
				<sequence>
					<element name="size" type="nonPositiveInteger"/>
					<element name="unit" type="NMTOKEN"/>
				</sequence>
			</restriction>
		</complexContent>
	</complexType>
		

	<element name="comment" type="string"/>
	
	<annotation>
		<documentation xml:lang="EN">
			The base type is:
		</documentation>
	</annotation>

	
	<!-- Items type generated due to being referenced in next types -->
	
	<element name="Items" type="token"/>
	
	
	<complexType name="PurchaseOrderType">
		<sequence>
			<element name="shipTo"     type="string"/>
			<element name="billTo"     type="string"/>
			<element ref="ns76:comment" minOccurs="0"/>
			<element ref="ns76:Items"/>
		</sequence>
		<attribute name="shipDate" type="date"/>
		<attribute name="orderDate" type="date"/>
	</complexType>
	
	
	<annotation>
		<documentation xml:lang="EN">
			The restricting type is:
		</documentation>
	</annotation>

	
	<complexType name="RestrictedPurchaseOrderType">
		<complexContent>
			<restriction base="ns76:PurchaseOrderType">
				<sequence>
					<element name="shipTo" type="string"/>
					<element name="billTo" type="string"/>
					<element ref="ns76:comment" minOccurs="1"/>
					<element ref="ns76:Items"/>
				</sequence>
				<attribute name="shipDate" type="date" use="required" />
				<attribute name="orderDate" type="date" use="prohibited" />
			</restriction>
		</complexContent>
	</complexType>

	
	<complexType name="e29a"> 
		<all>
			<element name="foo" type="integer"/>
			<element name="bar" type="float"/>
			<element name="ding" type="string"/>
		</all>
	</complexType>


	<complexType name="e29b"> 
		<all minOccurs="0">
			<element name="foo" type="integer"/>
			<element name="bar" type="float"/>
			<element name="ding" type="string"/>
		</all>
	</complexType>

	<complexType name="e29c"> 
		<all>
			<element name="foo" type="integer"/>
			<element name="bar" type="float" minOccurs="0"/>
			<element name="ding" type="string"/>
		</all>
	</complexType>
	
	
	<attribute name="attrGlobal" type="token"/>
	
	
	<attributeGroup name="attrGroup">
		<attribute name="attrInGroup2" type="token"/>
		<attribute name="attrInGroup1" type="token"/>
	</attributeGroup>


	<complexType name="e29aAndAttributes"> 
		<all>
			<element name="foo" type="integer"/>
			<element name="bar" type="float"/>
			<element name="ding" type="string"/>
		</all>
		<attribute name="attrLocal" type="integer"/>
		<attribute ref="ns76:attrGlobal"/>
		<attributeGroup ref="ns76:attrGroup"/>
	</complexType>
	
	
	<complexType name="e30"> 
		<choice>
			<element name="foo" type="integer"/>
			<element name="bar" type="float"/>
		</choice>
	</complexType>
	
	
	<group name="e31"> 
		<sequence>
			<element name="foo" type="string"/>
			<element name="bar" type="string"/>
		</sequence>
	</group>
	
	
	<complexType name="e32"> 
		<choice>				
			<group ref="ns76:e31"/>
			<element name="ding" type="string"/>
		</choice>
	</complexType>


	<complexType name="e33">
		<choice>
			<choice>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</choice>
			<element name="ding" type="string"/>
		</choice>
	</complexType>


	<complexType name="e34a">
		<choice>
			<sequence>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</sequence>
			<element name="ding" type="string"/>
		</choice>
	</complexType>
	
	
	<complexType name="e34b">
		<choice>
			<sequence>
				<sequence>
					<element name="foo" type="string"/>
					<element name="bar" type="string"/>
				</sequence>
				<element name="ding" type="string"/>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</sequence>
			<element name="ding" type="string"/>
		</choice>
	</complexType>
	
	
	<complexType name="e35"> 
		<choice>
			<element name="foo" type="string"/>
			<any namespace="other"/>
		</choice>
	</complexType>


	<complexType name="e36a"> 
		<sequence>
			<element name="foo" type="integer"/>
			<element name="bar" type="float"/>
		</sequence>
	</complexType>


	<group name="e37">
		<choice>
			<element name="foo" type="string"/>
			<element name="bar" type="string"/>
		</choice>
	</group>


	<complexType name="e38"> 
		<sequence>				
			<group ref="ns76:e37"/>
			<element name="ding" type="string"/>
		</sequence>
	</complexType>


	<complexType name="e39">
		<sequence>
			<choice>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</choice>
			<element name="ding" type="string"/>
		</sequence>
	</complexType>
	
	<complexType name="e40a">
		<sequence>
			<sequence>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</sequence>
			<element name="ding" type="string"/>
		</sequence>
	</complexType>


	<complexType name="e40b">
		<sequence>
			<sequence>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</sequence>
			<choice>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</choice>
			<element name="ding" type="string"/>
		</sequence>
	</complexType>


	<complexType name="e41">
		<sequence>
			<element name="foo" type="string"/>
			<any/>
		</sequence>
	</complexType>
	

	<complexType name="e36b"> 
		<sequence minOccurs="0">
			<element name="foo" type="integer"/>
			<element name="bar" type="float"/>
		</sequence>
	</complexType>
	
<!--	
	<complexType name="e40c">
		<sequence>
			<sequence minOccurs="0">
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</sequence>
			<choice>
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</choice>
			<element name="ding" type="string"/>
		</sequence>
	</complexType>
-->

	<complexType name="e40d">
		<sequence>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<element name="foo" type="string"/>
				<element name="bar" type="string"/>
			</sequence>
			<element name="ding" type="string"/>
		</sequence>
	</complexType>
	
	
	<attributeGroup name="e42">
		<attribute name="foo" type="float"/>
		<attribute name="bar" type="float"/>
	</attributeGroup>
	

	<complexType name="e44">
		<sequence>
			<element name="ding" type="string"/>
		</sequence>
		<attributeGroup ref="ns76:e42"/>
	</complexType> 


	<attribute name="fooGlobal" type="float" />
	
	
	<attribute name="barGlobal" type="string" />
	
	
	<attribute name="dingGlobal" type="integer" />
	

	<attributeGroup name="Agroup">
		<attribute name="fooInAgroup" type="float" />
		<attribute name="barInAgroup" type="string" />
		<attribute name="dingInAgroup" type="integer" />
	</attributeGroup>


	<complexType name="e17A">
		<sequence>
			<element name="elem" type="string"/>
		</sequence>
		<attribute ref="ns76:fooGlobal" />
		<attribute ref="ns76:barGlobal" />
		<attribute ref="ns76:dingGlobal" />
		<attribute name="fooLocal" type="float" />
		<attribute name="barLocal" type="string" />
		<attribute name="dingLocal" type="integer" />
		<attributeGroup ref="ns76:Agroup" />
	</complexType>


	<annotation>
		<documentation xml:lang="EN">
			Using the same global attribute, attribute group and complex type definitions
			as in the previous example
		</documentation>
	</annotation>


	<element name="MySeqMixed">
		<complexType mixed="true">
			<sequence>
				<element name="a" type="string"/>
				<element name="b" type="boolean"/>
			</sequence>
			<attribute name="attrib" type="integer"/>
		</complexType>
	</element>


	<element name="MyComplexElem-16">
		<complexType mixed="true">
			<sequence maxOccurs="unbounded" minOccurs="0">
				<element name="a" type="string"/>
				<element name="b" type="boolean"/>
			</sequence>
		</complexType>
	</element>
	

	<element name="MyComplexElem-13">
		<complexType mixed="true">
			<all>
				<element name="a" type="string"/>
				<element name="b" type="boolean"/>
			</all>
		</complexType>
	</element>


	<complexType name="MyComplexType-15" mixed="true">
		<all minOccurs="0">
			<element name="a" type="string"/>
			<element name="b" type="boolean"/>
		</all>
	</complexType>


	<element name="MyComplexElem-14">
		<complexType mixed="true">
			<choice>
				<element name="a" type="string"/>
				<element name="b" type="boolean"/>
			</choice>
		</complexType>
	</element>


</schema>
