<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema 
targetNamespace="http://www.smpte-ra.org/schemas/428-7/2007/DCST" 
xmlns:dcst="http://www.smpte-ra.org/schemas/428-7/2007/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 2007 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="LoadFont" 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 Type --> 
  <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 Type --> 
  <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 Type --> 
  <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:complexType>

  <!-- Text Type --> 
  <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> 

  <!-- EmptyElement Type -->
  <xs:simpleType name="EmptyElement">
    <xs:restriction base="xs:string">
      <xs:length value="0"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>