<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
  <xs:annotation>
    <xs:documentation>
      OpenPMX is an open specification for private full-property exchange.
      Element names follow the OpenPMX section outline; category, status, and type values use the current catalog.
      A real file is confidential: send it only to the organization named in Recipient, over HTTPS.
      The current PropBot importer does not ingest OpenPMX XML.
    </xs:documentation>
  </xs:annotation>

  <xs:simpleType name="nonEmptyText">
    <xs:restriction base="xs:token">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="nonNegativeDecimal">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="currencyCode">
    <xs:restriction base="xs:token">
      <xs:pattern value="[A-Z]{3}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="latitude">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="-90"/>
      <xs:maxInclusive value="90"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="longitude">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="-180"/>
      <xs:maxInclusive value="180"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="categoryCode">
    <xs:restriction base="xs:token">
      <xs:enumeration value="cfs"/>
      <xs:enumeration value="cfl"/>
      <xs:enumeration value="lfs"/>
      <xs:enumeration value="rfs"/>
      <xs:enumeration value="rfr"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="propertyTypeId">
    <xs:restriction base="xs:positiveInteger">
      <xs:enumeration value="1">
        <xs:annotation><xs:documentation>Assembly</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation><xs:documentation>Retail</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation><xs:documentation>Health Care</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation><xs:documentation>Lodging</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation><xs:documentation>Industrial</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation><xs:documentation>Office</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation><xs:documentation>Sports and Leisure</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8">
        <xs:annotation><xs:documentation>Land</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation><xs:documentation>Apartments and Multifamily</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation><xs:documentation>Construction</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="11">
        <xs:annotation><xs:documentation>Single Family Home</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="12">
        <xs:annotation><xs:documentation>Church</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="13">
        <xs:annotation><xs:documentation>Theater / Live</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="14">
        <xs:annotation><xs:documentation>Theater / Movie</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="15">
        <xs:annotation><xs:documentation>Assembly Hall</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="16">
        <xs:annotation><xs:documentation>Auditorium</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="17">
        <xs:annotation><xs:documentation>Night Club</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="18">
        <xs:annotation><xs:documentation>Restaurant</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="19">
        <xs:annotation><xs:documentation>Street Retail</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="20">
        <xs:annotation><xs:documentation>Shopping Mall</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="21">
        <xs:annotation><xs:documentation>Nursing Home</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="22">
        <xs:annotation><xs:documentation>Extended Care</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="23">
        <xs:annotation><xs:documentation>Hospital</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="24">
        <xs:annotation><xs:documentation>Short-term</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="25">
        <xs:annotation><xs:documentation>Hotel</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="26">
        <xs:annotation><xs:documentation>Motel</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="27">
        <xs:annotation><xs:documentation>Bed And Breakfast</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="28">
        <xs:annotation><xs:documentation>Warehouse</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="29">
        <xs:annotation><xs:documentation>Manufacturing Plant</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="30">
        <xs:annotation><xs:documentation>Artisan Studio</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="31">
        <xs:annotation><xs:documentation>Research And Development</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="32">
        <xs:annotation><xs:documentation>Garage / Automotive</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="33">
        <xs:annotation><xs:documentation>Central Business District</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="34">
        <xs:annotation><xs:documentation>Neighborhood</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="35">
        <xs:annotation><xs:documentation>Suburban</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="36">
        <xs:annotation><xs:documentation>Golf</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="37">
        <xs:annotation><xs:documentation>Tennis</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="38">
        <xs:annotation><xs:documentation>Marina</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="39">
        <xs:annotation><xs:documentation>Bowling</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="40">
        <xs:annotation><xs:documentation>Mini-golf</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="41">
        <xs:annotation><xs:documentation>Baseball</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="42">
        <xs:annotation><xs:documentation>Soccer</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="43">
        <xs:annotation><xs:documentation>Hockey</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="44">
        <xs:annotation><xs:documentation>Mixed-sport Center</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="45">
        <xs:annotation><xs:documentation>Zoned Commercial</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="46">
        <xs:annotation><xs:documentation>Zoned Residential</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="47">
        <xs:annotation><xs:documentation>Zoned Industrial</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="48">
        <xs:annotation><xs:documentation>Zoned Office</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="49">
        <xs:annotation><xs:documentation>Zoned Retail</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="50">
        <xs:annotation><xs:documentation>Zoned Agricultural</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="51">
        <xs:annotation><xs:documentation>Zoned Mining</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="52">
        <xs:annotation><xs:documentation>Zoned Forest</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="53">
        <xs:annotation><xs:documentation>Duplex</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="54">
        <xs:annotation><xs:documentation>Triplex</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="55">
        <xs:annotation><xs:documentation>Quadruplex</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="56">
        <xs:annotation><xs:documentation>Complex / 16-100 Units</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="57">
        <xs:annotation><xs:documentation>Complex / 100+ Units</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="58">
        <xs:annotation><xs:documentation>Residential Unit</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="59">
        <xs:annotation><xs:documentation>Residential Rehab</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="60">
        <xs:annotation><xs:documentation>Detached</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="61">
        <xs:annotation><xs:documentation>Townhouse</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="62">
        <xs:annotation><xs:documentation>Row House</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="63">
        <xs:annotation><xs:documentation>Condo</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="64">
        <xs:annotation><xs:documentation>School</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="65">
        <xs:annotation><xs:documentation>Flex Space</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="66">
        <xs:annotation><xs:documentation>Business Campus</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="67">
        <xs:annotation><xs:documentation>Complex / 5-15 Units</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="68">
        <xs:annotation><xs:documentation>Zoned Institutional</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="69">
        <xs:annotation><xs:documentation>Zoned Golf Course</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="70">
        <xs:annotation><xs:documentation>Zoned Age Restricted</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="71">
        <xs:annotation><xs:documentation>Zoned Mobile Home</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="72">
        <xs:annotation><xs:documentation>Zoned Mixed Use</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="73">
        <xs:annotation><xs:documentation>Zoned Multifamily</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="74">
        <xs:annotation><xs:documentation>Mobile Home Park</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="75">
        <xs:annotation><xs:documentation>Manufactured Housing</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="76">
        <xs:annotation><xs:documentation>Mobile Home</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="77">
        <xs:annotation><xs:documentation>Doublewide</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="78">
        <xs:annotation><xs:documentation>Modular</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="79">
        <xs:annotation><xs:documentation>Strip Center / Unanchored</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="80">
        <xs:annotation><xs:documentation>Outlot</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="81">
        <xs:annotation><xs:documentation>Strip Center / Anchored</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="82">
        <xs:annotation><xs:documentation>Studio</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="83">
        <xs:annotation><xs:documentation>Loft</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="84">
        <xs:annotation><xs:documentation>1 Bedroom</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="85">
        <xs:annotation><xs:documentation>2 Bedroom</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="86">
        <xs:annotation><xs:documentation>3 Bedroom</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="87">
        <xs:annotation><xs:documentation>4+ Bedroom</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="88">
        <xs:annotation><xs:documentation>Co-op</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="89">
        <xs:annotation><xs:documentation>Residential 2 or More Units</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="90">
        <xs:annotation><xs:documentation>Commercial Rehab</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="91">
        <xs:annotation><xs:documentation>Commercial Unit</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="92">
        <xs:annotation><xs:documentation>Commercial 2 or More Units</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="93">
        <xs:annotation><xs:documentation>Distribution</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="94">
        <xs:annotation><xs:documentation>Medical</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="95">
        <xs:annotation><xs:documentation>General / Flex</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="96">
        <xs:annotation><xs:documentation>Condo</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="97">
        <xs:annotation><xs:documentation>Showroom</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="98">
        <xs:annotation><xs:documentation>Storage</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="99">
        <xs:annotation><xs:documentation>Agricultural</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="100">
        <xs:annotation><xs:documentation>Farm</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="101">
        <xs:annotation><xs:documentation>Ranch</xs:documentation></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="102">
        <xs:annotation><xs:documentation>Timberland</xs:documentation></xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="propertyStatus">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Incomplete"/>
      <xs:enumeration value="Active"/>
      <xs:enumeration value="Closed"/>
      <xs:enumeration value="Contingent"/>
      <xs:enumeration value="Contingent Accepting Backup Offers"/>
      <xs:enumeration value="Expired"/>
      <xs:enumeration value="Pending"/>
      <xs:enumeration value="Pending Accepting Backup Offers"/>
      <xs:enumeration value="Temporary Off Market"/>
      <xs:enumeration value="Withdrawn"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="rentType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="$/Day"/>
      <xs:enumeration value="$/Week"/>
      <xs:enumeration value="$/BiWeek"/>
      <xs:enumeration value="$/Month"/>
      <xs:enumeration value="$/Year"/>
      <xs:enumeration value="$/SF/Year"/>
      <xs:enumeration value="$/SF/Month"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="garageSize">
    <xs:restriction base="xs:token">
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3+"/>
      <xs:enumeration value="4+"/>
      <xs:enumeration value="detached"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="lotAreaUnit">
    <xs:restriction base="xs:token">
      <xs:enumeration value="acres"/>
      <xs:enumeration value="sqfeet"/>
      <xs:enumeration value="meters"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="interiorAreaUnit">
    <xs:restriction base="xs:token">
      <xs:enumeration value="sqfeet"/>
      <xs:enumeration value="meters"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- The legacy element text is the numeric amount; UnitMoneyMark is optional. -->
  <xs:complexType name="moneyValue" mixed="true">
    <xs:sequence>
      <xs:element name="UnitMoneyMark" type="currencyCode" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <!-- Area element text is numeric; the existing *Method child identifies its unit. -->
  <xs:complexType name="lotSizeValue" mixed="true">
    <xs:sequence>
      <xs:element name="LotSizeMethod" type="lotAreaUnit"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="buildingSizeValue" mixed="true">
    <xs:sequence>
      <xs:element name="BuildingSizeMethod" type="interiorAreaUnit"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="sizeValue" mixed="true">
    <xs:sequence>
      <xs:element name="SizeMethod" type="interiorAreaUnit"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="minDivisibleValue" mixed="true">
    <xs:sequence>
      <xs:element name="SizeMethod" type="interiorAreaUnit"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="maxContiguousValue" mixed="true">
    <xs:sequence>
      <xs:element name="SizeMethod" type="interiorAreaUnit"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="officeSpaceValue" mixed="true">
    <xs:sequence>
      <xs:element name="SizeMethod" type="interiorAreaUnit"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="petsType">
    <xs:sequence>
      <xs:element name="Policy" type="xs:string" minOccurs="0"/>
      <xs:element name="Fee" type="moneyValue" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="utilitiesIncludedType">
    <xs:sequence>
      <xs:element name="Gas" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Electricity" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Water" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Cable" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Trash" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="schoolsType">
    <xs:sequence>
      <xs:element name="Elementary" type="xs:string" minOccurs="0"/>
      <xs:element name="Middle" type="xs:string" minOccurs="0"/>
      <xs:element name="High" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="imageType">
    <xs:sequence>
      <xs:element name="URL" type="xs:anyURI"/>
      <xs:element name="Caption" type="xs:string" minOccurs="0"/>
      <xs:element name="Order" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="Primary" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="imagesType">
    <xs:sequence>
      <xs:element name="Image" type="imageType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="mapCoordinatesType">
    <xs:sequence>
      <xs:element name="Latitude" type="latitude"/>
      <xs:element name="Longitude" type="longitude"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="fileInfoType">
    <xs:sequence>
      <xs:element name="Version" type="xs:string" fixed="propbot-openpmx-2026"/>
      <xs:element name="Sender" type="nonEmptyText"/>
      <xs:element name="Recipient" type="nonEmptyText"/>
      <xs:element name="MessageId" type="nonEmptyText">
        <xs:annotation><xs:documentation>Must be unique among messages sent by Sender.</xs:documentation></xs:annotation>
      </xs:element>
      <xs:element name="Created" type="xs:dateTime"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="governmentType">
    <xs:sequence>
      <xs:element name="LegalDescription" type="xs:string" minOccurs="0"/>
      <xs:element name="Zoning" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="saleInformationType">
    <xs:sequence>
      <xs:element name="ContactName" type="xs:string" minOccurs="0"/>
      <xs:element name="ContactPhone" type="xs:string" minOccurs="0"/>
      <xs:element name="ContactEmail" type="xs:string" minOccurs="0"/>
      <xs:element name="ContactWebSite" type="xs:anyURI" minOccurs="0"/>
      <xs:element name="Price" type="moneyValue" minOccurs="0"/>
      <xs:element name="MLSNumber" type="xs:string" minOccurs="0"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="FinancingDetails" type="xs:string" minOccurs="0"/>
      <xs:element name="NOI" type="moneyValue" minOccurs="0"/>
      <xs:element name="GOI" type="moneyValue" minOccurs="0"/>
      <xs:element name="CAP" type="nonNegativeDecimal" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="locationType">
    <xs:sequence>
      <xs:element name="AddressLine1" type="nonEmptyText"/>
      <xs:element name="AddressLine2" type="xs:string" minOccurs="0"/>
      <xs:element name="Locality" type="nonEmptyText"/>
      <xs:element name="Province" type="nonEmptyText"/>
      <xs:element name="PostalCode" type="nonEmptyText"/>
      <xs:element name="Country" type="nonEmptyText"/>
      <xs:element name="MapCoordinates" type="mapCoordinatesType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:group name="exteriorListingFields">
    <xs:sequence>
      <xs:element name="Title" type="nonEmptyText"/>
      <xs:element name="TypeId" type="propertyTypeId"/>
      <xs:element name="TypeId2" type="propertyTypeId" minOccurs="0"/>
      <xs:element name="TypeId3" type="propertyTypeId" minOccurs="0"/>
      <xs:element name="Category" type="categoryCode"/>
      <xs:element name="Status" type="propertyStatus"/>
      <xs:element name="ForSale" type="xs:boolean"/>
      <xs:element name="ForRent" type="xs:boolean"/>
      <xs:element name="LeaseOption" type="xs:boolean" minOccurs="0"/>
      <xs:element name="LotSize" type="lotSizeValue" minOccurs="0"/>
      <xs:element name="GarageSize" type="garageSize" minOccurs="0"/>
      <xs:element name="YearBuilt" type="xs:integer" minOccurs="0"/>
      <xs:element name="NumberOfFloors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="NumberOfUnits" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="ParkingSpaces" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="ParkingRatio" type="nonNegativeDecimal" minOccurs="0"/>
      <xs:element name="TrafficCount" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="Available" type="xs:date" minOccurs="0"/>
      <xs:element name="GroundLease" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Notes" type="xs:string" minOccurs="0"/>
      <xs:element name="Images" type="imagesType" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="residentialInteriorType">
    <xs:sequence>
      <xs:element name="Title" type="nonEmptyText"/>
      <xs:element name="Description" type="nonEmptyText"/>
      <xs:element name="TypeId" type="propertyTypeId"/>
      <xs:element name="Price" type="moneyValue" minOccurs="0"/>
      <xs:element name="RentType" type="rentType" minOccurs="0"/>
      <xs:element name="Room" type="xs:string" minOccurs="0"/>
      <xs:element name="Beds" type="xs:nonNegativeInteger"/>
      <xs:element name="Baths" type="nonNegativeDecimal"/>
      <xs:element name="Size" type="sizeValue"/>
      <xs:element name="AirConditioning" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Alarm" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Balcony" type="xs:boolean" minOccurs="0"/>
      <xs:element name="CableReady" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Dishwasher" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Disposal" type="xs:boolean" minOccurs="0"/>
      <xs:element name="FirePlace" type="xs:boolean" minOccurs="0"/>
      <xs:element name="GasStove" type="xs:boolean" minOccurs="0"/>
      <xs:element name="HardWood" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Microwave" type="xs:boolean" minOccurs="0"/>
      <xs:element name="WaterFront" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Patio" type="xs:boolean" minOccurs="0"/>
      <xs:element name="WasherDryerIncluded" type="xs:boolean" minOccurs="0"/>
      <xs:element name="WheelChair" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Refrigerator" type="xs:boolean" minOccurs="0"/>
      <xs:element name="InternetAccess" type="xs:boolean" minOccurs="0"/>
      <xs:element name="VaultedCeilings" type="xs:boolean" minOccurs="0"/>
      <xs:element name="SecurityDeposit" type="moneyValue" minOccurs="0"/>
      <xs:element name="NumberOfFloors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="WindowUnits" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="Available" type="xs:date" minOccurs="0"/>
      <xs:element name="LeaseDuration" type="xs:string" minOccurs="0"/>
      <xs:element name="LeaseTerm" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="Heating" type="xs:string" minOccurs="0"/>
      <xs:element name="SubLeaseDate" type="xs:date" minOccurs="0"/>
      <xs:element name="Notes" type="xs:string" minOccurs="0"/>
      <xs:element name="Images" type="imagesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commercialInteriorType">
    <xs:sequence>
      <xs:element name="Title" type="nonEmptyText"/>
      <xs:element name="Description" type="nonEmptyText"/>
      <xs:element name="TypeId" type="propertyTypeId" minOccurs="0"/>
      <xs:element name="TypeId2" type="propertyTypeId" minOccurs="0"/>
      <xs:element name="TypeId3" type="propertyTypeId" minOccurs="0"/>
      <xs:element name="Suite" type="xs:string" minOccurs="0"/>
      <xs:element name="Available" type="xs:date" minOccurs="0"/>
      <xs:element name="LeaseType" type="xs:string" minOccurs="0"/>
      <xs:element name="Price" type="moneyValue" minOccurs="0"/>
      <xs:element name="RentType" type="rentType" minOccurs="0"/>
      <xs:element name="LeaseTerm" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="SubLeaseDate" type="xs:date" minOccurs="0"/>
      <xs:element name="Procurement" type="xs:integer" minOccurs="0"/>
      <xs:element name="ParkingSpaces" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="NumberOfFloors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="Size" type="sizeValue"/>
      <xs:element name="MinDivisible" type="minDivisibleValue" minOccurs="0"/>
      <xs:element name="MaxContiguous" type="maxContiguousValue" minOccurs="0"/>
      <xs:element name="DockDoors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="GradeDoors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="Taxes" type="moneyValue" minOccurs="0"/>
      <xs:element name="OperationalExpenses" type="moneyValue" minOccurs="0"/>
      <xs:element name="Rail" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Fenced" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Cranes" type="xs:boolean" minOccurs="0"/>
      <xs:element name="TrailerParking" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Sprinklers" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Power" type="xs:string" minOccurs="0"/>
      <xs:element name="CeilingHeight" type="nonNegativeDecimal" minOccurs="0"/>
      <xs:element name="OfficeSpace" type="officeSpaceValue" minOccurs="0"/>
      <xs:element name="Cooling" type="xs:string" minOccurs="0"/>
      <xs:element name="Lighting" type="xs:string" minOccurs="0"/>
      <xs:element name="Heating" type="xs:string" minOccurs="0"/>
      <xs:element name="InternetAccess" type="xs:boolean" minOccurs="0"/>
      <xs:element name="WheelChairAccess" type="xs:boolean" minOccurs="0"/>
      <xs:element name="SecurityDeposit" type="moneyValue" minOccurs="0"/>
      <xs:element name="Notes" type="xs:string" minOccurs="0"/>
      <xs:element name="Images" type="imagesType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="residentialExteriorType">
    <xs:sequence>
      <xs:group ref="exteriorListingFields"/>
      <xs:element name="Description" type="nonEmptyText"/>
      <xs:element name="Neighborhood" type="xs:string" minOccurs="0"/>
      <xs:element name="TaxesPerYear" type="moneyValue" minOccurs="0"/>
      <xs:element name="AssociationFee" type="moneyValue" minOccurs="0"/>
      <xs:element name="SecurityDeposit" type="moneyValue" minOccurs="0"/>
      <xs:element name="ApplicationFee" type="moneyValue" minOccurs="0"/>
      <xs:element name="UtilitiesIncluded" type="utilitiesIncludedType" minOccurs="0"/>
      <xs:element name="AcceptGovernmentAssistance" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Refrigerator" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Internet" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Pets" type="petsType" minOccurs="0"/>
      <xs:element name="Fitness" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Schools" type="schoolsType" minOccurs="0"/>
      <xs:element name="Golf" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Pool" type="xs:boolean" minOccurs="0"/>
      <xs:element name="CommunityPool" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Spa" type="xs:boolean" minOccurs="0"/>
      <xs:element name="SportsClub" type="xs:boolean" minOccurs="0"/>
      <xs:element name="TennisCourts" type="xs:boolean" minOccurs="0"/>
      <xs:element name="BikePath" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Boating" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Courtyard" type="xs:boolean" minOccurs="0"/>
      <xs:element name="PlayGround" type="xs:boolean" minOccurs="0"/>
      <xs:element name="ClubHouse" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Gated" type="xs:boolean" minOccurs="0"/>
      <xs:element name="PublicTransportation" type="xs:boolean" minOccurs="0"/>
      <xs:element name="LawnSprinklers" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Fenced" type="xs:boolean" minOccurs="0"/>
      <xs:element name="OnSiteLaundry" type="xs:boolean" minOccurs="0"/>
      <xs:element name="InteriorResidential" type="residentialInteriorType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commercialExteriorType">
    <xs:sequence>
      <xs:group ref="exteriorListingFields"/>
      <xs:element name="Description" type="xs:string" minOccurs="0"/>
      <xs:element name="Class" type="xs:string" minOccurs="0"/>
      <xs:element name="TaxesPerYear" type="moneyValue" minOccurs="0"/>
      <xs:element name="BuildingSize" type="buildingSizeValue" minOccurs="0"/>
      <xs:element name="Cranes" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Rail" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Fenced" type="xs:boolean" minOccurs="0"/>
      <xs:element name="TrailerParking" type="xs:boolean" minOccurs="0"/>
      <xs:element name="DockDoors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="GradeDoors" type="xs:nonNegativeInteger" minOccurs="0"/>
      <xs:element name="InteriorCommercial" type="commercialInteriorType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OpenPMXFile">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="FileInfo" type="fileInfoType"/>
        <xs:element name="Government" type="governmentType" minOccurs="0"/>
        <xs:element name="SaleInformation" type="saleInformationType" minOccurs="0"/>
        <xs:element name="Location" type="locationType"/>
        <xs:choice>
          <xs:element name="ExteriorResidential" type="residentialExteriorType"/>
          <xs:element name="ExteriorCommercial" type="commercialExteriorType"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
