<?xml version="1.0" encoding="utf-8" ?> <xs:schema id="FlatFile" targetNamespace="http://www.wayne.com/2007-06-29/FlatFile.xsd" elementFormDefault="qualified" xmlns="http://www.wayne.com/2007-06-29/FlatFile.xsd" xmlns:mstns="http://www.wayne.com/2007-06-29/FlatFile.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!--.......................... FlatFile ............................................--> <xs:element name="FlatFile" > <xs:complexType > <xs:sequence> <xs:element ref="Section" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="version" type="xs:string" use="required"/> </xs:complexType> </xs:element> <!--........................... Section ............................................--> <xs:element name="Section"> <xs:complexType> <xs:sequence> <xs:element name="Definitions" type="DefinitionsType" minOccurs="0"/> <xs:element name="Record" type="RecordType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="fieldSeparator" type ="xs:string" use="required"/> <xs:attribute name="recordSeparator" type ="xs:string" use="optional"/> </xs:complexType> <!--Primary keys --> <xs:key name="FormatDefinitionIdKey" > <xs:selector xpath="mstns:Definitions/mstns:FormatDefinitions/mstns:Format"/> <xs:field xpath="@formatId"/> </xs:key> </xs:element> <!-- ............................... Definitions ..................................--> <xs:complexType name="DefinitionsType"> <xs:sequence> <xs:element name="FormatDefinitions" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Format" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent > <xs:extension base="xs:string"> <xs:attribute name="formatId" type="xs:string" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <!-- ............................. Record ..........................................--> <xs:complexType name="RecordType"> <xs:sequence > <!-- Fields--> <xs:element name="Field" minOccurs ="0" maxOccurs="unbounded" type ="FieldType"> <!--Foreign key to the format definitions--> <xs:keyref name="FieldDefinedFormat_FormatDefinition" refer="FormatDefinitionIdKey"> <xs:selector xpath="."/> <xs:field xpath="@formatId"/> </xs:keyref> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="FieldType"> <xs:simpleContent > <xs:extension base="xs:string"> <xs:attribute name="type" type="fieldDataType" use="required"/> <xs:attribute name="format" type="xs:string" /> <xs:attribute name="formatId" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> <!-- Field datatype type.--> <xs:simpleType name="fieldDataType"> <xs:restriction base="xs:string"> <xs:enumeration value="String"/> <xs:enumeration value="Byte"/> <xs:enumeration value="Int16"/> <xs:enumeration value="Int32"/> <xs:enumeration value="Int64"/> <xs:enumeration value="UInt16"/> <xs:enumeration value="UInt32"/> <xs:enumeration value="UInt64"/> <xs:enumeration value="Decimal"/> <xs:enumeration value="Double"/> <xs:enumeration value="DateTime"/> <xs:enumeration value="Boolean"/> </xs:restriction> </xs:simpleType> </xs:schema>