<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 rel. 3 sp1 (http://www.altova.com) by Greg Ehmann (Philips Electronics Nederland BV) -->
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Mark Noll (Synopsys) -->
<xs:schema xmlns:tgi="http://www.spiritconsortium.org/XMLSchema/TGI" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.spiritconsortium.org/XMLSchema/TGI" elementFormDefault="qualified" attributeFormDefault="qualified">
	<xs:element name="callbacks">
		<xs:annotation>
			<xs:documentation>List of API callbacks</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="callback" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Defines a single callback in the API. The name attribute  defines the callback name and the group attribute is used to group similar calls in the generated documentation.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="description">
								<xs:annotation>
									<xs:documentation>Description of the callback.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="output">
								<xs:annotation>
									<xs:documentation>Defines the callback output. The argument type defaults to xsd:string if not specified. The argument name defaults to [type]Value where [type] is the argType value with the namespace designator removed.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="description" type="xs:string" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Description of the output argument.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="compatibleArgs" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="argName" type="xs:token" use="optional"/>
												<xs:attribute name="argType" type="xs:token" use="optional" default="xsd:string"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="argName" type="xs:token" use="optional"/>
									<xs:attribute name="argType" type="xs:token" use="optional" default="xsd:string"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="input" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Defines a callback input argument. The argument type defaults to xsd:string if not specified. The argument name defaults to [type]Value where [type] is the argType value with the namespace designator removed.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="description" type="xs:string" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Description of the input argument.</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="compatibleArgs" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="argName" type="xs:token" use="optional"/>
												<xs:attribute name="argType" type="xs:token" use="optional" default="xsd:string"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="argName" type="xs:token" use="optional"/>
									<xs:attribute name="argType" type="xs:token" use="optional" default="xsd:string"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="compatibilityChange" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Specifies the API version at which this API call was modified. The modificationType attribute indicates the type of change. Valid changes types nclude: new -- implying an API call added in the specified version of the API, invalid -- implying that the specified call has been invalidated as of the specified version of the API, and modified -- implying that the API call functionality has been chagned as of the specified version of the API.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="modificationType" use="required">
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:enumeration value="new"/>
														<xs:enumeration value="invalid"/>
														<xs:enumeration value="modified"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:attribute>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="name" type="xs:token" use="required"/>
						<xs:attribute name="group" type="xs:string" use="optional" default="Default"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
