FlatFile.xsd 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <xs:schema id="FlatFile"
  3. targetNamespace="http://www.wayne.com/2007-06-29/FlatFile.xsd"
  4. elementFormDefault="qualified"
  5. xmlns="http://www.wayne.com/2007-06-29/FlatFile.xsd"
  6. xmlns:mstns="http://www.wayne.com/2007-06-29/FlatFile.xsd"
  7. xmlns:xs="http://www.w3.org/2001/XMLSchema">
  8. <!--.......................... FlatFile ............................................-->
  9. <xs:element name="FlatFile" >
  10. <xs:complexType >
  11. <xs:sequence>
  12. <xs:element ref="Section" minOccurs="0" maxOccurs="unbounded"/>
  13. </xs:sequence>
  14. <xs:attribute name="version" type="xs:string" use="required"/>
  15. </xs:complexType>
  16. </xs:element>
  17. <!--........................... Section ............................................-->
  18. <xs:element name="Section">
  19. <xs:complexType>
  20. <xs:sequence>
  21. <xs:element name="Definitions" type="DefinitionsType" minOccurs="0"/>
  22. <xs:element name="Record" type="RecordType" minOccurs="0" maxOccurs="unbounded"/>
  23. </xs:sequence>
  24. <xs:attribute name="fieldSeparator" type ="xs:string" use="required"/>
  25. <xs:attribute name="recordSeparator" type ="xs:string" use="optional"/>
  26. </xs:complexType>
  27. <!--Primary keys -->
  28. <xs:key name="FormatDefinitionIdKey" >
  29. <xs:selector xpath="mstns:Definitions/mstns:FormatDefinitions/mstns:Format"/>
  30. <xs:field xpath="@formatId"/>
  31. </xs:key>
  32. </xs:element>
  33. <!-- ............................... Definitions ..................................-->
  34. <xs:complexType name="DefinitionsType">
  35. <xs:sequence>
  36. <xs:element name="FormatDefinitions" minOccurs="0">
  37. <xs:complexType>
  38. <xs:sequence>
  39. <xs:element name="Format" minOccurs="0" maxOccurs="unbounded">
  40. <xs:complexType>
  41. <xs:simpleContent >
  42. <xs:extension base="xs:string">
  43. <xs:attribute name="formatId" type="xs:string" use="required"/>
  44. </xs:extension>
  45. </xs:simpleContent>
  46. </xs:complexType>
  47. </xs:element>
  48. </xs:sequence>
  49. </xs:complexType>
  50. </xs:element>
  51. </xs:sequence>
  52. </xs:complexType>
  53. <!-- ............................. Record ..........................................-->
  54. <xs:complexType name="RecordType">
  55. <xs:sequence >
  56. <!-- Fields-->
  57. <xs:element name="Field" minOccurs ="0" maxOccurs="unbounded" type ="FieldType">
  58. <!--Foreign key to the format definitions-->
  59. <xs:keyref name="FieldDefinedFormat_FormatDefinition" refer="FormatDefinitionIdKey">
  60. <xs:selector xpath="."/>
  61. <xs:field xpath="@formatId"/>
  62. </xs:keyref>
  63. </xs:element>
  64. </xs:sequence>
  65. </xs:complexType>
  66. <xs:complexType name="FieldType">
  67. <xs:simpleContent >
  68. <xs:extension base="xs:string">
  69. <xs:attribute name="type" type="fieldDataType" use="required"/>
  70. <xs:attribute name="format" type="xs:string" />
  71. <xs:attribute name="formatId" type="xs:string"/>
  72. </xs:extension>
  73. </xs:simpleContent>
  74. </xs:complexType>
  75. <!-- Field datatype type.-->
  76. <xs:simpleType name="fieldDataType">
  77. <xs:restriction base="xs:string">
  78. <xs:enumeration value="String"/>
  79. <xs:enumeration value="Byte"/>
  80. <xs:enumeration value="Int16"/>
  81. <xs:enumeration value="Int32"/>
  82. <xs:enumeration value="Int64"/>
  83. <xs:enumeration value="UInt16"/>
  84. <xs:enumeration value="UInt32"/>
  85. <xs:enumeration value="UInt64"/>
  86. <xs:enumeration value="Decimal"/>
  87. <xs:enumeration value="Double"/>
  88. <xs:enumeration value="DateTime"/>
  89. <xs:enumeration value="Boolean"/>
  90. </xs:restriction>
  91. </xs:simpleType>
  92. </xs:schema>