La Figura 1 es un ejemplo de esquema para ServiceSpecification.xml
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="ConnectionProperty">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConnectionPropertyArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="ConnectionProperty"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConverterSpecIn">
<xsd:complexType>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="programName" type="xsd:string" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ConverterSpecOut">
<xsd:complexType>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="programName" type="xsd:string" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CorrelatorSpec">
<xsd:complexType>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="soapAction" type="xsd:string" use="optional"/>
<xsd:attribute name="adapterType" type="xsd:string" use="optional"/>
<xsd:attribute name="connectionBundleName" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="socketTimeout" type="xsd:nonNegativeInteger" use="optional"/>
<xsd:attribute name="executionTimeout" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:maxInclusive value="3600000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="ltermName" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="WSBindSpec">
<xsd:complexType>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="pgmint" type="xsd:int" use="optional"/>
<xsd:attribute name="contid" type="xsd:string" use="optional"/>
<xsd:attribute name="uri" type="xsd:string" use="optional"/>
<xsd:attribute name="ccsid" type="xsd:string" use="optional"/>
<xsd:attribute name="mappingLevel" type="xsd:string" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
<xsd:attribute name="minimumRuntimeLevel" type="xsd:string" use="optional"/>
<xsd:attribute name="userid" type="xsd:string" use="optional"/>
<xsd:attribute name="transaction" type="xsd:string" use="optional"/>
<xsd:attribute name="charVarying" type="xsd:string" use="optional"/>
<xsd:attribute name="charVaryingLimit" type="xsd:int" use="optional"/>
<xsd:attribute name="defaultCharMaxLength" type="xsd:int" use="optional"/>
<xsd:attribute name="businessPgmName" type="xsd:string" use="optional"/>
<xsd:attribute name="vendorConverterName" type="xsd:string" use="optional"/>
<xsd:attribute name="logFileName" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DriverSpec">
<xsd:complexType>
<xsd:attribute name="driverType" type="xsd:string" use="optional"/>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="programName" type="xsd:string" use="optional"/>
<xsd:attribute name="businessPgmName" type="xsd:string" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EISProject">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="ImportPropertyArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="CodegenPropertyArray"/>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="EISService"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="EISServiceImplementation"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EISService">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="ServicePropertyArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ConnectionPropertyArray"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="Operation"/>
<xsd:element minOccurs="0" ref="RouterSpec"/>
<xsd:element minOccurs="0" ref="WSBindSpec"/>
</xsd:sequence>
<xsd:attribute name="generateConverters" type="xsd:boolean" use="optional"/>
<xsd:attribute name="generateSeparateXSD" type="xsd:boolean" use="optional"/>
<xsd:attribute name="generateWSDL" type="xsd:boolean" use="optional"/>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="targetNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
<xsd:attribute name="targetFilesURI" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ImportProperty">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ImportPropertyArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="ImportProperty"/>
</xsd:sequence>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServiceProperty">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServicePropertyArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="ServiceProperty"/>
</xsd:sequence>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CodegenProperty">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CodegenPropertyArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="CodegenProperty"/>
</xsd:sequence>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="InputMessage">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="RedefinesArray"/>
<xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" ref="ItemSelectionArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ItemExclusionArray"/>
</xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" ref="XMLNamesArray"/>
</xsd:sequence>
<xsd:attribute name="importDirectory" type="xsd:string" use="optional"/>
<xsd:attribute name="importFile" type="xsd:string" use="optional"/>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="nativeTypeName" type="xsd:string" use="optional"/>
<xsd:attribute name="xmlEleName" type="xsd:string" use="optional"/>
<xsd:attribute name="lowerBound" type="xsd:int" use="optional"/>
<xsd:attribute name="upperBound" type="xsd:int" use="optional"/>
<xsd:attribute name="annotationsFile" type="xsd:string" use="optional">
</xsd:complexType>
</xsd:element>
<xsd:element name="InputOutputMessage">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="RedefinesArray"/>
<xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" ref="ItemSelectionArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ItemExclusionArray"/>
</xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" ref="XMLNamesArray"/>
</xsd:sequence>
<xsd:attribute name="importDirectory" type="xsd:string" use="optional"/>
<xsd:attribute name="importFile" type="xsd:string" use="optional"/>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="nativeTypeName" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ItemSelection">
<xsd:complexType>
<xsd:attribute name="itemName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ItemExclude">
<xsd:complexType>
<xsd:attribute name="itemName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ItemSelectionArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="ItemSelection"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ItemExclusionArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="ItemExclude"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Operation">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="OperationPropertyArray"/>
<xsd:choice>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="InputOutputMessage"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="XseSpec"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="InputMessage"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="XseSpec"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" ref="OutputMessage"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="XseSpec"/>
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="type" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OperationProperty">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OperationPropertyArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="OperationProperty"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="OutputMessage">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="RedefinesArray"/>
<xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" ref="ItemSelectionArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ItemExclusionArray"/>
</xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" ref="XMLNamesArray"/>
</xsd:sequence>
<xsd:attribute name="importDirectory" type="xsd:string" use="optional"/>
<xsd:attribute name="importFile" type="xsd:string" use="optional"/>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="nativeTypeName" type="xsd:string" use="optional"/>
<xsd:attribute name="xmlEleName" type="xsd:string" use="optional"/>
<xsd:attribute name="lowerBound" type="xsd:int" use="optional"/>
<xsd:attribute name="upperBound" type="xsd:int" use="optional"/>
<xsd:attribute name="annotationsFile" type="xsd:string" use="optional">
</xsd:complexType>
</xsd:element>
<xsd:element name="RedefineSelection">
<xsd:complexType>
<xsd:attribute name="redefine" type="xsd:string" use="required"/>
<xsd:attribute name="useRedefinition" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="RedefinesArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="RedefineSelection"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="XsdSpecIn">
<xsd:complexType>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="localNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="targetNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="xsdElemName" type="xsd:string" use="optional"/>
<xsd:attribute name="xsdNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="xsdPrefix" type="xsd:string" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XsdSpecOut">
<xsd:complexType>
<xsd:attribute name="fileName" type="xsd:string" use="optional"/>
<xsd:attribute name="localNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="targetNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="xsdElemName" type="xsd:string" use="optional"/>
<xsd:attribute name="xsdNamespace" type="xsd:string" use="optional"/>
<xsd:attribute name="xsdPrefix" type="xsd:string" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XseSpec">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="DriverSpec"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ConverterSpecIn"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ConverterSpecOut"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="XsdSpecIn"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="XsdSpecOut"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="CorrelatorSpec"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="WSBindSpec"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="XMLNameSelection">
<xsd:complexType>
<xsd:attribute name="itemName" type="xsd:string" use="required"/>
<xsd:attribute name="xmlName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XMLNamesArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="XMLNameSelection"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RouterSpec">
<xsd:complexType>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
<xsd:attribute name="fileName" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="programName" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EISServiceImplementation">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="ServicePropertyArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ConnectionPropertyArray"/>
<xsd:element ref="ServiceImplementationSpec"/>
</xsd:sequence>
<xsd:attribute name="runtime" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="BATCH"/>
<xsd:enumeration value="SOAP_FOR_CICS"/>
<xsd:enumeration value="WEB_SERVICES_CICS"/>
<xsd:enumeration value="IMS_SOAP"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="type" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SERVICE_PROVIDER"/>
<xsd:enumeration value="SERVICE_REQUESTOR"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="ServiceImplementationSpec">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="0" ref="OperationSelectionArray"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="LanguageStructureSpecIn"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="LanguageStructureSpecOut"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="ApplicationTemplateSpec"/>
<xsd:element maxOccurs="1" minOccurs="0" ref="WSBindSpec"/>
</xsd:sequence>
<xsd:attribute name="importDirectory" type="xsd:string" use="optional"/>
<xsd:attribute name="importFile" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OperationSelectionArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="OperationSelection"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="OperationSelection">
<xsd:complexType>
<xsd:attribute name="operationName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LanguageStructureSpecIn">
<xsd:complexType>
<xsd:attribute name="fileNamePrefix" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LanguageStructureSpecOut">
<xsd:complexType>
<xsd:attribute name="fileNamePrefix" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ApplicationTemplateSpec">
<xsd:complexType>
<xsd:attribute name="fileName" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="overwrite" type="xsd:boolean" use="optional"/>
<xsd:attribute name="programName" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="suppressGeneration" type="xsd:boolean" use="optional"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>