<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by Deepesh Arora (private) -->
<!--Created with Liquid XML Studio - 30 Day Trial Edition 7.1.0.1135 (http://www.liquid-technologies.com)-->
<xs:schema xmlns:tdca="http://www.TesLAAlliance.org/stds/dca" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xi="http://www.w3.org/2003/XInclude" targetNamespace="http://www.TesLAAlliance.org/stds/dca" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="TesLACommandDefinition">
		<xs:annotation>
			<xs:documentation>Schema for a TesLA Alliance standard command definition file (*.TCD)</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="binding" type="tdca:bindingType" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>The default binding is defined at the DCA level.  Attributes in bindings above a command and closer than the default override those defined in the default.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="procedureCall" type="tdca:procedureCallType" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Defines invocation syntax for for a specific binding and method as described in document at location referenced in bindingSpec.  procedureCall element within a command element takes precedence over those at higher level.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="command" type="tdca:commandType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="commandGroup" type="tdca:commandGroup" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>vendor-defined grouping for commands.  Also see keyword element(s).</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="vccLookup" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:attribute name="code" type="xs:int"/>
						<xs:attribute name="msg" type="xs:string"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="tccLookup" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:attribute name="code" type="xs:int"/>
						<xs:attribute name="msg" type="xs:string"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="includeCommandURI" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>additional locations for commands added after initial installation by DCA provider</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="procedureCallType" mixed="false">
		<xs:complexContent mixed="false">
			<xs:extension base="xs:anyType">
				<xs:attribute name="bindingID" use="required"/>
				<xs:attribute name="callMethod" use="required"/>
				<xs:attribute name="description" type="xs:string"/>
				<xs:anyAttribute processContents="skip"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="commandType">
		<xs:choice maxOccurs="unbounded">
			<xs:element name="responseXSD">
				<xs:annotation>
					<xs:documentation>XML Schema segment describing structure of vendor-defined response.  PRE-DEFINED ELEMENTS: vcCode (mandatory), tcCode (optional), vendorExtension (optional).  See spec for structure.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="xs:anyType"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="parameters">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="paramXSD" type="xs:anyType">
										<xs:annotation>
											<xs:documentation>XML schema segment describing parameter (which may have multiple elements).  Use of include statements encouraged.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="vendorExtensions" type="xs:anyType" minOccurs="0">
										<xs:annotation>
											<xs:documentation>unsupported vendor-specific use, not parsed by DCA Consumer - passed in as-is as part of XML parameter</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
								<xs:attribute name="displayName" use="required"/>
								<xs:attribute name="helpURI"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="procedureCall" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Unless the default binding can be used, there should be one of these elements per binding for each command.</xs:documentation>
				</xs:annotation>
				<xs:complexType mixed="false">
					<xs:complexContent mixed="false">
						<xs:extension base="tdca:procedureCallType"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="alias" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>other names for this command.  Used by Consumers to determine equivalence with other similar commands.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="keyword" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="vendorExtensions" type="xs:anyType" minOccurs="0"/>
		</xs:choice>
		<xs:attribute name="name" type="xs:string" use="required">
			<xs:annotation>
				<xs:documentation source="name of this command - must be unique in namespace defined in this command definition file.">name of this command - must be unique in namespace defined in this command definition file.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="displayName" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>if absent, use name</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="description"/>
		<xs:attribute name="helpURI" type="xs:anyURI" use="optional"/>
		<xs:attribute name="supportClass" default="GA">
			<xs:annotation>
				<xs:documentation>Commands may be included that are in various stages of development - and may never be fully supported. This could be alpha, beta, custom, customer-specific, internal, deprecated or GA (for example).  Consumers should ONLY use GA commands unless otherwise arranged with Publisher and/or customer.</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="alpha"/>
					<xs:enumeration value="beta"/>
					<xs:enumeration value="GA"/>
					<xs:enumeration value="deprecated"/>
					<xs:enumeration value="internal"/>
					<xs:enumeration value="custom"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="bindingType">
		<xs:sequence>
			<xs:element name="bindingExtensions" type="xs:anyType">
				<xs:annotation>
					<xs:documentation>The use of bindings is governed by the specification referenced at bindingSpec for each binding.  </xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="bindingID" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>Vendor-created URI in their domain</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="displayName" type="xs:string" use="required"/>
		<xs:attribute name="language" type="xs:string" use="required"/>
		<xs:attribute name="version" type="xs:string" use="required"/>
		<xs:attribute name="bindingSpec" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>link to specification describing use of this binding.  The DCA standard only includes binding usage by reference.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="responseType">
		<xs:sequence>
			<xs:element name="vcCodeLookup" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>description of each possible vendor return code and message lookup.  a vcCode is MANDATORY within the responseXSD.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:int">
							<xs:attribute name="vcCode" use="required"/>
							<xs:attribute name="msg" type="xs:string"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="tcCodeLookup" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>TesLA-defined return code with optional message.  As this will be written into spec, inclusion here is optional and for convenience only.  a tcCode is OPTIONAL within the response XSD.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:int">
							<xs:attribute name="tcCode"/>
							<xs:attribute name="msg" type="xs:string"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="responseXSD">
				<xs:annotation>
					<xs:documentation>XML Schema segment describing structure of vendor-defined response.  PRE-DEFINED ELEMENTS: vcCode (mandatory), tcCode (optional), vendorExtension (optional).  See spec for structure.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="xs:anyType"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="parameterType" mixed="false">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="displayName"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="commandGroup">
		<xs:choice maxOccurs="unbounded">
			<xs:annotation>
				<xs:documentation>commandGroup may contain any number of commands and sub-groups</xs:documentation>
			</xs:annotation>
			<xs:element name="commandGroup" type="tdca:commandGroup" maxOccurs="unbounded"/>
			<xs:element name="command" type="tdca:commandType" maxOccurs="unbounded"/>
		</xs:choice>
		<xs:attribute name="name" use="required"/>
		<xs:attribute name="description" use="optional"/>
	</xs:complexType>
</xs:schema>

