<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    targetNamespace="http://www.smpte-ra.org/schemas/428-7/2010/DCST"
    xmlns:dcst="http://www.smpte-ra.org/schemas/428-7/2010/DCST"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

<!-- This version of the schema was produced for publication with ST 428-7:2014. It has been corrected from its original 2010 published version. Refer to ST 428-7:2014 Section 8 for additional details. -->


  <!-- SubtitleReel -->
  <xs:element name="SubtitleReel" type="dcst:SubtitleReelType"/>
  <xs:complexType name="SubtitleReelType">
    <xs:sequence>
      <xs:element name="Id" type="dcst:UUID"/>
      <xs:element name="ContentTitleText" type="dcst:UserText"/>
      <xs:element name="AnnotationText" type="dcst:UserText" minOccurs="0"/>
      <xs:element name="IssueDate" type="xs:dateTime"/>
      <xs:element name="ReelNumber" type="xs:positiveInteger" minOccurs="0"/>
      <xs:element name="Language" type="xs:language" minOccurs="0" default="en"/>
      <xs:element name="EditRate" type="dcst:RationalType"/>
      <xs:element name="TimeCodeRate" type="xs:positiveInteger"/>
      <xs:element name="StartTime" type="dcst:TimeCodeType" minOccurs="0"/>
      <xs:element name="DisplayType" type="dcst:scopedTokenType" minOccurs="0"/>
      <xs:element name="LoadFont" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:anyURI">
              <xs:attribute name="ID" type="xs:string" use="optional"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SubtitleList">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="Subtitle" type="dcst:SubtitleType"/>
            <xs:element name="Font">
              <xs:complexType mixed="true">
                <xs:complexContent mixed="true">
                  <xs:extension base="dcst:FontType">
                    <xs:sequence>
                      <xs:element name="Subtitle" type="dcst:SubtitleType" maxOccurs="unbounded"/>
                    </xs:sequence>
                  </xs:extension>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <!-- Subtitle -->
  <xs:complexType name="SubtitleType">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="Text" type="dcst:TextType"/>
      <xs:element name="Image" type="dcst:ImageType"/>
      <xs:element name="Font">
        <xs:complexType mixed="true">
          <xs:complexContent mixed="true">
            <xs:extension base="dcst:FontType">
              <xs:sequence>
                <xs:element name="Text" type="dcst:TextType" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="SpotNumber" type="xs:string" use="optional"/>
    <xs:attribute name="TimeIn" type="dcst:TimeCodeType" use="required"/>
    <xs:attribute name="TimeOut" type="dcst:TimeCodeType" use="required"/>
    <xs:attribute name="FadeUpTime" type="dcst:TimeCodeType" use="optional"/>
    <xs:attribute name="FadeDownTime" type="dcst:TimeCodeType" use="optional"/>
  </xs:complexType>

  <!-- Image -->
  <xs:complexType name="ImageType" mixed="false">
    <xs:simpleContent>
      <xs:extension base="xs:anyURI">
        <xs:attribute name="Halign" use="optional" default="center">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="center"/>
              <xs:enumeration value="left"/>
              <xs:enumeration value="right"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="Hposition" use="optional" default="0">
          <xs:simpleType>
            <xs:restriction base="xs:decimal">
              <xs:minInclusive value="-100"/>
              <xs:maxInclusive value="100"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="Valign" use="optional" default="center">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="center"/>
              <xs:enumeration value="bottom"/>
              <xs:enumeration value="top"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="Vposition" use="optional" default="0">
          <xs:simpleType>
            <xs:restriction base="xs:decimal">
              <xs:minInclusive value="-100"/>
              <xs:maxInclusive value="100"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- Font -->
  <xs:complexType name="FontType" mixed="true">
    <xs:attribute name="Script" use="optional" default="normal">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="normal"/>
          <xs:enumeration value="super"/>
          <xs:enumeration value="sub"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Effect" use="optional" default="shadow">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="none"/>
          <xs:enumeration value="border"/>
          <xs:enumeration value="shadow"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Italic" use="optional" default="no">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="yes"/>
          <xs:enumeration value="no"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Underline" use="optional" default="no">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="yes"/>
          <xs:enumeration value="no"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Weight" use="optional" default="normal">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="bold"/>
          <xs:enumeration value="normal"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="ID" type="xs:string" use="optional"/>
    <xs:attribute name="Color" use="optional" default="FFFFFFFF">
      <xs:simpleType>
        <xs:restriction base="xs:hexBinary">
          <xs:length value="4"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="EffectColor" use="optional" default="FF000000">
      <xs:simpleType>
        <xs:restriction base="xs:hexBinary">
          <xs:length value="4"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Size" use="optional" default="42">
      <xs:simpleType>
        <xs:restriction base="xs:positiveInteger"/>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="AspectAdjust" use="optional" default="1.0">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:minInclusive value="0.25"/>
          <xs:maxInclusive value="4.0"/>
        </xs:restriction> 
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Spacing" use="optional" default="0.0">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:minInclusive value="-1.0"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <!-- Text -->
  <xs:complexType name="TextType" mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="Font" type="dcst:FontType"/>
      <xs:element name="Ruby" type="dcst:RubyType"/>
      <xs:element name="Space" type="dcst:SpaceType"/>
      <xs:element name="HGroup" type="xs:string"/>
      <xs:element name="Rotate" type="dcst:RotateType"/>
    </xs:choice>
    <xs:attribute name="Halign" use="optional" default="center">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="center"/>
          <xs:enumeration value="left"/>
          <xs:enumeration value="right"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Hposition" use="optional" default="0">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:minInclusive value="-100"/>
          <xs:maxInclusive value="100"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Valign" use="optional" default="center">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="center"/>
          <xs:enumeration value="bottom"/>
          <xs:enumeration value="top"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Vposition" use="optional" default="0">
      <xs:simpleType>
        <xs:restriction base="xs:decimal">
          <xs:minInclusive value="-100"/>
          <xs:maxInclusive value="100"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Direction" use="optional" default="ltr">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ltr"/>
          <xs:enumeration value="rtl"/>
          <xs:enumeration value="ttb"/>
          <xs:enumeration value="btt"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <!-- Rational Type -->
  <xs:simpleType name="RationalType">
    <xs:restriction>
      <xs:simpleType>
        <xs:list itemType="xs:long"/>
      </xs:simpleType>
      <xs:length value="2"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- TimeCode Type -->
  <xs:simpleType name="TimeCodeType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-2][0-9]:[0-5][0-9]:[0-5][0-9]:[0-9]+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Ruby Type -->
  <xs:complexType name="RubyType">
    <xs:sequence>
      <xs:element name="Rb" type="xs:string"/>
      <xs:element name="Rt">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Size" use="optional" default="0.5">
                <xs:simpleType>
                   <xs:restriction base="xs:decimal">
                     <xs:minExclusive value="0"/>
                   </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Position" use="optional" default="before">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="before"/>
                    <xs:enumeration value="after"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Offset" use="optional" default="0.0">
                <xs:simpleType>
                  <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="-1.0"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Spacing" use="optional" default="0.0">
                <xs:simpleType>
                  <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="-1.0"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="AspectAdjust" use="optional" default="1.0">
                <xs:simpleType>
                  <xs:restriction base="xs:decimal">
                    <xs:minInclusive value="0.25"/>
                    <xs:maxInclusive value="4.0"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <!-- Rotate Type -->
  <xs:complexType name="RotateType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Direction" use="optional" default="none">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="none"/>
              <xs:enumeration value="left"/>
              <xs:enumeration value="right"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- Space Type -->
  <xs:complexType name="SpaceType">
    <xs:simpleContent>
      <xs:extension base="dcst:EmptyElement">
        <xs:attribute name="Size" use="optional" default="0.5">
          <xs:simpleType>
            <xs:restriction base="xs:decimal">
              <xs:minInclusive value="-1.0"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- UUID Type -->
  <xs:simpleType name="UUID">
    <xs:restriction base="xs:anyURI">
      <xs:pattern value="urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- UserText Type -->
  <xs:complexType name="UserText">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="language" type="xs:language" use="optional" default="en"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- Scoped Token Type -->
  <xs:complexType name="scopedTokenType">
    <xs:simpleContent>
      <xs:extension base="xs:token">
      <xs:attribute name="scope" type="xs:anyURI" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- EmptyElement Type -->
  <xs:simpleType name="EmptyElement">
    <xs:restriction base="xs:string">
      <xs:length value="0"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>