<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://schemas.microsoft.com/appx/2014/manifest"
           xmlns="http://schemas.microsoft.com/appx/2014/manifest"
           xmlns:m="http://schemas.microsoft.com/appx/2010/manifest"
           xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest"
           xmlns:m3="http://schemas.microsoft.com/appx/2014/manifest"
           >
  <xs:import namespace="http://schemas.microsoft.com/appx/2010/manifest"/>
  <xs:import namespace="http://schemas.microsoft.com/appx/2013/manifest"/>

  <!--Prerequisites-->
  <xs:simpleType name="ST_MinDeviceMemory">
    <xs:restriction base="xs:string">
      <xs:enumeration value="512MB"/>
      <xs:enumeration value="1GB"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="MinDeviceMemory" type="ST_MinDeviceMemory" default="512MB"/>

  <!--Resources-->
  <xs:simpleType name="ST_Scale_2014">
    <xs:restriction base ="xs:string">
      <xs:enumeration value="200"/>
      <xs:enumeration value="220"/>
      <xs:enumeration value="240"/>
      <xs:enumeration value="300"/>
      <xs:enumeration value="400"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:attribute name="Scale" type="ST_Scale_2014"/>

  <!--Visual Elements-->
  <xs:element name="VisualElements" substitutionGroup="m:VisualElementsChoice">
    <xs:complexType>
      <xs:all>
        <xs:element name="DefaultTile" type="CT_DefaultTile" minOccurs="0"/>
        <xs:element name="LockScreen" type="m:CT_LockScreen" minOccurs="0"/>
        <xs:element name="SplashScreen" type="m:CT_SplashScreen" minOccurs="0"/>
        <xs:element name="InitialRotationPreference" type="CT_InitialRotationPreference" minOccurs="0"/>
        <xs:element name="ApplicationView" type="CT_ApplicationView" minOccurs="0"/>
      </xs:all>
      <xs:attributeGroup ref="m:VisualElementsBaseAttributes"/>
      <xs:attribute name="Square150x150Logo" type="m:ST_ImageFile" use="required"/>
      <xs:attribute name="Square44x44Logo" type="m:ST_ImageFile" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="CT_DefaultTile">
    <xs:all>
      <xs:element name="TileUpdate" type="CT_TileUpdate" minOccurs="0"/>
      <xs:element name="ShowNameOnTiles" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ShowOn" maxOccurs="3">
              <xs:complexType>
                <xs:attribute name="Tile" type="m2:ST_ShowNameSize" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:unique name="ShowOn_Tile">
          <xs:selector xpath="m3:ShowOn"/>
          <xs:field xpath="@Tile"/>
        </xs:unique>
      </xs:element>
    </xs:all>
    <xs:attribute name="Wide310x150Logo" type="m:ST_ImageFile" use="optional"/>
    <xs:attribute name="Square310x310Logo" type="m:ST_ImageFile" use="optional"/>
    <xs:attribute name="Square71x71Logo" type="m:ST_ImageFile" use="optional"/>
    <xs:attribute name="ShortName" type="m:ST_ShortDisplayName" use="optional"/>
    <xs:attribute name="DefaultSize" type="m2:ST_DefaultSize" use="optional"/>
  </xs:complexType>

  <xs:complexType name="CT_InitialRotationPreference">
    <xs:sequence>
      <xs:element name="Rotation" maxOccurs="4" type="m:CT_Rotation"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CT_ApplicationView">
    <xs:attribute name="MinWidth" type="m2:ST_ApplicationViewWidth" use="required"/>
  </xs:complexType>

  <xs:complexType name ="CT_TileUpdate">
    <xs:attribute name="Recurrence" type="m2:ST_Recurrence" use="required"/>
    <xs:attribute name="UriTemplate" type="m:ST_URI" use="required"/>
  </xs:complexType>

  <!--Background tasks-->
  <xs:simpleType name="ST_BackgroundTasks">
    <xs:restriction base="xs:string">
      <xs:enumeration value="chatMessageNotification"/>
      <xs:enumeration value="rfcommConnection"/>
      <xs:enumeration value="deviceConnectionChange"/>
      <xs:enumeration value="bluetoothSignalStrength"/>
      <xs:enumeration value="gattCharacteristicNotification"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Task" substitutionGroup="m:TaskChoice">
    <xs:complexType>
      <xs:attribute name="Type" type="ST_BackgroundTasks" use="required"/>
    </xs:complexType>
  </xs:element>

  <!--Capabilities-->
  <xs:element name="Capability" substitutionGroup="m:CapabilityChoice">
    <xs:complexType>
      <xs:attribute name="Name" type="ST_Capabilities" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name="ST_Capabilities">
    <xs:restriction base="xs:string">
      <xs:enumeration value="appointments"/>
      <xs:enumeration value="contacts"/>
    </xs:restriction>
  </xs:simpleType>

  <!--Calendar Provider Extension-->
  <xs:simpleType name="ST_AppointmentsProviderLaunchActionVerbs">
    <xs:restriction base="xs:string">
      <xs:enumeration value="showAppointmentDetails"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LaunchAction" substitutionGroup="m2:AppointmentsProviderLaunchActionChoice">
    <xs:complexType>
      <xs:attribute name="Verb" type="ST_AppointmentsProviderLaunchActionVerbs" use="required"/>
      <xs:attribute name="DesiredView" type="m2:ST_DesiredView" use="optional"/>
      <xs:attributeGroup ref="m:ExtensionBaseAttributes"/>
    </xs:complexType>
  </xs:element>

  <!--Application Extensions-->
  <xs:simpleType name="ST_ApplicationExtensionCategory2014">
    <xs:restriction base="xs:string">
      <xs:enumeration value="windows.preInstalledConfigTask"/>
      <xs:enumeration value="windows.updateTask"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Extension" substitutionGroup="m:ApplicationExtensionChoice">
    <xs:complexType>
      <xs:attribute name="Category" type="ST_ApplicationExtensionCategory2014" use="required"/>
      <xs:attributeGroup ref="m:ExtensionBaseAttributes"/>
    </xs:complexType>
  </xs:element>

</xs:schema>
