<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		xmlns:lv="http://www.ni.com/labview"
		targetNamespace="http://www.ni.com/labview">

<!--Root element that contains all other data-->
<!--will NOT be produced by primitive-->
<xsd:element name="LVData" type="lv:LVDataRootType"/>
<xsd:complexType name="LVDataRootType">
	<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="Version" type="xsd:string" />
			<xsd:element name="I8" type="lv:I8Type" />
			<xsd:element name="I16" type="lv:I16Type" />
			<xsd:element name="I32" type="lv:I32Type" />
			<xsd:element name="U8" type="lv:U8Type" />
			<xsd:element name="U16" type="lv:U16Type" />
			<xsd:element name="U32" type="lv:U32Type" />
			<xsd:element name="EB" type="lv:EBType" />
			<xsd:element name="EW" type="lv:EWType" />
			<xsd:element name="EL" type="lv:ELType" />
			<xsd:element name="SGL" type="lv:SGLType" />
			<xsd:element name="DBL" type="lv:DBLType" />
			<xsd:element name="EXT" type="lv:EXTType" />
			<xsd:element name="CSG" type="lv:CSGType" />
			<xsd:element name="CDB" type="lv:CDBType" />
			<xsd:element name="CXT" type="lv:CXTType" />
			<xsd:element name="Boolean" type="lv:BooleanType" />
			<xsd:element name="Path" type="lv:PathType" />
			<xsd:element name="String" type="lv:StringType" />
			<xsd:element name="Refnum" type="lv:RefnumType" />
			<xsd:element name="Cluster" type="lv:ClusterType" />
			<xsd:element name="Array" type="lv:ArrayType" />
			<xsd:element name="DAQChannel" type="lv:DAQChannelType" />
			<xsd:element name="LvVariant" type="lv:LvVariantType" />
			<xsd:element name="WDT" type="lv:WDTType" />
	</xsd:choice>
</xsd:complexType>

<!--Basic elements-->
<xsd:complexType name="I8Type">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="I16Type">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="I32Type">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="U8Type">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="U16Type">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="U32Type">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EBType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" minOccurs="1" />
		<xsd:element name="Choice" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
		<xsd:element name="Val" type="xsd:string" minOccurs="1" />
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EWType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" minOccurs="1" />
		<xsd:element name="Choice" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
		<xsd:element name="Val" type="xsd:string" minOccurs="1" />
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ELType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" minOccurs="1" />
		<xsd:element name="Choice" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
		<xsd:element name="Val" type="xsd:string" minOccurs="1" />
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SGLType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="DBLType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="EXTType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="CSGType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="CDBType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="CXTType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="BooleanType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PathType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="StringType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RefnumType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="DAQChannelType">
	<xsd:complexContent>
		<xsd:extension base="lv:LVDataType" />
	</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="LVDataType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" minOccurs="1" />
		<xsd:element name="Val" type="xsd:string" minOccurs="1" />
	</xsd:sequence>
</xsd:complexType>
	
<!--Array element-->
<xsd:complexType name="ArrayType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" />
		<xsd:sequence>
			<xsd:element name="Dimsize" type="xsd:string" minOccurs="1" maxOccurs="unbounded" />
		</xsd:sequence>
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="I8" type="lv:I8Type" />
			<xsd:element name="I16" type="lv:I16Type" />
			<xsd:element name="I32" type="lv:I32Type" />
			<xsd:element name="U8" type="lv:U8Type" />
			<xsd:element name="U16" type="lv:U16Type" />
			<xsd:element name="U32" type="lv:U32Type" />
			<xsd:element name="EB" type="lv:EBType" />
			<xsd:element name="EW" type="lv:EWType" />
			<xsd:element name="EL" type="lv:ELType" />
			<xsd:element name="SGL" type="lv:SGLType" />
			<xsd:element name="DBL" type="lv:DBLType" />
			<xsd:element name="EXT" type="lv:EXTType" />
			<xsd:element name="CSG" type="lv:CSGType" />
			<xsd:element name="CDB" type="lv:CDBType" />
			<xsd:element name="CXT" type="lv:CXTType" />
			<xsd:element name="Boolean" type="lv:BooleanType" />
			<xsd:element name="Path" type="lv:PathType" />
			<xsd:element name="String" type="lv:StringType" />
			<xsd:element name="Refnum" type="lv:RefnumType" />
			<xsd:element name="Cluster" type="lv:ClusterType" />
			<xsd:element name="DAQChannel" type="lv:DAQChannelType" />
			<xsd:element name="LvVariant" type="lv:LvVariantType" />
			<xsd:element name="WDT" type="lv:WDTType" />
		</xsd:choice>
	</xsd:sequence>
