5.1.1 RDL Report State Schema for Version 2011/01

 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (c) Microsoft Corporation.  All rights reserved. -->
 <xs:schema targetNamespace="http://schemas.microsoft.com/sqlserver/reporting/2011/01/reportstate"
     elementFormDefault="qualified"
     xmlns="http://schemas.microsoft.com/sqlserver/reporting/2011/01/reportstate"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:rs2012="http://schemas.microsoft.com/sqlserver/reporting/2012/01/reportstate"
     xmlns:rs2013="http://schemas.microsoft.com/sqlserver/reporting/2013/01/reportstate"
     version="1.0">
  
   <xs:import namespace="http://schemas.microsoft.com/sqlserver/reporting/2012/01/reportstate" />
   <xs:import namespace="http://schemas.microsoft.com/sqlserver/reporting/2013/01/reportstate" />
  
   <xs:element name="ReportState">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="FilterAreaVisibility" minOccurs="0">
           <xs:simpleType>
             <xs:restriction base="xs:string">
               <xs:enumeration value="Collapsed"/>
               <xs:enumeration value="Expanded"/>
               <xs:enumeration value="Hidden"/>
             </xs:restriction>
           </xs:simpleType>
         </xs:element>
         <xs:element name="Theme" minOccurs="0"/>
         <xs:element name="ReportSections" minOccurs="0" type="ReportSectionsType" />
         <xs:element ref="rs2013:ReportFilters" minOccurs="0" />
       </xs:sequence>
     </xs:complexType>
   </xs:element>
  
   <xs:complexType name="ReportSectionsType">
     <xs:sequence>
       <xs:element name="ReportSection" type="ReportSectionType" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="ReportSectionType">
     <xs:sequence>
       <xs:element name="SectionFilters" type="SectionFiltersType" minOccurs="0" />
       <xs:element name="ReportItems" type="ReportItemsType" minOccurs="0" />
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="SectionFiltersType">
     <xs:sequence>
       <xs:element name="Filters" type="FiltersType" />
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="FiltersType">
     <xs:sequence>
       <xs:element name="Filter" type="FilterType" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="FilterType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="Mode">
           <xs:simpleType>
             <xs:restriction base="xs:string">
               <xs:enumeration value="Advanced" />
               <xs:enumeration value="Basic" />
               <xs:enumeration value="Cleared" />
             </xs:restriction>
           </xs:simpleType>
         </xs:element>
         <xs:element ref="rs2012:Mode" />
       </xs:choice>
       <xs:element name="IsMeasure" minOccurs="0" />
       <xs:element ref="rs2012:IsDrilldownFilter" minOccurs="0" />
       <xs:element name="Operand">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="QueryExpression" type="QueryExpression"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
       <xs:element name="Condition" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="CompoundFilterCondition" type="CompoundFilterCondition"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Type" type="PrimitiveType" />
   </xs:complexType>
  
   <xs:simpleType name="PrimitiveType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Boolean" />
       <xs:enumeration value="Byte" />
       <xs:enumeration value="DateTime" />
       <xs:enumeration value="Decimal" />
       <xs:enumeration value="Double" />
       <xs:enumeration value="Guid" />
       <xs:enumeration value="Single" />
       <xs:enumeration value="SByte" />
       <xs:enumeration value="Int16" />
       <xs:enumeration value="Int32" />
       <xs:enumeration value="Int64" />
       <xs:enumeration value="String" />
       <xs:enumeration value="Time" />
     </xs:restriction>
   </xs:simpleType>
  
   <xs:complexType name="FilterCondition" abstract="true" />
  
   <xs:complexType name="SimpleFilterCondition">
     <xs:complexContent>
       <xs:extension base="FilterCondition">
         <xs:sequence>
           <xs:element name="LeftExpression" type="QueryExpression" />
           <xs:element name="Not" type="xs:boolean" minOccurs="0" />
           <xs:element name="Operator">
             <xs:simpleType>
               <xs:restriction base="xs:string">
                 <xs:enumeration value="Equal" />
                 <xs:enumeration value="GreaterThan" />
                 <xs:enumeration value="GreaterThanOrEqual" />
                 <xs:enumeration value="LessThanOrEqual" />
                 <xs:enumeration value="LessThan" />
                 <xs:enumeration value="Contains" />
                 <xs:enumeration value="StartsWith" />
                 <xs:enumeration value="DateTimeEqualToSecond" />
               </xs:restriction>
             </xs:simpleType>
           </xs:element>
           <xs:element name="RightExpression" type="QueryExpression" minOccurs="0" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="CompoundFilterCondition">
     <xs:complexContent>
       <xs:extension base="FilterCondition">
         <xs:sequence>
           <xs:element name="Conditions" minOccurs="0">
             <xs:complexType>
               <xs:sequence>
                 <xs:element name="FilterCondition" type="FilterCondition" minOccurs="0" maxOccurs="unbounded" />
               </xs:sequence>
             </xs:complexType>
           </xs:element>
           <xs:element name="Operator" minOccurs="0">
             <xs:simpleType>
               <xs:restriction base="xs:string">
                 <xs:enumeration value="All" />
                 <xs:enumeration value="Any" />
                 <xs:enumeration value="NotAll" />
                 <xs:enumeration value="NotAny" />
               </xs:restriction>
             </xs:simpleType>
           </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="ReportItemsType">
     <xs:sequence>
       <xs:element name="DataRegion" type="DataRegionType" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="DataRegionType">
     <xs:sequence>
       <xs:element name="Filters">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Filters" type="FiltersType" />
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Name" type="xs:string" />
   </xs:complexType>
  
   <xs:complexType name="TypeUsage">
     <xs:sequence>
       <xs:element name="PrimitiveType" type="PrimitiveType" />
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="QueryExpressionBinding">
     <xs:sequence>
       <xs:element name="Expression" type="QueryExpression"/>
       <xs:element name="VariableName" type="xs:string" />
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="QueryExpressionList">
     <xs:sequence minOccurs="0" maxOccurs="unbounded">
       <xs:element name="QueryExpression" type="QueryExpression"/>
     </xs:sequence>
   </xs:complexType>
  
   <xs:complexType name="QueryExpression" abstract="true" />
  
   <xs:complexType name="QueryCalculateExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Argument" type="QueryExpression" />
           <xs:element name="Filters" type="QueryExpressionList" minOccurs="0" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryFieldExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Field" type="xs:string" />
           <xs:element name="Instance" type="QueryExpression" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryFunctionExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="FunctionName">
             <xs:simpleType>
               <xs:restriction base="xs:string">
                 <xs:enumeration value="Core.Sum" />
                 <xs:enumeration value="Core.Count" />
                 <xs:enumeration value="Core.DistinctCount" />
                 <xs:enumeration value="Core.Average" />
                 <xs:enumeration value="Core.Min" />
                 <xs:enumeration value="Core.Max" />
               </xs:restriction>
             </xs:simpleType>
           </xs:element>
           <xs:element name="Arguments" type="QueryExpressionList" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryLiteralExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Value" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryMeasureExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Measure" type="xs:string" />
           <xs:element name="Target" type="xs:string" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryNullExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Type" type="TypeUsage" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryProjectExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Input" type="QueryExpressionBinding" />
           <xs:element name="Projection" type="QueryExpression" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryScanExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Target" type="xs:string" />
           <xs:element name="ExcludeBlankRow" type="xs:boolean" minOccurs="0" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QueryVariableReferenceExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="VariableName" type="xs:string" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:complexType name="QdmEntityPlaceholderExpression">
     <xs:complexContent>
       <xs:extension base="QueryExpression">
         <xs:sequence>
           <xs:element name="Target" type="xs:string" />
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
  
   <xs:element name="ReportSlicerState">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="CompoundFilterCondition" type="CompoundFilterCondition"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
  
 </xs:schema>