<!--
  XML for Visio Schema
  http://schemas.microsoft.com/office/visio/2011/1/core
  Copyright (C) 2000-2002 Microsoft Corporation. All rights reserved.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://schemas.microsoft.com/office/visio/2012/main"
            xmlns="http://schemas.microsoft.com/office/visio/2012/main"
            xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
            elementFormDefault="qualified" attributeFormDefault="unqualified">

  <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>

  <xsd:annotation>
    <xsd:documentation>
      Permission to copy, display and distribute the contents of this document (the
      "Specification"), in any medium for any purpose without fee or royalty is
      hereby granted, provided that you include the following notice on ALL copies of
      the Specification, or portions thereof, that you make:
      Copyright (c) Microsoft Corporation.  All rights reserved.  Permission to copy,
      display and distribute this document is available at:
      http://msdn.microsoft.com/library/en-us/odcXMLRef/html/odcXMLRefLegalNotice.asp?frame=true.
      No right to create modifications or derivatives of this Specification is
      granted herein. There is a separate patent license available to parties
      interested in implementing software programs that can read and write files that
      conform to the Specification.  This patent license is available at this
      location:  http://www.microsoft.com/mscorp/ip/format/xmlpatentlicense.asp.
      THE SPECIFICATION IS PROVIDED "AS IS" AND MICROSOFT MAKES NO REPRESENTATIONS OR
      WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF
      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
      THAT THE CONTENTS OF THE SPECIFICATION ARE SUITABLE FOR ANY PURPOSE; NOR THAT
      THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
      COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. MICROSOFT WILL NOT BE LIABLE FOR ANY
      DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
      OR RELATING TO ANY USE OR DISTRIBUTION OF THE SPECIFICATION.
      The name and trademarks of Microsoft may NOT be used in any manner, including
      advertising or publicity pertaining to the Specification or its contents
      without specific, written prior permission. Title to copyright in the
      Specification will at all times remain with Microsoft. No other rights are
      granted by implication, estoppel or otherwise.
    </xsd:documentation>
  </xsd:annotation>
  
  <!--
    Root-level elements for different parts
  -->
  <!--document.xml-->
  <xsd:element name="VisioDocument" type="VisioDocument_Type" />
  <!--masters/masters.xml-->
  <xsd:element name="Masters" type="Masters_Type" />
  <!--masters/master#.xml-->
  <xsd:element name="MasterContents" type="PageContents_Type" />
  <!--pages/pages.xml-->
  <xsd:element name="Pages" type="Pages_Type" />
  <!--pages/page#.xml-->
  <xsd:element name="PageContents" type="PageContents_Type" />
  <!--data/connections.xml-->
  <xsd:element name="DataConnections" type="DataConnections_Type" />
  <!--data/recordsets.xml-->
  <xsd:element name="DataRecordSets" type="DataRecordSets_Type" />
  <!--comments.xml-->
  <xsd:element name="Comments" type="Comments_Type" />
  <!--extensions.xml-->
  <xsd:element name="Extensions" type="Extensions_Type" />
  <!--
    Complex types
  -->
  <xsd:complexType name="VisioDocument_Type">
    <xsd:sequence>
      <xsd:element name="DocumentSettings" type="DocumentSettings_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="Colors" type="Colors_Type" minOccurs="0" maxOccurs="1" />
      <xsd:element name="FaceNames" type="FaceNames_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="StyleSheets" type="StyleSheets_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="DocumentSheet" type="DocumentSheet_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="EventList" type="EventList_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="HeaderFooter" type="HeaderFooter_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="PublishSettings" type="PublishSettings_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
               processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:complexType>

  <!--Sheet abstract base class-->
  <xsd:complexType name="Sheet_Type" abstract="true">
    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
      <xsd:element name="Cell" type="Cell_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="Trigger" type="Trigger_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="Section" type="Section_Type" minOccurs="0"
                   maxOccurs="unbounded" />

      <!--Sheets can hold and roundtrip arbitrary, unknown sub-XML-->
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
               processContents="lax" />
    </xsd:sequence>
    
    <!--Style sheet IDs for inheritance-->
    <xsd:attribute name="LineStyle" type="xsd:unsignedInt" />
    <xsd:attribute name="FillStyle" type="xsd:unsignedInt" />
    <xsd:attribute name="TextStyle" type="xsd:unsignedInt" />

    <!--Sheets can hold and roundtrip arbitrary, unknown attributes-->
    <xsd:anyAttribute namespace="##other" processContents="lax" />
  </xsd:complexType>

  <!--Section base types-->
  <xsd:complexType name="Section_Type">
    <xsd:sequence>
      <!--Cells only show up directly under the Geometry section-->
      <xsd:element name="Cell" type="Cell_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="Trigger" type="Trigger_Type" minOccurs="0"
                   maxOccurs="unbounded" />

      <!--All Sections have child rows-->
      <xsd:element name="Row" type="Row_Type" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    
    <xsd:attribute name="N" type="xsd:string" use="required" />
    <xsd:attribute name="Del" type="xsd:boolean" />
    
    <!--Only Geometry sections have indexes as there can be several in a Sheet-->
    <xsd:attribute name="IX" type="xsd:unsignedInt" />
  </xsd:complexType>

  <!--Row base types-->
  <xsd:complexType name="Row_Type">
    <xsd:sequence>
      <xsd:element name="Cell" type="Cell_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="Trigger" type="Trigger_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    
    <!--The name attributes are only used on named rows-->
    <xsd:attribute name="N" type="xsd:string" />
    <xsd:attribute name="LocalName" type="xsd:string" />
    
    <!--The index attribute is only used on indexed rows-->
    <xsd:attribute name="IX" type="xsd:unsignedInt" />
    
    <!--The type attribute is only used on Rows in the Geometry section-->
    <xsd:attribute name="T" type="xsd:string" />
    
    <!--Any row can be locally deleted-->
    <xsd:attribute name="Del" type="xsd:boolean" />
  </xsd:complexType>

  <!--Cell base type-->
  <xsd:complexType name="Cell_Type" mixed="true">
    <xsd:sequence>
      <xsd:element name="RefBy" type="RefBy_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="N" type="xsd:string" use="required" />
    <xsd:attribute name="U" type="xsd:string" />
    <xsd:attribute name="E" type="xsd:string" />
    <xsd:attribute name="F" type="xsd:string" />
    <xsd:attribute name="V" type="xsd:string" />
  </xsd:complexType>

  <!--Trigger base type-->
  <xsd:complexType name="Trigger_Type" mixed="true">
    <xsd:sequence>
      <xsd:element name="RefBy" type="RefBy_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="N" type="xsd:string" use="required" />
  </xsd:complexType>

  <xsd:complexType name="DocumentSheet_Type">
    <xsd:complexContent>
      <xsd:extension base="Sheet_Type">
        <xsd:attribute name="Name" type="xsd:string" />
        <xsd:attribute name="NameU" type="xsd:string" />
        <xsd:attribute name="IsCustomName" type="xsd:boolean" />
        <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
        <xsd:attribute name="UniqueID" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <xsd:complexType name="StyleSheet_Type">
    <xsd:complexContent>
      <xsd:extension base="Sheet_Type">
        <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
        <xsd:attribute name="Name" type="xsd:string" />
        <xsd:attribute name="NameU" type="xsd:string" />
        <xsd:attribute name="IsCustomName" type="xsd:boolean" />
        <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <xsd:complexType name="PageSheet_Type">
    <xsd:complexContent>
      <xsd:extension base="Sheet_Type">
        <xsd:attribute name="UniqueID" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <xsd:complexType name="ShapeSheet_Type">
    <xsd:complexContent>
      <xsd:extension base="Sheet_Type">
        <xsd:sequence>
          <!--Shape Text-->
          <xsd:element name="Text" type="Text_Type" minOccurs="0" maxOccurs="1" />
          
          <!--Legacy data fields-->
          <xsd:element name="Data1" type="Data_Type" minOccurs="0" maxOccurs="1" />
          <xsd:element name="Data2" type="Data_Type" minOccurs="0" maxOccurs="1" />
          <xsd:element name="Data3" type="Data_Type" minOccurs="0" maxOccurs="1" />
          
          <!--Foreign object data for images, OLE, ActiveX, etc.-->
          <xsd:element name="ForeignData" type="ForeignData_Type" minOccurs="0"
                       maxOccurs="1" />
          
          <!--Sub-shapes if this is a group-->
          <xsd:element name="Shapes" type="Shapes_Type" minOccurs="0"
                       maxOccurs="1" />
        </xsd:sequence>
        
        <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
        <xsd:attribute name="OriginalID" type="xsd:unsignedInt" />
        <xsd:attribute name="Del" type="xsd:boolean" />
        <xsd:attribute name="MasterShape" type="xsd:unsignedInt" />
        <xsd:attribute name="UniqueID" type="xsd:string" />
        <xsd:attribute name="Name" type="xsd:string" />
        <xsd:attribute name="NameU" type="xsd:string" />
        <xsd:attribute name="IsCustomName" type="xsd:boolean" />
        <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
        <xsd:attribute name="Master" type="xsd:unsignedInt" />
        <xsd:attribute name="Type" type="xsd:token" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="Text_Type" mixed="true">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element name="cp" type="cp_Type" minOccurs="0" maxOccurs="unbounded" />
      <xsd:element name="pp" type="pp_Type" minOccurs="0" maxOccurs="unbounded" />
      <xsd:element name="tp" type="tp_Type" minOccurs="0" maxOccurs="unbounded" />
      <xsd:element name="fld" type="fld_Type" minOccurs="0" maxOccurs="unbounded" />
    </xsd:choice>
  </xsd:complexType>

  <!--Text fields-->
  <xsd:complexType name="cp_Type">
    <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="pp_Type">
    <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="tp_Type">
    <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="fld_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:complexType name="Data_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:complexType name="ForeignData_Type" mixed="true">
    <xsd:sequence>
      <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="ForeignType" type="xsd:token" use="required" />
    <xsd:attribute name="ObjectType" type="xsd:unsignedInt" />
    <xsd:attribute name="ShowAsIcon" type="xsd:boolean" />
    <xsd:attribute name="ObjectWidth" type="xsd:double" />
    <xsd:attribute name="ObjectHeight" type="xsd:double" />
    <xsd:attribute name="MappingMode" type="xsd:unsignedShort" />
    <xsd:attribute name="ExtentX" type="xsd:double" />
    <xsd:attribute name="ExtentY" type="xsd:double" />
    <xsd:attribute name="CompressionType" type="xsd:token" />
    <xsd:attribute name="CompressionLevel" type="xsd:double" />
  </xsd:complexType>
  
  <xsd:complexType name="DocumentSettings_Type">
    <xsd:all>
      <xsd:element name="GlueSettings" type="GlueSettings_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="SnapSettings" type="SnapSettings_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="SnapExtensions" type="SnapExtensions_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="SnapAngles" type="SnapAngles_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="DynamicGridEnabled" type="DynamicGridEnabled_Type"
                   minOccurs="0" maxOccurs="1" />
      <xsd:element name="ProtectStyles" type="ProtectStyles_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="ProtectShapes" type="ProtectShapes_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="ProtectMasters" type="ProtectMasters_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="ProtectBkgnds" type="ProtectBkgnds_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="CustomMenusFile" type="CustomMenusFile_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="CustomToolbarsFile" type="CustomToolbarsFile_Type"
                   minOccurs="0" maxOccurs="1" />
      <xsd:element name="AttachedToolbars" type="AttachedToolbars_Type" minOccurs="0"
                   maxOccurs="1" />
    </xsd:all>
    <xsd:attribute name="TopPage" type="xsd:unsignedInt" />
    <xsd:attribute name="DefaultTextStyle" type="xsd:unsignedInt" />
    <xsd:attribute name="DefaultLineStyle" type="xsd:unsignedInt" />
    <xsd:attribute name="DefaultFillStyle" type="xsd:unsignedInt" />
    <xsd:attribute name="DefaultGuideStyle" type="xsd:unsignedInt" />
  </xsd:complexType>
  <xsd:complexType name="GlueSettings_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:int" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="SnapSettings_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:int" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="SnapExtensions_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:int" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="SnapAngles_Type">
    <xsd:sequence>
      <xsd:element name="SnapAngle" type="SnapAngle_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SnapAngle_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:double" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="DynamicGridEnabled_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:boolean" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ProtectStyles_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:boolean" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ProtectShapes_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:boolean" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ProtectMasters_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:boolean" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ProtectBkgnds_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:boolean" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CustomMenusFile_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CustomToolbarsFile_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="AttachedToolbars_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:base64Binary" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="Colors_Type">
    <xsd:sequence>
      <xsd:element name="ColorEntry" type="ColorEntry_Type" minOccurs="1"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ColorEntry_Type">
    <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="RGB" type="xsd:string" use="required" />
  </xsd:complexType>
  <xsd:complexType name="FaceNames_Type">
    <xsd:sequence>
      <xsd:element name="FaceName" type="FaceName_Type" minOccurs="1"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="FaceName_Type">
    <xsd:attribute name="NameU" type="xsd:string" use="required" />
    <xsd:attribute name="UnicodeRanges" type="xsd:string" />
    <xsd:attribute name="CharSets" type="xsd:string" />
    <xsd:attribute name="Panos" type="xsd:string" />
    <xsd:attribute name="Panose" type="xsd:string" />
    <xsd:attribute name="Flags" type="xsd:unsignedInt" />
  </xsd:complexType>
  <xsd:complexType name="StyleSheets_Type">
    <xsd:sequence>
      <xsd:element name="StyleSheet" type="StyleSheet_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Masters_Type">
    <xsd:sequence>
      <xsd:element name="Master" type="Master_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="MasterShortcut" type="MasterShortcut_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Master_Type">
    <xsd:all>
      <xsd:element name="PageSheet" type="PageSheet_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
      <xsd:element name="Icon" type="Icon_Type" minOccurs="0" maxOccurs="1" />
    </xsd:all>
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="BaseID" type="xsd:string" />
    <xsd:attribute name="UniqueID" type="xsd:string" />
    <xsd:attribute name="MatchByName" type="xsd:boolean" />
    <xsd:attribute name="Name" type="xsd:string" />
    <xsd:attribute name="NameU" type="xsd:string" />
    <xsd:attribute name="IsCustomName" type="xsd:boolean" />
    <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
    <xsd:attribute name="IconSize" type="xsd:unsignedShort" />
    <xsd:attribute name="PatternFlags" type="xsd:unsignedShort" />
    <xsd:attribute name="Prompt" type="xsd:string" />
    <xsd:attribute name="Hidden" type="xsd:boolean" />
    <xsd:attribute name="IconUpdate" type="xsd:boolean" />
    <xsd:attribute name="AlignName" type="xsd:unsignedShort" />
    <xsd:attribute name="MasterType" type="xsd:unsignedShort" />
  </xsd:complexType>
  <xsd:complexType name="Icon_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:base64Binary" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="MasterShortcut_Type">
    <xsd:all>
      <xsd:element name="Icon" type="Icon_Type" minOccurs="0" maxOccurs="1" />
    </xsd:all>
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="Name" type="xsd:string" />
    <xsd:attribute name="NameU" type="xsd:string" />
    <xsd:attribute name="IsCustomName" type="xsd:boolean" />
    <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
    <xsd:attribute name="IconSize" type="xsd:unsignedShort" />
    <xsd:attribute name="PatternFlags" type="xsd:unsignedShort" />
    <xsd:attribute name="Prompt" type="xsd:string" />
    <xsd:attribute name="ShortcutURL" type="xsd:string" />
    <xsd:attribute name="ShortcutHelp" type="xsd:string" />
    <xsd:attribute name="AlignName" type="xsd:unsignedShort" />
    <xsd:attribute name="MasterType" type="xsd:unsignedShort" />
  </xsd:complexType>
  <xsd:complexType name="PageContents_Type">
    <xsd:sequence>
      <xsd:element name="Shapes" type="Shapes_Type" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Connects" type="Connects_Type" minOccurs="0"
                   maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Shapes_Type">
    <xsd:sequence>
      <xsd:element name="Shape" type="ShapeSheet_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Connects_Type">
    <xsd:sequence>
      <xsd:element name="Connect" type="Connect_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Connect_Type">
    <xsd:attribute name="FromSheet" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="FromCell" type="xsd:string" />
    <xsd:attribute name="FromPart" type="xsd:int" />
    <xsd:attribute name="ToSheet" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="ToCell" type="xsd:string" />
    <xsd:attribute name="ToPart" type="xsd:int" />
  </xsd:complexType>
  <xsd:complexType name="Pages_Type">
    <xsd:sequence>
      <xsd:element name="Page" type="Page_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Page_Type">
    <xsd:all>
      <xsd:element name="PageSheet" type="PageSheet_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
    </xsd:all>
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="Name" type="xsd:string" />
    <xsd:attribute name="NameU" type="xsd:string" />
    <xsd:attribute name="IsCustomName" type="xsd:boolean" />
    <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
    <xsd:attribute name="Background" type="xsd:boolean" />
    <xsd:attribute name="BackPage" type="xsd:unsignedInt" />
    <xsd:attribute name="ViewScale" type="xsd:double" />
    <xsd:attribute name="ViewCenterX" type="xsd:double" />
    <xsd:attribute name="ViewCenterY" type="xsd:double" />
    <xsd:attribute name="ReviewerID" type="xsd:unsignedInt" />
    <xsd:attribute name="AssociatedPage" type="xsd:unsignedInt" />
  </xsd:complexType>
  <xsd:complexType name="EventList_Type">
    <xsd:sequence>
      <xsd:element name="EventItem" type="EventItem_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="EventItem_Type">
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="Action" type="xsd:unsignedShort" use="required" />
    <xsd:attribute name="EventCode" type="xsd:unsignedShort" use="required" />
    <xsd:attribute name="Enabled" type="xsd:boolean" />
    <xsd:attribute name="Target" type="xsd:string" use="required" />
    <xsd:attribute name="TargetArgs" type="xsd:string" use="required" />
  </xsd:complexType>
  <xsd:complexType name="HeaderFooter_Type">
    <xsd:all>
      <xsd:element name="HeaderMargin" type="HeaderMargin_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="FooterMargin" type="FooterMargin_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="HeaderLeft" type="HeaderLeft_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="HeaderCenter" type="HeaderCenter_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="HeaderRight" type="HeaderRight_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="FooterLeft" type="FooterLeft_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="FooterCenter" type="FooterCenter_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="FooterRight" type="FooterRight_Type" minOccurs="0" 
                   maxOccurs="1" />
      <xsd:element name="HeaderFooterFont" type="HeaderFooterFont_Type" minOccurs="0"
                   maxOccurs="1" />
    </xsd:all>
    <xsd:attribute name="HeaderFooterColor" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="HeaderMargin_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:double">
        <xsd:attribute name="Unit" type="xsd:string" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="FooterMargin_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:double">
        <xsd:attribute name="Unit" type="xsd:string" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="HeaderLeft_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="HeaderCenter_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="HeaderRight_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="FooterLeft_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="FooterCenter_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="FooterRight_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string" />
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="HeaderFooterFont_Type">
    <xsd:attribute name="Height" type="xsd:int" />
    <xsd:attribute name="Width" type="xsd:int" />
    <xsd:attribute name="Escapement" type="xsd:int" />
    <xsd:attribute name="Orientation" type="xsd:int" />
    <xsd:attribute name="Weight" type="xsd:int" />
    <xsd:attribute name="Italic" type="xsd:unsignedByte" />
    <xsd:attribute name="Underline" type="xsd:unsignedByte" />
    <xsd:attribute name="StrikeOut" type="xsd:unsignedByte" />
    <xsd:attribute name="CharSet" type="xsd:unsignedByte" />
    <xsd:attribute name="OutPrecision" type="xsd:unsignedByte" />
    <xsd:attribute name="ClipPrecision" type="xsd:unsignedByte" />
    <xsd:attribute name="Quality" type="xsd:unsignedByte" />
    <xsd:attribute name="PitchAndFamily" type="xsd:unsignedByte" />
    <xsd:attribute name="FaceName" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="DataConnections_Type">
    <xsd:sequence>
      <xsd:element name="DataConnection" type="DataConnection_Type" minOccurs="1"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="NextID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="DataConnection_Type">
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="FileName" type="xsd:string" use="required" />
    <xsd:attribute name="ConnectionString" type="xsd:string" />
    <xsd:attribute name="Command" type="xsd:string" />
    <xsd:attribute name="FriendlyName" type="xsd:string" />
    <xsd:attribute name="Timeout" type="xsd:unsignedInt" />
    <xsd:attribute name="AlwaysUseConnectionFile" type="xsd:boolean" />
  </xsd:complexType>
  <xsd:complexType name="DataRecordSets_Type">
    <xsd:sequence>
      <xsd:element name="DataRecordSet" type="DataRecordSet_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="NextID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="ActiveRecordsetID" type="xsd:unsignedInt" />
    <xsd:attribute name="DataWindowOrder" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="DataRecordSet_Type">
    <xsd:sequence>
      <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
      <xsd:element name="DataColumns" type="DataColumns_Type" minOccurs="1"
                   maxOccurs="1" />
      <xsd:element name="PrimaryKey" type="PrimaryKey_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="RowMap" type="RowMap_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="RefreshConflict" type="RefreshConflict_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="AutoLinkComparison" type="AutoLinkComparison_Type"
                   minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="ConnectionID" type="xsd:unsignedInt" />
    <xsd:attribute name="Command" type="xsd:string" />
    <xsd:attribute name="Options" type="xsd:unsignedInt" />
    <xsd:attribute name="TimeRefreshed" type="xsd:dateTime" />
    <xsd:attribute name="NextRowID" type="xsd:unsignedInt" />
    <xsd:attribute name="Name" type="xsd:string" />
    <xsd:attribute name="RowOrder" type="xsd:boolean" />
    <xsd:attribute name="RefreshOverwriteAll" type="xsd:boolean" />
    <xsd:attribute name="RefreshNoReconciliationUI" type="xsd:boolean" />
    <xsd:attribute name="RefreshInterval" type="xsd:unsignedInt" />
    <xsd:attribute name="ReplaceLinks" type="xsd:unsignedInt" />
    <xsd:attribute name="Checksum" type="xsd:unsignedInt" />
  </xsd:complexType>
  <xsd:complexType name="DataColumns_Type">
    <xsd:sequence>
      <xsd:element name="DataColumn" type="DataColumn_Type" minOccurs="1"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="SortColumn" type="xsd:string" />
    <xsd:attribute name="SortAsc" type="xsd:boolean" />
  </xsd:complexType>
  <xsd:complexType name="DataColumn_Type">
    <xsd:attribute name="ColumnNameID" type="xsd:string" use="required" />
    <xsd:attribute name="Name" type="xsd:string" use="required" />
    <xsd:attribute name="Label" type="xsd:string" use="required" />
    <xsd:attribute name="OrigLabel" type="xsd:string" />
    <xsd:attribute name="LangID" type="xsd:unsignedInt" />
    <xsd:attribute name="Calendar" type="xsd:unsignedShort" />
    <xsd:attribute name="DataType" type="xsd:unsignedShort" />
    <xsd:attribute name="UnitType" type="xsd:string" />
    <xsd:attribute name="Currency" type="xsd:unsignedShort" />
    <xsd:attribute name="Degree" type="xsd:unsignedInt" />
    <xsd:attribute name="DisplayWidth" type="xsd:unsignedInt" />
    <xsd:attribute name="DisplayOrder" type="xsd:unsignedInt" />
    <xsd:attribute name="Mapped" type="xsd:boolean" />
    <xsd:attribute name="Hyperlink" type="xsd:boolean" />
  </xsd:complexType>
  <xsd:complexType name="PrimaryKey_Type">
    <xsd:sequence>
      <xsd:element name="RowKeyValue" type="RowKeyValue_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="ColumnNameID" type="xsd:string" use="required" />
  </xsd:complexType>
  <xsd:complexType name="RowKeyValue_Type">
    <xsd:attribute name="RowID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="Value" type="xsd:string" use="required" />
  </xsd:complexType>
  <xsd:complexType name="RowMap_Type">
    <xsd:attribute name="RowID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="PageID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="ShapeID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="RefreshConflict_Type">
    <xsd:attribute name="RowID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="ShapeID" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="PageID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="AutoLinkComparison_Type">
    <xsd:attribute name="ColumnName" type="xsd:string" use="required" />
    <xsd:attribute name="ContextType" type="xsd:unsignedInt" use="required" />
    <xsd:attribute name="ContextTypeLabel" type="xsd:string" />
  </xsd:complexType>
  <xsd:complexType name="PublishSettings_Type">
    <xsd:sequence>
      <xsd:element name="PublishedPage" type="PublishedPage_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="RefreshableData" type="RefreshableData_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Comments_Type">
    <xsd:sequence>
      <xsd:element name="AuthorList" type="AuthorList_Type" minOccurs="0"
                   maxOccurs="1" />
      <xsd:element name="CommentList" type="CommentList_Type" minOccurs="0"
                   maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="ShowCommentTags" type="xsd:boolean" />
  </xsd:complexType>
  <xsd:complexType name="AuthorList_Type">
    <xsd:sequence>
      <xsd:element name="AuthorEntry" type="AuthorEntry_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="AuthorEntry_Type">
    <xsd:attribute name="Name" type="xsd:string" />
    <xsd:attribute name="Initials" type="xsd:string" />
    <xsd:attribute name="ResolutionID" type="xsd:string" />
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="CommentList_Type">
    <xsd:sequence>
      <xsd:element name="CommentEntry" type="CommentEntry_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommentEntry_Type">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="AuthorID" type="xsd:unsignedInt" use="required" />
        <xsd:attribute name="PageID" type="xsd:unsignedInt" use="required" />
        <xsd:attribute name="ShapeID" type="xsd:unsignedInt" />
        <xsd:attribute name="Date" type="xsd:dateTime" use="required" />
        <xsd:attribute name="EditDate" type="xsd:dateTime" />
        <xsd:attribute name="Done" type="xsd:boolean" />
        <xsd:attribute name="CommentID" type="xsd:unsignedInt" use="required" />
        <xsd:attribute name="AutoCommentType" type="xsd:unsignedInt" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="PublishedPage_Type">
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="RefreshableData_Type">
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="RefBy_Type">
    <xsd:attribute name="T" type="xsd:string" use="required" />
    <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
  </xsd:complexType>
  <xsd:complexType name="Extensions_Type">
    <xsd:sequence>
      <xsd:element name="CellDef" type="CellDef_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="FunctionDef" type="FunctionDef_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="SectionDef" type="SectionDef_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CellDef_Type">
    <xsd:attribute name="N" type="xsd:string" use="required" />
    <xsd:attribute name="T" type="xsd:token" use="required" />
    <xsd:attribute name="F" type="xsd:string" />
    <xsd:attribute name="IX" type="xsd:unsignedByte" />
    <xsd:attribute name="S" type="xsd:unsignedByte" />
  </xsd:complexType>
  <xsd:complexType name="FunctionDef_Type">
    <xsd:attribute name="N" type="xsd:string" use="required" />
  </xsd:complexType>
  <xsd:complexType name="SectionDef_Type">
    <xsd:sequence>
      <xsd:element name="CellDef" type="CellDef_Type" minOccurs="0"
                   maxOccurs="unbounded" />
      <xsd:element name="RowDef" type="RowDef_Type" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="N" type="xsd:string" use="required" />
    <xsd:attribute name="T" type="xsd:string" />
    <xsd:attribute name="S" type="xsd:unsignedByte" />
  </xsd:complexType>
  <xsd:complexType name="RowDef_Type">
    <xsd:sequence>
      <xsd:element name="CellDef" type="CellDef_Type" minOccurs="0"
                   maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Rel_Type">
    <xsd:attribute ref="r:id" use="required"/>
  </xsd:complexType>
</xsd:schema>