-- XSD schema extracted from ITU-T H.625 (03/2017)
<?xml version="2.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="MCML">
<xs:complexType>
<xs:sequence>
<xs:element ref="User" minOccurs="0"/>
<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" fixed=''"2.0"''/>
</xs:complexType>
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="Transmitter" minOccurs="0"/>
<xs:element ref="Receiver" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Transmitter">
<xs:complexType>
<xs:sequence>
<xs:element ref="Device" minOccurs="0"/>
<xs:element ref="UserProfile" minOccurs="0" 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" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
</xs:complexType> </xs:element>
<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:attribute name="Option"/>
</xs:attributeGroup>
<xs:element name="Receiver">
<xs:complexType>
<xs:sequence>
<xs:element ref="Device" minOccurs="0"/>
<xs:element ref="UserProfile" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Server">
<xs:complexType>
<xs:choice>
<xs:element ref="Request" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation> </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="Response" minOccurs="0">
<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" minOccurs="0"/>
<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" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Output" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="Error" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Error">
<xs:complexType>
<xs:sequence>
<xs:element name="Option" 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" minOccurs="0">
<xs:complexType>
<xs:attribute name="URI" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="To" minOccurs="0" 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 ref="Speaking" minOccurs="0"/>
<xs:element ref="Writing" minOccurs="0"/>
<xs:element ref="Signing" minOccurs="0"/>
<xs:element name="Option" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Speaking">
<xs:complexType>
<xs:sequence>
<xs:element ref="Language"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Writing">
<xs:complexType>
<xs:sequence>
<xs:element ref="Language"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Signing">
<xs:complexType>
<xs:sequence>
<xs:element ref="Language"/>
</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="optional"/>
</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 ref="AttachedBinary" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="BinaryInfo">
<xs:attribute name="DataID" type="xs:string" use="required"/>
<xs:attribute name="DataType" type="xs:string" use="required"/>
<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:element ref="Application" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Option" 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="optional"/>
<xs:attribute name="EndTimestamp" type="xs:dateTime" use="optional"/>
<xs:attribute name="EndPoint" type="xs:dateTime" use="optional"/>
</xs:attributeGroup>
<xs:element name="ModelType">
<xs:complexType>
<xs:sequence>
<xs:element name="Domain" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Personality" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="UserModel"/>
</xs:complexType>
</xs:element>
<xs:element name="Task" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</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="optional"/>
<xs:attribute name="Gender" type="xs:string" use="optional" 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:complexType>
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Surface" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Delimiter" />
</xs:extension>
</xs:simpleContent>
</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:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="Dictionary"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="POS" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="Dictionary"/>
</xs:extension>
</xs:simpleContent>
</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:element name="Option" 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:attribute name="Option "/>
</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:attribute name="Option"/>
</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="DataFormat" type="xs:string" use="required" fixed=''"PCM", "ADPCM"''/>
<xs:attribute name="SamplingRate" type="xs:int" use="optional"/>
<xs:attribute name="BitRate" type="xs:int" use="optional"/>
<xs:attribute name="Endian" type="xs:string" use="optional" fixed=''"big", "little"''/>
<xs:attribute name="ChannelQty" type="xs:int" use="optional"/>
<xs:attribute name="ValueType" type="xs:string" use="optional" fixed=''"float", "integer"''/>
<xs:attribute name="Option"/>
</xs:attributeGroup>
<xs:element name="Image">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="ModelType" minOccurs="0"/>
<xs:element name="Option " 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:element name="Option " 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 ref="AttachedBinary" minOccurs="0" maxOccurs="unbounded"/>
</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:element name="AttachedBinary">
<xs:complexType>
<xs:attributeGroup ref="BinaryInfo"/>
</xs:complexType>
</xs:element>
<xs:element name="Surface">
<xs:complexType>
<xs:attributeGroup ref="TextMetaInfo"/>
</xs:complexType>
</xs:element>
<xs:element name="Speed">
<xs:complexType>
<xs:attributeGroup ref="Channel"/>
<xs:attribute name="Direction"/>
<xs:attribute name="Size"/>
<xs:attribute name="Time"/>
<xs:attribute name="KBPS"/>
</xs:complexType>
</xs:element>
<xs:element name="Custom">
<xs:complexType>
<xs:sequence>
<xs:element name="Detail">
<xs:complexType>
<xs:sequence>
<xs:element name="Title"/>
<xs:element name="Spot"/>
<xs:element name="Display"/>
<xs:element ref="Image"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="List">
<xs:complexType>
<xs:sequence>
<xs:element name="Title"/>
<xs:element name="Item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Spot"/>
<xs:element ref="Image"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Map">
<xs:complexType>
<xs:sequence>
<xs:element name="Title"/>
<xs:element name="Spot"/>
<xs:element name="Latitude"/>
<xs:element name="Longitude"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Application">
<xs:complexType>
<xs:sequence>
<xs:element name="Option" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Option"/>
</xs:complexType>
</xs:element>
</xs:schema>