</xsd:complexType>


<!--Cluster element-->
<xsd:complexType name="ClusterType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string"/>
		<xsd:element name="NumElts" type="xsd:string"/>
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="I8" type="lv:I8Type" />
			<xsd:element name="I16" type="lv:I16Type" />
			<xsd:element name="I32" type="lv:I32Type" />
			<xsd:element name="U8" type="lv:U8Type" />
			<xsd:element name="U16" type="lv:U16Type" />
			<xsd:element name="U32" type="lv:U32Type" />
			<xsd:element name="EB" type="lv:EBType" />
			<xsd:element name="EW" type="lv:EWType" />
			<xsd:element name="EL" type="lv:ELType" />
			<xsd:element name="SGL" type="lv:SGLType" />
			<xsd:element name="DBL" type="lv:DBLType" />
			<xsd:element name="EXT" type="lv:EXTType" />
			<xsd:element name="CSG" type="lv:CSGType" />
			<xsd:element name="CDB" type="lv:CDBType" />
			<xsd:element name="CXT" type="lv:CXTType" />
			<xsd:element name="Boolean" type="lv:BooleanType" />
			<xsd:element name="Path" type="lv:PathType" />
			<xsd:element name="String" type="lv:StringType" />
			<xsd:element name="Refnum" type="lv:RefnumType" />
			<xsd:element name="Cluster" type="lv:ClusterType" />
			<xsd:element name="Array" type="lv:ArrayType" />
			<xsd:element name="DAQChannel" type="lv:DAQChannelType" />
			<xsd:element name="LvVariant" type="lv:LvVariantType" />
			<xsd:element name="WDT" type="lv:WDTType" />
		</xsd:choice>
	</xsd:sequence>
</xsd:complexType>

<!--LvVariant element-->
<xsd:complexType name="LvVariantType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" />
		<xsd:choice minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="I8" type="lv:I8Type" />
			<xsd:element name="I16" type="lv:I16Type" />
			<xsd:element name="I32" type="lv:I32Type" />
			<xsd:element name="U8" type="lv:U8Type" />
			<xsd:element name="U16" type="lv:U16Type" />
			<xsd:element name="U32" type="lv:U32Type" />
			<xsd:element name="EB" type="lv:EBType" />
			<xsd:element name="EW" type="lv:EWType" />
			<xsd:element name="EL" type="lv:ELType" />
			<xsd:element name="SGL" type="lv:SGLType" />
			<xsd:element name="DBL" type="lv:DBLType" />
			<xsd:element name="EXT" type="lv:EXTType" />
			<xsd:element name="CSG" type="lv:CSGType" />
			<xsd:element name="CDB" type="lv:CDBType" />
			<xsd:element name="CXT" type="lv:CXTType" />
			<xsd:element name="Boolean" type="lv:BooleanType" />
			<xsd:element name="Path" type="lv:PathType" />
			<xsd:element name="String" type="lv:StringType" />
			<xsd:element name="Refnum" type="lv:RefnumType" />
			<xsd:element name="Cluster" type="lv:ClusterType" />
			<xsd:element name="Array" type="lv:ArrayType" />
			<xsd:element name="DAQChannel" type="lv:DAQChannelType" />
			<xsd:element name="LvVariant" type="lv:LvVariantType" />
			<xsd:element name="WDT" type="lv:WDTType" />
		</xsd:choice>
	</xsd:sequence>
</xsd:complexType>

<!--Waveform Datatype element-->
<xsd:complexType name="WDTType">
	<xsd:sequence>
		<xsd:element name="Name" type="xsd:string" />
		<xsd:element name="Cluster" type="lv:ClusterType" minOccurs="0" maxOccurs="unbounded" />
	</xsd:sequence>
</xsd:complexType>


</xsd:schema>
