<?xml version="1.0"?>
<!-- edited with XML Spy v4.2 (http://www.xmlspy.com) by Avygdor Moise (Future DOS R &amp;D Inc.) -->
<xsd:schema targetNamespace="http://www.nema.org/1997/C1219TDLSchema" xmlns="http://www.nema.org/1997/C1219TDLSchema" xmlns:xi="http://www.w3.org/1999/XML/XInclude" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:element name="tdl">
		<xsd:annotation>
			<xsd:documentation>TDL Version 15.0 The TDL Element is a Table Description Language introducers. It is a combination of 0-unbounded number of description, types, enumerations, decades and tables in any order.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="DescriptionClass">
					<xsd:choice minOccurs="0" maxOccurs="unbounded">
						<xsd:element ref="include"/>
						<xsd:element name="enumerator" type="EnumNamedClass">
							<xsd:annotation>
								<xsd:documentation>A C12.19  named enumerator element</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element ref="packedRecord"/>
						<xsd:element ref="bitField"/>
						<xsd:element ref="decade"/>
						<xsd:element ref="table"/>
						<xsd:element ref="procedure"/>
						<xsd:element name="qualify" type="QualifierType">
							<xsd:unique name="QualDecadeNameConstraint">
								<xsd:selector xpath="decade"/>
								<xsd:field xpath="@name"/>
							</xsd:unique>
							<xsd:unique name="QualTableNameConstraint">
								<xsd:selector xpath="table"/>
								<xsd:field xpath="@name"/>
							</xsd:unique>
							<xsd:unique name="QualProcNameConstraint">
								<xsd:selector xpath="procedure"/>
								<xsd:field xpath="@name"/>
							</xsd:unique>
						</xsd:element>
					</xsd:choice>
					<xsd:attribute name="version" use="optional" default="1.0">
						<xsd:annotation>
							<xsd:documentation>The version attribute represents the version of this the XML document that imports this schema.</xsd:documentation>
						</xsd:annotation>
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:pattern value="[0-9]+([.][0-9]+)?"/>
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:attribute>
					<xsd:attribute name="deviceClass" use="optional" default=".0">
						<xsd:annotation>
							<xsd:documentation>The deviceClass define the ANSI Registered device class this TDL describes. Device class ".0" is reserved for "standards" all alther classes represent manufdacturer tables and types.</xsd:documentation>
						</xsd:annotation>
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:pattern value="([.]?[0-9]+)+"/>
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:attribute>
					<xsd:attribute name="standard" type="xsd:anyURI" use="optional">
						<xsd:annotation>
							<xsd:documentation>The URI provided referes to a Standard that is the base document for this EDL. When not provided then no document is refered. URI formats are as follows: (a)  The Standard URI format is http://www.nema.org/C1219TDL-xxxx.xml where xxxx is the year. (b) URIs for TDL class files is http://www.nema.org/C1219TDL-x.x.x.x.xml where x.x.x.x is the registered class. 
</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="title" type="xsd:string" use="optional"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
		<xsd:unique name="DecadeNameConstraint">
			<xsd:selector xpath="decade"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="DecadeNumberConstraint">
			<xsd:selector xpath="decade"/>
			<xsd:field xpath="@number"/>
		</xsd:unique>
		<xsd:unique name="DecadeNameNumberConstraint">
			<xsd:selector xpath="decade"/>
			<xsd:field xpath="@name"/>
			<xsd:field xpath="@number"/>
		</xsd:unique>
		<xsd:unique name="TableNameConstraint">
			<xsd:selector xpath="decade/table|table"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="TableNumberConstraint">
			<xsd:selector xpath="decade/table|table"/>
			<xsd:field xpath="@number"/>
		</xsd:unique>
		<xsd:unique name="TableNameNumberConstraint">
			<xsd:selector xpath="decade/table|table"/>
			<xsd:field xpath="@name"/>
			<xsd:field xpath="@number"/>
		</xsd:unique>
		<xsd:unique name="ProcedureNameConstraint">
			<xsd:selector xpath="decade/procedure|procedure"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="ProcedureNumberConstraint">
			<xsd:selector xpath="decade/procedure|procedure"/>
			<xsd:field xpath="@number"/>
		</xsd:unique>
		<xsd:unique name="ProcedureNameNumberConstraint">
			<xsd:selector xpath="decade/procedure|procedure"/>
			<xsd:field xpath="@name"/>
			<xsd:field xpath="@number"/>
		</xsd:unique>
		<xsd:unique name="TDLPackedRecordNameConstraint">
			<xsd:selector xpath="packedRecord"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="TDLBitFieldNameConstraint">
			<xsd:selector xpath="bitField"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="TDLEnumeratorNameConstraint">
			<xsd:selector xpath="enumerator"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<!-- Attribute constraints -->
	</xsd:element>
	<!-- Attribute Groups -->
	<xsd:attributeGroup name="EnumeratedValueAttrGroup">
		<xsd:annotation>
			<xsd:documentation>This is an attribue that assigned a text string to a signed integer value.</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="value" use="required">
			<xsd:annotation>
				<xsd:documentation>Maps any integer (positive or negative) or a boolean to text</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:pattern value="[+-]?[0-9]+"/>
					<xsd:pattern value="true|false"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="text" type="xsd:string" use="required"/>
	</xsd:attributeGroup>
	<xsd:attributeGroup name="QualifierAttrGroup">
		<xsd:annotation>
			<xsd:documentation>This is an attyribute that qualifies access modes</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="accessibility" use="optional" default="READWRITE">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="READONLY"/>
					<xsd:enumeration value="READWRITE"/>
					<xsd:enumeration value="WRITEONLY"/>
					<xsd:enumeration value="WRITENEVER"/>
					<xsd:enumeration value="UNIMPLEMENTED"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="pendingDepth" type="xsd:unsignedInt" use="optional" default="0"/>
		<xsd:attribute name="type" use="optional" default="ANY">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="CONTROL"/>
					<xsd:enumeration value="DATA"/>
					<xsd:enumeration value="ANY"/>
					<xsd:enumeration value="PRIVATE"/>
					<xsd:enumeration value="LIMITING"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="metrological" type="xsd:boolean" use="optional" default="false"/>
		<xsd:attribute name="privateKey" type="xsd:string" use="optional"/>
	</xsd:attributeGroup>
	<!-- Simple Types -->
	<xsd:simpleType name="BitFieldIentifierType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 _BFLD identifier</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*_BFLD"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="BitFieldReferenceType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 reference to a bit field type</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((STD|MFG):)?([A-Z][A-Z0-9_]*_(DEC|TBL|PROC).)?[A-Z][A-Z0-9_]*_BFLD"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="BitFieldSizeType">
		<xsd:annotation>
			<xsd:documentation>C12.19 bit field size constraint</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="UINT8"/>
			<xsd:enumeration value="UINT16"/>
			<xsd:enumeration value="UINT32"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="BoolExpressionType">
		<xsd:annotation>
			<xsd:documentation>C12.19 boolean  expression that can be in an if statement. It is not strong</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[\(\s]*((not([\s\(]+not[\s\)]*)*)?|[\s\(]*[\(\s]*(not([\s\(]+not[\s\)]*)*)?[\s\(]*(true|false|[0-9]+|-[1-9]+[0-9]*|[A-Z][A-Z0-9_]*_TBL|([A-Z][A-Z0-9_]*_TBL[.])?[A-Z][A-Z0-9_]*([.][A-Z][A-Z0-9_]*)*([.][0-9]+)?)[\s\)]*([\s]*([+*\-/%]|and|or|xor)[\s\(]*([0-9]+|[A-Z][A-Z0-9_]*_TBL|(([A-Z][A-Z0-9_]*_TBL[.])?[A-Z][A-Z0-9_]*([.][A-Z][A-Z0-9_]*)*([.][0-9]+)?))[\s\)]*)*[\s\)]*((&lt;|&lt;=|=|&gt;=|&lt;&gt;|&gt;|or|xor|and)[\(\s]*(not([\s\(]+not[\s\)]*)*)?[\s\(]*(true|false|[0-9]+|-[1-9]+[0-9]*|[A-Z][A-Z0-9_]*_TBL|([A-Z][A-Z0-9_]*_TBL[.])?[A-Z][A-Z0-9_]*([.][A-Z][A-Z0-9_]*)*([.][0-9]+)?)[\s\)]*([\s]*[+*\-/%][\s\(]*([0-9]+|[A-Z][A-Z0-9_]*_TBL|(([A-Z][A-Z0-9_]*_TBL[.])?[A-Z][A-Z0-9_]*([.][A-Z][A-Z0-9_]*)*([.][0-9]+)?))[\s\)]*)*[\s\)]*)?[\s\)]*)[\s\)]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="DecadeIentifierType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 _DEC identifier</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*_DEC"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="DecadeReferenceType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 reference to a Decade context</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((STD|MFG):)?([A-Z][A-Z0-9_]*_DEC|([01]?[0-9])?[0-9]|0*20[0-3])"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="DecadeNumberType">
		<xsd:restriction base="xsd:unsignedInt">
			<xsd:minInclusive value="0"/>
			<xsd:maxInclusive value="203"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="DerivedElementReferenceType">
		<xsd:annotation>
			<xsd:documentation>C12.19 reference to any derived (bit field or packed record) data types</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="PackedRecordReferenceType BitFieldReferenceType"/>
	</xsd:simpleType>
	<xsd:simpleType name="ElementType">
		<xsd:annotation>
			<xsd:documentation>C12.19 any element data types</xsd:documentation>
		</xsd:annotation>
		<xsd:union memberTypes="SimpleElementType SpecialElementType DerivedElementReferenceType SizedElementType"/>
	</xsd:simpleType>
	<xsd:simpleType name="EnumIdentifierType">
		<xsd:annotation>
			<xsd:documentation>A C12.19_ENUM identifier</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*_ENUM"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="EnumReferenceType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 reference to an enumerator type</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((STD|MFG):)?([A-Z][A-Z0-9_]*_(DEC|TBL|PROC).)?[A-Z][A-Z0-9_]*_ENUM"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="PackedRecordIentifierType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 _RCD identifier</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*_RCD"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="PackedRecordReferenceType">
		<xsd:annotation>
			<xsd:documentation>A C12.19  reference to a packed record type</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((STD|MFG):)?([A-Z][A-Z0-9_]*_(DEC|TBL|PROC).)?[A-Z][A-Z0-9_]*_RCD"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ProcedureIentifierType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 _TBL identifier</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*_PROC"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ProcedureReferenceType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 reference to a Procedure  context</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((STD|MFG):)?([A-Z][A-Z0-9_]*_PROC|0*((1?[0-9])?[0-9])?[0-9]|0*20[0-3][0-9])"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SimpleElementType">
		<xsd:annotation>
			<xsd:documentation>C12.19 Simple (base) data types</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="INT8|INT16|INT24|INT32|INT40|INT48|INT64"/>
			<xsd:pattern value="UINT8|UINT16|UINT32"/>
			<xsd:pattern value="FLOAT32|FLOAT64"/>
			<xsd:pattern value="FILL8|FILL16|FILL32"/>
			<xsd:pattern value="BCD|NIL"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SimpleIdentifierType">
		<xsd:annotation>
			<xsd:documentation>C12.19 any derived (bit field or packed record) data types</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SizedElementType">
		<xsd:annotation>
			<xsd:documentation>C12.19 Dimensioned types SET, STRING and BINARY types</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="STRING"/>
			<xsd:enumeration value="BINARY"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SpecialElementType">
		<xsd:annotation>
			<xsd:documentation>C12.19 complex (build-in) special data types</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="LTIME_DATE"/>
			<xsd:enumeration value="STIME_DATE"/>
			<xsd:enumeration value="TIME"/>
			<xsd:enumeration value="DATE"/>
			<xsd:enumeration value="RDATE"/>
			<xsd:enumeration value="CHAR"/>
			<xsd:enumeration value="NI_FMAT1"/>
			<xsd:enumeration value="NI_FMAT2"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="SubElementType">
		<xsd:annotation>
			<xsd:documentation>C12.19 sub elements  (bit field) data types</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="INT|UINT|BOOL|FILL"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="TableIentifierType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 _TBL identifier</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z][A-Z0-9_]*_TBL"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="TableNumberType">
		<xsd:restriction base="xsd:unsignedInt">
			<xsd:minInclusive value="0"/>
			<xsd:maxInclusive value="2039"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="TableReferenceType">
		<xsd:annotation>
			<xsd:documentation>A C12.19 reference to a Table  context</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="((STD|MFG):)?([A-Z][A-Z0-9_]*_TBL|0*((1?[0-9])?[0-9])?[0-9]|0*20[0-3][0-9])"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ValueExpressionType">
		<xsd:annotation>
			<xsd:documentation>C12.19 integer  expression that can be used in single dimensions. It is not strong</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[\s\(]*([0-9]+|-[1-9]+[0-9]*|[A-Z][A-Z0-9_]*_TBL|([A-Z][A-Z0-9_]*_TBL[.])?[A-Z][A-Z0-9_]*([.][A-Z][A-Z0-9_]*)*)[\s\)]*([\s]*[+*\-/%][\s\(]*([0-9]+|[A-Z][A-Z0-9_]*_TBL|(([A-Z][A-Z0-9_]*_TBL[.])?[A-Z][A-Z0-9_]*([.][A-Z][A-Z0-9_]*)*))[\s\)]*)*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- Referenced classes -->
	<xsd:complexType name="ArrayClass">
		<xsd:annotation>
			<xsd:documentation>Template for an Array of any type</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="EnumerationClass">
				<xsd:attribute name="name" type="SimpleIdentifierType" use="required"/>
				<xsd:attribute name="type" type="ElementType" use="required"/>
				<xsd:attribute name="dimension" type="ValueExpressionType" use="required"/>
				<xsd:attribute name="label" type="xsd:string" use="optional"/>
				<xsd:attribute name="enumerator" type="EnumReferenceType" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="BitFieldClass">
		<xsd:annotation>
			<xsd:documentation>Template for a bit field</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:choice maxOccurs="unbounded">
					<xsd:element name="enumerator" type="EnumNamedClass"/>
					<xsd:element name="subElement" type="SubElementClass" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="if" type="BitFieldIfClass" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="switch" type="BitFieldSwitchClass" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:choice>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="BitFieldIfClass">
		<xsd:annotation>
			<xsd:documentation>Template for an If element of a bit field</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="then" type="BitFieldClass"/>
			<xsd:element name="else" type="BitFieldClass" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="condition" type="BoolExpressionType" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="BitFieldSwitchClass">
		<xsd:annotation>
			<xsd:documentation>Template for a Switch element within an packed record type</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:sequence>
					<xsd:element name="case" maxOccurs="unbounded">
						<xsd:complexType>
							<xsd:complexContent>
								<xsd:extension base="BitFieldClass">
									<xsd:attribute name="value" type="xsd:string" use="required"/>
								</xsd:extension>
							</xsd:complexContent>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="default" type="BitFieldClass" minOccurs="0"/>
				</xsd:sequence>
				<xsd:attribute name="selection" type="xsd:string" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="DecadeClass">
		<xsd:annotation>
			<xsd:documentation>Template for a A C12.19 Decade element</xsd:documentation>
			<xsd:documentation>A C12.19 Decade element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:choice minOccurs="0" maxOccurs="unbounded">
					<xsd:element ref="packedRecord"/>
					<xsd:element ref="bitField"/>
					<xsd:element name="enumerator" type="EnumNamedClass"/>
					<xsd:element ref="table"/>
					<xsd:element ref="procedure"/>
				</xsd:choice>
				<xsd:attribute name="name" type="DecadeIentifierType" use="required"/>
				<xsd:attribute name="number" type="DecadeNumberType" use="required"/>
				<xsd:attribute name="label" type="xsd:string" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="DescriptionClass">
		<xsd:annotation>
			<xsd:documentation>The Description element can be used at the beginning of  inside any element.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence minOccurs="0">
			<xsd:element name="description" minOccurs="0">
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string"/>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="extension" type="TableTstBenchExtensionClass" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ElementClass">
		<xsd:annotation>
			<xsd:documentation>Template for a  C1219 Element that can be included in any Packed Record</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="EnumerationClass">
				<xsd:attribute name="name" type="SimpleIdentifierType" use="required"/>
				<xsd:attribute name="type" type="ElementType" use="required"/>
				<xsd:attribute name="enumerator" type="EnumReferenceType" use="optional"/>
				<xsd:attribute name="size" type="ValueExpressionType" use="optional" default="1"/>
				<xsd:attribute name="label" type="xsd:string" use="optional"/>
				<xsd:attribute name="min" type="xsd:long" use="optional"/>
				<xsd:attribute name="max" type="xsd:long" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="EnumClass">
		<xsd:annotation>
			<xsd:documentation>Template for an unnamed enumeration type without parent element name</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:sequence minOccurs="0">
					<xsd:element name="enum" maxOccurs="unbounded">
						<xsd:complexType>
							<xsd:complexContent>
								<xsd:extension base="DescriptionClass">
									<xsd:attributeGroup ref="EnumeratedValueAttrGroup"/>
								</xsd:extension>
							</xsd:complexContent>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="default" minOccurs="0">
						<xsd:complexType>
							<xsd:complexContent>
								<xsd:extension base="DescriptionClass">
									<xsd:attribute name="text" type="xsd:string" use="optional" default="Unknown Value"/>
								</xsd:extension>
							</xsd:complexContent>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="EnumerationClass">
		<xsd:annotation>
			<xsd:documentation>Base Template for a Enumerated entities such as arrays, sets and elements. It includes the enumerator element.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:sequence minOccurs="0">
					<xsd:element name="enumerator">
						<xsd:complexType>
							<xsd:complexContent>
								<xsd:extension base="EnumClass">
									<xsd:attribute name="name" type="EnumIdentifierType" use="optional"/>
								</xsd:extension>
							</xsd:complexContent>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="EnumNamedClass">
		<xsd:annotation>
			<xsd:documentation>Template for a C12.19 Named enumerator</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="EnumClass">
				<xsd:attribute name="name" type="EnumIdentifierType" use="required"/>
				<xsd:attribute name="replace" type="EnumReferenceType" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="PackedRecordClass">
		<xsd:annotation>
			<xsd:documentation>Template for packed record</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:choice maxOccurs="unbounded">
					<xsd:element name="element" type="ElementClass"/>
					<xsd:element name="array" type="ArrayClass"/>
					<xsd:element name="set" type="SetClass"/>
					<xsd:element name="if" type="PackedRecordIfClass"/>
					<xsd:element name="switch" type="PackedRecordSwitchClass"/>
					<xsd:element name="enumerator" type="EnumNamedClass"/>
				</xsd:choice>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="PackedRecordIfClass">
		<xsd:annotation>
			<xsd:documentation>Template for an If element within an packe record</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:sequence>
					<xsd:element name="then" type="PackedRecordClass"/>
					<xsd:element name="else" type="PackedRecordClass" minOccurs="0"/>
				</xsd:sequence>
				<xsd:attribute name="condition" type="BoolExpressionType" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="PackedRecordSwitchClass">
		<xsd:annotation>
			<xsd:documentation>Template for a Switch element within an packed record type</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:sequence>
					<xsd:element name="case" maxOccurs="unbounded">
						<xsd:complexType>
							<xsd:complexContent>
								<xsd:extension base="PackedRecordClass">
									<xsd:attribute name="value" type="xsd:string" use="required"/>
								</xsd:extension>
							</xsd:complexContent>
						</xsd:complexType>
					</xsd:element>
					<xsd:element name="default" type="PackedRecordClass" minOccurs="0"/>
				</xsd:sequence>
				<xsd:attribute name="selection" type="xsd:string" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ProcedureClass">
		<xsd:annotation>
			<xsd:documentation>Template for a A C12.19 Procedure element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:sequence minOccurs="0" maxOccurs="unbounded">
					<xsd:choice minOccurs="0" maxOccurs="unbounded">
						<xsd:element ref="packedRecord"/>
						<xsd:element ref="bitField"/>
						<xsd:element name="enumerator" type="EnumNamedClass"/>
					</xsd:choice>
					<xsd:element name="extend" minOccurs="0" maxOccurs="2">
						<xsd:annotation>
							<xsd:documentation>V12.19 Procedure parameter or Procedure response packed record extension</xsd:documentation>
						</xsd:annotation>
						<xsd:complexType>
							<xsd:complexContent>
								<xsd:extension base="DescriptionClass">
									<xsd:attribute name="type" type="PackedRecordReferenceType" use="required">
										<xsd:annotation>
											<xsd:documentation>The local (source) data type used to associated this procedure/response  table  extension</xsd:documentation>
										</xsd:annotation>
									</xsd:attribute>
									<xsd:attribute name="target" type="PackedRecordReferenceType" use="required">
										<xsd:annotation>
											<xsd:documentation/>
											<xsd:documentation>Target data type being extended</xsd:documentation>
										</xsd:annotation>
									</xsd:attribute>
								</xsd:extension>
							</xsd:complexContent>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
				<xsd:attribute name="name" type="ProcedureIentifierType" use="required"/>
				<xsd:attribute name="number" type="TableNumberType" use="required"/>
				<xsd:attribute name="label" type="xsd:string" use="optional"/>
				<xsd:attribute name="associate" type="DecadeReferenceType" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="QualifierType">
		<xsd:annotation>
			<xsd:documentation>This qualifies a table, procedure or a decade for possible usage</xsd:documentation>
		</xsd:annotation>
		<xsd:choice maxOccurs="unbounded">
			<xsd:element name="decade">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="DescriptionClass">
							<xsd:attribute name="name" type="DecadeReferenceType" use="required"/>
							<xsd:attributeGroup ref="QualifierAttrGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="table">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="DescriptionClass">
							<xsd:attribute name="name" type="TableReferenceType" use="required"/>
							<xsd:attributeGroup ref="QualifierAttrGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="procedure">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="DescriptionClass">
							<xsd:attribute name="name" type="ProcedureReferenceType" use="required"/>
							<xsd:attributeGroup ref="QualifierAttrGroup"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="SetClass">
		<xsd:annotation>
			<xsd:documentation>Template for an opaque atomic collection of BOOL</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="EnumerationClass">
				<xsd:attribute name="name" type="SimpleIdentifierType" use="required"/>
				<xsd:attribute name="type" type="SubElementType" use="optional" fixed="BOOL"/>
				<xsd:attribute name="dimension" type="ValueExpressionType" use="required"/>
				<xsd:attribute name="enumerator" type="EnumReferenceType" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="StringClass">
		<xsd:annotation>
			<xsd:documentation>Template for an atomic collection of CHAR</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:attribute name="name" type="SimpleIdentifierType" use="required"/>
				<xsd:attribute name="type" type="SpecialElementType" fixed="CHAR"/>
				<xsd:attribute name="dimension" type="ValueExpressionType" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="SubElementClass">
		<xsd:annotation>
			<xsd:documentation>Template for a C1219Sub element that can be included in any Packed Record</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="EnumerationClass">
				<xsd:attribute name="name" type="SimpleIdentifierType" use="required"/>
				<xsd:attribute name="type" type="SubElementType" use="required"/>
				<xsd:attribute name="startBitInclusive" type="xsd:unsignedInt" use="required"/>
				<xsd:attribute name="endBitInclusive" type="xsd:unsignedInt" use="optional"/>
				<xsd:attribute name="label" type="xsd:string" use="optional"/>
				<xsd:attribute name="enumerator" type="EnumReferenceType" use="optional"/>
				<xsd:attribute name="min" type="xsd:long" use="optional"/>
				<xsd:attribute name="max" type="xsd:long" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="TableClass">
		<xsd:annotation>
			<xsd:documentation>Template for a A C12.19 Table element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="DescriptionClass">
				<xsd:choice minOccurs="0" maxOccurs="unbounded">
					<xsd:element ref="packedRecord"/>
					<xsd:element ref="bitField"/>
					<xsd:element name="enumerator" type="EnumNamedClass"/>
				</xsd:choice>
				<xsd:attribute name="name" type="TableIentifierType" use="required"/>
				<xsd:attribute name="number" type="TableNumberType" use="required"/>
				<xsd:attribute name="label" type="xsd:string" use="optional"/>
				<xsd:attribute name="type" type="PackedRecordReferenceType" use="required"/>
				<xsd:attribute name="associate" type="DecadeReferenceType" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<!-- Global element names -->
	<xsd:element name="bitField">
		<xsd:annotation>
			<xsd:documentation>A C12.19 Bit Field element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="BitFieldClass">
					<xsd:attribute name="name" type="BitFieldIentifierType" use="required"/>
					<xsd:attribute name="type" type="BitFieldSizeType" use="required"/>
					<xsd:attribute name="replace" type="BitFieldReferenceType" use="optional"/>
					<xsd:attribute name="redefine" type="BitFieldReferenceType" use="optional"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="decade">
		<xsd:annotation>
			<xsd:documentation>A C12.19 Decade element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="DecadeClass"/>
			</xsd:complexContent>
		</xsd:complexType>
		<xsd:unique name="DECPackedRecordNameConstraint">
			<xsd:selector xpath="packedRecord"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="DECBitFieldNameConstraint">
			<xsd:selector xpath="bitField"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="DECEnumeratorConstraint">
			<xsd:selector xpath="enumerator"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
	</xsd:element>
	<xsd:element name="packedRecord">
		<xsd:annotation>
			<xsd:documentation>A C12.19 Packed Record element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="PackedRecordClass">
					<xsd:attribute name="name" type="PackedRecordIentifierType" use="required"/>
					<xsd:attribute name="replace" type="PackedRecordReferenceType" use="optional"/>
					<xsd:attribute name="redefine" type="PackedRecordReferenceType" use="optional"/>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="procedure">
		<xsd:annotation>
			<xsd:documentation>A C12.19 procedure element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="ProcedureClass"/>
			</xsd:complexContent>
		</xsd:complexType>
		<xsd:unique name="PROCPackedRecordNameConstraint">
			<xsd:selector xpath="packedRecord"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="PROCBitFieldNameConstraint">
			<xsd:selector xpath="bitField"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="PROCEnumeratorNameConstraint">
			<xsd:selector xpath="enumerator"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
	</xsd:element>
	<xsd:element name="table">
		<xsd:annotation>
			<xsd:documentation>A C12.19 table element</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="TableClass"/>
			</xsd:complexContent>
		</xsd:complexType>
		<xsd:unique name="TBLPackedRecordNameConstraint">
			<xsd:selector xpath="packedRecord"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="TBLBitFieldNameConstraint">
			<xsd:selector xpath="bitField"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
		<xsd:unique name="TBLEnumeratorConstraint">
			<xsd:selector xpath="enumerator"/>
			<xsd:field xpath="@name"/>
		</xsd:unique>
	</xsd:element>
	<!-- The Following is a component of the upcoming release XInclude schema. This code needs to be removed when the official schema is released -->
	<xsd:element name="include">
		<xsd:annotation>
			<xsd:documentation>This element is identical to that found in the  upcoming W3C release XInclude schema. This code needs to be removed when the official schema is released.</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType mixed="true">
			<xsd:attribute name="href" type="xsd:anyURI" use="required"/>
			<xsd:attribute name="parse" type="xsd:string"/>
			<xsd:attribute name="encoding" type="xsd:string"/>
			<xsd:anyAttribute/>
		</xsd:complexType>
	</xsd:element>
	<!-- Non Standard Classes -->
	<xsd:complexType name="TableTstBenchExtensionClass">
		<xsd:all>
			<xsd:element name="visual" minOccurs="0">
				<xsd:complexType>
					<xsd:attribute name="vtab" type="xsd:unsignedInt" use="optional" default="4"/>
					<xsd:attribute name="htab" type="xsd:unsignedInt" use="optional" default="4"/>
					<xsd:attribute name="nl" use="optional" default="after">
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:enumeration value="before"/>
								<xsd:enumeration value="after"/>
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:attribute>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>
</xsd:schema>

