<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
	<xsd:attributeGroup name="LinkAttribs">
	<!-- simple XLink according to 20 December 2000 -->
		<xsd:attribute name="xlink:type" type="xsd:string" fixed="simple" use="optional"/>
		<xsd:attribute name="xlink:href" type="xsd:string" use="required" use="optional"/>
		<xsd:attribute name="xlink:role" type="xsd:string" use="optional"/>
		<xsd:attribute name="xlink:arcrole" type="xsd:string" use="optional"/>
		<xsd:attribute name="xlink:title" type="xsd:string" use="optional"/>
		<xsd:attribute name="xlink:show" use="optional">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="embed"/>
					<xsd:enumeration value="replace"/>
					<xsd:enumeration value="new"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="xlink:actuate" use="optional">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="show"/>
					<xsd:enumeration value="user"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:complexType name="ExampleType" mixed="false">
		<xsd:choice>
			<xsd:element ref="Fahrzeug"/>
			<xsd:element ref="Person"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="FahrzeugType" abstract="true">
		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
		<xsd:attributeGroup ref="LinkAttribs"/>
		<xsd:sequence>
			<xsd:element ref="baujahr"/>
			<xsd:element ref="kennzeichen"/>
			<xsd:element ref="leergewicht"/>
			<xsd:element ref="zulGesamtgewicht"/>
			<xsd:element ref="rad" minOccurs="4" maxOccurs="5"/>
			<xsd:element ref="Eigentümer.Person" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PKWType">
		<xsd:complexContent>
			<xsd:extension base="FahrzeugType">
				<xsd:attribute name="id" type="xsd:ID" use="optional"/>
				<xsd:attributeGroup ref="LinkAttribs"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="LKWType">
		<xsd:complexContent>
			<xsd:extension base="FahrzeugType">
				<xsd:sequence>
					<xsd:element ref="aufliegelast"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:simpleType name="linePKWType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Classic"/>
			<xsd:enumeration value="Elegance"/>
			<xsd:enumeration value="Avantgarde"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="UDtime">
		<xsd:union memberTypes=" xsd:time xsd:date xsd:gMonth xsd:gYear"/>
	</xsd:simpleType>
	<xsd:complexType name="PersonType">
		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
		<xsd:attributeGroup ref="LinkAttribs"/>
		<xsd:sequence>
			<xsd:element ref="name"/>
			<xsd:element ref="geburtsDatum" minOccurs="0"/>
			<xsd:element ref="EigentümerVon.Fahrzeug" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<!-- Classes -->
	<xsd:element name="Example" type="ExampleType"/>
	<xsd:element name="Fahrzeug" type="FahrzeugType" abstract="true"/>
	<xsd:element name="PKW" type="PKWType" substitutionGroup="Fahrzeug"/>
	<xsd:element name="LKW" type="LKWType" substitutionGroup="Fahrzeug"/>
	<!-- Attributes -->
	<xsd:element name="baujahr" type="UDtime"/>
	<xsd:element name="kennzeichen" type="xsd:string"/>
	<xsd:element name="leergewicht" type="xsd:positiveInteger"/>
	<xsd:element name="zulGesamtgewicht" type="xsd:positiveInteger"/>
	<xsd:element name="rad"/>
	<xsd:element name="aufliegelast" type="xsd:positiveInteger"/>
	<xsd:element name="line" type="linePKWType"/>
	<xsd:element name="Person" type="PersonType"/>
	<xsd:element name="name" type="xsd:string"/>
	<xsd:element name="geburtsDatum" type="xsd:date"/>
	<!-- reference elements -->
	<!-- Associations -->
	<xsd:element name="EigentümerVon.Fahrzeug">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="Fahrzeug" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Eigentümer.Person">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="Person" minOccurs="0" maxOccurs="1"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>
