-- XML schema extracted from ITU-T T.813 (06/2012)

<?xml version="1.0" ?>
<!-- A.3.1	Example of XML Schema for common header -->
<!-- The following example is common XML Schemas for all box types of JPEG 2000 family format. -->
<xs:schema xmlns:xs="http://www.iso.org/jpeg/2001/XMLSchema"
	targetNamespace="http://www.iso.org/jpxml"
	xmlns="http://www.iso.org/jpxml">

  <xs:attributeGroup name="attrs.box">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="offset"	type="xs:integer"	use="optional" />
    <xs:attribute name="type"	use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="box" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="attrs.4cc">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="type"	use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="fourcc" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="attrs.hex">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="type"	use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="hexbyte" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="attrs.int">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="type"	use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="integer" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="attrs.str">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="type"	use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="string" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="attrs.url">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="type"	use="required">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="location" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="attrs.root">
    <xs:attribute name="length"	type="xs:integer"	use="required" />
    <xs:attribute name="name"	type="xs:anyURL"	use="optional" />
  </xs:attributeGroup>

  <!-- add following XML Schemas for the JPXML document. -->
  <!-- A.3.2	Example of XML Schema for JPEG 2000 Part 1 image (single image) -->
  <!-- jpxml part 1 root element -->
  <xs:element name="jpxml">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.root" />
      <xs:sequence>
        <xs:element ref="jP__" />
        <xs:element ref="ftyp" />
        <xs:element ref="jp2h" />
        <xs:element ref="jp2i" minOccurs="0" />
        <xs:element ref="_xml_" minOccurs="0" />
        <xs:element ref="uuid" minOccurs="0" />
        <xs:element ref="uinf" minOccurs="0" />
        <xs:element ref="jp2c" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 box element -->
  <xs:element name="jP__">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="signature" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ftyp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="brand" />
        <xs:element ref="version" />
        <xs:element ref="compatibility"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="jp2h">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="ihdr" />
        <xs:element ref="bpcc" minOccurs="0" />
        <xs:element ref="colr" />
        <xs:element ref="pclr" minOccurs="0" />
        <xs:element ref="cmap" minOccurs="0" />
        <xs:element ref="cdef" minOccurs="0" />
        <xs:element ref="res_" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ihdr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="height">
          <xs:attributeGroup ref="attrs.int"
                             use="required" />
        </xs:element>
        <xs:element ref="width" />
        <xs:element ref="num_components" />
        <xs:element ref="depth" />
        <xs:element ref="compression" />
        <xs:element ref="colour_unknown" />
        <xs:element ref="ipr" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="colr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="method" />
        <xs:element ref="precedence" />
        <xs:element ref="approx" />
        <xs:element ref="colour" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="bpcc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="depth"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="pclr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:element ref="num_components" />
        <xs:element ref="depth"
                     maxOccurs="unbounded" />
        <xs:element ref="data"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="cdef">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="index" />
          <xs:element ref="type" />
          <xs:element ref="assoc" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="res_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="resc" minOccurs="0" />
        <xs:element ref="resd" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="resd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="vert_num" />
        <xs:element ref="vert_den" />
        <xs:element ref="hori_num" />
        <xs:element ref="hori_den" />
        <xs:element ref="vert_exp" />
        <xs:element ref="hori_exp" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="resd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="vert_num" />
        <xs:element ref="vert_den" />
        <xs:element ref="hori_num" />
        <xs:element ref="hori_den" />
        <xs:element ref="vert_exp" />
        <xs:element ref="hori_exp" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="uuid">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="id" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="uinf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="ulst" />
        <xs:element ref="url_" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ulst">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:element ref="uuid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="url_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="location" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="_xml_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="text" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="jp2c">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 content element -->

  <xs:element name="signature" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="brand" type="fourcc">
    <xs:attributeGroup ref="attrs.4cc"
                       use="required" />
  </xs:element>

  <xs:element name="version" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="compatibility" type="fourcc">
    <xs:attributeGroup ref="attrs.4cc"
                       use="required" />
  </xs:element>

  <xs:element name="width" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="num_components"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>


  <xs:element name="depth" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="compression"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="colour_unknown"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="ipr" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="method" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="precedence" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="approx" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="colour" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="num_entries"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="depth" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="data" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="index" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="type" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="assoc" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="vert_num" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_den" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_num" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_den" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_exp" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_exp" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="location" type="location">
    <xs:attributeGroup ref="attrs.url"
                       use="required" />
  </xs:element>

  <xs:element name="text" type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>


  <!-- A.3.3	Example of XML Schema for JPEG 2000 Part 2 image (single/layered image) -->
  <!-- jpxml part 2 root element -->
  <xs:element name="jpxml">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.root" />
      <xs:sequence>
        <xs:element ref="jP__" />
        <xs:element ref="ftyp" />
        <xs:element ref="rreq" />
        <xs:element ref="jp2h" />
        <xs:element ref="jpch" minOccurs="0" />
        <xs:element ref="jplh" minOccurs="0" />
        <xs:element ref="dtbl" minOccurs="0" />
        <xs:element ref="ftbl" minOccurs="0" />
        <xs:element ref="jp2i" minOccurs="0" />
        <xs:element ref="jp2c" minOccurs="0" />
        <xs:element ref="mdat" minOccurs="0" />
        <xs:element ref="comp" minOccurs="0" />
        <xs:element ref="drep" minOccurs="0" />
        <xs:element ref="roid" minOccurs="0" />
        <xs:element ref="cref" minOccurs="0" />
        <xs:element ref="asoc" minOccurs="0" />
        <xs:element ref="bfil" minOccurs="0" />
        <xs:element ref="chck" minOccurs="0" />
        <xs:element ref="mp7b" minOccurs="0" />
        <xs:element ref="free" minOccurs="0" />
        <xs:element ref="_xml_" minOccurs="0" />
        <xs:element ref="uuid" minOccurs="0" />
        <xs:element ref="uinf" minOccurs="0" />
        <xs:element ref="jclx" minOccurs="0" />
        <xs:element ref="j2cx" minOccurs="0" />
        <xs:element ref="grp_" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 box element -->
  <!-- ... -->
  <!-- part 2 box element -->
  <xs:element name="rreq">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="length" />
        <xs:element ref="fua_mask" />
        <xs:element ref="dc_mask" />
        <xs:element ref="num_std_flags" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="std_flag" />
          <xs:element ref="std_mask" />
        </xs:sequence>
        <xs:element ref="num_vender_features" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="vender_feature" />
          <xs:element ref="vender_mask" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dtbl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="location" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ftbl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="flst" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="flst">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="offset" />
          <xs:element ref="length" />
          <xs:element ref="data_reference" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="cref">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="flst" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="jpch">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="lbl_" minOccurs="0" />
        <xs:element ref="ihdr" />
        <xs:element ref="bpcc" minOccurs="0" />
        <xs:element ref="pclr" minOccurs="0" />
        <xs:element ref="cmap" minOccurs="0" />
        <xs:element ref="roid" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="jplh">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="lbl_" minOccurs="0" />
        <xs:element ref="cgrp" minOccurs="0" />
        <xs:element ref="opct" minOccurs="0" />
        <xs:element ref="cdef" minOccurs="0" />
        <xs:element ref="creq" minOccurs="0" />
        <xs:element ref="res_" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="colour">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:choice>
        <xs:sequence>
          <xs:element ref="enum_colour" />
          <xs:element ref="enum_param" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="vender_colour" />
          <xs:element ref="vendar_param" />
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="enum_param">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:choice>
        <xs:sequence>
          <xs:element ref="range_L" />
          <xs:element ref="offset_L" />
          <xs:element ref="range_a" />
          <xs:element ref="offset_a" />
          <xs:element ref="range_b" />
          <xs:element ref="offset_b" />
          <xs:element ref="illuminant" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="range_J" />
          <xs:element ref="offset_J" />
          <xs:element ref="range_a" />
          <xs:element ref="offset_a" />
          <xs:element ref="range_b" />
          <xs:element ref="offset_b" />
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="cgrp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="colr" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="opct">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="num_entries" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="creg">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="hori_size" />
        <xs:element ref="vert_size" />
        <xs:element ref="cds_num" />
        <xs:element ref="hori_resolution" />
        <xs:element ref="vert_resolution" />
        <xs:element ref="hori_offset" />
        <xs:element ref="vert_offset" />
        <xs:element ref="num_entries" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="free">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="comp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="copt" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="inst" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="copt">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="height" />
        <xs:element ref="width" />
        <xs:element ref="loop" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="inst">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="repeition" />
        <xs:element ref="duration" />
        <xs:element ref="instruction" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="instruction" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
    <xs:sequence>
      <xs:element ref="hori_offset" />
      <xs:element ref="vert_offset" />
      <xs:element ref="width" />
      <xs:element ref="height" />
      <xs:element ref="life" />
      <xs:element ref="next_use" />
      <xs:element ref="vert_crop_offset" />
      <xs:element ref="hori_crop_offset" />
      <xs:element ref="crop_width" />
      <xs:element ref="crop_height" />
    </xs:sequence>
  </xs:element>

  <xs:element name="nlst">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="asoc_num" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="lbl_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="label" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="bfil">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="drep">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="gtso" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="gtso">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="profile" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="roid">
    <xs:attributeGroup ref="attrs.box"
                       use="required" />
    <xs:sequence>
      <xs:element ref="num_entries" />
      <xs:element ref="contained" />
      <xs:element ref="type" />
      <xs:element ref="priority" />
      <xs:element ref="left" />
      <xs:element ref="top" />
      <xs:element ref="width" />
      <xs:element ref="height" />
    </xs:sequence>
  </xs:element>

  <xs:element name="chck">
    <xs:attributeGroup ref="attrs.box"
                       use="required" />
    <xs:sequence>
      <xs:element ref="signature_type" />
      <xs:element ref="source_type" />
      <xs:element ref="offset" />
      <xs:element ref="length" />
      <xs:element ref="data" />
    </xs:sequence>
  </xs:element>

  <xs:element name="mp7b">
    <xs:attributeGroup ref="attrs.box"
                       use="required" />
    <xs:sequence>
      <xs:element ref="data" />
    </xs:sequence>
  </xs:element>

  <!-- part 1 content element -->
  <!--  ... -->
  <!-- part 3 content element -->
  <xs:element name="length"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="offset" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="data_reference"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="enum_colour"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="enum_param" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="vender_colour"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vendar_param" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <!-- A.3.4	Example of XML Schema for JPEG 2000 Part 3 image (motion image) -->
  <!-- jpxml part 3 root element -->
  <xs:element name="jpxml">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.root" />
      <xs:sequence>
        <xs:element ref="jP__" />
        <xs:element ref="ftyp" />
        <xs:element ref="pdin" minOccurs="0" />
        <xs:element ref="moov" />
        <xs:element ref="mdat" minOccurs="0" />
        <xs:element ref="moof" minOccurs="0" />
        <xs:element ref="mfra" minOccurs="0" />
        <xs:element ref="meta" minOccurs="0" />
        <xs:element ref="meco" minOccurs="0" />
        <xs:element ref="skip" minOccurs="0" />
        <xs:element ref="free" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 box element -->
  <!-- part 12 box element -->
  <!-- ... -->
  <!-- part 3 box element -->
  <xs:element name="mjp2">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="predefined" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="width" />
        <xs:element ref="height" />
        <xs:element ref="hori_resolution" />
        <xs:element ref="vert_resolution" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="name" />
        <xs:element ref="depth" />
        <xs:element ref="predefined" />
        <xs:element ref="length" />
        <xs:element ref="jp2h" />
        <xs:element ref="fiel" minOccurs="0" />
        <xs:element ref="jp2p" minOccurs="0" />
        <xs:element ref="jp2x" minOccurs="0" />
        <xs:element ref="jsub" minOccurs="0" />
        <xs:element ref="orfo" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="fiel">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="field_count" />
        <xs:element ref="field_order" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="orfo">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="original_field_count" />
        <xs:element ref="original_field_order" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="jp2p">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="compatibility" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="jp2x">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="jsub">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="hori_sub" />
        <xs:element ref="vert_sub" />
        <xs:element ref="hori_offset" />
        <xs:element ref="vert_offset" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="raw_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="reserved" />
        <xs:element ref="channel_count" />
        <xs:element ref="sample_size" />
        <xs:element ref="predefined" />
        <xs:element ref="reserved" />
        <xs:element ref="sample_rate" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 3 content element -->
  <xs:element name="reserved" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="predefined"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_resolution"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_resolution"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="name" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="field_count"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="field_order"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="original_field_count"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="original_field_order"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="version" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="flag" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_sub" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_sub" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="channel_count"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_rate"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <!-- A.3.5	Example of XML Schema for JPEG 2000 Part 6 image (document image) -->

  <!-- jpxml part 6 root element -->
  <xs:element name="jpxml">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.root" />
      <xs:sequence>
        <xs:element ref="jP__" />
        <xs:element ref="ftyp" />
        <xs:element ref="jp2h" minOccurs="0" />
        <xs:element ref="mhdr" />
        <xs:element ref="pcol" minOccurs="0" />
        <xs:element ref="page" />
        <xs:element ref="sdat" minOccurs="0" />
        <xs:element ref="dtbl" minOccurs="0" />
        <xs:element ref="ftbl" minOccurs="0" />
        <xs:element ref="cref" minOccurs="0" />
        <xs:element ref="jp2i" minOccurs="0" />
        <xs:element ref="jp2c" minOccurs="0" />
        <xs:element ref="_xml_" minOccurs="0" />
        <xs:element ref="uuid" minOccurs="0" />
        <xs:element ref="uinf" minOccurs="0" />
        <xs:element ref="free" minOccurs="0" />
        <xs:element ref="htxb" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 box element -->
  <!-- part 2 box element -->
  <!-- ... -->
  <!-- part 6 box element -->
  <xs:element name="mhdr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_pages" />
        <xs:element ref="profile" />
        <xs:element ref="self_contained" />
        <xs:element ref="offset" />
        <xs:element ref="length" />
        <xs:element ref="mask_coder" />
        <xs:element ref="image_coder" />
        <xs:element ref="ipr" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="pcol">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="lbl_"
                     minOccurs="0" />
        <xs:element ref="meta"
                     minOccurs="0" />
        <xs:element ref="pagt" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ppcl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="offset" />
        <xs:element ref="length" />
        <xs:element ref="data_reference" />
        <xs:element ref="index" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="pagt">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="offset" />
          <xs:element ref="length" />
          <xs:element ref="data_reference" />
          <xs:element ref="flag" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sdal">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="id" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sref">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="id" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="page">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="phdr" />
        <xs:element ref="ppcl"
                     minOccurs="0" />
        <xs:element ref="res_"
                     minOccurs="0" />
        <xs:element ref="bclr"
                     minOccurs="0" />
        <xs:element ref="meta"
                     minOccurs="0" />
        <xs:element ref="lbl_"
                     minOccurs="0" />
        <xs:element ref="lobj"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="phdr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_lobjs" />
        <xs:element ref="height" />
        <xs:element ref="width" />
        <xs:element ref="orientation" />
        <xs:element ref="colour" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="lobj">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="ihdr" />
        <xs:element ref="meta"
                     minOccurs="0" />
        <xs:element ref="lbl_"
                     minOccurs="0" />
        <xs:element ref="objc"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="lhdr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="id" />
        <xs:element ref="height" />
        <xs:element ref="width" />
        <xs:element ref="top" />
        <xs:element ref="left" />
        <xs:element ref="style" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="objc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="ohdr" />
        <xs:element ref="bclr"
                     minOccurs="0" />
        <xs:element ref="meta"
                     minOccurs="0" />
        <xs:element ref="lbl_"
                     minOccurs="0" />
        <xs:element ref="scal"
                     minOccurs="0" />
        <xs:element ref="jp2h"
                     minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="lhdr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="no_codestream" />
        <xs:element ref="top" />
        <xs:element ref="left" />
        <xs:element ref="offset" />
        <xs:element ref="length" />
        <xs:element ref="data_reference" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="scal">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="vert_num" />
        <xs:element ref="vert_den" />
        <xs:element ref="hori_num" />
        <xs:element ref="hori_den" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="bclr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bcvl" />
        <xs:element ref="colr"
                     minOccurs="0" />
        <xs:element ref="bpcc"
                     minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="bcvl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_components" />
        <xs:element ref="depth" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="htxb">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="lbl_"
                     minOccurs="0" />
        <xs:sequence maxOccurs="unbounded">
          <xs:choice>
            <xs:element ref="_xml_" />
            <xs:element ref="uuid" />
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="phtx">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="flst" />
        <xs:element ref="lbl_"
                     minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 content element -->
  <!-- part 2 content element -->
  <!--... -->
  <!-- part 6 content element -->
  <xs:element name="profile" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="self_contained" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="offset" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="mask_coder" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="image_coder" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="flag" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="num_lobjs"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="orientation"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="top" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="left" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="style" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="no_codestream" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <!-- A.3.6	Example of XML Schema for JPEG 2000 Part 8 image (security) -->

  <!-- part 1 box element -->
  <!-- part 8 box element -->
  <xs:element name="gprt">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type_flag" />
        <xs:element ref="size_flag" />
        <xs:element ref="location_flag" />
        <xs:element ref="reserved" />
        <xs:choice>
          <xs:sequence>
            <xs:element ref="num_entries" />
            <xs:sequence maxOccurs="unbounded">
              <xs:element ref="offset_size" />
              <xs:element ref="box_length" />
              <xs:element ref="box_type" />
              <xs:element ref="box_ext_length" />
              <xs:element ref="offset" />
            </xs:sequence>
          </xs:sequence>
          <xs:sequence>
            <xs:element ref="total_length" />
            <xs:element ref="total_ext_length" />
          </xs:sequence>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 12 box element -->
  <!-- followings need part 12 -->
  <xs:element name="schi">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:choice>
          <!-- for Decryption -->
          <xs:sequence>
            <xs:element ref="box_protected" />
            <xs:choice>
              <xs:element ref="bcip" />
              <xs:element ref="scip" />
            </xs:choice>
            <xs:element ref="gran" />
          </xs:sequence>
          <!-- for Authentication -->
          <xs:sequence>
            <xs:element ref="auth" />
            <xs:element ref="gran"
                         minOccurs="0" />
          </xs:sequence>
        </xs:choice>
        <xs:element ref="vall" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="bcip">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="cipher_id" />
        <xs:element ref="cipher_mode" />
        <xs:element ref="padding_mode" />
        <xs:element ref="size" />
        <xs:element ref="keyt" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="scip">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="cipher_id" />
        <xs:element ref="keyt" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="auth">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="method_id" />
        <xs:element ref="hash_id" />
        <xs:element ref="size" />
        <xs:element ref="keyt" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="keyt">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="size" />
        <xs:element ref="key_info" />
        <xs:element ref="gran"
                     minOccurs="0" />
        <xs:element ref="vall" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="gran">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="granularity" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="vall">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="size" />
        <xs:element ref="num_entries" />
        <xs:element ref="count"
               maxOccurs="unbounded" />
        <xs:element ref="value"
               maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ides">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="dest" />
          <xs:element ref="item_id" />
          <xs:element ref="desd" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dest">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="version" />
        <xs:element ref="location" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="vide">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="layer_start" />
        <xs:element ref="layer_count" />
        <xs:element ref="res_start" />
        <xs:element ref="res_count" />
        <xs:element ref="hori_offset" />
        <xs:element ref="hori_lenght" />
        <xs:element ref="vert_offset" />
        <xs:element ref="vert_length" />
        <xs:element ref="colour" />
        <xs:element ref="time_start" />
        <xs:element ref="time_length" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="j2ke">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="vide"
                     minOccurs="0" />
        <xs:element ref="tile_start" />
        <xs:element ref="tile_count" />
        <xs:element ref="precinct_start" />
        <xs:element ref="precinct_count" />
        <xs:element ref="j2k_packet_start" />
        <xs:element ref="j2k_packet_count" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="icor">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="item_id" />
        <xs:element ref="desc_id" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="port">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="resolution" />
        <xs:element ref="layer" />
        <xs:element ref="cropped_width" />
        <xs:element ref="cropped_height" />
        <xs:sequence minOccurs="0" >
          <xs:element ref="startx" />
          <xs:element ref="srarty" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="attr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="resolution" />
        <xs:element ref="layer" />
        <xs:element ref="cropped_width" />
        <xs:element ref="cropped_height" />
        <xs:sequence minOccurs="0" >
          <xs:element ref="startx" />
          <xs:element ref="srarty" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sces">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="predefined" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="width" />
        <xs:element ref="height" />
        <xs:element ref="hori_resolution" />
        <xs:element ref="vert_resolution" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="name" />
        <xs:element ref="depth" />
        <xs:element ref="predefined" />
        <xs:element ref="clap" minOccurs="0" />
        <xs:element ref="pasp" minOccurs="0" />
        <xs:element ref="resolution" />
        <xs:element ref="layer" />
        <xs:element ref="cropped_width" />
        <xs:element ref="cropped_height" />
        <xs:sequence minOccurs="0" >
          <xs:element ref="startx" />
          <xs:element ref="srarty" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dces">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="predefined" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="width" />
        <xs:element ref="height" />
        <xs:element ref="hori_resolution" />
        <xs:element ref="vert_resolution" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="name" />
        <xs:element ref="depth" />
        <xs:element ref="predefined" />
        <xs:element ref="clap" minOccurs="0" />
        <xs:element ref="pasp" minOccurs="0" />
        <xs:element ref="resolution" />
        <xs:element ref="layer" />
        <xs:element ref="cropped_width" />
        <xs:element ref="cropped_height" />
        <xs:sequence minOccurs="0" >
          <xs:element ref="startx" />
          <xs:element ref="srarty" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 1 content element -->
  <!-- part 8 content element -->
  <xs:element ref="type_flag" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="size_flag" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="location_flag"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="reserved" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="offset_size" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="box_length" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="box_type" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="box_ext_length" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="offset" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="total_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="total_ext_length" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <!-- part 12 box element -->
  <!-- followings need part 12 -->
  <xs:element ref="box_protected"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="cipher_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="method_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="hash_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="cipher_mode"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="padding_mode"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="size" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="key_info" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="granularity"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="num_entries" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="count" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="value" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="item_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="layer_start"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="layer_count"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="res_start" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="res_count" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="hori_offset"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="hori_lenght"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="vert_offset"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="vert_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="time_start" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="time_length"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="tile_start" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="tile_count" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="precinct_start"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="precinct_count"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="j2k_packet_start"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="j2k_packet_count"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="item_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="desc_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="reserved" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="predefined" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="hori_resolution"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="vert_resolution"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="resolution" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="layer" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="cropped_width"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="cropped_height"
                type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="startx" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element ref="srarty" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>


  <!-- A.3.7	Example of XML Schema for JPEG 2000 Part 12 image (motion image) -->

  <!-- part 12 box element -->
  <xs:element name="mdat">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="free">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="skip">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="pdin">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="rate" />
          <xs:element ref="inital_delay" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="moov">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="mvhd" />
        <xs:element ref="trak"
                     maxOccurs="unbounded" />
        <xs:element ref="mvex" minOccurs="0" />
        <xs:element ref="udta" minOccurs="0" />
        <xs:element ref="meta" minOccurs="0" />
        <xs:element ref="meco" minOccurs="0" />
        <xs:element ref="ipmc" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mvhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="creation_time" />
        <xs:element ref="modification_time" />
        <xs:element ref="time_scale" />
        <xs:element ref="duration" />
        <xs:element ref="rate" />
        <xs:element ref="volume" />
        <xs:element ref="reserved" />
        <xs:element ref="matrix" />
        <xs:element ref="predefined" />
        <xs:element ref="next_track_id" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="trak">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="tkhd" />
        <xs:element ref="mdia" />
        <xs:element ref="tref" minOccurs="0" />
        <xs:element ref="edts" minOccurs="0" />
        <xs:element ref="udta" minOccurs="0" />
        <xs:element ref="meta" minOccurs="0" />
        <xs:element ref="meco" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tkhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="creation_time" />
        <xs:element ref="modification_time" />
        <xs:element ref="track_id" />
        <xs:element ref="reserved" />
        <xs:element ref="duration" />
        <xs:element ref="reserved" />
        <xs:element ref="layer" />
        <xs:element ref="alternate_group" />
        <xs:element ref="volume" />
        <xs:element ref="reserved" />
        <xs:element ref="matrix" />
        <xs:element ref="width" />
        <xs:element ref="height" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tref">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:choice>
          <xs:element ref="hint" />
          <xs:element ref="cdsc" />
          <xs:element ref="hind" />
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hint">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="track_id" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="cdsc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="track_id" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hind">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="track_id" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mdia">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="mdhd" />
        <xs:element ref="hdlr" />
        <xs:element ref="minf" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mdhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="creation_time" />
        <xs:element ref="modification_time" />
        <xs:element ref="time_scale" />
        <xs:element ref="duration" />
        <xs:element ref="language" />
        <xs:element ref="predefined" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hdlr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="predefined" />
        <xs:element ref="hdlr_type" />
        <xs:element ref="reserved" />
        <xs:element ref="name" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="minf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:choice>
          <xs:element ref="vmhd" />
          <xs:element ref="smhd" />
          <xs:element ref="hmhd" />
          <xs:element ref="nmhd" />
        </xs:choice>
        <xs:element ref="stbl" />
        <xs:element ref="dinf" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="vmhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="graphic_mode" />
        <xs:element ref="op_code" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="smhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="balance" />
        <xs:element ref="reserved" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hmhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="max_pdu_size" />
        <xs:element ref="avg_pdu_size" />
        <xs:element ref="max_bitrate" />
        <xs:element ref="avg_bitrate" />
        <xs:element ref="reserved" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stbl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="stsd" />
        <xs:element ref="stdp" minOccurs="0" />
        <xs:element ref="ctts" />
        <xs:element ref="stss" minOccurs="0" />
        <xs:element ref="stsh" minOccurs="0" />
        <xs:element ref="sdtp" minOccurs="0" />
        <xs:choice>
          <xs:element ref="stsz" />
          <xs:element ref="stz2" />
        </xs:choice>
        <xs:element ref="stsc" />
        <xs:choice>
          <xs:element ref="stco" />
          <xs:element ref="co64" />
        </xs:choice>
        <xs:element ref="padb" minOccurs="0" />
        <xs:element ref="subs" minOccurs="0" />
        <xs:element ref="sbgp" minOccurs="0"
                     maxOccurs="unbounded" />
        <xs:element ref="sgpd" minOccurs="0"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="btrt">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="buffer_size" />
        <xs:element ref="max_bitrate" />
        <xs:element ref="avg_bitrate" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="metx">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="content_encoding" />
        <xs:element ref="namespace" />
        <xs:element ref="location" />
        <xs:element ref="btrt"
                     minOccurs="0"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mett">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="content_encoding" />
        <xs:element ref="mine_format" />
        <xs:element ref="btrt"
                     minOccurs="0"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="pasp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="hori_spacing" />
        <xs:element ref="vert_spacing" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="clap">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="width_num" />
        <xs:element ref="width_den" />
        <xs:element ref="height_num" />
        <xs:element ref="height_den" />
        <xs:element ref="hori_offset_num" />
        <xs:element ref="hori_offset_den" />
        <xs:element ref="vert_offset_num" />
        <xs:element ref="vert_offset_den" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stsd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="mjp2" />
          <xs:element ref="raw_" />
          <xs:element ref="twos" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="VideoCoding4CC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="predefined" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="width" />
        <xs:element ref="height" />
        <xs:element ref="hori_resolution" />
        <xs:element ref="vert_resolution" />
        <xs:element ref="reserved" />
        <xs:element ref="predefined" />
        <xs:element ref="name" />
        <xs:element ref="depth" />
        <xs:element ref="predefined" />
        <xs:element ref="clap" minOccurs="0" />
        <xs:element ref="pasp" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="AudioCoding4CC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="reserved" />
        <xs:element ref="channel_count" />
        <xs:element ref="sample_size" />
        <xs:element ref="predefined" />
        <xs:element ref="reserved" />
        <xs:element ref="sample_rate" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stdp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="priority" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stts">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sample_count" />
          <xs:element ref="sample_delta" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ctts">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sample_count" />
          <xs:element ref="sample_offset" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stss">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sample_number" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stsh">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element
                     ref="shadowed_sample_number" />
          <xs:element ref="sync_sample_number" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sdtp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="reserved" />
          <xs:element ref="sample_depends_on" />
          <xs:element ref="sample_is_depends_on" />
          <xs:element ref="sample_has_redundancy" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="edts">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="elst"
                     minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="elst">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="duration" />
          <xs:element ref="media_time" />
          <xs:element ref="media_rate_integer" />
          <xs:element ref="media_rate_fraction" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dinf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:choice>
          <xs:element ref="dref" />
          <xs:element ref="url_" />
          <xs:element ref="urn_" />
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="url_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="location" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="urn_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="name" />
        <xs:element ref="location" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dref">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:choice>
            <xs:element ref="url_" />
            <xs:element ref="urn_" />
          </xs:choice>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stsz">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="sample_size" />
        <xs:element ref="num_entries" />
        <xs:element ref="entry_size"
                     minOccurs="0"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stz2">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="reserved" />
        <xs:element ref="field_size" />
        <xs:element ref="num_entries" />
        <xs:element ref="entry_size"
                     minOccurs="0"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stsc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="first_chunk" />
          <xs:element ref="sample_per_chunk" />
          <xs:element ref="description_index" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="stco">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:element ref="chunk_offset"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="co64">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:element ref="chunk_offset"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="padb">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="pad1" />
        <xs:element ref="pad2" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="subs">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sample_delta" />
          <xs:element ref="num_subsample" />
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="subsample_size" />
            <xs:element ref="subsample_priority" />
            <xs:element ref="discardable" />
            <xs:element ref="reserved" />
          </xs:sequence>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mvex">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="mehd"
                     minOccurs="0" />
        <xs:element ref="trex" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mehd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="duration" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="trex">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="track_id" />
        <xs:element ref="sample_index" />
        <xs:element ref="sample_duration" />
        <xs:element ref="sample_size" />
        <xs:element ref="sample_flags" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="moof">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="mfhd" />
        <xs:element ref="traf" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mfhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="sequence_number" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="traf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="tfhd" />
        <xs:element ref="traf" minOccurs="0" />
        <xs:element ref="trun" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tfhd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="track_id" />
        <xs:element ref="base_delta_offset" />
        <xs:element ref="sample_index" />
        <xs:element ref="sample_duration" />
        <xs:element ref="sample_size" />
        <xs:element ref="sample_flags" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="trun">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="track_id" />
        <xs:element ref="num_entries" />
        <xs:element ref="delta_offset" />
        <xs:element ref="first_sample_flags" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sample_duration" />
          <xs:element ref="sample_size" />
          <xs:element ref="sample_flags" />
          <xs:element ref="sample_time_offset" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="mfra">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="tfra" />
        <xs:element ref="mfro" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tfra">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="track_id" />
        <xs:element ref="reserved" />
        <xs:element ref="traf_index_size" />
        <xs:element ref="trun_index_size" />
        <xs:element ref="sample_index_size" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="time" />
          <xs:element ref="moof_offset" />
          <xs:element ref="traf_index" />
          <xs:element ref="trun_index" />
          <xs:element ref="sample_index" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sbgp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="type" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sample_count" />
          <xs:element
                 ref="group_description_index" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sbgd">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="type" />
        <xs:element ref="default_length" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="description_length" />
          <xs:element ref="data" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="udta">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="cprt"
                     minOccurs="0"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="cprt">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="language" />
        <xs:element ref="notice" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tsel">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="switch_group" />
        <xs:element ref="attributes" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="meta">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:choice minOccurs="0">
          <xs:element ref="_xml_" />
          <xs:element ref="bxml" />
        </xs:choice>
        <xs:sequence>
          <xs:element ref="iloc" minOccurs="0" />
          <xs:element ref="pitm" minOccurs="0" />
          <xs:element ref="ipro" minOccurs="0" />
          <xs:element ref="iinf" minOccurs="0" />
          <xs:element ref="ipmc" minOccurs="0" />
          <xs:element ref="fiim" minOccurs="0" />
          <xs:element ref="hdlr" minOccurs="0" />
          <xs:element ref="dinf" minOccurs="0" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="_xml_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="text" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="bxml">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="iloc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:choice>
          <xs:sequence>
            <xs:element ref="offset_size" />
            <xs:element ref="length_size" />
            <xs:element ref="base_offset_size" />
            <xs:element ref="reserved" />
            <xs:element ref="num_entries" />
            <xs:sequence maxOccurs="unbounded">
              <xs:element ref="item_id" />
              <xs:element ref="data_reference" />
              <xs:element ref="base_offset" />
              <xs:element ref="sample_index" />
              <xs:element ref="num_extents" />
              <xs:sequence maxOccurs="unbounded">
                <xs:element ref="extent_offset" />
                <xs:element ref="extent_length" />
              </xs:sequence>
            </xs:sequence>
          </xs:sequence>
          <xs:element ref="item_id" />
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ipro">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="sinf" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="infe">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="item_id" />
        <xs:element ref="item_protection_index" />
        <xs:element ref="item_name" />
        <xs:element ref="content_type" />
        <xs:element ref="content_encoding" />
        <xs:element ref="type" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="iinf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:element ref="infe"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="meco">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="mere"
                     minOccurs="0"
                     maxOccurs="unbounded" />
        <xs:element ref="meta"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sinf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="frma" />
        <xs:element ref="imif" minOccurs="0" />
        <xs:element ref="schm" minOccurs="0" />
        <xs:element ref="schi" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="frma">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data_format" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="imif">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="metabox_relaion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ipmc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="tool_list" />
        <xs:element ref="num_entries" />
        <xs:element ref="metabox_relaion" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="schm">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="schema_type" />
        <xs:element ref="schema_version" />
        <xs:element ref="schema_location" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="schi">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="fpar" />
        <xs:element ref="fecr" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="fiin">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:element ref="paen"
                     maxOccurs="unbounded" />
        <xs:element ref="segr" minOccurs="0" />
        <xs:element ref="gitn" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="fpar">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="packet_payload_size" />
        <xs:element ref="reserved" />
        <xs:element ref="FEC_encoding_id" />
        <xs:element ref="FEC_instance_id" />
        <xs:element ref="max_source_block_length" />
        <xs:element ref="symbol_length" />
        <xs:element ref="max_num_symbols" />
        <xs:element ref="scheme_specific_info" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="block_count" />
          <xs:element ref="block_size" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="segr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="num_group_ids" />
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="group_id" />
          </xs:sequence>
          <xs:element ref="num_hint_track_ids" />
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="hint_track_id" />
          </xs:sequence>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="gitn">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="num_entries" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="group_id" />
          <xs:element ref="group_name" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="rtp_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="track_version" />
        <xs:element ref="compatible_version" />
        <xs:element ref="max_packet_size" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="tims" />
          <xs:element ref="tsro"
                       minOccurs="0" />
          <xs:element ref="snro"
                       minOccurs="0" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="srtp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="track_version" />
        <xs:element ref="compatible_version" />
        <xs:element ref="max_packet_size" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="tims" />
          <xs:element ref="srpp" />
          <xs:element ref="tsro" minOccurs="0" />
          <xs:element ref="snro" minOccurs="0" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tims">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="time_scale" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tsro">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="offset" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="snro">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="offset" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="srpp">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="version" />
        <xs:element ref="flag" />
        <xs:element ref="encryption_rtp" />
        <xs:element ref="encryption_rtcp" />
        <xs:element ref="integrity_rtp" />
        <xs:element ref="integrity_rtcp" />
        <xs:element ref="schm" />
        <xs:element ref="schi"
                     minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="rtpo">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="offset" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hinti">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:choice>
          <xs:element ref="rtp_" />
          <xs:element ref="sdp_" />
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="rtp_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="format" />
        <xs:element ref="text" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="sdp_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="text" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hinf">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="trpy" minOccurs="0" />
        <xs:element ref="nump" minOccurs="0" />
        <xs:element ref="tpyl" minOccurs="0" />
        <xs:element ref="totl" minOccurs="0" />
        <xs:element ref="npck" minOccurs="0" />
        <xs:element ref="tpay" minOccurs="0" />
        <xs:element ref="maxr" minOccurs="0"
                     maxOccurs="unbounded" />
        <xs:element ref="dmed" minOccurs="0" />
        <xs:element ref="dimm" minOccurs="0" />
        <xs:element ref="drep" minOccurs="0" />
        <xs:element ref="tmin" minOccurs="0" />
        <xs:element ref="tmax"  minOccurs="0" />
        <xs:element ref="pmax" minOccurs="0" />
        <xs:element ref="dmax" minOccurs="0" />
        <xs:element ref="payt" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="trpy">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tryl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dmed">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dima">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="drep">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="totl">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tpay">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="nump">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="packets_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="npack">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="packets_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tmin">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="time" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="tmax">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="time" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="dmax">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="time" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="pmax">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="maxr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="period" />
        <xs:element ref="bytes_sent" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="hnti">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="payload_id" />
        <xs:element ref="count" />
        <xs:element ref="rtpmap" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="fdp_">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="reserved" />
        <xs:element ref="data_reference" />
        <xs:element ref="track_version" />
        <xs:element ref="compatible_version" />
        <xs:element ref="partition_entry_id" />
        <xs:element ref="FEC_overhead" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="fdsa">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="fdpa"
                     maxOccurs="unbounded" />
        <xs:element ref="extr"
                     minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="fdpa">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="extension_size" />
        <xs:element ref="extension" />
        <xs:element ref="packet_size" />
        <xs:element ref="packet" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="extr">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.box"
                         use="required" />
      <xs:sequence>
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- part 12 content element -->

  <xs:element name="matrix">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hexbyte"
                         use="required" />
      <xs:sequence minOccurs="9" maxOccurs="9">
        <xs:element ref="cell" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="cell" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="version" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="flag" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="rate" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="data" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="data_reference"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="data_format"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>
  <xs:element name="inital_delay" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="creation_time"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="modification_time"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="time_scale"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="duration"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="volume" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="reserved" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="predefined" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="next_track_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="track_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="layer" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="alternate_group"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="width" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="height" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="language"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hdlr_type"
  type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="name" type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="balance" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="max_pdu_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="avg_pdu_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="max_bitrate"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="avg_bitrate"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="buffer_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="content_encoding"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="namespace" type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="location" type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="mine_format"
               type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="hori_spacing"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_spacing"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="width_num"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="width_den"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="height_num"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="height_den"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_offset_num"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_offset_den"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_offset_num"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_offset_den"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hori_resolution"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="vert_resolution"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="depth" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="channel_count"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_rate"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="priority" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_delta"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="num_entries"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_count"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_number"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="shadowed_sample_number"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sync_sample_number"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_depends_on"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_is_depends_on"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_has_redundancy"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="media_time"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="media_rate_integer"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="media_rate_fraction"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="field_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="first_chunk"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_per_chunk"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="description_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="chunk_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="pad1" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="pad2" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="num_subsample"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="subsample_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="subsample_priority"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="discardable"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_duration"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_flags"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sequence_number"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="base_delta_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="delta_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="first_sample_flags"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_time_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="traf_index_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="trun_index_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_index_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="moof_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="traf_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="trun_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="type" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="group_description_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="type" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="default_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="description_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="language" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="notice" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="switch_group"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="attributes"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="offset_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="length_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="base_offset_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="item_id" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="base_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="sample_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="num_extents"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="extent_offset"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="extent_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="item_protection_index"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="item_name"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="content_type"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="content_encoding"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="metabox_relaion"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="tool_list" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="metabox_relaion"
               type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="schema_type"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="schema_version"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="schema_location"
               type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="packet_payload_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="FEC_encoding_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="FEC_instance_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="max_source_block_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="symbol_length"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="max_num_symbols"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="scheme_specific_info"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="block_count"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="block_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="num_group_ids"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="num_hint_track_ids"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="hint_track_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="group_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="group_name"
               type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="track_version"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="compatible_version"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="max_packet_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="max_packet_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="offset" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="encryption_rtp"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="encryption_rtcp"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="integrity_rtp"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="integrity_rtcp"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="offset" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="format" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="text" type="xs:string">
    <xs:attributeGroup ref="attrs.str"
                       use="required" />
  </xs:element>

  <xs:element name="bytes_sent"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="packets_sent"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="time" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="period" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="bytes_sent"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="payload_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="count" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="rtpmap" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="partition_entry_id"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="FEC_overhead"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="header"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="extension_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="extension"
               type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

  <xs:element name="packet_size"
               type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

  <xs:element name="packet" type="hexbyte">
    <xs:attributeGroup ref="attrs.hex"
                       use="required" />
  </xs:element>

</xs:schema>