-- XSD schema extracted from ITU-T H.625 (10/2010)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mcml="http://www.itu.int/xml-namespace/itu-t/h.625/MCML/"
targetNamespace="http://www.itu.int/xml-namespace/itu-t/h.625/MCML/"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="MCML">
<xs:complexType>
<xs:sequence>
<xs:element ref="User"/>
<xs:element ref="Server" maxOccurs="unbounded"/>
<xs:element ref="History" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Version" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="Transmitter"/>
<xs:element ref="Receiver" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Transmitter">
<xs:complexType>
<xs:sequence>
<xs:element ref="Device"/>
<xs:element ref="UserProfile" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Device">
<xs:complexType>
<xs:sequence>
<xs:element name="Location">
<xs:complexType>
<xs:sequence>
<xs:element name="URI"/>
<xs:element name="GlobalPosition" minOccurs="0">
<xs:complexType>
<xs:attributeGroup ref="Location"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="Location">
<xs:attribute name="Longitude" type="xs:float" use="required"/>
<xs:attribute name="Latitude" type="xs:float" use="required"/>
</xs:attributeGroup>
<xs:element name="UserProfile">
<xs:complexType>
<xs:attributeGroup ref="Profile"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="Profile">
<xs:attribute name="ID" type="xs:string" use="required"/>
<xs:attribute name="Age" type="xs:int" use="optional"/>
<xs:attribute name="Gender" type="xs:string" use="optional" fixed=''"female", "male"''/>
</xs:attributeGroup>
<xs:element name="Receiver">
<xs:complexType>
<xs:sequence>
<xs:element ref="Device"/>
<xs:element ref="UserProfile" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Server">
<xs:complexType>
<xs:choice>
<xs:element ref="Request" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation> </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="Response">
<xs:annotation>
<xs:documentation> </xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:attributeGroup ref="ServiceInfo"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="ServiceInfo">
<xs:attribute name="Service" type="xs:string" use="required"/>
<xs:attribute name="ProcessOrder" type="xs:int" use="required"/>
</xs:attributeGroup>
<xs:element name="Request">
<xs:complexType>
<xs:sequence>
<xs:element ref="Routing"/>
<xs:element ref="InputUserProfile" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="TargetOutput" minOccurs="0"/>
<xs:element ref="Input" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Response">
<xs:complexType>
<xs:sequence>
<xs:element ref="Routing"/>
<xs:element ref="Output" maxOccurs="unbounded"/>
<xs:element ref="Error"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Error">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Code" type="xs:string" use="required"/>
<xs:attribute name="Service" type="xs:string" use="required"/>
<xs:attribute name="Message" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Routing">
<xs:complexType>
<xs:sequence>
<xs:element name="From">
<xs:complexType>
<xs:attribute name="URI" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="To" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="URI" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InputUserProfile">
<xs:complexType>
<xs:sequence>
<xs:element ref="InputModality" minOccurs="0">
<xs:annotation>
<xs:documentation> </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="Profile"/>
</xs:complexType>
</xs:element>
<xs:element name="InputModality">
<xs:complexType>
<xs:sequence>
<xs:element name="Speaking" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="Language"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Writing" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="Language"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Signing" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Language">
<xs:complexType>
<xs:attributeGroup ref="LanguageSkill"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="LanguageSkill">
<xs:attribute name="ID" type="xs:string" use="required"/>
<xs:attribute name="Dialect" type="xs:string" use="optional"/>
<xs:attribute name="Fluency" type="xs:int" use="required"/>
</xs:attributeGroup>
<xs:element name="TargetOutput">
<xs:complexType>
<xs:sequence>
<xs:element name="HypothesisFormat" minOccurs="0">
<xs:complexType>
<xs:attribute name="NofN-best" use="required">
<xs:annotation>
<xs:documentation> </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element ref="LanguageType" minOccurs="0"/>
<xs:element name="Option" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Key" use="required"/>
<xs:attribute name="Value" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LanguageType">
<xs:complexType>
<xs:attribute name="ID" type="xs:string" use="required"/>
<xs:attribute name="Dialect" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Input">
<xs:complexType>
<xs:sequence>
<xs:element ref="Data">
<xs:annotation>
<xs:documentation> </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AttachedBinary" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="BinaryInfo"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="BinaryInfo">
<xs:attribute name="DataID" use="required"/>
<xs:attribute name="DataType" type="xs:string" use="optional"/>
<xs:attribute name="ChannelID" type="xs:int" use="required"/>
</xs:attributeGroup>
<xs:element name="Data">
<xs:complexType>
<xs:sequence>
<xs:element ref="Text" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Audio" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Image" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Video" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Text">
<xs:complexType>
<xs:sequence>
<xs:element ref="ModelType" minOccurs="0"/>
<xs:element ref="SentenceSequence" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="Channel"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="Channel">
<xs:attribute name="ChannelID" type="xs:int" use="required"/>
<xs:attribute name="BeginTimestamp" type="xs:dateTime" use="required"/>
<xs:attribute name="EndTimestamp" type="xs:dateTime" use="required"/>
<xs:attribute name="EndPoint" type="xs:dateTime" use="optional"/>
</xs:attributeGroup>
<xs:element name="ModelType">
<xs:complexType>
<xs:sequence>
<xs:element name="Domain" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Personality" minOccurs="0">
<xs:complexType>
<xs:attributeGroup ref="UserModel"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="UserModel">
<xs:attribute name="ID" type="xs:string" use="required"/>
<xs:attribute name="Age" type="xs:int" use="required"/>
<xs:attribute name="Gender" type="xs:string" use="required" fixed=''"female", "male"''/>
</xs:attributeGroup>
<xs:element name="SentenceSequence">
<xs:complexType>
<xs:sequence>
<xs:element ref="Sentence" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="TextMetaInfo"/>
<xs:attribute name="N-bestRank" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="TextMetaInfo">
<xs:attribute name="Order" type="xs:int" use="required"/>
<xs:attribute name="Score" type="xs:float" use="optional"/>
<xs:attribute name="TimeStamp" type="xs:dateTime" use="optional"/>
<xs:attribute name="BeginTime" type="xs:integer" use="optional"/>
<xs:attribute name="EndTime" type="xs:integer" use="optional"/>
</xs:attributeGroup>
<xs:element name="Sentence">
<xs:complexType>
<xs:sequence>
<xs:element name="Function" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Surface" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Delimiter" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element ref="Chunk" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="TextMetaInfo"/>
</xs:complexType>
</xs:element>
<xs:element name="Chunk">
<xs:complexType>
<xs:sequence>
<xs:element name="Surface" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="Dictionary"/>
</xs:complexType>
</xs:element>
<xs:element name="POS" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="Dictionary"/>
</xs:complexType>
</xs:element>
<xs:element name="Pronunciation" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="Dictionary"/>
</xs:complexType>
</xs:element>
<xs:element name="IPA" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="Dictionary"/>
</xs:complexType>
</xs:element>
<xs:element name="Accent" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="Dictionary"/>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="TextMetaInfo"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="Dictionary">
<xs:attribute name="DictionaryID" type="xs:string"/>
<xs:attribute name="EntryID" type="xs:string"/>
<xs:anyAttribute namespace="##other"/>
</xs:attributeGroup>
<xs:element name="Audio">
<xs:complexType>
<xs:sequence>
<xs:element ref="ModelType" minOccurs="0"/>
<xs:element ref="Signal" maxOccurs="unbounded"/>
<xs:element name="Feature" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="Channel"/>
</xs:complexType>
</xs:element>
<xs:element name="Signal">
<xs:complexType>
<xs:attributeGroup ref="SignalInfo"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="SignalInfo">
<xs:attribute name="AudioFormat" type="xs:string" use="required" fixed=''"PCM", "ADPCM"''/>
<xs:attribute name="SamplingRate" type="xs:int" use="required"/>
<xs:attribute name="BitRate" type="xs:int" use="required"/>
<xs:attribute name="Endian" type="xs:string" use="required" fixed=''"big", "little"''/>
<xs:attribute name="ChannelQty" type="xs:int" use="required"/>
<xs:attribute name="ValueType" type="xs:string" use="required" fixed=''"float", "integer"''/>
</xs:attributeGroup>
<xs:element name="Image">
<xs:complexType>
<xs:sequence>
<xs:element ref="ModelType" minOccurs="0"/>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="Channel"/>
</xs:complexType>
</xs:element>
<xs:element name="Video">
<xs:complexType>
<xs:sequence>
<xs:element ref="ModelType" minOccurs="0"/>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="Channel"/>
</xs:complexType>
</xs:element>
<xs:element name="Output">
<xs:complexType>
<xs:sequence>
<xs:element ref="Data"/>
<xs:element name="AttachedBinary" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="BinaryInfo"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="History">
<xs:complexType>
<xs:sequence>
<xs:element ref="Request"/>
<xs:element ref="Response"/>
</xs:sequence>
<xs:attributeGroup ref="ServiceInfo"/>
</xs:complexType>
</xs:element>
</xs:schema>