<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Autoriteit Financiele Markten -->
<xs:schema xmlns="http://www.afm.nl/WfdExternRegister/Export/3.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xhtml="http://www.w3.org/1999/xhtml" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.afm.nl/WfdExternRegister/Export/3.0">
  
<!-- Types-->
  <xs:attributeGroup name="DatePropertiesGroup">
    <xs:attribute name="StartDatum" type="xs:date" use="required" />
    <xs:attribute name="EindDatum" type="xs:date" use="optional" />
  </xs:attributeGroup>
  <xs:complexType name="InstellingKenmerken">
    <xs:sequence>
      <xs:element name="StatutaireNaam" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="StatutaireZetel" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="Land" type="xs:string" minOccurs="1" />
      <xs:element name="KVKNummer" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="Rechtsvorm" type="xs:string" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Bijvoorbeeld: BV; NV; LTD; VOF;</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Handelsnamen" maxOccurs="1" minOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Handelsnaam" minOccurs="0" maxOccurs="unbounded" type="Handelsnaam" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Handelsnaam">
    <xs:attribute name="Naam" type="xs:string" />
    <xs:attributeGroup ref="DatePropertiesGroup" />
  </xs:complexType>
  <xs:complexType name="Dienst">
    <xs:attribute name="DienstID" type="xs:string" use="required" />
    <xs:attribute name="Omschrijving" type="xs:string" use="required" />
    <xs:attributeGroup ref="DatePropertiesGroup" />
  </xs:complexType>
  <xs:complexType name="Product">
    <xs:sequence>
      <xs:element name="Dienst" type="Dienst" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="ProductID" type="xs:string" use="required" />
    <xs:attribute name="Omschrijving" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="Beperking">
    <xs:sequence>
      <xs:element name="Omschrijving" type="xs:string" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="BeperkingID" type="xs:string" use="optional" />
    <xs:attributeGroup ref="DatePropertiesGroup" />
  </xs:complexType>
  <xs:complexType name="AangeslotenRelatie">
    <xs:attribute name="InstellingID" type="xs:string" use="required" />
    <xs:attribute name="InstellingNaam" type="xs:string" use="required" />
    <xs:attributeGroup ref="DatePropertiesGroup" />
  </xs:complexType>
  <xs:complexType name="AangeslotenBijRelatie">
    <xs:sequence>
      <xs:element name="Vergunning" minOccurs="1" maxOccurs="unbounded" type="Vergunning" />
    </xs:sequence>
    <xs:attribute name="InstellingID" type="xs:string" use="required" />
    <xs:attribute name="InstellingNaam" type="xs:string" use="required" />
    <xs:attributeGroup ref="DatePropertiesGroup" />
  </xs:complexType>
  <xs:complexType name="Vergunning">
    <xs:sequence>
      <xs:element name="PDCs" nillable="true" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Product" nillable="true" minOccurs="0" maxOccurs="unbounded" type="Product">
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="BeperkingenAlgemeen" type="Beperking" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="Vergunningnummer" type="xs:string" use="required" />
    <xs:attribute name="StartDatum" type="xs:date" use="optional" />
    <xs:attribute name="EindDatum" type="xs:date" use="optional" />
  </xs:complexType>
  <xs:complexType name="TeControlerenVergunning">
    <xs:sequence>
      <xs:element name="PDCs" nillable="true" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Product" nillable="true" minOccurs="0" maxOccurs="unbounded" type="Product">
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Beperking" type="Beperking" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="ViaInstellingID" type="xs:string" use="optional" />
    <xs:attribute name="ViaInstellingNaam" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:complexType name="InkomendEP">
    <xs:attribute name="HeeftInkomendEP" type="xs:boolean" use="required">
    </xs:attribute>
    <xs:attribute name="HeeftBijkantoor" type="xs:boolean" use="required">
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="AangeslotenInstellingen">
    <xs:sequence>
      <xs:element name="AangeslotenOnderneming" type="AangeslotenRelatie" maxOccurs="unbounded" minOccurs="0" />
      <xs:element name="VerbondenBemiddelaar" type="AangeslotenRelatie" maxOccurs="unbounded" minOccurs="0" />
      <xs:element name="GevolmachtigdeAgent" type="AangeslotenRelatie" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AangeslotenBijInstellingen">
    <xs:sequence>
      <xs:element name="AangeslotenOndernemingBij" minOccurs="0" maxOccurs="unbounded" type="AangeslotenBijRelatie" />
      <xs:element name="VerbondenBemiddelaarBij" minOccurs="0" maxOccurs="unbounded" type="AangeslotenBijRelatie" />
      <xs:element name="GevolmachtigdeAgentBij" minOccurs="0" maxOccurs="unbounded" type="AangeslotenBijRelatie" />
    </xs:sequence>
  </xs:complexType>
  
<!-- Main object model-->
  <xs:element name="WfdExternRegister">
    <xs:annotation>
      <xs:documentation>Root element for dataset in all forms</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Instellingen">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Instelling" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="InkomendEP" minOccurs="0" maxOccurs="1" type="InkomendEP"/>
                    <xs:element name="Bedrijfsgegevens" type="InstellingKenmerken" minOccurs="1" maxOccurs="1" />
                    <xs:element name="AangeslotenInstellingen" type="AangeslotenInstellingen" />
                    <xs:element name="Vergunningen" minOccurs="1" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Vergunning" minOccurs="0" maxOccurs="unbounded" type="Vergunning" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AangeslotenBijInstellingen" type ="AangeslotenBijInstellingen"/>
                    <xs:element name="TeControlerenPDCs" minOccurs="0" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Vergunning" minOccurs="0" maxOccurs="unbounded" type="TeControlerenVergunning" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="InstellingID" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>