1 <?xml version="1.0" encoding="UTF-8"?>
   2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.0">
   3     <xs:element name="recording">
   4         <xs:complexType>
   5             <xs:sequence minOccurs="0" maxOccurs="1">
   6                 <xs:element name="events">
   7                     <xs:complexType>
   8                         <xs:sequence minOccurs="0" maxOccurs="unbounded">
   9                             <xs:element name="event" type="eventType" />
  10                         </xs:sequence>
  11                     </xs:complexType>
  12                 </xs:element>
  13             </xs:sequence>
  14         </xs:complexType>
  15     </xs:element>
  16     <xs:complexType name="eventType">
  17         <xs:sequence minOccurs="0" maxOccurs="unbounded">
  18             <xs:choice>
  19                 <xs:element name="struct" nillable="true" type="structType" />
  20                 <xs:element name="array" nillable="true" type="arrayType" />
  21                 <xs:element name="value" nillable="true" type="valueType" />
  22             </xs:choice>
  23         </xs:sequence>
  24         <xs:attribute use="required" name="type" type="xs:string" />
  25     </xs:complexType>
  26     <xs:complexType name="structType">
  27         <xs:sequence minOccurs="0" maxOccurs="unbounded">
  28             <xs:choice>
  29                 <xs:element name="struct" nillable="true" type="structType" />
  30                 <xs:element name="array" nillable="true" type="arrayType" />
  31                 <xs:element name="value" nillable="true" type="valueType" />
  32             </xs:choice>
  33         </xs:sequence>
  34         <xs:attribute use="required" name="name" type="xs:string" />
  35     </xs:complexType>
  36     <xs:complexType name="arrayType">
  37         <xs:sequence minOccurs="0" maxOccurs="unbounded">
  38             <xs:choice>
  39                 <xs:element name="struct" nillable="true" type="structElement" />
  40                 <xs:element name="array" nillable="true" type="arrayElement" />
  41                 <xs:element name="value" nillable="true" type="valueElement" />
  42             </xs:choice>
  43         </xs:sequence>
  44         <xs:attribute use="required" name="size" type="xs:int" />
  45         <xs:attribute use="required" name="name" type="xs:string" />
  46     </xs:complexType>
  47     <xs:complexType name="valueType">
  48         <xs:simpleContent>
  49             <xs:extension base="xs:string">
  50                 <xs:attribute use="required" name="name" type="xs:string" />
  51             </xs:extension>
  52         </xs:simpleContent>
  53     </xs:complexType>
  54     <xs:complexType name="structElement">
  55         <xs:sequence minOccurs="0" maxOccurs="unbounded">
  56             <xs:choice>
  57                 <xs:element name="struct" nillable="true" type="structType" />
  58                 <xs:element name="array" nillable="true" type="arrayType" />
  59                 <xs:element name="value" nillable="true" type="valueType" />
  60             </xs:choice>
  61         </xs:sequence>
  62         <xs:attribute use="required" name="index" type="xs:int" />
  63     </xs:complexType>
  64     <xs:complexType name="arrayElement">
  65         <xs:sequence minOccurs="0" maxOccurs="unbounded">
  66             <xs:choice>
  67                 <xs:element name="value" nillable="true" type="valueType" />
  68                 <xs:element name="array" nillable="true" type="arrayType" />
  69                 <xs:element name="struct" nillable="true" type="structType" />
  70             </xs:choice>
  71         </xs:sequence>
  72         <xs:attribute use="required" name="index" type="xs:int" />
  73     </xs:complexType>
  74     <xs:complexType name="valueElement">
  75         <xs:simpleContent>
  76             <xs:extension base="xs:string">
  77                 <xs:attribute use="required" name="index" type="xs:int" />
  78             </xs:extension>
  79         </xs:simpleContent>
  80     </xs:complexType>
  81 </xs:schema>