Provtest XML Schema

<?xml version="1.0" encoding="UTF-8"?>
		<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
		<xsd:element name="config" type="GlobalConfig">
			<xsd:complexType name="GlobalConfig">
				<xsd:sequence>
					<xsd:element name="flow" type="Flow" minOccurs="0" maxOccurs="unbounded" >
					<xsd:element name="kopConfig" type="KopConfig" minOccurs="0" maxOccurs="unbounded" >
					<xsd:element name="test" type="Test" maxOccurs="unbounded" >
				</xsd:sequence>
			</xsd:complexType>
			<xsd:complexType name="Flow">
				<xsd:choice>
					<xsd:sequence>
						<xsd:element name="mod" type="Module" minOccurs="0" maxOccurs="unbounded" >
						<xsd:element name="link" type="Link" minOccurs="0" maxOccurs="unbounded" >
					</xsd:sequence>
					<xsd:sequence>
						<xsd:element name="filename" type="xsd:string" minOccurs="1" maxOccurs="1">
					</xsd:sequence>
				</xsd:choice>
				<xsd:attribute name="name" type="xsd:ID" use="required" >
			</xsd:complexType>
			<xsd:complexType name="Link">
				<xsd:attribute name="source" type="xsd:string" use="required">
			<xsd:attribute name="target" type="xsd:string" use="required">
			<xsd:attribute name="portnum" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="Module">
				<xsd:sequence>
					<xsd:element name="description" type="xsd:string" minOccurs="0">
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="name" type="xsd:string" use="required">
				<xsd:attribute name="type" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="NameValue">
				<xsd:attribute name="name" type="xsd:string">
				<xsd:attribute name="value" type="xsd:string">
				<xsd:attribute name="reValue" type="xsd:string">
				<xsd:attribute name="object" type="xsd:string">
				<xsd:attribute name="infsup" type="xsd:string">
			</xsd:complexType>
			<xsd:complexType name="KopConfig">
				<xsd:sequence>
					<xsd:element name="filename" type="xsd:string" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="name" type="xsd:ID" use="required"/>
			</xsd:complexType>
			<xsd:complexType name="Test">
				<xsd:sequence>
					<xsd:element name="flow" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="kopConfig" type="xsd:string" minOccurs="0">
					<xsd:element name="description" type="xsd:string" minOccurs="0">
					<xsd:element name="inject" type="Inject" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="expect" type="Expect" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="action" type="Action" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="post" type="Action" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="name" type="xsd:ID" use="required">
				<xsd:attribute name="validateExpectSequencing" type="xsd:boolean" default="false">
				<xsd:attribute name="expr" default="OK" >
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="OK">
							<xsd:enumeration value="KO">
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
				<xsd:attribute name="skip" type="xsd:boolean" default="false"/>
			</xsd:complexType>
			<xsd:complexType name="Inject">
				<xsd:choice>
					<xsd:element name="so" type="ServiceOrder">
				</xsd:choice>
			<xsd:attribute name="mod" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="Expect">
				<xsd:choice>
					<xsd:element name="so" type="ServiceOrder">
				</xsd:choice>
				<xsd:attribute name="mod" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="ServiceOrder">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="sod" type="ServiceOrderData" minOccurs="0">
					<xsd:element name="pod" type="ProductOrderData" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="wod" type="WorkOrderData"minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="orderId" type="xsd:string">
				<xsd:attribute name="reOrderId" type="xsd:string">
			</xsd:complexType>
			<xsd:complexType name="ServiceOrderData">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="errorMessage" type="NameValue" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="dataset" type="Dataset" minOccurs="0">
				</xsd:sequence>
				<xsd:attribute name="orderId" type="xsd:string">
				<xsd:attribute name="reOrderId" type="xsd:string">
			</xsd:complexType>
			<xsd:complexType name="WorkOrderData">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="errorMessage" type="NameValue" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="dataset" type="Dataset" minOccurs="0">
				</xsd:sequence>
				<xsd:attribute name="orderId" type="xsd:string">
				<xsd:attribute name="reOrderId" type="xsd:string">
				<xsd:attribute name="podId" type="xsd:unsignedInt" use="required">
				<xsd:attribute name="wodId" type="xsd:unsignedInt">
			</xsd:complexType>
			<xsd:complexType name="Dataset">
				<xsd:choice minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="param" type="DatasetParam">
					<xsd:element name="complex" type="DatasetComplex">
				</xsd:choice>
			</xsd:complexType>
			<xsd:complexType name="DatasetParam">
				<xsd:attribute name="name" type="xsd:string" use="required">
				<xsd:attribute name="index" type="xsd:unsignedInt" default="0">
				<xsd:attribute name="value" type="xsd:string">
				<xsd:attribute name="reValue" type="xsd:string">
				<xsd:attribute name="infsup" type="xsd:string">
			</xsd:complexType>
			<xsd:complexType name="DatasetComplex">
				<xsd:attribute name="name" type="xsd:string">
				<xsd:attribute name="type" use="required">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="structure">
							<xsd:enumeration value="sequence">
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
				<xsd:attribute name="length" type="xsd:unsignedInt">
			</xsd:complexType>
			<xsd:complexType name="FileHandle">
				<xsd:choice>
					<xsd:element name="content" type="xsd:string">
					<xsd:element name="reContent" type="xsd:string">
				</xsd:choice>
				<xsd:attribute name="filename" type="xsd:string">
				<xsd:attribute name="reFilename" type="xsd:string">
				<xsd:attribute name="infsup" type="xsd:string">
			</xsd:complexType>
			<xsd:complexType name="Action">
				<xsd:sequence>
					<xsd:element name="clean" type="ActionClean" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="loadFlow" type="ActionLoadFlow" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="createSo" type="ServiceOrder" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="create" type="ActionCreate" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="select" type="ActionSelect" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="inject" type="Inject" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="invoke" type="ActionInvoke" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="sleep" type="ActionSleep" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="set" type="ActionSetAttrs" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="checkCardinality" type="ActionCheckCardinality" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="checkObject" type="ActionCheckObject" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="system" type="ActionSystem" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="delete" type="ActionDelete" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="finishTest" type="ActionFinishTest" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="endTransaction" type="ActionEndTransaction" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
				<xsd:attribute name="async" type="xsd:boolean" default="false">
				<xsd:attribute name="expr" default="OK" >
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="OK">
							<xsd:enumeration value="KO">
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
				<xsd:attribute name="waitForExpr" type="xsd:int" default="0">
			</xsd:complexType>
			<xsd:complexType name="ActionInvoke">
				<xsd:sequence>
					<xsd:element name="in" type="NameValue" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="out" type="NameValue" minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="return" type="NameValue" minOccurs="0">
					<xsd:element name="exception" type="xsd:string" minOccurs="0">
				</xsd:sequence>
				<xsd:attribute name="object" type="xsd:string" use="required">
				<xsd:attribute name="operation" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionSleep">
				<xsd:attribute name="time" type="xsd:int" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionFinishTest">
				<xsd:attribute name="status" default="OK">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="OK"/>
						<xsd:enumeration value="KO"/>
					</xsd:restriction>
				</xsd:simpleType>
				</xsd:attribute>
			</xsd:complexType>
			<xsd:complexType name="ActionCheckCardinality">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="type" type="xsd:string" use="required">
				<xsd:attribute name="cardinality" type="xsd:unsignedInt" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionSelect">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="object" type="xsd:string" use="required">
				<xsd:attribute name="type" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionCreate">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="object" type="xsd:string" use="required">
				<xsd:attribute name="type" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionSetAttrs">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="object" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionDelete">
				<xsd:attribute name="object" type="xsd:string" use="required">
			</xsd:complexType>
			<xsd:complexType name="ActionCheckObject">
				<xsd:sequence>
					<xsd:element name="attr" type="NameValue" minOccurs="0" maxOccurs="unbounded">
				</xsd:sequence>
				<xsd:attribute name="object" type="xsd:string" use="required">
				<xsd:attribute name="empty" type="xsd:boolean" default="false">
			</xsd:complexType>
			<xsd:complexType name="ActionClean">
				<xsd:attribute name="domain" default="user">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="flow"/>
							<xsd:enumeration value="test"/>
							<xsd:enumeration value="checkpoints"/>
							<xsd:enumeration value="user"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
			</xsd:complexType>
			<xsd:complexType name="ActionLoadFlow">
				<xsd:attribute name="flow" type="xsd:string">
			</xsd:complexType>
			<xsd:complexType name="ActionSystem">
				<xsd:sequence>
					<xsd:element name="write" type="xsd:string" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="read" type="xsd:string" minOccurs="0" maxOccurs="1"/>
					<xsd:element name="reRead" type="xsd:string" minOccurs="0" maxOccurs="1"/>
				</xsd:sequence>
				<xsd:attribute name="command" type="xsd:string" use="required"/>
			</xsd:complexType>
		<xsd:complexType name="ActionEndTransaction"/>
	</xsd:schema>