<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="DomainRepository" type="DomainRepositoryType"/>

	<xs:complexType name="DomainRepositoryType">
		<xs:choice  maxOccurs="unbounded" minOccurs="0">
			<xs:element type="DomainType" name="Domain"/>
		</xs:choice>
	</xs:complexType>

	<xs:complexType name="DomainType">
		<xs:all>
			<xs:element type="InitializerType" name="Initializer"/>
			<xs:element type="PicklistSourceType" name="PicklistSource" minOccurs="0"/>
			<xs:element type="VirtualPicklistType" name="VirtualPicklist" minOccurs="0"/>
		</xs:all>
		<xs:attribute type="xs:string" name="name" use="required"/>
		<xs:attribute type="xs:string" name="baseType" use="required"/>
		<xs:attribute type="xs:string" name="length" use="required"/>
	</xs:complexType>

	<xs:complexType name="InitializerType">
		<xs:all>
			<xs:element type="DefaultType" name="Default"/>
			<xs:element type="EmptyType" name="Empty"/>
		</xs:all>
	</xs:complexType>

	<xs:complexType name="DefaultType">
		<xs:attribute type="xs:string" name="value" />
		<xs:attribute type="xs:string" name="nullable" />
	</xs:complexType>

	<xs:complexType name="EmptyType">
		<xs:attribute type="xs:string" name="value" use="required"/>
	</xs:complexType>

	<xs:complexType name="PicklistSourceType">
		<xs:sequence>
			<xs:element type="PicklistSourceValueType" name="Value" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute type="xs:string" name="object" use="required"/>
		<xs:attribute type="xs:string" name="field" use="required"/>
		<xs:attribute type="xs:boolean" name="hasEmptyItem" default="false"/>
		<xs:attribute type="xs:boolean" name="whitelist" default="false"/>
	</xs:complexType>

	<xs:complexType name="PicklistSourceValueType">
		<xs:attribute type="xs:string" name="picklist" use="required"/>
		<xs:attribute type="xs:string" name="code"/>
		<xs:attribute type="xs:string" name="validationCode"/>
		<xs:attribute type="xs:string" name="imageId"/>
		<xs:attribute type="xs:string" name="textLabelId"/>
		<xs:attribute type="xs:string" name="shortTextLabelId"/>
	</xs:complexType>

	<xs:complexType name="VirtualPicklistType">
		<xs:sequence>
			<xs:element type="PicklistSourceValueType" name="Value" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute type="xs:boolean" name="hasEmptyItem" default="false"/>
	</xs:complexType>

</xs:schema>
