<?xml version="1.0" encoding="UTF-8" ?>

<!--
XML Schema Rec
(c) Crown Copyright 2001
  
Generated by X-Meta 
Version 1.0 dated 20/11/01
  -->
<xsd:schema elementFormDefault='qualified' version='1.0' xmlns:gt='http://www.govtalk.gov.uk/CM/core' xmlns:xsd='http://www.w3.org/2001/XMLSchema' attributeFormDefault='unqualified' id='IRcore.outgoing'>
  <xsd:annotation>
    <xsd:documentation>Inland Revenue core XML datatypes for outgoing forms</xsd:documentation>
    <xsd:appinfo>
      <gt:KeyWords>taxation, FBI, File By Internet, Inland Revenue, core, types</gt:KeyWords>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:simpleType name='IRstringType'>
    <xsd:restriction base='xsd:string'>
      <xsd:pattern value="[A-Za-z0-9 ~!&quot;@#$%&amp;'\(\)\*\+,\-\./:;&lt;=&gt;\?\[\\\]^_\{\}&#xa3;&#x20ac;]*" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='IRdecimalType'>
    <xsd:restriction base='xsd:decimal'>
      <xsd:pattern value='-?(([1-9][0-9]*)|0)\.[0-9]{2}' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='IRnonNegativeDecimalType'>
    <xsd:restriction base='IRdecimalType'>
      <xsd:minInclusive value='0.00' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='ISOcurrencyType'>
    <xsd:restriction base='IRstringType'>
      <xsd:enumeration value='EUR' />
      <xsd:enumeration value='GBP' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name='IRmonetaryStructure'>
    <xsd:simpleContent>
      <xsd:extension base='IRdecimalType'>
        <xsd:attribute name='Currency' type='ISOcurrencyType' use='optional' />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name='IRnonNegativeMonetaryStructure'>
    <xsd:simpleContent>
      <xsd:restriction base='IRmonetaryStructure'>
        <xsd:minInclusive value='0.00' />
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name='YesNoType'>
    <xsd:restriction base='IRstringType'>
      <xsd:enumeration value='no' />
      <xsd:enumeration value='yes' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='WorksNumberType.out'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='35' />
      <xsd:minLength value='1' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name='InternationalAddressStructure'>
    <xsd:sequence>
      <xsd:element name='Line' type='AddressLineType' minOccurs='1' maxOccurs='4' />
      <xsd:element name='PostCode' type='AddressLineType' minOccurs='0' maxOccurs='1' />
      <xsd:element name='Country' type='AddressLineType' minOccurs='0' maxOccurs='1' />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name='AddressLineType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='35' />
      <xsd:minLength value='1' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='IRofficeNumberType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='3' />
      <xsd:minLength value='3' />
      <xsd:pattern value='[1-9][0-9]{2}|[0-9][1-9][0-9]|[0-9]{2}[1-9]' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='IRofficeReferenceType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='10' />
      <xsd:minLength value='1' />
      <xsd:pattern value='[A-Za-z0-9].*' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='NameTitleType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='4' />
      <xsd:minLength value='1' />
      <xsd:pattern value="[A-Za-z][A-Za-z'-]*" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name='NameStructure'>
    <xsd:sequence>
      <xsd:element name='Title' type='NameTitleType' minOccurs='0' maxOccurs='1' />
      <xsd:element name='Forename' type='NameType' minOccurs='1' maxOccurs='2' />
      <xsd:element name='Surname' type='NameType' minOccurs='1' maxOccurs='1' />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name='NameType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='35' />
      <xsd:minLength value='1' />
      <xsd:pattern value="[A-Za-z][A-Za-z'-]*" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='GenderType'>
    <xsd:restriction base='IRstringType'>
      <xsd:enumeration value='female' />
      <xsd:enumeration value='male' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='TelephoneNumberType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='35' />
      <xsd:minLength value='1' />
      <xsd:pattern value='[0-9\(\)\-\s]{1,35}' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='EmailType'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='129' />
      <xsd:minLength value='1' />
      <xsd:pattern value='[^@]+@[^@]+' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name='WorkHomeType'>
    <xsd:restriction base='IRstringType'>
      <xsd:enumeration value='home' />
      <xsd:enumeration value='work' />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name='TelephoneStructure'>
    <xsd:sequence>
      <xsd:element name='Number' type='TelephoneNumberType' minOccurs='1' maxOccurs='1' />
      <xsd:element name='Extension' minOccurs='0' maxOccurs='1'>
        <xsd:simpleType>
          <xsd:restriction base='IRstringType'>
            <xsd:maxLength value='6' />
            <xsd:minLength value='1' />
            <xsd:pattern value='[0-9]{1,6}' />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name='Type' type='WorkHomeType' use='optional' />
    <xsd:attribute name='Mobile' type='YesNoType' use='optional' />
    <xsd:attribute name='Preferred' type='YesNoType' use='optional' />
  </xsd:complexType>
  <xsd:complexType name='EmailStructure'>
    <xsd:simpleContent>
      <xsd:extension base='EmailType'>
        <xsd:attribute name='Type' type='WorkHomeType' use='optional' />
        <xsd:attribute name='Preferred' type='YesNoType' use='optional' />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name='IRofficeStructure.out'>
    <xsd:sequence>
      <xsd:element name='Number' type='IRofficeNumberType' minOccurs='1' maxOccurs='1' />
      <xsd:element name='Reference' type='IRofficeReferenceType' minOccurs='1' maxOccurs='1' />
      <xsd:element name='Name' minOccurs='1' maxOccurs='1'>
        <xsd:simpleType>
          <xsd:restriction base='IRstringType'>
            <xsd:pattern value='[A-Za-z0-9]{1,28}' />
            <xsd:maxLength value='28' />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name='Address' type='InternationalAddressStructure' minOccurs='1' maxOccurs='1' />
      <xsd:element name='Telephone' type='TelephoneStructure' minOccurs='1' maxOccurs='1' />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name='AgentDetailsStructure'>
    <xsd:sequence>
      <xsd:element name='AgentID' type='IRstringType' minOccurs='0' maxOccurs='1' />
      <xsd:element name='Name' minOccurs='1' maxOccurs='1'>
        <xsd:simpleType>
          <xsd:restriction base='IRstringType'>
            <xsd:minLength value='1' />
            <xsd:maxLength value='35' />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name='Address' type='InternationalAddressStructure' minOccurs='0' maxOccurs='1' />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name='TaxCodeSVRW1M1Type'>
    <xsd:simpleContent>
      <xsd:extension base='autoType1'>
        <xsd:annotation>
          <xsd:documentation>Back-end systems provide for different tax codes so this type may not be appropriate as a core type.  It may have to be reimplemented in particular schemas.</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name='SVR' use='prohibited'>
          <xsd:simpleType>
            <xsd:restriction base='IRstringType'>
              <xsd:enumeration value='S' />
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name='Week1Month1Indicator' use='optional'>
          <xsd:simpleType>
            <xsd:restriction base='IRstringType'>
              <xsd:annotation>
                <xsd:documentation>The value 'X' indicates only that a Week 1 or Month 1 basis for tax calculation is used, but not which.</xsd:documentation>
              </xsd:annotation>
              <xsd:enumeration value='X' />
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name='autoType1'>
    <xsd:restriction base='IRstringType'>
      <xsd:maxLength value='5' />
      <xsd:minLength value='2' />
      <xsd:pattern value='([1-9][0-9]{0,3}[AHLPTVY])|(BR)|(0T)|(NT)|(FT)|(D0)|([K][1-9][0-9]{0,3})' />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>
