<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <!-- Schema definitie voor de gemeenschappelijke (voertuig) datatypes die binnen de verschillende rubrieken gebruikt worden -->

	<xs:simpleType name="kentekenType">
		<xs:annotation>
			<xs:documentation>
        sidecode 1  [XX9999], pattern: [a-zA-Z]{2}[\d]{4}
        sidecode 2  [9999XX], pattern: [\d]{4}[a-zA-Z]{2}
        sidecode 3  [99XX99], pattern: [\d]{2}[a-zA-Z]{2}[\d]{2}
        sidecode 4  [XX99XX], pattern: [a-zA-Z]{2}[\d]{2}[a-zA-Z]{2}
        sidecode 5  [XXXX99], pattern: [a-zA-Z]{4}[\d]{2}
        sidecode 6  [99XXXX], pattern: [\d]{2}[a-zA-Z]{4}
        sidecode 7  [99XXX9], pattern: [\d]{2}[a-zA-Z]{3}[\d]{1}
        sidecode 8  [9XXX99], pattern: [\d]{1}[a-zA-Z]{3}[\d]{2}
        sidecode 9  [XX999X], pattern: [a-zA-Z]{2}[\d]{3}[a-zA-Z]{1}
        sidecode 10 [X999XX], pattern: [a-zA-Z]{1}[\d]{3}[a-zA-Z]{2}
        sidecode 11 [XXX99X], pattern: [a-zA-Z]{3}[\d]{2}[a-zA-Z]{1}
        sidecode 12 [X99XXX], pattern: [a-zA-Z]{1}[\d]{2}[a-zA-Z]{3}
        sidecode 13 [9XX999], pattern: [\d]{1}[a-zA-Z]{2}[\d]{3}
        sidecode 14 [999XX9], pattern: [\d]{3}[a-zA-Z]{2}[\d]{1}

        sidecode uitzondering = "CD[BFSTJAN][0-9]{1,3}
      </xs:documentation>

		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z]{2}[\d]{4}|[\d]{4}[a-zA-Z]{2}|[\d]{2}[a-zA-Z]{2}[\d]{2}|[a-zA-Z]{2}[\d]{2}[a-zA-Z]{2}|[a-zA-Z]{4}[\d]{2}|[\d]{2}[a-zA-Z]{4}|[\d]{2}[a-zA-Z]{3}[\d]{1}|[\d]{1}[a-zA-Z]{3}[\d]{2}|[a-zA-Z]{2}[\d]{3}[a-zA-Z]{1}|[a-zA-Z]{1}[\d]{3}[a-zA-Z]{2}|[a-zA-Z]{3}[\d]{2}[a-zA-Z]{1}|[a-zA-Z]{1}[\d]{2}[a-zA-Z]{3}|[\d]{1}[a-zA-Z]{2}[\d]{3}|[\d]{3}[a-zA-Z]{2}[\d]{1}|CD[BFSTJAN][0-9]{1,3}">
			</xs:pattern>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="meldCodeType">
		<xs:annotation>
			<xs:documentation>
				Meldcode formaten:
				Formaat 1: 9999
				Formaat 2: X999
				Formaat 3: XX99
				Formaat 4: XXX9
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{4}|[xX]{1}\d{3}|[xX]{2}\d{2}|[xX]{3}\d"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="postcodeType">
		<xs:annotation>
			<xs:documentation>
				Postcode formaat: 9999XX
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{4}[a-zA-Z]{2}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="motorcodeType">
		<xs:annotation>
			<xs:documentation>
			Code die een fabrikant van een voertuig aan een toegepaste motor toekent.
			Bij een bepaalde (Europese) goedgekeurde uitvoering kunnen meerdere
			motorcodes bestaan.
			Op het EG-inlichtenformulier staat dit gegeven vermeld onder punt 3.1.1.
			Het is mogelijk dat de fabrikant de bij een motor horende motorcode
			verandert. Hierdoor ontstaan bij een uitvoering (ook) meerdere motorcodes.
			De motorcode wordt in hoofdletters vastgelegd.
			Dit gegeven is o.a. van belang vanwege dieselrookmeting bedrijfsauto's en
			controle van art 6.7 van het VTR (wijziging constructie).
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:maxLength value="15"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="versnellingType">
    <xs:annotation>
      <xs:documentation>Bevat de omschrijving behorende bij een versnellingscode</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:maxLength value="40"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="versnellingCodeType">
    <xs:annotation>
      <xs:documentation>
		  Bevat de code behorende bij een versnelling
		  Mogelijke waarden voor coderingen:
		  H=Handmatig geschakelde transmissie
		  A=Automatisch geschakelde transmissie
		  C=Continu Variabele Transmissie
	  </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:maxLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="zuinigheidslabel">
    <xs:annotation>
      <xs:documentation>Energielabel A, B, C, D, E, F of G</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:length value="1"/>
      <xs:enumeration value="A"/>
      <xs:enumeration value="B"/>
      <xs:enumeration value="C"/>
      <xs:enumeration value="D"/>
      <xs:enumeration value="E"/>
      <xs:enumeration value="F"/>
      <xs:enumeration value="G"/>
    </xs:restriction>
  </xs:simpleType>

	<xs:simpleType name="chassisnummerType">
		<xs:annotation>
			<xs:documentation>
				Het nummer waarmee een voertuig uniek wordt geïdentificeerd. Het is door
				de fabrikant of ambtshalve aangebracht in het voertuig. De plaats hiervan
				wordt (gecodeerd) vastgelegd in PL-CODE-VRTG-ID. Op het huidige
				kentekenbewijs wordt dit gegeven vermeld onder de rubriek 'E.
				Identificatienummer'.
				Voor de volledige invoering van de WVW 1994 werd dit vermeld onder
				'Chassisnummer' of 'Framenummer' (voor motorfietsen).
				Voor nieuwe voertuigen is de opbouw overeenkomstig Richtlijn 76/114/EEG
				zoals gewijzigd bij 78/507/EEG. Deze Richtlijn gaat uit van een nummer dat
				17 tekens lang is. Vanwege het kunnen registreren van voertuigen die niet
				aan deze Richtlijn voldoen is de maximum lengte nu 25 tekens.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:maxLength value="25"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="provincieType">
		<xs:annotation>
			<xs:documentation>Alle provincies van Nederland</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="Drenthe"/>
			<xs:enumeration value="Flevoland"/>
			<xs:enumeration value="Friesland"/>
			<xs:enumeration value="Gelderland"/>
			<xs:enumeration value="Groningen"/>
			<xs:enumeration value="Limburg"/>
			<xs:enumeration value="Noord-Brabant"/>
			<xs:enumeration value="Noord-Holland"/>
			<xs:enumeration value="Overijssel"/>
			<xs:enumeration value="Utrecht"/>
			<xs:enumeration value="Zeeland"/>
			<xs:enumeration value="Zuid-Holland"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="maandType">
		<xs:annotation>
			<xs:documentation>Alle maanden</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="januari"/>
			<xs:enumeration value="februari"/>
			<xs:enumeration value="maart"/>
			<xs:enumeration value="april"/>
			<xs:enumeration value="mei"/>
			<xs:enumeration value="juni"/>
			<xs:enumeration value="juli"/>
			<xs:enumeration value="augustus"/>
			<xs:enumeration value="september"/>
			<xs:enumeration value="oktober"/>
			<xs:enumeration value="november"/>
			<xs:enumeration value="december"/>
		</xs:restriction>
	</xs:simpleType>

  <!-- Custom type to allow attribute of type xs:int contain an empty value, needed for techinfo_model -->
  <xs:simpleType name="emptyString">
    <xs:restriction base="xs:string">
      <xs:length value="0" />
    </xs:restriction>
  </xs:simpleType>

  <!-- Custom type to allow attribute of type xs:int contain an empty value, needed for techinfo_model -->
  <xs:simpleType name="intOrEmpty">
    <xs:union memberTypes="xs:int emptyString" />
  </xs:simpleType>



</xs:schema>
