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

<?xml version="1.0" ?>
<xs:schema	xmlns:xs="http://www.iso.org/jpeg/2001/XMLSchema"
	targetNamespace="http://www.iso.org/jpxml"
	xmlns="http://www.iso.org/jpxml">

  <!-- B.3.1	Example of XML Schema for common header -->
  <!-- The following example is common XML Schemas for all marker types of JPEG 2000 family codestreams.-->

  <xs:attributeGroup name="attrs.marker">
    <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="marker" />
        </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. -->
  <!-- ... -->

  <!-- B.3.2	Example of XML Schema for JPEG 2000 Part 1 codestream (single image) -->
  <!-- part 1 marker element -->
  <xs:element name="SOT">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Isot" />
        <xs:element ref="Psot" />
        <xs:element ref="TPsot" />
        <xs:element ref="TNsot" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SIZ">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Rsiz" />
        <xs:element ref="Xsiz" />
        <xs:element ref="Ysiz" />
        <xs:element ref="OXsiz" />
        <xs:element ref="OYsiz" />
        <xs:element ref="XTsiz" />
        <xs:element ref="YTsiz" />
        <xs:element ref="XTOsiz" />
        <xs:element ref="YTOsiz" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Csiz" />
          <xs:element ref="XRsiz" />
          <xs:element ref="YRsiz" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="COD">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Scod" />
        <xs:element ref="SGcod" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPcod" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="COC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Ccoc" />
        <xs:element ref="Scoc" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPcoc" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SGcod">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="progression" />
        <xs:element ref="num_layers" />
        <xs:element ref="colour_conv" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPcod">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_levels" />
        <xs:element ref="xcb" />
        <xs:element ref="ycb" />
        <xs:element ref="style" />
        <xs:element ref="wavelet" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ppy" />
          <xs:element ref="ppx" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPcoc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_levels" />
        <xs:element ref="xcb" />
        <xs:element ref="ycb" />
        <xs:element ref="style" />
        <xs:element ref="wavelet" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ppy" />
          <xs:element ref="ppx" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="RGN">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Crgn" />
        <xs:element ref="Srgn" />
        <xs:element ref="SPrgn" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="QCD">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Sqcd" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPqcd" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="QCC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Cqcc" />
        <xs:element ref="Sqcc" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPqcc" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="POC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="RSpoc" />
        <xs:element ref="CSpoc" />
        <xs:element ref="LYEoc" />
        <xs:element ref="REpoc" />
        <xs:element ref="CEpoc" />
        <xs:element ref="Ppoc" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="TLM">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Ztlm" />
        <xs:element ref="Stlm" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Ttlm" />
          <xs:element ref="Ptlm" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PLM">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="Zplm" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Nplm" />
          <xs:element ref="Iplm" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PLT">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Zplm" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Iplm" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PPM">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Zppm" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Nppm" />
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="Ippm" />
          </xs:sequence>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PPT">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Zppt" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Ippt" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SOP">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Nsop" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="CRG">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="Xcrg" />
        <xs:element ref="Ycrg" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="COM">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Rcom" />
        <xs:element ref="Ccom" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  <xs:element name="ycb"  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="wavelet"  type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  <!-- B.3.3	Example of XML Schema for JPEG 2000 Part 2 codestream (single/layered image) -->
  <!-- part 1 marker element -->
  <!-- ... -->

  <!-- part 2 marker element -->
  <xs:element name="SPcod">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_levels" />
        <xs:element ref="xcb" />
        <xs:element ref="ycb" />
        <xs:element ref="style" />
        <xs:element ref="wavelet" />
        <xs:element ref="sso" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ppy" />
          <xs:element ref="ppx" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPcoc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_levels" />
        <xs:element ref="xcb" />
        <xs:element ref="ycb" />
        <xs:element ref="style" />
        <xs:element ref="wavelet" />
        <xs:element ref="sso" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ppy" />
          <xs:element ref="ppx" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPrgn">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="shift" />
        <xs:element ref="XArgn" />
        <xs:element ref="YArgn" />
        <xs:element ref="XBrgn" />
        <xs:element ref="YBrgn" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="DCO">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Sdco" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPdco" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="VMS">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Cvms" />
        <xs:element ref="Svms" />
        <xs:element ref="Wvms" />
        <xs:element ref="Rvms" />
        <xs:element ref="Avms" />
        <xs:element ref="Bvms" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="VMS">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Cvms" />
        <xs:element ref="Svms" />
        <xs:element ref="Wvms" />
        <xs:element ref="Rvms" />
        <xs:element ref="Avms" />
        <xs:element ref="Bvms" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="DFS">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Sdfs" />
        <xs:element ref="Idfs" />
        <xs:element ref="Ddfs" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ADS">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Sads" />
        <xs:element ref="IOads" />
        <xs:element ref="DOads" />
        <xs:element ref="ISads" />
        <xs:element ref="DSads" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ATK">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Satk" />
        <xs:element ref="Katk" />
        <xs:element ref="Natk" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Oatk" />
          <xs:element ref="Eatk" />
          <xs:element ref="Batk" />
          <xs:element ref="LCatk" />
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="Aatk" />
          </xs:sequence>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="CBD">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Ncbd" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="BDcbd" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="MCT">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Zmct" />
        <xs:element ref="Imct" />
        <xs:element ref="Ymct" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPmct" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="MCC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Zmcc" />
        <xs:element ref="Imcc" />
        <xs:element ref="Ymcc" />
        <xs:element ref="Qmcc" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Xmcc" />
          <xs:element ref="Nmcc" />
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="Cmcc" />
          </xs:sequence>
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="Mmcc" />
          </xs:sequence>
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="Wmcc" />
          </xs:sequence>
          <xs:element ref="Tmcc" />
          <xs:element ref="Omcc" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="MCO">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Nmco" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Imco" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="NLT">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Cnlt" />
        <xs:element ref="BDnlt" />
        <xs:element ref="Tnlt" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="STnlt" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="QPD">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="PLqpd" />
        <xs:element ref="PPqpd" />
        <xs:element ref="Sqpd" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPqpd" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="QPC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Cqpc" />
        <xs:element ref="PLqpc" />
        <xs:element ref="PPqpc" />
        <xs:element ref="Sqpc" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="SPqpc" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  <!-- B.3.4	Example of XML Schema for JPEG 2000 Part 8 codestream (security) -->
  <!-- part 1 marker element -->
  <!-- ... -->
  <!-- part 8 marker element -->
  <xs:element name="INSEC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="index" />
        <xs:element ref="Rinsec" />
        <xs:element ref="APinsec" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SEC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Zsec" />
        <xs:element ref="Psec" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Tool" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Psec">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Fpsec" />
        <xs:element ref="Ntool" />
        <xs:element ref="Imax" />
        <xs:element ref="Ptrlcp" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Tool">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="type" />
        <xs:element ref="index" />
        <xs:element ref="IDtool" />
        <xs:element ref="length" />
        <xs:element ref="ZOI" />
        <xs:element ref="LPid" />
        <xs:element ref="Pid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- IDtool for non-normative tools -->
  <xs:element name="IDtool">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="IDaid" />
        <xs:element ref="IDransl" />
        <xs:element ref="IDrans" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ZOI">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="NZzoi" />
        <xs:element ref="Zone"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Zone">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="DCzoi" />
        <xs:element ref="Pzoi"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Pzoi">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Mzoi" />
        <xs:element ref="Nzoi" />
        <xs:element ref="Izoi"
                     maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Pid for normative tools -->
  <xs:element name="Pid">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="NTid" />
        <xs:element ref="NTdomain" />
        <xs:element ref="NTgranularity" />
        <xs:element ref="NTvalue" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="NTdomain">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="PD" />
        <xs:element ref="Fpd" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="NTgranularity">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="PD" />
        <xs:element ref="GL" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="NTvalue">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Nv" />
        <xs:element ref="Sv" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="NTid">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:choice>
        <xs:sequence>
          <xs:element ref="MEdecry" />
          <xs:element ref="CTdecry" />
          <xs:element ref="CPdecry" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="MEauth" />
          <xs:element ref="Pauth" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="Hhash" />
          <xs:element ref="SIZhash" />
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="CPdecry">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:choice>
        <xs:sequence>
          <xs:element ref="Mbc" />
          <xs:element ref="Pbc" />
          <xs:element ref="SIZbc" />
          <xs:element ref="KTntid" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="KTntid" />
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="Pauth">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:choice>
        <xs:sequence>
          <xs:element ref="Mhash" />
          <xs:element ref="Hhash" />
          <xs:element ref="KTntid" />
          <xs:element ref="SIZhash" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="CAcmac" />
          <xs:element ref="Ccmac" />
          <xs:element ref="KTntid" />
          <xs:element ref="SIZcmac" />
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="Mds" />
          <xs:element ref="Hds" />
          <xs:element ref="KTntid" />
          <xs:element ref="SIZds" />
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="KTntid">
    <xs:complexType>
      <xs:attributeGroup ref="attr.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="LKkt" />
        <xs:element ref="KIDkt" />
        <xs:element ref="granularity" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  <!-- B.3.5	Example of XML Schema for JPEG 2000 Part 10 codestream (3-D image) -->
  <!-- part 1 marker element -->
  <!--...-->
  <!-- part 10 marker element -->
  <xs:element name="NSI">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Ndim" />
        <xs:element ref="Zsiz" />
        <xs:element ref="ZOsiz" />
        <xs:element ref="ZTsiz" />
        <xs:element ref="ZTOsiz" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ZRsiz" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPcod">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_xlevels" />
        <xs:element ref="num_ylevels" />
        <xs:element ref="num_zlevels" />
        <xs:element ref="xcb" />
        <xs:element ref="ycb" />
        <xs:element ref="zcb" />
        <xs:element ref="style" />
        <xs:element ref="xkernel" />
        <xs:element ref="ykernel" />
        <xs:element ref="zkernel" />
        <xs:element ref="sso" />
        <xs:element ref="reserved" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ppz" />
          <xs:element ref="ppy" />
          <xs:element ref="ppx" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPcoc">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="num_xlevels" />
        <xs:element ref="num_ylevels" />
        <xs:element ref="num_zlevels" />
        <xs:element ref="xcb" />
        <xs:element ref="ycb" />
        <xs:element ref="zcb" />
        <xs:element ref="style" />
        <xs:element ref="xkernel" />
        <xs:element ref="ykernel" />
        <xs:element ref="zkernel" />
        <xs:element ref="sso" />
        <xs:element ref="reserved" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="ppz" />
          <xs:element ref="ppy" />
          <xs:element ref="ppx" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="SPrgn">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.hex"
                         use="required" />
      <xs:sequence>
        <xs:element ref="shift" />
        <xs:element ref="XArgn" />
        <xs:element ref="YArgn" />
        <xs:element ref="ZArgn" />
        <xs:element ref="XBrgn" />
        <xs:element ref="YBrgn" />
        <xs:element ref="ZBrgn" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="CRG">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="Xcrg" />
        <xs:element ref="Ycrg" />
        <xs:element ref="Zcrg" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

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

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

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

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

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

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

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

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

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

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

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

  <xs:element name="zkernel" 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="ppz" type="xs:integer">
    <xs:attributeGroup ref="attrs.int"
                       use="required" />
  </xs:element>

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

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

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

  <!-- B.4.6	Example of XML Schema for JPEG 2000 Part 11 codestream (wireless) -->
  <!-- part 1 marker element -->
  <!-- ... -->

  <!-- part 11 marker element -->
  <xs:element name="EPB">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Depb" />
        <xs:element ref="LDPepb" />
        <xs:element ref="Pepb" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="EPC">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Pcrc" />
        <xs:element ref="DL" />
        <xs:element ref="Pepc" />
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="id" />
          <xs:element ref="Lid" />
          <xs:element ref="Pid" />
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="ESD">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Cesd" />
        <xs:element ref="Pesd" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="RED">
    <xs:complexType>
      <xs:attributeGroup ref="attrs.marker"
                         use="required" />
      <xs:sequence>
        <xs:element ref="Pred" />
        <xs:element ref="data" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

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

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

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

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

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

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

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

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

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

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

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

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

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

</xs:schema>