﻿<?xml version="1.0" encoding="utf-8"?>
<!-- Datum 29 juni 2009 -->
<!-- voor vragen over het schema mail naar Help@loon.nl-->
<!-- Loon Salarissoftware -->
<!-- www.loon.nl -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/XMLSchema.xsd" targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="LoonImport">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Softwarepakket" type="xs:string"/>
        <xs:element name="Opmerking" type="xs:string" minOccurs="0"/>
        <xs:element name="Werkgever" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Naam" type="xs:string"/>
              <xs:element name="Loonheffingennummer" type="xs:string"/>
              <xs:element name="SleutelWerknemers" type="KeyType"/>
              <xs:element name="Werknemer" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="WnSleutel" type="SleutelType"/>
                    <xs:element name="PersoneelsNummer" type="PersnrType"/>
                    <xs:choice>
                      <xs:element name="Sofinummer" type="SofinrType"/>
                      <xs:element name="Anoniem" type="AanwezigOfNietType" minOccurs="0"/>
                    </xs:choice>
                    <xs:element name="Achternaam" type="AchternaamType"/>
                    <xs:element name="Voorvoegsels" type="VoorvoegselType" minOccurs="0"/>
                    <xs:element name="Voorletters" type="VoorlettersType" minOccurs="0"/>
                    <xs:element name="GeboorteNaam" type="AchternaamType" minOccurs="0"/>
                    <xs:element name="GeboorteDatum" type="xs:date"/>
                    <xs:element name="BurgStaat" type="BurgStaatType" minOccurs="0"/>
                    <xs:element name="Geslacht" type="GeslachtType" minOccurs="0"/>
                    <xs:element name="Email" type="EmailType" minOccurs="0"/>
                    <xs:element name="Straat" type="StraatType" minOccurs="0"/>
                    <xs:element name="Huisnummer" type="HuisnummerType" minOccurs="0"/>
                    <xs:element name="HuisnrToev" type="xs:string" minOccurs="0"/>
                    <xs:element name="Postcode" type="PostcodeType" minOccurs="0"/>
                    <xs:element name="Woonplaats" type="WoonplaatsType" minOccurs="0"/>
                    <xs:element name="Land" type="xs:string" minOccurs="0"/>
                    <xs:element name="Nationaliteit" type="NationaliteitType" minOccurs="0"/>
                    <xs:element name="Rekeningnummer" type="RekeningNrType" minOccurs="0"/>
                    <xs:element name="Dienstverband" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="DienstverbandNr" type="DVSleutelType"/>
                          <xs:element name="IndienstDatum" type="xs:date"/>
                          <xs:element name="UitdienstDatum" type="xs:date" minOccurs="0"/>
                          <xs:element name="Functie" type="xs:string" minOccurs="0"/>
                          <xs:element name="LoonPeriode" type="PeriodeType" minOccurs="0"/>
                          <xs:choice>
                            <xs:element name="StandaardLoon" type="Bedrag9.2" minOccurs="0"/>
                            <xs:element name="UurLoon" type="Bedrag9.2" minOccurs="0"/>
                          </xs:choice>
                          <xs:choice>
                            <xs:element name="Voltijd" type="AanwezigOfNietType" minOccurs="0"/>
                            <xs:element name="DeeltijdMetSchema" minOccurs="0">
                              <xs:complexType>
                                <xs:sequence>
                                  <xs:element name="Maandag" type="UrenperdagType" minOccurs="0"/>
                                  <xs:element name="Dinsdag" type="UrenperdagType" minOccurs="0"/>
                                  <xs:element name="Woensdag" type="UrenperdagType" minOccurs="0"/>
                                  <xs:element name="Donderdag" type="UrenperdagType" minOccurs="0"/>
                                  <xs:element name="Vrijdag" type="UrenperdagType" minOccurs="0"/>
                                  <xs:element name="Zaterdag" type="UrenperdagType" minOccurs="0"/>
                                  <xs:element name="Zondag" type="UrenperdagType" minOccurs="0"/>
                                </xs:sequence>
                              </xs:complexType>
                            </xs:element>
                            <xs:element name="DeeltijdZonderSchema" minOccurs="0">
                              <xs:complexType>
                                <xs:sequence>
                                  <xs:element name="AantalUrenPerPeriode" type="UurType" minOccurs="0"/>
                                  <xs:element name="AantalDagenPerPeriode" type="DagenType" minOccurs="0"/>
                                </xs:sequence>
                              </xs:complexType>
                            </xs:element>
                            <xs:element name="OnregelmatigDeeltijd" minOccurs="0">
                              <xs:complexType>
                                <xs:sequence>
                                  <xs:element name="AantalUrenPerPeriode" type="UurType" minOccurs="0"/>
                                  <xs:element name="AantalDagenPerPeriode" type="DagenType" minOccurs="0"/>
                                  <xs:element name="PeriodeNummer" type="PeriodeNrType" minOccurs="0"/>
                                </xs:sequence>
                              </xs:complexType>
                            </xs:element>
                          </xs:choice>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <!-- dienstverband -->
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <!-- werknemer -->
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <!-- werkgever -->
      </xs:sequence>
      <xs:attribute name="VersieNummer" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="1.0"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <!-- type declaraties -->
  <xs:simpleType name="AchternaamType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="35"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="VoorvoegselType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="9"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="VoorlettersType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="6"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="EmailType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="80"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="StraatType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="25"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="HuisnummerType">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="5"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PostcodeType">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="7"/>
    </xs:restriction>
    <!-- voor nederland
    <xs:restriction base="xs:string">
      <xs:pattern value="([1-9][0-9]{3}[A-Z]{2}){0,1}"/>
    </xs:restriction>
  -->
  </xs:simpleType>
  <xs:simpleType name="WoonplaatsType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="24"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LandType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NationaliteitType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Bedrag9.2">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="9"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="KeyType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(WnSleutel|Sofi){1}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SleutelType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="30"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DVSleutelType">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="9"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PersnrType">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="9"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SofinrType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d{0})"/>
      <xs:pattern value="(\d{9})"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AanwezigOfNietType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(true){0,1}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="BurgStaatType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(O|G|D|S|P){0,1}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="GeslachtType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d{0})"/>
      <xs:pattern value="M|V"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DateOptional">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d{0})"/>
      <xs:pattern value="\d{4}-[0-1]\d{1}-[0-3]\d{1}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UrenperdagType">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="4"/>
      <xs:fractionDigits value="2"/>
      <xs:maxExclusive value="24"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UurType">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="5"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DagenType">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="5"/>
      <xs:fractionDigits value="2"/>
      <xs:maxExclusive value="92"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PeriodeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(\d{0})"/>
      <xs:pattern value="D|W|V|M|K"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PeriodeNrType">
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="3"/>
      <xs:maxExclusive value="365"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="RekeningNrType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30})|([0-9]{3,10})"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
