Astra Schedule Help (7.5)

ATE20.xsd

Hide Navigation Pane

ATE20.xsd

Previous topic Next topic  

ATE20.xsd

Previous topic Next topic JavaScript is required for the print function  

<?xml version="1.0" encoding="utf-8"?>

<xs:schema id="ATE20" elementFormDefault="qualified"

          targetNamespace="http://aais.com/schema/7.4.0/ATE/ATE"

          xmlns:aais="http://aais.com/schema/7.4.0/ATE/AstraTypes"

          xmlns:ate="http://aais.com/schema/7.4.0/ATE/ATE"

          xmlns:xs="http://www.w3.org/2001/XMLSchema">

 

 <xs:import namespace="http://aais.com/schema/7.4.0/ATE/AstraTypes" schemaLocation="./AstraTypes.xsd"/>

 

 <!-- ==================== Define Attribute Groups ====================== -->

   <xs:attributeGroup name="namedElementAttribs">

       <xs:attribute name="name" type="xs:NCName" use="required">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The name attribute defines the identifier by which the the node is referenced.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:attributeGroup>

   <xs:attributeGroup name="commentableElementAttribs">

       <xs:attributeGroup ref="ate:namedElementAttribs"></xs:attributeGroup>

       <xs:attribute name="comment" type="xs:string" use="optional"/>

   </xs:attributeGroup>

   <xs:attributeGroup name="endPointRefedElementAttribs">

       <xs:attributeGroup ref="ate:commentableElementAttribs"></xs:attributeGroup>

       <xs:attribute name="endPoint" use="required" type="xs:NCName">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The endPoint attribute refers to a name atribute of an <EndPoint> type element.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:attributeGroup>

   <xs:attributeGroup name="endPointRefableElementAttribs">

       <xs:attributeGroup ref="ate:commentableElementAttribs"></xs:attributeGroup>

       <xs:attribute name="endPoint" use="optional" type="xs:NCName">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The endPoint attribute refers to a name atribute of an <EndPoint> type element.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:attributeGroup>

   <xs:attributeGroup name="conditionalElement">

     <xs:attribute name="if" type="aais:nonEmptyString" use="optional">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[The option if attribute specifices an expression that, when evaluated, selects or deslects the

                    element for processing.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

   </xs:attributeGroup>

   <xs:attributeGroup name="xsltAble">

       <xs:attribute name="xslt" type="ate:xsltURI" use="optional">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The xslt attribute is used to indiate an XSLT style sheet which is applied at the end of other processing prior to returning the final result schema.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:attributeGroup>

   <xs:attributeGroup name="xsdAble">

       <xs:attribute name="xsd" type="ate:xsdURI" use="optional" default="discover">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The xsd attribute indicates an XML Schema file used to validate the structure of the resulting schema.  The default value is 'discover' which generates a default XML Schema from information in the tag inner content.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:attributeGroup>

   <xs:attributeGroup name="xmlProcessable">

       <xs:attributeGroup ref="ate:xsdAble"/>

       <xs:attributeGroup ref="ate:xsltAble"/>

   </xs:attributeGroup>

 

 

   <!-- ======================= Define Enumerations ====================== -->

   <xs:simpleType name="jobParameterTypes">

     <xs:restriction base="xs:string">

       <xs:enumeration value="string"/>

       <xs:enumeration value="int"/>

       <xs:enumeration value="bool"/>

     </xs:restriction>

   </xs:simpleType>

   <xs:simpleType name="joinTypes">

       <xs:restriction base="xs:string">

           <xs:enumeration value="innerJoin"/>

           <xs:enumeration value="leftJoin"/>

       </xs:restriction>

   </xs:simpleType>

 <xs:simpleType name="fileWriteOps">

   <xs:restriction base="xs:string">

     <xs:enumeration value="write"/>

     <xs:enumeration value="append"/>

   </xs:restriction>

 </xs:simpleType>

   <xs:simpleType name="fileOperationVerb">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="ate:fileWriteOps"/>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:enumeration value="read"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

 

 <xs:simpleType name="sortDirection">

   <xs:restriction base="xs:string">

     <xs:enumeration value="ascending"/>

     <xs:enumeration value="descending"/>

   </xs:restriction>

 </xs:simpleType>

 

   <xs:simpleType name="optionEnum">

       <xs:restriction base="xs:NCName">

           <xs:enumeration value="AcceptAnyRoomAssignment"/>

           <xs:enumeration value="OnlyAcceptUntilFirstDistributedScheduledPeriod"/>

           <xs:enumeration value="OnlyAcceptIfMeetingNoModifiedInAstraSchedule"/>

           <xs:enumeration value="OnlyAcceptOnInsertOfNewRecord"/>

           <xs:enumeration value="CheckForDoubleBooks"/>

           <xs:enumeration value="DropRoomAssignment"/>

           <xs:enumeration value="OnlyDropRoomAssignmentIfDoubleBooked"/>

           <xs:enumeration value="KeepRoomAssignmentAndMarkAsValidDoubleBooked"/>

           <xs:enumeration value="CheckForInvalidCrossLists"/>

           <xs:enumeration value="ImportArrangedSections"/>

           <xs:enumeration value="ForceUpdate"/>

           <xs:enumeration value="UseTermEndDatesForSections">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[If true: The Astra term EndDate is used for the section instead of the section EndDate stored in the ATE.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

           <xs:enumeration value="PreserveMeetingExceptions">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[If true: Any exceptions or changes to a meeting pattern made in Astra are preserved and not updated with ATE data for the standard meeting pattern.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

       </xs:restriction>

   </xs:simpleType>

 

   <xs:simpleType name="criterionOps">

       <xs:restriction base="xs:NCName">

           <xs:enumeration value="BitwiseAnd"/>

           <xs:enumeration value="BitwiseAnd"/>

           <xs:enumeration value="BitwiseOr"/>

           <xs:enumeration value="IsEqual"/>

           <xs:enumeration value="IsNotEqual"/>

           <xs:enumeration value="IsNull"/>

           <xs:enumeration value="IsNotNull"/>

           <xs:enumeration value="IsBetween"/>

           <xs:enumeration value="IsNotBetween"/>

           <xs:enumeration value="IsLike"/>

           <xs:enumeration value="IsNotLike"/>

           <xs:enumeration value="IsAnyOf"/>

           <xs:enumeration value="IsNotAnyOf"/>

           <xs:enumeration value="IsGreaterThan"/>

           <xs:enumeration value="IsGreaterThanOrEqual"/>

           <xs:enumeration value="IsLessThan"/>

           <xs:enumeration value="IsLessThanOrEqual"/>

       </xs:restriction>

   </xs:simpleType>

 

   <xs:simpleType name="adapterTypes">

       <xs:restriction base="xs:string">

           <xs:enumeration value="ODBC"/>

           <xs:enumeration value="Oracle"/>

           <xs:enumeration value="MsSql"/>

           <xs:enumeration value="Astra">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Runtime selection of an Oracle or MsSql adapter depending on the current Astra configuration.  Use to connect to the Astra Database.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

       </xs:restriction>

   </xs:simpleType>

 

 <xs:simpleType name="differencerSisTypes">

   <xs:restriction base="xs:string">

     <xs:enumeration value="MSSQL"/>

   <xs:enumeration value="ODBC"/>

     <xs:enumeration value="Oracle"/>

   </xs:restriction>

 </xs:simpleType>

 

   <xs:simpleType name="webClientProtocol">

       <xs:restriction base="xs:string">

           <xs:enumeration value="Soap">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Soap Version 1.1]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

           <xs:enumeration value="Soap12">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Soap Version 1.2]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

       </xs:restriction>

   </xs:simpleType>

 

   <xs:simpleType name="excelVersion">

       <xs:restriction base="xs:string">

           <xs:enumeration value="Jet">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Excel 97-2003]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

           <xs:enumeration value="OpenXml">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[OpenXml Format Excel 2007+]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

       </xs:restriction>

   </xs:simpleType>

 

   <xs:simpleType name="excelSheetName">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:NCName"/>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:unsignedInt"/>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

 

   <xs:simpleType name="jobType">

     <xs:restriction base="xs:string">

       <xs:enumeration value="Export"/>

       <xs:enumeration value="Import"/>

       <xs:enumeration value="Other"/>

     </xs:restriction>

   </xs:simpleType>

 

   <xs:simpleType name="modes">

       <xs:restriction base="xs:string">

           <xs:enumeration value="Always"/>

           <xs:enumeration value="Batch"/>

           <xs:enumeration value="OnDemand"/>

           <xs:enumeration value="Realtime"/>

           <xs:enumeration value="BatchOrOnDemand"/>

           <xs:enumeration value="Bulk">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Effectively Batch|RealTime - Typically more than 1 record is affected.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

           <xs:enumeration value="NonBatch">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Effectively OnDemand|RealTime - Typically a triggered job.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:enumeration>

       </xs:restriction>

   </xs:simpleType>

 

 

   <!-- ====================== Define Simple Types ======================= -->

   <!-- Define the type for a parameter expansion [*${NCName}*]*-->

   <xs:simpleType name="expandable">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:NCName"/>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:string" >

                   <xs:pattern value="([^($})]*(\$\{[\i-[:]][\c-[:|\}]]*\})[^($})]*)*"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define the type for a Parameterized FTP or File URI-->

   <xs:simpleType name="fileURI">

       <xs:restriction base="xs:string">

           <xs:pattern value="ftp://([^($})]*(\$\{[\i-[:]][\c-[:|\}]]*\})*[^($})]*)*"/>

           <xs:pattern value="file://([^($})]*(\$\{[\i-[:]][\c-[:|\}]]*\})*[^($})]*)*"/>

           <xs:pattern value="([^($}:)]*(\$\{[\i-[:]][\c-[:|\}]]*\})[^($})]*)*"/>

           <xs:pattern value="[^($}:)]*"/>

       </xs:restriction>

   </xs:simpleType>

   <!-- Define the type for an Xslt URI-->

   <xs:simpleType name="xsltURI">

       <xs:restriction base="xs:anyURI">

           <xs:pattern value=".*.xsl[t]*((\?[\i-[:]]+\c*=\c+)((&amp;)[\i-[:=]][^=]*=[^=]+)*)?"/>

           <!--<xs:pattern value=".*.xsl[t]*"/>-->

           <xs:pattern value="(\$\{[^$\{\}]*\})+((\?((\$\{[^$\{\}]*\})|[\i-[:]])+\c*=((\$\{[^$\{\}]*\})|\c)+)((&amp;)[\i-[:=]][^=]*=[^=]+)*)?"/>

           <xs:pattern value="^$"/>

       </xs:restriction>

   </xs:simpleType>

   <!-- Define the type for an Xsd URI-->

   <xs:simpleType name="xsdURI">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:anyURI">

                   <xs:pattern value=".*.xsd"/>

               </xs:restriction>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:enumeration value="discover">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[Generate a default XML Schema from the <Source> definition.]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:enumeration>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define the type for a Parameterized URI-->

   <xs:simpleType name="apiURI">

       <xs:restriction base="xs:string">

           <xs:pattern value="https?://([^($})]*(\$\{[\i-[:]][\c-[:|\}]]*\})*[^($})]*)*"/>

           <xs:pattern value="([^($}:)]*(\$\{[\i-[:]][\c-[:|\}]]*\})[^($})]*)*"/>

           <xs:pattern value="[^($}:)]*"/>

       </xs:restriction>

   </xs:simpleType>

   <!-- Define a type for SQL bind variables -->

   <xs:simpleType name="sqlBind">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:pattern value="[@|:].*"/>

                   <xs:pattern value="([0-9])+(?:\s*|\s*[,;]|\s*[,;]\s*([0-9])*)*"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define a type for String Functions -->

   <xs:simpleType name="stringFxs">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[This type definition attempts to restrict entry to some known function signatures.  See inline comments below which preceed each regex.  Wherever a string parameter is allowed the expression (\@this|[a-z]+\(.+\)|\$\{.+\}) limts content to @this; ${NCName} or something that looks like another function ie: at least one letter followed by open and closed parens.  Effectively validation is provided for the outer most function signature is performed allowing for arbitrary nesting of functions.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <!-- ltrim(string); rtrim(string); trim(string) -->

                   <xs:pattern value="[r|l]?trim\((\@this|[a-z]+\(.+\)|\$\{.+\})\)"/>

                   <!-- split(string; char; int) -->

                   <xs:pattern value="split\((\@this|[a-z]+\(.+\)|\$\{.+\}),'.',[1-9]([0-9])?\)"/>

                   <!-- split(string; int; int) -->

                   <xs:pattern value="substring\((\@this|[a-z]+\(.+\)|\$\{.+\}),[1-9]([0-9])*,[1-9]([0-9])*\)"/>

                   <!-- left(string, int); right(string, int)-->

                   <xs:pattern value="(left|right)\((\@this|[a-z]+\(.+\)|\$\{.+\}),[1-9]([0-9])*\)"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define a type for append.value attribue -->

   <xs:simpleType name="appendValueType">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string"/>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:enumeration value="today()"/>

                   <xs:enumeration value="now()"/>

                   <xs:enumeration value="null"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define a type for delimited Lists -->

   <xs:simpleType name="delimitedNames">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:pattern value="([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)+(\s*[,;]\s*([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*)*"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define a type for headerRow attributes -->

   <xs:simpleType name="headerRowType">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:enumeration value="false"/>

               </xs:restriction>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:unsignedShort"/>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define a type for file parse attributes -->

   <xs:simpleType name="fileParse">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:enumeration value=","/>

                   <xs:enumeration value="\t">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[Tab]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:enumeration>

                   <xs:enumeration value="|"/>

                   <xs:enumeration value=";"/>

                   <xs:enumeration value="\s">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[Any whitespace]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:enumeration>

                   <xs:enumeration value="\n">

                       <xs:annotation>

                           <xs:documentation><![CDATA[Newline. Effectively the file uses fixed length field definitions because \n is both the record and column delimiter.]]></xs:documentation>

                       </xs:annotation>

                   </xs:enumeration>

               </xs:restriction>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:normalizedString" />

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

   <!-- Define a type for Excel range definitions -->

   <xs:simpleType name="excelRange">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:string">

                   <xs:pattern value="([A-Z]|[a-z])([A-Z]|[a-z])?[1-9][0-9]*:([A-Z]|[a-z])([A-Z]|[a-z])?[1-9][0-9]*"/>

                   <xs:pattern value="([A-Z]|[a-z])([A-Z]|[a-z])?:([A-Z]|[a-z])([A-Z]|[a-z])?"/>

               </xs:restriction>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

 

 

   <!-- ====================== Define Complex Types ====================== -->

   <xs:complexType name="CommentAble">

       <xs:attributeGroup ref="ate:commentableElementAttribs"/>

   </xs:complexType>

   <xs:complexType name="FXAble">

       <xs:attributeGroup ref="ate:commentableElementAttribs"/>

       <xs:attribute name="fx" use="optional" type="ate:stringFxs">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The fx attribute allows for built-in string functions to be applied to the node data prior to returning the final value.  Use @this in the function call to reference the node data.  Some validation of this attribute uses regular expressions to limit values to known function signatures, alowing unvalidated nesting, and ${NCName} parameter expansion.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:complexType>

 

 

   <xs:complexType name="JobParameter" id="JobParameter">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[A <JobParameter> generates a textbox for free form user entry.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:attribute name="caption" use="required">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The caption attribute defines the label which is generated on the webcontrol.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

       <xs:attributeGroup ref="ate:namedElementAttribs"></xs:attributeGroup>

       <xs:attribute name="captionCssClass" use="optional">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The captionCssClass attribute allows control styling and positioning of the label through aplication of css.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

       <xs:attribute name="contentCssClass" use="optional">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The contentCssClass attribute allows control styling and positioning of the entry control through aplication of css.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

       <xs:attribute name="hidden" type="xs:boolean" use="optional" default="false">

         <xs:annotation>

           <xs:documentation>

             <![CDATA[Indicates the the JobParameter is not configure via the job form.]]>

           </xs:documentation>

         </xs:annotation>

       </xs:attribute>

       <xs:attribute name="expr" use="optional" type="aais:nonEmptyString">

         <xs:annotation>

           <xs:documentation>

             <![CDATA[Expression to evalute for parameter value.]]>

           </xs:documentation>

         </xs:annotation>

       </xs:attribute>

       <xs:attribute name="type" use="optional" type="ate:jobParameterTypes" default="string">

         <xs:annotation>

           <xs:documentation>

             <![CDATA[Type of value.]]>

           </xs:documentation>

         </xs:annotation>

       </xs:attribute>

   </xs:complexType>

 

   <xs:complexType name="JobParmeters" id="JobParameters">

       <xs:sequence maxOccurs="unbounded">

           <xs:choice>

               <xs:element ref="ate:JobParameter" minOccurs="0" maxOccurs="unbounded"/>

               <xs:element ref="ate:FileParameter" minOccurs="0" maxOccurs="unbounded"/>

               <xs:element ref="ate:ListParameter" minOccurs="0" maxOccurs="unbounded" />

               <xs:element ref="ate:SystemParameter" minOccurs="0" maxOccurs="unbounded" />

               <xs:element ref="ate:JobParameterGroup" minOccurs="0" maxOccurs="unbounded"/>

           </xs:choice>

       </xs:sequence>

   </xs:complexType>

   <xs:complexType name="ObjectParameter" >

       <xs:annotation>

           <xs:documentation>

               <![CDATA[Use the <ObjectParameter> tag to expose the <AstraObject> property for JobParameter expansion.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:complexContent>

           <xs:extension base="ate:FXAble">

               <xs:attribute name="source" use="required"/>

           </xs:extension>

       </xs:complexContent>

   </xs:complexType>

 

   <xs:complexType name="Parameter" id="Parameter" mixed="false">

       <xs:attributeGroup ref="ate:namedElementAttribs"/>

       <xs:attribute name="ref" use="required" type="xs:NCName" >

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The ref attribute refers to a the name attribute of a <JobParameter> type element.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

     <xs:attributeGroup ref="ate:conditionalElement"/>

   </xs:complexType>

   <xs:complexType name="SqlParameter" mixed="false">

     <xs:attributeGroup ref="ate:namedElementAttribs"/>

     <xs:attribute name="match" use="optional" type="xs:unsignedInt" default="0">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[Used with regex to identify which match to use.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="ref" use="optional" type="xs:NCName" >

       <xs:annotation>

         <xs:documentation>

           <![CDATA[The ref attribute refers to a the name attribute of a <JobParameter> type element.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="regex" use="optional" type="xs:string" default="">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[An optional reqular expression to use for parsing.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="expr" use="optional" type="aais:nonEmptyString">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[Expression to evalute for parameter value.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="emptyStringsAsNull" use="optional" type="aais:logical" default="true">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[Set to true to treat empty bind values as NULL.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="sqlBind" use="required" type="ate:sqlBind">

         <xs:annotation>

             <xs:documentation>

                 <![CDATA[The sqlBind attribute is used for binding the parameter to a prepared SQL statement.  The value must be a parameter name of the form [:|@]* or a number or delimited list of numbers specifying positional binding of ODBC compatibility.]]>

             </xs:documentation>

         </xs:annotation>

     </xs:attribute>

     <xs:attributeGroup ref="ate:conditionalElement"/>

   </xs:complexType>

 

   <xs:complexType name="Parameters" id="Parameters">

       <xs:choice  minOccurs="1" maxOccurs="unbounded">

           <xs:element ref="ate:Parameter"/>

       </xs:choice>

   </xs:complexType>

   <xs:complexType name="SqlParameters" id="SqlParameters">

       <xs:choice  minOccurs="1" maxOccurs="unbounded">

           <xs:element ref="ate:SqlParameter"/>

       </xs:choice>

   </xs:complexType>

 

   <xs:complexType name="ParameterizedGroup">

       <xs:sequence minOccurs="0">

           <xs:element ref="ate:Parameters" maxOccurs="1"/>

       </xs:sequence>

       <xs:attributeGroup ref="ate:namedElementAttribs" />

   </xs:complexType>

   <xs:group name="SoapGroup">

       <xs:choice>

           <xs:any namespace="http://www.w3.org/2003/05/soap-envelope" minOccurs="0" processContents="skip">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Creates a SOAP 1.2 envelope.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:any>

           <xs:any namespace="http://schemas.xmlsoap.org/soap/envelope/" minOccurs="0" processContents="skip">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[Creates a SOAP 1.1 envelope.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:any>

       </xs:choice>

   </xs:group>

 

   <xs:complexType name="WebMethod">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[An <WebMethod> tag creates a DataSet from the result of an SOA service call.  Use only with WebEndPoint references.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:group ref="ate:SoapGroup" minOccurs="1" />

       <xs:attribute name="protocol" type="ate:webClientProtocol" default="Soap12"/>

   </xs:complexType>

 

   <xs:complexType name="SqlBuilder">

       <xs:simpleContent>

           <xs:extension base="xs:string">

               <xs:attributeGroup ref="ate:conditionalElement"/>

               <xs:attribute name="comment"/>

           </xs:extension>

       </xs:simpleContent>

   </xs:complexType>

 

 

 

   <xs:complexType name="ColumnMap">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[The <ColumnMap> defines modifications to the default shape/schema of a contributing source prior to additional processing.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:choice maxOccurs="unbounded">

           <xs:element ref="ate:Rename"/>

           <xs:element ref="ate:Append"/>

           <xs:element ref="ate:Remove"/>

           <xs:element ref="ate:Assign"/>

       </xs:choice>

   </xs:complexType>

 

   <xs:complexType name="Schema">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[The <Schema> tag defines the structure of the output of the data preparation.  The inner <Column> tags define which of the columns from the contributing source(s) are present in the resulting records. ]]>

           </xs:documentation>

       </xs:annotation>

       <xs:sequence maxOccurs="unbounded">

           <xs:element ref="ate:Column" minOccurs="0"/>

       </xs:sequence>

       <xs:attribute name="entityName" use="required" type="xs:NCName">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The entityName attribute provides a name for the resulting schema object(s) created by the transformation.  This should be a noun in the singluar form.]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

       <xs:attribute name="groupName" use="optional" type="xs:NCName">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[The groupName attribute provides a name for the root node of the schema created by the transformation.  This should be the plural form of the noun used for the entityName attribute.  If this attribute is missing an 's' is appended to the value of the entityName attribute. ]]>

               </xs:documentation>

           </xs:annotation>

       </xs:attribute>

   </xs:complexType>

 

 

 

 

 

   <xs:complexType name="File">

       <xs:sequence minOccurs="0">

           <xs:element ref="ate:ColumnMap"/>

       </xs:sequence>

   </xs:complexType>

 

 <xs:element name="ExcelFileReader">

   <xs:complexType>

     <xs:simpleContent>

       <xs:extension base="xs:string"/>

     </xs:simpleContent>

   </xs:complexType>

 </xs:element>

 

 <xs:element name="TextFileReader">

   <xs:complexType>

     <xs:simpleContent>

       <xs:extension base="xs:string"/>

     </xs:simpleContent>

   </xs:complexType>

 </xs:element>

 

   <xs:element name="FileReader" type="ate:FileReader"/>

   <xs:complexType name="FileReader">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[An <FileReader> tag reads a stream to a file type resource.  Use only with FileEndPoint references.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:choice>

           <xs:sequence>

               <xs:choice>

                   <xs:element ref="ate:TextFile"/>

                   <xs:element ref="ate:ExcelFile"/>

               </xs:choice>

               <xs:element name="Schema" type="ate:Schema">

                   <xs:annotation>

                       <xs:documentation>

                           <![CDATA[The <Schema> tag defines the structure of the output of the transformation.  Optionally inner <Column> tags will limit the columns present in the resulting records.  If any <Column> tag is present, only columns referred to by <Column> tags will appear in the final output.  To bring all columns through create an empty <Schema> tag.]]>

                       </xs:documentation>

                   </xs:annotation>

               </xs:element>

           </xs:sequence>

           <xs:element ref="ate:XmlFile"/>

       </xs:choice>

       <xs:attribute name="verb" fixed="read" type="ate:fileOperationVerb"/>

   </xs:complexType>

 

   <xs:element name="FileWriter" type="ate:FileWriter"/>

   <xs:complexType name="FileWriter">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[An <FileWriter> tag reads a stream to a file type resource.  Use only with FileEndPoint references.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:choice>

           <xs:sequence>

               <xs:choice>

                   <xs:element ref="ate:TextFile"/>

                   <xs:element ref="ate:ExcelFile"/>

               </xs:choice>

           </xs:sequence>

           <xs:element ref="ate:XmlFile"/>

       </xs:choice>

       <xs:attribute name="sourceReader" use="required" />

       <xs:attribute name="verb" default="write" type="ate:fileWriteOps" />

   </xs:complexType>

 

 

   <xs:element name="GetAstraObject">

       <xs:complexType>

           <xs:sequence>

               <xs:element name="ObjectParameter" minOccurs="0" maxOccurs="unbounded" type="ate:ObjectParameter"/>

           </xs:sequence>

           <xs:attributeGroup ref="ate:namedElementAttribs"/>

           <xs:attribute name="className" use="required"/>

       </xs:complexType>

   </xs:element>

   <xs:element name="SetAstraObject"></xs:element>

 

   <xs:element name="HubParameter">

     <xs:annotation>

       <xs:documentation>

         <![CDATA[The <HubParameter> element is used to configure a behavior of the hub to which it belongs.]]>

       </xs:documentation>

     </xs:annotation>

     <xs:complexType>

       <xs:simpleContent>

         <xs:extension base="xs:string">

           <xs:attribute name="name" use="required" type="aais:nonEmptyString"/>

           <xs:attribute name="expr" use="optional" type="aais:nonEmptyString"/>

           <xs:attributeGroup ref="ate:conditionalElement"/>

         </xs:extension>

       </xs:simpleContent>

     </xs:complexType>

   </xs:element>

 

 <xs:element name="Reader">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[The <Reader> element is used indicate what readers a hub should process.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:attribute name="ref" use="required" type="xs:NCName"/>

     <xs:attributeGroup ref="ate:conditionalElement"/>

   </xs:complexType>

 </xs:element>

 

   <xs:element name="HubParameters">

     <xs:complexType>

       <xs:sequence>

         <xs:element ref="ate:HubParameter" minOccurs="1" maxOccurs="unbounded"/>

       </xs:sequence>

     </xs:complexType>

   </xs:element>

 

   <xs:element name="AlternateHubs">

       <xs:complexType>

           <xs:sequence>

               <xs:element name="Hub" minOccurs="1" maxOccurs="unbounded">

                   <xs:annotation>

                       <xs:documentation>

                           <![CDATA[The <Hub> element instantiates an object of type className which must derive from AteBaseHub and then calls the DoWork() method.

                                           The instantiated hub processor will have access to all of the stream pointers for the task.

                                           ]]>

                       </xs:documentation>

                   </xs:annotation>

                   <xs:complexType>

                     <xs:attribute name="className" use="required" type="aais:hubClasses"/>

                   </xs:complexType>

               </xs:element>

           </xs:sequence>

       </xs:complexType>

   </xs:element>

 

 

   <xs:element name="Hub">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[The <Hub> element instantiates an object of type className which must derive from AteBaseHub and then calls the DoWork() method.

       The instantiated hub processor will have access to all of the stream pointers for the task.

       ]]>

           </xs:documentation>

       </xs:annotation>

       <xs:complexType>

           <xs:sequence>

               <xs:choice>

                 <xs:element name="NoReaders">

                   <xs:complexType>

                   </xs:complexType>

                 </xs:element>

                 <xs:element ref="ate:Reader" minOccurs="1" maxOccurs="unbounded"/>

               </xs:choice>

               <xs:element ref="ate:HubParameters" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:AlternateHubs" minOccurs="0"/>

           </xs:sequence>          

           <xs:attribute name="className" use="required" type="aais:hubClasses"/>

       </xs:complexType>

   </xs:element>

   <xs:element name="Select">

     <xs:annotation>

       <xs:documentation>

         <![CDATA[The <Select> element is used to specify a single column of interest for export.]]>

       </xs:documentation>

     </xs:annotation>

     <xs:complexType>

       <xs:attribute name="column" use="required" type="xs:string"/>

       <xs:attribute name="as" use="optional" default="" type="xs:string"/>

     </xs:complexType>

   </xs:element>

 

 <xs:element name="Where">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[The <Where> element is used to restrict the set of items from which to export.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:simpleContent>

       <xs:extension base="xs:string">

         <xs:attributeGroup ref="ate:conditionalElement"/>

         <xs:attribute name="comment"/>

       </xs:extension>

     </xs:simpleContent>

   </xs:complexType>

 </xs:element>

 

 <xs:element name="OrderBy">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[<OrderBy> elements are used to order returned columns.  Multiple OrderBy can be specified, with earlier apperaing one taking precedence.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:attribute name="column" use="required" type="aais:nonEmptyString"/>

     <xs:attribute name="direction" use="required" type="ate:sortDirection"/>

   </xs:complexType>

 </xs:element>

 

   <xs:complexType name="Astra" id="Astra">

     <xs:annotation>

       <xs:documentation>

         <![CDATA[Exposes Astra data for exports.]]>

       </xs:documentation>

     </xs:annotation>

     <xs:sequence>

       <xs:element ref="ate:Select" minOccurs="1" maxOccurs="unbounded"/>

       <xs:element ref="ate:Where" minOccurs="0" maxOccurs="unbounded"/>

       <xs:element ref="ate:OrderBy" minOccurs="0" maxOccurs="unbounded"/>

     </xs:sequence>

     <xs:attribute name="from" use="required" type="xs:string"/>

     <xs:attribute name="rootElement" use="required" type="xs:string"/>

   </xs:complexType>

 

   <xs:complexType name="AstraEnvironment" id="AstraEnvironment">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[An <AstraEnvironment> tag exposes all of the variables which have local scope to the method at the top of the call stack.  Use only with the built-in Astra endpoint.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:sequence>

           <xs:choice maxOccurs="unbounded">

               <xs:element ref="ate:GetAstraObject" minOccurs="0"/>

               <xs:element ref="ate:SetAstraObject" minOccurs="0"/>

           </xs:choice>

           <xs:element ref="ate:Hub" minOccurs="0" maxOccurs="unbounded"/>

       </xs:sequence>

   </xs:complexType>

 

   <xs:complexType name="Sources">

       <xs:sequence>

           <xs:element ref="ate:Source" minOccurs="1" maxOccurs="unbounded"/>

       </xs:sequence>

   </xs:complexType>

 

   <xs:complexType name="Fetch">

       <xs:complexContent>

           <xs:extension base="ate:xsltAbleInline">

               <xs:attributeGroup ref="ate:conditionalElement"/>

               <xs:attribute name="ref" use="required" type="xs:NCName">

                   <xs:annotation>

                       <xs:documentation>

                           <![CDATA[The ref attribute refers to a the name attribute of an outer <Source> type element.]]>

                       </xs:documentation>

                   </xs:annotation>

               </xs:attribute>

           </xs:extension>

       </xs:complexContent>

   </xs:complexType>

 

 

   <xs:simpleType name="systemSetting">

       <xs:union>

           <xs:simpleType>

               <xs:restriction base="xs:NCName">

                 <xs:enumeration value="EventExportXslParms"/>

                 <xs:enumeration value="PrimarySisConnectionString"/>

               </xs:restriction>

           </xs:simpleType>

           <xs:simpleType>

               <xs:restriction base="xs:NCName"/>

           </xs:simpleType>

       </xs:union>

   </xs:simpleType>

 

   <xs:complexType name="ExportSet">

       <xs:complexContent>

           <xs:extension base="ate:ParameterizedGroup">

               <xs:sequence>

                   <xs:element ref="ate:Filter" minOccurs="0"/>

               </xs:sequence>

               <xs:attribute name="className" type="aais:exportHubClasses" use="required"/>

               <xs:attributeGroup ref="ate:commentableElementAttribs"/>

               <xs:attributeGroup ref="ate:xmlProcessable"/>

           </xs:extension>

       </xs:complexContent>

   </xs:complexType>

 

   <xs:complexType name="Filter">

       <xs:choice>

           <xs:element ref="ate:Criterion" minOccurs="0" maxOccurs="unbounded"/>

           <xs:element name="Expression" minOccurs="0" maxOccurs="1"/>

       </xs:choice>

   </xs:complexType>

 

   <xs:complexType name="Criterion">

       <xs:attribute name="criterionOperation" type="ate:criterionOps" default="IsEqual"/>

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

       <xs:attributeGroup ref="ate:commentableElementAttribs"/>

   </xs:complexType>

 

 

 

   <xs:complexType name="SetOperation">

       <xs:sequence>

           <xs:choice minOccurs="1">

               <xs:element ref="ate:Link" minOccurs="0" maxOccurs="unbounded" />

               <xs:element ref="ate:Union" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:Aggregate" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:Compare" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:Transform" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:Difference" minOccurs="0" maxOccurs="1"/>

           </xs:choice>

           <xs:element ref="ate:Schema" minOccurs="0"/>

       </xs:sequence>

       <xs:attributeGroup ref="ate:conditionalElement"/>

       <xs:attributeGroup ref="ate:commentableElementAttribs"/>

       <xs:attributeGroup ref="ate:xmlProcessable"/>

   </xs:complexType>

   <xs:complexType name="setOperationSource" id="setOperationSource">

       <xs:complexContent>

           <xs:extension base="ate:xsltAbleInline">

               <xs:attribute name="ref" use="required" type="xs:NCName">

                   <xs:annotation>

                       <xs:documentation>

                           <![CDATA[The ref attribute refers to a the name attribute of an outer <Source> type element.]]>

                       </xs:documentation>

                   </xs:annotation>

               </xs:attribute>

           </xs:extension>

       </xs:complexContent>

   </xs:complexType>

   <xs:complexType name="linkSource">

       <xs:complexContent>

           <xs:extension base="ate:setOperationSource">

         <xs:attribute name="tableName" use="required" type="xs:NCName"/>

         <xs:attribute name="keyColumns" use="required" type="ate:delimitedNames"/>

             <xs:attributeGroup ref="ate:xmlProcessable"/>

       </xs:extension>

     </xs:complexContent>

   </xs:complexType>

 

 <xs:complexType name="compareSource" id="compareSource">

   <xs:complexContent>

     <xs:extension base="ate:setOperationSource">

       <xs:attribute name="resultColumns" use="optional" type="xs:string">

         <xs:annotation>

           <xs:documentation>

             <![CDATA[Names of the colums from the set to include in the output set if comparison fails.]]>

           </xs:documentation>

         </xs:annotation>

       </xs:attribute>

     </xs:extension>

   </xs:complexContent>

 </xs:complexType>

 

 <xs:complexType name="transformParameter" id="transformParameter">

   <xs:attribute name="name" use="required" type="aais:nonEmptyString"/>

   <xs:attribute name="source" use="optional" type="xs:NCName"/>

 </xs:complexType>

 

 <xs:element name="TransformParameter" type="ate:transformParameter"/>

 

 <xs:complexType name="transform" id="transform">

   <xs:complexContent>

     <xs:extension base="ate:setOperationSource">

       <xs:sequence>

         <xs:element ref="ate:TransformParameter" minOccurs="0" maxOccurs="unbounded" />

       </xs:sequence>

     </xs:extension>

   </xs:complexContent>

 </xs:complexType>

 

 <xs:element name="Transform" type="ate:transform"/>

 

 <!--

   <xs:element name="Transform">

     <xs:complexType>      

       <xs:annotation>

         <xs:documentation>

             <![CDATA[Creates a new source by applying the given transform to an existing one.]]>

         </xs:documentation>

       </xs:annotation>

       <xs:sequence>

         <xs:element ref="ate:TransformSource" minOccurs="1" maxOccurs="1"/>

       </xs:sequence>

       <xs:attribute name="name" use="required" type="aais:nonEmptyString"/>

     </xs:complexType>

   </xs:element> -->

   <xs:complexType name="xsltAbleInline" id="xsltAbleInline">

       <xs:attributeGroup ref="ate:xmlProcessable"/>

   </xs:complexType>

 

   <xs:complexType name="Phases">

       <xs:sequence>

           <xs:element ref="ate:Phase" minOccurs="1" maxOccurs="unbounded"/>

       </xs:sequence>

   </xs:complexType>

 

 

   <!-- ======================= Define Root Element ======================== -->

   <xs:element name="ATE" id="ATE">

       <xs:complexType>

           <xs:sequence>

               <xs:element name="Summary" type="xs:string" minOccurs="0"/>

               <xs:element ref="ate:Options" minOccurs="0"/>

               <xs:element ref="ate:JobParameters" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:EndPoints" minOccurs="0" maxOccurs="1"/>

               <xs:element ref="ate:Pipeline" minOccurs="1" maxOccurs="unbounded"/>

               <xs:element ref="ate:Differencer" minOccurs="0" maxOccurs="unbounded"/>

           </xs:sequence>

           <xs:attribute name="version" use="required" fixed="2.0"/>

           <xs:attribute name="jobType" type="ate:jobType" use="required" />

           <xs:attribute name="validMode" type="ate:modes" use="required">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[The jobMode attribute is used to determine when this config file is valid.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:attribute>

       </xs:complexType>

 

       <xs:keyref name="jobParamRef" id ="jobParamRef" refer="ate:jobParamKey">

           <xs:selector xpath=".//ate:Parameter|.//ate:SqlParameter" />

           <xs:field xpath="@ref" />

       </xs:keyref>

       <xs:key name="jobParamKey" id="jobParamKey">

           <xs:selector xpath=".//ate:FileParameter|.//ate:ListParameter|.//*/ate:JobParameter|.//*/ate:SystemParameter|.//ate:AstraEnvironment/*/ate:ObjectParameter" />

           <xs:field xpath="@name" />

       </xs:key>

       <xs:key name="endPointKey" id="endPointKey">

           <xs:selector xpath=".//ate:EndPoints/*|.//ate:EndPoints" />

           <xs:field xpath="@name|@astra" />

       </xs:key>

 

       <xs:keyref name="endPointRef" id ="endPointRef" refer="ate:endPointKey">

           <xs:selector xpath="./ate:Pipeline/ate:Sources/*|.//ate:Target" />

           <xs:field xpath="@endPoint" />

       </xs:keyref>

 

   </xs:element>

 

   <!-- ATE Elements -->

 

   <!-- EndPoint Elements -->

   <xs:element name="EndPoints">

       <xs:complexType>

           <xs:sequence>

               <xs:sequence minOccurs="1" maxOccurs="unbounded">

                   <xs:choice>

                       <xs:element ref="ate:TextFileEndPoint" minOccurs="0"/>

                       <xs:element ref="ate:ExcelFileEndPoint" minOccurs="0"/>

                       <xs:element ref="ate:WebEndPoint" minOccurs="0"/>

                       <xs:element ref="ate:FileEndPoint" minOccurs="0"/>

                       <xs:element ref="ate:DbmsEndPoint" minOccurs="0" />

                   </xs:choice>

               </xs:sequence>

           </xs:sequence>

           <xs:attribute name="astra" default="Astra"/>

       </xs:complexType>

   </xs:element>

   <xs:element name="ConnectionKey" id="ConnectionKey">

       <xs:complexType mixed="false">

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[

A <ConnectionKey> node referns a key in <ConnectionStrings> section  of the app.config or web.config file.

       ]]>

               </xs:documentation>

           </xs:annotation>

           <xs:attributeGroup ref="ate:namedElementAttribs"/>

       </xs:complexType>

   </xs:element>

 

   <xs:element name="WebEndPoint">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[A <WebEndPoint> describes a resource accessible through a web protocol.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:complexType>

           <xs:sequence>

               <xs:choice>

                   <xs:choice minOccurs="1" maxOccurs="1">

                       <xs:sequence>

                           <xs:element ref="ate:Parameters"/>

                           <xs:element ref="ate:WebResource" minOccurs="0" maxOccurs="1" />

                       </xs:sequence>

                       <xs:element ref="ate:ConnectionKey" minOccurs="0" maxOccurs="1" />

                       <xs:element ref="ate:WebResource" minOccurs="0" maxOccurs="1" />

                   </xs:choice>

               </xs:choice>

           </xs:sequence>

           <xs:attributeGroup ref="ate:namedElementAttribs" />

       </xs:complexType>

   </xs:element>

   <xs:element name="WebResource">

       <xs:complexType>

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[A <WebResource> child of the <WebEndPoint> defines the URI of the web resource.]]>

               </xs:documentation>

           </xs:annotation>

           <xs:group ref="ate:SoapGroup" minOccurs="0"/>

           <xs:attribute name="href" use="required" type="ate:apiURI">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[The href attribute must contain a parameter expansion in the form ${NCName} or a valid URI.  See the URI specification for valid formats.  This attribute allows parameter expansion within URIs.]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:attribute>

           <xs:attribute name="protocol" type="ate:webClientProtocol" default="Soap12"/>

       </xs:complexType>

   </xs:element>

 

 <xs:element name="Sheet">

   <xs:complexType>

     <xs:attribute name="name" use ="required" type="aais:nonEmptyString"/>

   </xs:complexType>

 </xs:element>

 <xs:element name="ExcelFileEndPoint">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[An <ExcelFileEndPoint> describes an Excel file.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:sequence>

       <xs:element ref="ate:Sheet" minOccurs="1"/>

     </xs:sequence>

     <xs:attributeGroup ref="ate:namedElementAttribs" />

     <xs:attribute name="href" use="required" type="aais:nonEmptyString">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[The href attribute must contain a parameter expansion in the form ${NCName} or a valid URI.  See the URI specification for valid formats.  This attribute allows parameter expansion within URIs.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="adapterType" type="ate:adapterTypes"/>

   </xs:complexType>

 </xs:element>

 

 <xs:element name="TextFileEndPoint">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[A <TextFileEndPoint> describes a Text file source.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:sequence>

       <xs:element name="Column" minOccurs="0" maxOccurs="unbounded">

         <xs:complexType>

         <xs:attribute name="name" use ="optional" type="aais:nonEmptyString"/>

             <xs:attribute name="width" use ="optional" type="xs:int"/>

           </xs:complexType>

         </xs:element>

     </xs:sequence>

     <xs:attributeGroup ref="ate:namedElementAttribs" />

     <xs:attribute name="href" use="required" type="aais:nonEmptyString">

       <xs:annotation>

         <xs:documentation>

           <![CDATA[The href attribute must contain a parameter expansion in the form ${NCName} or a valid URI.  See the URI specification for valid formats.  This attribute allows parameter expansion within URIs.]]>

         </xs:documentation>

       </xs:annotation>

     </xs:attribute>

     <xs:attribute name="delimiter" use="optional" type="aais:nonEmptyString"/>

     <xs:attribute name="headerRow" use="required" type="aais:logical"/>

     <xs:attribute name="tableName" use="required" type="aais:nonEmptyString"/>

     <xs:attribute name="adapterType" type="ate:adapterTypes"/>

   </xs:complexType>

 </xs:element>

 

   <xs:element name="FileEndPoint">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[A <FileEndPoint> defines a resource on a file system, network file system, or ftp site.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:ParameterizedGroup" >

                   <xs:sequence>

                       <xs:element ref="ate:ConnectionKey" minOccurs="0" maxOccurs="1" />

                       <xs:element ref="ate:FileResource" minOccurs="1" maxOccurs="1"/>

                   </xs:sequence>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

   </xs:element>

   <xs:element name="FileResource">

       <xs:complexType>

           <xs:annotation>

               <xs:documentation>

                   <![CDATA[A <FileResource> child of the <FileEndPoint> defines the URI of the file resource.]]>

               </xs:documentation>

           </xs:annotation>

           <xs:attribute name="href" use="required" type="ate:fileURI">

               <xs:annotation>

                   <xs:documentation>

                       <![CDATA[

The href attribute must contain a parameter expansion in the form ${NCName} or a valid URI of type file:// or ftp:// and may contain user

and password connection information in the case of ftp.  See the URI specification for valid

formats.  This attribute allows parameter expansion within URIs.

           ]]>

                   </xs:documentation>

               </xs:annotation>

           </xs:attribute>

       </xs:complexType>

   </xs:element>

 

 

   <xs:element name="DbmsEndPoint">

       <xs:annotation>

           <xs:documentation>

               <![CDATA[A <DbmsEndPoint> describes a database instance.]]>

           </xs:documentation>

       </xs:annotation>

       <xs:complexType>

           <xs:sequence>

               <xs:choice>

                   <xs:choice>

                       <xs:sequence>

                           <xs:element ref="ate:Parameters"/>

                           <xs:element name="ConnectionString" minOccurs="0" maxOccurs="1" type="xs:string"  />

                       </xs:sequence>

                       <xs:element ref="ate:ConnectionKey" minOccurs="0" maxOccurs="1" />

                       <xs:element name="ConnectionString" minOccurs="0" maxOccurs="1" type="xs:string"  />

                   </xs:choice>

               </xs:choice>

           </xs:sequence>

           <xs:attributeGroup ref="ate:namedElementAttribs" />

           <xs:attribute name="adapterType" type="ate:adapterTypes"/>

       </xs:complexType>

   </xs:element>

 

   <!-- Options Elements -->

   <xs:element name="Options">

       <xs:complexType>

           <xs:sequence>

               <xs:element ref="ate:Option" maxOccurs="unbounded"/>

           </xs:sequence>

       </xs:complexType>

       <xs:unique name="optionUnique" id="optionUnique">

           <xs:selector xpath="./ate:Option"/>

           <xs:field xpath="@name"/>

       </xs:unique>

   </xs:element>

   <xs:element name="Option">

       <xs:complexType>

           <xs:attribute name="name" type="ate:optionEnum" use="required"/>

           <xs:attribute name="value" type="xs:boolean" use="required"/>

       </xs:complexType>

   </xs:element>

 

 <!-- Job Parameters Elements -->

 <xs:element name="JobParameters" type="ate:JobParmeters">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[

The <JobParameters> element is a grouping tag which must contain at least one <JobParameter> node.

Each <JobParameter> defines a user selectable Parameter which is presented in the ATE Job Configuration Screen.

A <JobParameter> with no inner content represents a free-form non-typed parameter which is entered trough a dynamically displayed TextBox type webcontrol.

Override default behavior by creating a child node of strongly typed parameters.

             ]]>

     </xs:documentation>

   </xs:annotation>

 </xs:element>

 <xs:element name="JobParameter">

   <xs:complexType>

     <xs:complexContent>

       <xs:extension base="ate:JobParameter">

         <xs:attribute name="password" type="xs:boolean" use="optional">

           <xs:annotation>

             <xs:documentation>

               <![CDATA[

If true the password attribute forces generation of a Password type control which masks input.  The parameter is also stored

in the DB in encrypted format.

             ]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="allowMultiple" type="xs:boolean" use="optional" default="false" >

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The allowMultiple attribute determines if a dropdownlist (allowMultiple=false) or listbox (allowMultiple=true) type webcontrol is generated for entry of the parameter.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="delimiter" type="aais:char"  default=","/>

         <xs:attribute name="validationExpression" type="xs:string" />

         <xs:attribute name="required" type="aais:stringBool" default="true" />

         <xs:attribute name="maxLength" type="xs:int" default="-1" />

       </xs:extension>

     </xs:complexContent>

   </xs:complexType>

 </xs:element>

 <xs:element name="SystemParameter">

   <xs:complexType>

     <xs:attributeGroup ref="ate:commentableElementAttribs"/>

     <xs:attribute name="settingKey" type="ate:systemSetting" use="required"/>

   </xs:complexType>

 </xs:element>

 <xs:element name="FileParameter">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[

A <FileParameter> node defines a parameter which is populated from a file explorer dialog or free text entry.                          

                     ]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:complexContent>

       <xs:extension base="ate:JobParameter">

         <xs:attribute name="browsePath" type="xs:string" use="optional" default=".">

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The browsePath attribute defines the starting path for the file explorer dialog.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="uploadPath" type="xs:string" use="required" >

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The uploadPath attribute defines the target on the webserver for the uploaded file.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

       </xs:extension>

     </xs:complexContent>

   </xs:complexType>

 </xs:element>

 <xs:element name="ListParameter">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[A <ListParameter> node defines a parameter which is populated from a list generated by data in the Astra database.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:complexContent>

       <xs:extension base="ate:JobParameter">

         <xs:attribute name="listSourceEntity" type="xs:string" use="required">

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The listSourceEntity attribute defines the Astra database entity from which the list is populated.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="listSourceKeyProperty" type="xs:string" use="required" >

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The listSourceKeyProperty attribute defines the column in the Astra database table referenced through listSourceEntity from which the list values (keys) are populated.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="allowMultiple" type="xs:boolean" use="optional" default="false" >

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The allowMultiple attribute determines if a dropdownlist (allowMultiple=false) or listbox (allowMultiple=true) type webcontrol is generated for entry of the parameter.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="restrictToList" type="xs:boolean" default="true">

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The restrictToList attribute determines if the user may add a value that is not in the list. default=true (user selection is retricted to values in the list.)]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="required" type="aais:stringBool" default="true" />

       </xs:extension>

     </xs:complexContent>

   </xs:complexType>

 </xs:element>

 <xs:element name="JobParameterGroup">

   <xs:annotation>

     <xs:documentation>

       <![CDATA[The <JobParameterGroup> groups the contained <JobParameter> tags visually when dynamic controls are rendered.]]>

     </xs:documentation>

   </xs:annotation>

   <xs:complexType>

     <xs:complexContent>

       <xs:extension base="ate:JobParmeters">

         <xs:attribute name="caption" use="optional"/>

       </xs:extension>

     </xs:complexContent>

   </xs:complexType>

 </xs:element>

 

   <!-- Parameters Elements -->

   <xs:element name="Parameter" type="ate:Parameter"/>

   <xs:element name="SqlParameter" type="ate:SqlParameter"/>

 

   <xs:element name="Parameters" type="ate:Parameters">

       <xs:key name="paramKey">

           <xs:selector xpath=".//ate:Parameter" />

           <xs:field xpath="@name" />

       </xs:key>

   </xs:element>

   <xs:element name="SqlParameters" type="ate:SqlParameters">

       <xs:key name="sqlParamKey">

           <xs:selector xpath=".//ate:SqlParameter" />

           <xs:field xpath="@name" />

       </xs:key>

   </xs:element>

 

   <!-- Pipeline Elements -->

   <xs:element name="Pipeline">

       <xs:complexType>

           <xs:sequence>

               <xs:element name="Sources" type="ate:Sources" minOccurs="0"/>

               <xs:element ref="ate:HubParameters" minOccurs="0"/>

               <xs:element name="Phases" type="ate:Phases"/>

           </xs:sequence>

           <xs:attribute name="name" type="xs:string" use="optional"/>

       </xs:complexType>

 

       <xs:key name="sourceKey" id="sourceKey">

           <xs:selector xpath=".//ate:Sources/*" />

           <xs:field xpath="@name" />

       </xs:key>

       <xs:key name="setSourceKey" id="setSourceKey">

           <xs:selector xpath=".//ate:Sources/*|.//ate:SetOperation|.//ate:ExportSet" />

           <xs:field xpath="@name" />

       </xs:key>

       <xs:key name="targetKey" id="targetKey">

           <xs:selector xpath="./ate:Phases/*" />

           <xs:field xpath="@name" />

       </xs:key>

 

       <xs:keyref name="sourceRef" id ="sourceRef" refer="ate:sourceKey">

           <xs:selector xpath=".//ate:Source/*/ate:Source|.//ate:Fetch" />

           <xs:field xpath="@ref" />

       </xs:keyref>

       <xs:keyref name="linkSourceRef" id ="linkSourceRef" refer="ate:setSourceKey">

           <xs:selector xpath=".//ate:SetOperation/*/*|.//ate:Fetch" />

           <xs:field xpath="@ref" />

       </xs:keyref>

   </xs:element>

 

   <!-- Differencer Elements -->

   <xs:element name="Differencer">

     <xs:complexType>

       <xs:all>

         <xs:element name="ConnectionString">

           <xs:complexType>

             <xs:simpleContent>

               <xs:extension base="xs:string">

               </xs:extension>

             </xs:simpleContent>

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISDateParameter">

           <xs:complexType>

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

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISDiffQuery">

           <xs:complexType>

             <xs:simpleContent>

               <xs:extension base="xs:string">

               </xs:extension>

             </xs:simpleContent>

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISKeyField">

           <xs:complexType>

             <xs:attribute name="value" type="aais:nonEmptyString" use="required"/>

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISFieldsToCheck">

           <xs:complexType>

             <xs:attribute name="value" type="aais:nonEmptyString" use="required"/>

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISPreImportKeyParameter" minOccurs="0">

           <xs:complexType>

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

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISPreImportSQL" minOccurs="0">

           <xs:complexType>

             <xs:simpleContent>

               <xs:extension base="xs:string">

               </xs:extension>

             </xs:simpleContent>

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISPostImportKeyParameter" minOccurs="0">

           <xs:complexType>

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

           </xs:complexType>

         </xs:element>

 

         <xs:element name="SISPostImportSQL" minOccurs="0">

           <xs:complexType>

             <xs:simpleContent>

               <xs:extension base="xs:string">

               </xs:extension>

             </xs:simpleContent>

           </xs:complexType>

         </xs:element>

 

       </xs:all>

       <xs:attribute name="sisType" type="ate:differencerSisTypes" use="required"/>

       <xs:attribute name="sisConnectStringKey" type="aais:nonEmptyString" use="required"/>

       <xs:attribute name="if" type="xs:string" use="optional"/>

     </xs:complexType>

   </xs:element>

 

   <xs:element name="SetOperation" type="ate:SetOperation">

       <xs:unique name="taskSourceNotNested" id="taskSourceNotNested">

           <xs:selector xpath=".|.//ate:Left|.//ate:Right|.//ate:Set" />

           <xs:field xpath="@name|@ref" />

       </xs:unique>

   </xs:element>

   <xs:element name="ExportSet" type="ate:ExportSet"/>

   <xs:element name="Filter" type="ate:Filter"/>

   <xs:element name="Criterion" type="ate:Criterion"/>

 

 

   <xs:element name="Fetch" type="ate:Fetch"/>

   <xs:element name="Phase">

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:ParameterizedGroup">

                   <xs:sequence>

                       <xs:choice minOccurs="1" maxOccurs="unbounded">

                           <xs:element ref="ate:SetOperation" minOccurs="0" maxOccurs="unbounded"/>

                           <xs:element ref="ate:Fetch" minOccurs="0" maxOccurs="unbounded"/>

                           <xs:element ref="ate:ExportSet" minOccurs="0" maxOccurs="unbounded"/>                          

                       </xs:choice>

                       <xs:element ref="ate:HubParameters" minOccurs="0"/>

                       <xs:element ref="ate:Target" minOccurs="1" maxOccurs="unbounded"/>

                   </xs:sequence>

                   <xs:attributeGroup ref="ate:conditionalElement"/>

                   <xs:attributeGroup ref="ate:commentableElementAttribs"/>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

 

       <xs:key name="streamReaderKey" id="streamReaderKey">

           <xs:selector xpath="./ate:SetOperation|./ate:ExportSet|./ate:Fetch" />

           <xs:field xpath="@name|@ref" />

       </xs:key>

       <xs:keyref name="sourceReader" refer="ate:streamReaderKey">

           <xs:selector xpath=".//ate:FileWriter"/>

           <xs:field xpath="@sourceReader"/>

       </xs:keyref>

       <xs:keyref name="hubReaderRef" refer="ate:streamReaderKey">

           <xs:selector xpath=".//ate:Target/ate:AstraEnvironment/ate:Hub/ate:Reader"/>

           <xs:field xpath="@ref"/>

       </xs:keyref>

   </xs:element>

 

   <!-- Source and Target Elements -->

   <xs:element name="Source">

       <xs:complexType>

           <xs:sequence>

               <xs:choice minOccurs="1">

                   <xs:sequence>

                       <xs:sequence minOccurs="0">

                           <xs:element ref="ate:SqlParameters" maxOccurs="1"/>

                       </xs:sequence>

                       <xs:choice>

                         <xs:element ref="ate:ExcelFileReader" minOccurs="1" maxOccurs="1"/>

                         <xs:element ref="ate:TextFileReader" minOccurs="1" maxOccurs="1"/>

                         <xs:element ref="ate:Sql" minOccurs="1" maxOccurs="unbounded"/>

                       </xs:choice>

                       <xs:element ref="ate:Schema"/>

                   </xs:sequence>

                   <xs:sequence>

                       <xs:sequence minOccurs="0">

                           <xs:element ref="ate:Parameters" maxOccurs="1"/>

                       </xs:sequence>

                       <xs:choice>

                           <xs:element ref="ate:WebMethod" minOccurs="1" maxOccurs="1"/>

                           <xs:element ref="ate:FileReader" minOccurs="1" maxOccurs="1"/>

                           <xs:element ref="ate:Astra" minOccurs="1" maxOccurs="1"/>

                       </xs:choice>

                   </xs:sequence>

               </xs:choice>

           </xs:sequence>

           <xs:attributeGroup ref="ate:endPointRefableElementAttribs"/>

           <xs:attributeGroup ref="ate:xmlProcessable"/>          

       </xs:complexType>

   </xs:element>

   <xs:element name="Target" >

       <xs:complexType>

           <xs:sequence>

               <xs:choice minOccurs="1">

                   <xs:sequence minOccurs="0">

                     <xs:element ref="ate:SqlParameters" maxOccurs="1"/>

                     <xs:element ref="ate:Sql" minOccurs="0" maxOccurs="unbounded"/>

                   </xs:sequence>                  

                   <xs:element ref="ate:WebMethod" minOccurs="0" maxOccurs="1"/>

                   <xs:element ref="ate:FileWriter" minOccurs="0" maxOccurs="1"/>

                   <xs:sequence minOccurs="0">

                     <xs:element ref="ate:HubParameters" minOccurs="0" maxOccurs="1"/>

                     <xs:element ref="ate:AstraEnvironment" minOccurs="0" maxOccurs="1"/>

                   </xs:sequence>

               </xs:choice>

           </xs:sequence>

           <xs:attribute name="comment" type="xs:string" use="optional"/>

         <xs:attribute name="endPoint" use="optional" type="xs:NCName"/>

         <xs:attribute name="source" use="optional" type="xs:NCName">

           <xs:annotation>

             <xs:documentation>

               <![CDATA[The ref attribute refers to a the name attribute of an outer <Source> type element.]]>

             </xs:documentation>

           </xs:annotation>

         </xs:attribute>

         <xs:attribute name="if" type="xs:string" use="optional"/>

       </xs:complexType>

   </xs:element>

   <xs:element name="Sql" type="ate:SqlBuilder"/>

   <xs:element name="Schema" type="ate:Schema" />

   <xs:element name="WebMethod" type="ate:WebMethod"/>

   <xs:element name="AstraEnvironment" type="ate:AstraEnvironment"/>

   <xs:element name="Astra" type="ate:Astra"/>

 

   <!-- Column and ColumnMap Elements -->

   <xs:element name="ColumnMap" type="ate:ColumnMap">

       <xs:unique name="uniqueColumnName" id="uniqueColumnName" >

           <xs:selector xpath="./*"/>

           <xs:field xpath="@name"/>

       </xs:unique>

   </xs:element>

   <xs:element name="Rename">

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:FXAble">

                   <xs:attribute name="source" use="required">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The source attribute must contain the name of an existing column in the contributing source.]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

   </xs:element>

   <xs:element name="Append">

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:CommentAble">

                   <xs:attribute name="value" use="required" type="ate:appendValueType">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The value attribute supplies a value to the created column.  This attribute may contain one of the built in functions/keywords or any constant."]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

   </xs:element>

   <xs:element name="Assign">

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:FXAble">

                   <xs:attribute name="index" use="required" type="xs:unsignedShort">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The index attribute indicates the ordinal position of the column in the default schema.  The index is 1 based.]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

   </xs:element>

   <xs:element name="Remove" type="ate:CommentAble"/>

   <xs:element name="Column" type="ate:CommentAble"/>

 

   <!-- File Elements -->

   <xs:element name="TextFile">

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:File">

                   <xs:attribute name="headerRow" type="ate:headerRowType" default="1">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The headerRow attribute may contain the value 'false' or the number indicating which row contains the Header information.  This row is not processed as data.  The default value is '1']]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

                   <xs:attribute name="skipRows" type="xs:unsignedShort" use="optional">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The skipRows attribute indicates how many if any rows to skip (from the top) prior to processing.  If missing this value will default to the value contained in the headerRow attribute.]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

                   <xs:attribute name="parse" type="ate:fileParse" default=",">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The parse attribute indicates the token on which the record is parsed or indicates that the record has fixed length fields.  This value may be any one of the enumerated values or any string.  The default value is ',']]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

   </xs:element>

 

   <xs:element name="ExcelFile">

       <xs:complexType>

           <xs:complexContent>

               <xs:extension base="ate:File">

                   <xs:attribute name="sheet" type="ate:excelSheetName" use="required">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The sheet attribute indicates the name of the worksheet within the Excel workbook.]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

                   <xs:attribute name="headerRow" type="xs:boolean" default="true">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The boolean headerRow attribute indicates the existence of a header row. This row is not processed as data.  The default value is 'true']]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

                   <xs:attribute name="version" type="ate:excelVersion" default="OpenXml">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The version of the Excel file format. (97-2003 or 2007+) ]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

                   <xs:attribute name="range" type="ate:excelRange">

                       <xs:annotation>

                           <xs:documentation>

                               <![CDATA[The range attribute indicates the cells which are processed.  If present the headerRow values are relative to the first row in the defined range.  If the last column of the range exceeds the values supplied in the headerRow, additional columns are added to the resulting schema named <Column#> where # is the ordinal position relative to the first column in the range.  If this attribute is missing the range begins at A1 and is implied by the headerRow if present or A1:ZZ32767 if headerRow is 'false' ]]>

                           </xs:documentation>

                       </xs:annotation>

                   </xs:attribute>

               </xs:extension>

           </xs:complexContent>

       </xs:complexType>

   </xs:element>

   <xs:element name="XmlFile"/>

 

   <!-- Link Elements -->

   <xs:element name="Parent" type="ate:linkSource"/>

   <xs:element name="Child" type="ate:linkSource"/>

   <xs:element name="Link">

       <xs:complexType>

           <xs:sequence>

               <xs:element ref="ate:Parent" minOccurs="1" maxOccurs="1"/>

               <xs:element ref="ate:Child" minOccurs="1" maxOccurs="1"/>

           </xs:sequence>

       </xs:complexType>

   </xs:element>

 

   <xs:element name="Left" type="ate:linkSource"/>

   <xs:element name="Right" type="ate:linkSource"/>

   <xs:element name="Aggregate" id="Aggregate">

       <xs:complexType>

           <xs:sequence>

             <xs:element ref="ate:Left" minOccurs="1" maxOccurs="1" />

             <xs:element ref="ate:Right" minOccurs="1" maxOccurs="1" />

           </xs:sequence>

           <xs:attribute name="type" type="ate:joinTypes" default="innerJoin"/>

           <xs:attribute name="pageSize" type="xs:int" default="10000"/>

       </xs:complexType>

   </xs:element>

 

   <xs:element name="Set" type="ate:setOperationSource"/>

   <xs:element name="CompareSource" type="ate:compareSource"/>

   <xs:element name="Union" id="Union">

       <xs:complexType>

           <xs:sequence>

               <xs:element ref="ate:Set" minOccurs="2" maxOccurs="unbounded"/>

           </xs:sequence>

       </xs:complexType>

   </xs:element>

 

   <xs:element name="Compare" id="Compare">

     <xs:complexType>

       <xs:sequence>

         <xs:element ref="ate:CompareSource" minOccurs="2" maxOccurs="2"/>

       </xs:sequence>

       <xs:attribute name="inclusive" type="aais:logical" use="required"/>

       <xs:attribute name="keyColumns" type="aais:nonEmptyString" use="required"/>

       <xs:attribute name="compareColumns" type="aais:nonEmptyString" use="required"/>

       <xs:attribute name="entityName" type="aais:nonEmptyString" use="required"/>

       <xs:attribute name="groupName" type="aais:nonEmptyString" use="required"/>

     </xs:complexType>

   </xs:element>

 

 <xs:complexType name="differenceSource" id="differenceSource">

   <xs:complexContent>

     <xs:extension base="ate:setOperationSource">

     </xs:extension>

   </xs:complexContent>

 </xs:complexType>

 

 <xs:element name="DifferenceSource" type="ate:differenceSource"/>

 <xs:element name="Difference" id="Difference">

   <xs:complexType>

     <xs:sequence>

       <xs:element ref="ate:DifferenceSource" minOccurs="2" maxOccurs="2"/>

     </xs:sequence>

     <xs:attribute name="columns" type="aais:nonEmptyString" use="required"/>

     <xs:attribute name="entityName" type="aais:nonEmptyString" use="required"/>

     <xs:attribute name="groupName" type="aais:nonEmptyString" use="required"/>

     <xs:attribute name="pageSize" type="xs:int" use="optional" default="100000"/>

   </xs:complexType>

 </xs:element>

 

</xs:schema>