<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">

  <xs:element name="listings">
    <xs:annotation>
      <xs:documentation>
        Encapsulates all the listings in the feed. This is the document root
        tag of the XML file.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="language"/>
        <xs:element minOccurs="0" ref="datum"/>
        <xs:element minOccurs="1" maxOccurs="unbounded" ref="listing"/>
      </xs:sequence>
    </xs:complexType>
    <xs:unique name="uniqueId">
      <xs:selector xpath=".//listing"/>
      <xs:field xpath="id"/>
    </xs:unique>
  </xs:element>

  <xs:element name="language">
    <xs:annotation>
      <xs:documentation>
        The language used in this feed. The value must be an ISO 639
        lowercase 2-letter language code (http://www.w3.org/WAI/ER/IG/ert/iso639.htm#2letter).
        For example English is en, French is fr.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:language">
        <xs:enumeration value="aa"/>
        <xs:enumeration value="ab"/>
        <xs:enumeration value="af"/>
        <xs:enumeration value="am"/>
        <xs:enumeration value="ar"/>
        <xs:enumeration value="as"/>
        <xs:enumeration value="ay"/>
        <xs:enumeration value="az"/>
        <xs:enumeration value="ba"/>
        <xs:enumeration value="be"/>
        <xs:enumeration value="bg"/>
        <xs:enumeration value="bh"/>
        <xs:enumeration value="bi"/>
        <xs:enumeration value="bn"/>
        <xs:enumeration value="bo"/>
        <xs:enumeration value="br"/>
        <xs:enumeration value="ca"/>
        <xs:enumeration value="co"/>
        <xs:enumeration value="cs"/>
        <xs:enumeration value="cy"/>
        <xs:enumeration value="da"/>
        <xs:enumeration value="de"/>
        <xs:enumeration value="dz"/>
        <xs:enumeration value="el"/>
        <xs:enumeration value="en"/>
        <xs:enumeration value="eo"/>
        <xs:enumeration value="es"/>
        <xs:enumeration value="et"/>
        <xs:enumeration value="eu"/>
        <xs:enumeration value="fa"/>
        <xs:enumeration value="fi"/>
        <xs:enumeration value="fj"/>
        <xs:enumeration value="fo"/>
        <xs:enumeration value="fr"/>
        <xs:enumeration value="fy"/>
        <xs:enumeration value="ga"/>
        <xs:enumeration value="gd"/>
        <xs:enumeration value="gl"/>
        <xs:enumeration value="gn"/>
        <xs:enumeration value="gu"/>
        <xs:enumeration value="ha"/>
        <xs:enumeration value="he"/>
        <xs:enumeration value="hi"/>
        <xs:enumeration value="hr"/>
        <xs:enumeration value="hu"/>
        <xs:enumeration value="hy"/>
        <xs:enumeration value="ia"/>
        <xs:enumeration value="ie"/>
        <xs:enumeration value="ik"/>
        <xs:enumeration value="in"/>
        <xs:enumeration value="is"/>
        <xs:enumeration value="it"/>
        <xs:enumeration value="iw"/>
        <xs:enumeration value="ja"/>
        <xs:enumeration value="ji"/>
        <xs:enumeration value="jw"/>
        <xs:enumeration value="ka"/>
        <xs:enumeration value="kk"/>
        <xs:enumeration value="kl"/>
        <xs:enumeration value="km"/>
        <xs:enumeration value="kn"/>
        <xs:enumeration value="ko"/>
        <xs:enumeration value="ks"/>
        <xs:enumeration value="ku"/>
        <xs:enumeration value="ky"/>
        <xs:enumeration value="la"/>
        <xs:enumeration value="ln"/>
        <xs:enumeration value="lo"/>
        <xs:enumeration value="lt"/>
        <xs:enumeration value="lv"/>
        <xs:enumeration value="mg"/>
        <xs:enumeration value="mi"/>
        <xs:enumeration value="mk"/>
        <xs:enumeration value="ml"/>
        <xs:enumeration value="mn"/>
        <xs:enumeration value="mo"/>
        <xs:enumeration value="mr"/>
        <xs:enumeration value="ms"/>
        <xs:enumeration value="mt"/>
        <xs:enumeration value="my"/>
        <xs:enumeration value="na"/>
        <xs:enumeration value="ne"/>
        <xs:enumeration value="nl"/>
        <xs:enumeration value="no"/>
        <xs:enumeration value="oc"/>
        <xs:enumeration value="om"/>
        <xs:enumeration value="or"/>
        <xs:enumeration value="pa"/>
        <xs:enumeration value="pl"/>
        <xs:enumeration value="ps"/>
        <xs:enumeration value="pt"/>
        <xs:enumeration value="qu"/>
        <xs:enumeration value="rm"/>
        <xs:enumeration value="rn"/>
        <xs:enumeration value="ro"/>
        <xs:enumeration value="ru"/>
        <xs:enumeration value="rw"/>
        <xs:enumeration value="sa"/>
        <xs:enumeration value="sd"/>
        <xs:enumeration value="sg"/>
        <xs:enumeration value="sh"/>
        <xs:enumeration value="si"/>
        <xs:enumeration value="sk"/>
        <xs:enumeration value="sl"/>
        <xs:enumeration value="sm"/>
        <xs:enumeration value="sn"/>
        <xs:enumeration value="so"/>
        <xs:enumeration value="sq"/>
        <xs:enumeration value="sr"/>
        <xs:enumeration value="ss"/>
        <xs:enumeration value="st"/>
        <xs:enumeration value="su"/>
        <xs:enumeration value="sv"/>
        <xs:enumeration value="sw"/>
        <xs:enumeration value="ta"/>
        <xs:enumeration value="te"/>
        <xs:enumeration value="tg"/>
        <xs:enumeration value="th"/>
        <xs:enumeration value="ti"/>
        <xs:enumeration value="tk"/>
        <xs:enumeration value="tl"/>
        <xs:enumeration value="tn"/>
        <xs:enumeration value="to"/>
        <xs:enumeration value="tr"/>
        <xs:enumeration value="ts"/>
        <xs:enumeration value="tt"/>
        <xs:enumeration value="tw"/>
        <xs:enumeration value="uk"/>
        <xs:enumeration value="ur"/>
        <xs:enumeration value="uz"/>
        <xs:enumeration value="vi"/>
        <xs:enumeration value="vo"/>
        <xs:enumeration value="wo"/>
        <xs:enumeration value="xh"/>
        <xs:enumeration value="yo"/>
        <xs:enumeration value="zh"/>
        <xs:enumeration value="zu"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="datum">
    <xs:annotation>
      <xs:documentation>
        The datum in use for geographic coordinates.
        Currently supported values:  TOKYO, WGS84
        If this tag is absent, WGS84 is assumed.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="TOKYO"/>
        <xs:enumeration value="tokyo"/>
        <xs:enumeration value="WGS84"/>
        <xs:enumeration value="wgs84"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="listing">
    <xs:annotation>
      <xs:documentation>
        Encapsulates all the information related to a single business.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="id"/>
        <xs:element ref="name"/>
        <xs:element ref="address"/>
        <xs:element ref="country"/>
        <xs:element minOccurs="0" ref="latitude"/>
        <xs:element minOccurs="0" ref="longitude"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="phone"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="category"/>
        <xs:element minOccurs="0" ref="date"/>
        <xs:element minOccurs="0" ref="content"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="id">
    <xs:annotation>
      <xs:documentation>
        Unique ID of the listing on your site.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="name">
    <xs:annotation>
      <xs:documentation>
        The name of the business.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="address">
    <xs:annotation>
      <xs:documentation>
        Address of the business, including street number, street name,
        town/city, state/province/region, and postal code. Example:
        1600 Amphitheatre Parkway, Mountain View, CA 94043
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:sequence>
	<xs:element minOccurs="0" maxOccurs="unbounded" ref="component"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.address"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.address">
    <xs:annotation>
      <xs:documentation>
	The type of address data provided.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="format">
      <xs:simpleType>
	<xs:restriction base="xs:string">
	  <xs:minLength value="1"/>
	</xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="component">
    <xs:annotation>
      <xs:documentation>
	A particular component of an address.  Example:
	<component name="addr1">1600 Amphitheatre Parkway</component>
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.component"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.component">
    <xs:annotation>
      <xs:documentation>
	The type of address component provided.  Example: addr1
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="name" use="required">
      <xs:simpleType>
	<xs:restriction base="xs:string">
	  <xs:minLength value="1"/>
	</xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="country">
    <xs:annotation>
      <xs:documentation>
        The country that this listing is located in. The value must be a
        ISO 3116 uppercase 2-letter country code (http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html).
        For example, United States is US and Canada is CA.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="AD"/>
        <xs:enumeration value="AE"/>
        <xs:enumeration value="AF"/>
        <xs:enumeration value="AG"/>
        <xs:enumeration value="AI"/>
        <xs:enumeration value="AL"/>
        <xs:enumeration value="AM"/>
        <xs:enumeration value="AN"/>
        <xs:enumeration value="AO"/>
        <xs:enumeration value="AQ"/>
        <xs:enumeration value="AR"/>
        <xs:enumeration value="AS"/>
        <xs:enumeration value="AT"/>
        <xs:enumeration value="AU"/>
        <xs:enumeration value="AW"/>
        <xs:enumeration value="AX"/>
        <xs:enumeration value="AZ"/>
        <xs:enumeration value="BA"/>
        <xs:enumeration value="BB"/>
        <xs:enumeration value="BD"/>
        <xs:enumeration value="BE"/>
        <xs:enumeration value="BF"/>
        <xs:enumeration value="BG"/>
        <xs:enumeration value="BH"/>
        <xs:enumeration value="BI"/>
        <xs:enumeration value="BJ"/>
        <xs:enumeration value="BM"/>
        <xs:enumeration value="BN"/>
        <xs:enumeration value="BO"/>
        <xs:enumeration value="BR"/>
        <xs:enumeration value="BS"/>
        <xs:enumeration value="BT"/>
        <xs:enumeration value="BV"/>
        <xs:enumeration value="BW"/>
        <xs:enumeration value="BY"/>
        <xs:enumeration value="BZ"/>
        <xs:enumeration value="CA"/>
        <xs:enumeration value="CC"/>
        <xs:enumeration value="CD"/>
        <xs:enumeration value="CF"/>
        <xs:enumeration value="CG"/>
        <xs:enumeration value="CH"/>
        <xs:enumeration value="CI"/>
        <xs:enumeration value="CK"/>
        <xs:enumeration value="CL"/>
        <xs:enumeration value="CM"/>
        <xs:enumeration value="CN"/>
        <xs:enumeration value="CO"/>
        <xs:enumeration value="CR"/>
        <xs:enumeration value="CS"/>
        <xs:enumeration value="CU"/>
        <xs:enumeration value="CV"/>
        <xs:enumeration value="CX"/>
        <xs:enumeration value="CY"/>
        <xs:enumeration value="CZ"/>
        <xs:enumeration value="DE"/>
        <xs:enumeration value="DJ"/>
        <xs:enumeration value="DK"/>
        <xs:enumeration value="DM"/>
        <xs:enumeration value="DO"/>
        <xs:enumeration value="DZ"/>
        <xs:enumeration value="EC"/>
        <xs:enumeration value="EE"/>
        <xs:enumeration value="EG"/>
        <xs:enumeration value="EH"/>
        <xs:enumeration value="ER"/>
        <xs:enumeration value="ES"/>
        <xs:enumeration value="ET"/>
        <xs:enumeration value="FI"/>
        <xs:enumeration value="FJ"/>
        <xs:enumeration value="FK"/>
        <xs:enumeration value="FM"/>
        <xs:enumeration value="FO"/>
        <xs:enumeration value="FR"/>
        <xs:enumeration value="GA"/>
        <xs:enumeration value="GB"/>
        <xs:enumeration value="GD"/>
        <xs:enumeration value="GE"/>
        <xs:enumeration value="GF"/>
        <xs:enumeration value="GG"/>
        <xs:enumeration value="GH"/>
        <xs:enumeration value="GI"/>
        <xs:enumeration value="GL"/>
        <xs:enumeration value="GM"/>
        <xs:enumeration value="GN"/>
        <xs:enumeration value="GP"/>
        <xs:enumeration value="GQ"/>
        <xs:enumeration value="GR"/>
        <xs:enumeration value="GS"/>
        <xs:enumeration value="GT"/>
        <xs:enumeration value="GU"/>
        <xs:enumeration value="GW"/>
        <xs:enumeration value="GY"/>
        <xs:enumeration value="HK"/>
        <xs:enumeration value="HM"/>
        <xs:enumeration value="HN"/>
        <xs:enumeration value="HR"/>
        <xs:enumeration value="HT"/>
        <xs:enumeration value="HU"/>
        <xs:enumeration value="ID"/>
        <xs:enumeration value="IE"/>
        <xs:enumeration value="IL"/>
        <xs:enumeration value="IM"/>
        <xs:enumeration value="IN"/>
        <xs:enumeration value="IO"/>
        <xs:enumeration value="IQ"/>
        <xs:enumeration value="IR"/>
        <xs:enumeration value="IS"/>
        <xs:enumeration value="IT"/>
        <xs:enumeration value="JE"/>
        <xs:enumeration value="JM"/>
        <xs:enumeration value="JO"/>
        <xs:enumeration value="JP"/>
        <xs:enumeration value="KE"/>
        <xs:enumeration value="KG"/>
        <xs:enumeration value="KH"/>
        <xs:enumeration value="KI"/>
        <xs:enumeration value="KM"/>
        <xs:enumeration value="KN"/>
        <xs:enumeration value="KP"/>
        <xs:enumeration value="KR"/>
        <xs:enumeration value="KW"/>
        <xs:enumeration value="KY"/>
        <xs:enumeration value="KZ"/>
        <xs:enumeration value="LA"/>
        <xs:enumeration value="LB"/>
        <xs:enumeration value="LC"/>
        <xs:enumeration value="LI"/>
        <xs:enumeration value="LK"/>
        <xs:enumeration value="LR"/>
        <xs:enumeration value="LS"/>
        <xs:enumeration value="LT"/>
        <xs:enumeration value="LU"/>
        <xs:enumeration value="LV"/>
        <xs:enumeration value="LY"/>
        <xs:enumeration value="MA"/>
        <xs:enumeration value="MC"/>
        <xs:enumeration value="MD"/>
        <xs:enumeration value="ME"/>
        <xs:enumeration value="MG"/>
        <xs:enumeration value="MH"/>
        <xs:enumeration value="MK"/>
        <xs:enumeration value="ML"/>
        <xs:enumeration value="MM"/>
        <xs:enumeration value="MN"/>
        <xs:enumeration value="MO"/>
        <xs:enumeration value="MP"/>
        <xs:enumeration value="MQ"/>
        <xs:enumeration value="MR"/>
        <xs:enumeration value="MS"/>
        <xs:enumeration value="MT"/>
        <xs:enumeration value="MU"/>
        <xs:enumeration value="MV"/>
        <xs:enumeration value="MW"/>
        <xs:enumeration value="MX"/>
        <xs:enumeration value="MY"/>
        <xs:enumeration value="MZ"/>
        <xs:enumeration value="NA"/>
        <xs:enumeration value="NC"/>
        <xs:enumeration value="NE"/>
        <xs:enumeration value="NF"/>
        <xs:enumeration value="NG"/>
        <xs:enumeration value="NI"/>
        <xs:enumeration value="NL"/>
        <xs:enumeration value="NO"/>
        <xs:enumeration value="NP"/>
        <xs:enumeration value="NR"/>
        <xs:enumeration value="NU"/>
        <xs:enumeration value="NZ"/>
        <xs:enumeration value="OM"/>
        <xs:enumeration value="PA"/>
        <xs:enumeration value="PE"/>
        <xs:enumeration value="PF"/>
        <xs:enumeration value="PG"/>
        <xs:enumeration value="PH"/>
        <xs:enumeration value="PK"/>
        <xs:enumeration value="PL"/>
        <xs:enumeration value="PM"/>
        <xs:enumeration value="PN"/>
        <xs:enumeration value="PR"/>
        <xs:enumeration value="PS"/>
        <xs:enumeration value="PT"/>
        <xs:enumeration value="PW"/>
        <xs:enumeration value="PY"/>
        <xs:enumeration value="QA"/>
        <xs:enumeration value="RE"/>
        <xs:enumeration value="RO"/>
        <xs:enumeration value="RS"/>
        <xs:enumeration value="RU"/>
        <xs:enumeration value="RW"/>
        <xs:enumeration value="SA"/>
        <xs:enumeration value="SB"/>
        <xs:enumeration value="SC"/>
        <xs:enumeration value="SD"/>
        <xs:enumeration value="SE"/>
        <xs:enumeration value="SG"/>
        <xs:enumeration value="SH"/>
        <xs:enumeration value="SI"/>
        <xs:enumeration value="SJ"/>
        <xs:enumeration value="SK"/>
        <xs:enumeration value="SL"/>
        <xs:enumeration value="SM"/>
        <xs:enumeration value="SN"/>
        <xs:enumeration value="SO"/>
        <xs:enumeration value="SR"/>
        <xs:enumeration value="ST"/>
        <xs:enumeration value="SV"/>
        <xs:enumeration value="SY"/>
        <xs:enumeration value="SZ"/>
        <xs:enumeration value="TC"/>
        <xs:enumeration value="TD"/>
        <xs:enumeration value="TF"/>
        <xs:enumeration value="TG"/>
        <xs:enumeration value="TH"/>
        <xs:enumeration value="TJ"/>
        <xs:enumeration value="TK"/>
        <xs:enumeration value="TL"/>
        <xs:enumeration value="TM"/>
        <xs:enumeration value="TN"/>
        <xs:enumeration value="TO"/>
        <xs:enumeration value="TR"/>
        <xs:enumeration value="TT"/>
        <xs:enumeration value="TV"/>
        <xs:enumeration value="TW"/>
        <xs:enumeration value="TZ"/>
        <xs:enumeration value="UA"/>
        <xs:enumeration value="UG"/>
        <xs:enumeration value="UM"/>
        <xs:enumeration value="US"/>
        <xs:enumeration value="UY"/>
        <xs:enumeration value="UZ"/>
        <xs:enumeration value="VA"/>
        <xs:enumeration value="VC"/>
        <xs:enumeration value="VE"/>
        <xs:enumeration value="VG"/>
        <xs:enumeration value="VI"/>
        <xs:enumeration value="VN"/>
        <xs:enumeration value="VU"/>
        <xs:enumeration value="WF"/>
        <xs:enumeration value="WS"/>
        <xs:enumeration value="YE"/>
        <xs:enumeration value="YT"/>
        <xs:enumeration value="ZA"/>
        <xs:enumeration value="ZM"/>
        <xs:enumeration value="ZW"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="latitude">
    <xs:annotation>
      <xs:documentation>
        The latitude that corresponds to the location of the listing.
        For example, the latitude for 1600 Amphitheatre Parkway,
        Mountain View, CA 94043 is 37.423738.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:float">
        <xs:minInclusive value="-90.0"/>
        <xs:maxInclusive value="90.0"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="longitude">
    <xs:annotation>
      <xs:documentation>
        The longitude that corresponds to the location of the listing.
        For example, the latitude for 1600 Amphitheatre Parkway,
        Mountain View, CA 94043 is -122.090101.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:float">
        <xs:minInclusive value="-180.0"/>
        <xs:maxInclusive value="180.0"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="phone">
    <xs:annotation>
      <xs:documentation>
        The phone number of the business.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.phone"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.phone">
    <xs:attribute name="type" use="required">
      <xs:annotation>
        <xs:documentation>
          The type of the phone number.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="main">
            <xs:annotation>
              <xs:documentation>
                Main voice telephone number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="tollfree">
            <xs:annotation>
              <xs:documentation>
                Toll free telephone number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="fax">
            <xs:annotation>
              <xs:documentation>
                Fax telephone number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="tdd">
            <xs:annotation>
              <xs:documentation>
                Telecommunications Device for the Deaf telephone number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="mobile">
            <xs:annotation>
              <xs:documentation>
                Mobile telephone number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="switzerland_compliance_no_cold_calls">
      <xs:annotation>
        <xs:documentation>
          This attribute is specifically for compliance with regulations
          in Switzerland. According to Swiss law, businesses can request
          that their phone numbers must not be used for cold calls. Direct
          marketers must honor this request. YP providers must mark these
          number in their directories.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="true">
            <xs:annotation>
              <xs:documentation>
                The business does not want to receive cold calls on this
                number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="false">
            <xs:annotation>
              <xs:documentation>
                The business does not object to cold calls on this number.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="switzerland_compliance_premium_rate_label">
      <xs:annotation>
        <xs:documentation>
          This attribute is specifically for compliance with regulations
          in Switzerland. According to Swiss law, premium rate numbers must be
          labelled with its per minute cost. If the attribute exists, then its
          value must conform to the format "(CHF x.xx/Min.)", for example
          "(CHF 1.19/Min.)". The whole feed will be rejected if it contains
          even a single premium_rate_label that does not conform to the format.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="category">
    <xs:annotation>
      <xs:documentation>
        The category that the listing belongs to (based on your site's
        taxonomy). Example: Restaurants - Chinese
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="content">
    <xs:annotation>
      <xs:documentation>
        Encapsulates all the content relevant to a listing.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="text"/>
        <xs:element ref="review"/>
        <xs:element ref="image"/>
        <xs:element ref="attributes"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="text">
    <xs:annotation>
      <xs:documentation>
        Encapsulates a block of text about the listing such as a
        description or a restaurant menu.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="link"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="altlink"/>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element minOccurs="0" ref="author"/>
        <xs:element ref="body"/>
        <xs:element minOccurs="0" ref="date"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.text"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.text">
    <xs:attribute name="type">
      <xs:annotation>
        <xs:documentation>
          The type of the text.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="description">
            <xs:annotation>
              <xs:documentation>
                If the contents are a general description of the business.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="offer">
            <xs:annotation>
              <xs:documentation>
                If the contents are an offer or coupon.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="menu">
            <xs:annotation>
              <xs:documentation>
                If the contents are are a restaurant menu.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="review">
    <xs:annotation>
      <xs:documentation>
        Encapsulates a single review of the listing.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="link"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="altlink"/>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element minOccurs="0" ref="author"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="rating"/>
        <xs:element ref="body"/>
        <xs:element minOccurs="0" ref="date"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.review"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.review">
    <xs:attribute name="type" use="required">
      <xs:annotation>
        <xs:documentation>
          The type of the review.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="editorial">
            <xs:annotation>
              <xs:documentation>
                Review was written by a member of your staff.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="user">
            <xs:annotation>
              <xs:documentation>
                Review was written by a user of your site.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="image">
    <xs:annotation>
      <xs:documentation>
        Encapsulates an image relevant to the listing.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="link"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="altlink"/>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element minOccurs="0" ref="author"/>
        <xs:element minOccurs="0" ref="date"/>
      </xs:sequence>
      <xs:attributeGroup ref="attlist.image"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.image">
    <xs:attribute name="type" use="required">
      <xs:annotation>
        <xs:documentation>The image type.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ad"/>
          <xs:enumeration value="coupon"/>
          <xs:enumeration value="menu"/>
          <xs:enumeration value="photo"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="url" type="xs:anyURI" use="required">
      <xs:annotation>
        <xs:documentation>The URL of the full-sized image</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="width" type="xs:unsignedInt">
      <xs:annotation>
        <xs:documentation>The width of the image</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="height" type="xs:unsignedInt">
      <xs:annotation>
        <xs:documentation>The height of the image</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="attributes">
    <xs:annotation>
      <xs:documentation>
        Encapsulates a set of attributes about the listing. All attributes
        must be displayed on a single page on your site. If you have
        multiple pages that contain attributes, then include each page as
        a separate attributes tag.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="link"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="altlink"/>
        <xs:element minOccurs="0" ref="title"/>
        <xs:element minOccurs="0" ref="author"/>
        <xs:element minOccurs="0" ref="email"/>
        <xs:element minOccurs="0" ref="website"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="attr"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="hiddenattr"/>
        <xs:element minOccurs="0" ref="date"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="attr">
    <xs:annotation>
      <xs:documentation>
        A single piece of structured information about the listing.
        For example, if the name is Business Hours then the value can
        be Mon-Fri 9am-5pm. If the name is Payment Types Accepted,
        then the value can be Cash, Visa, Mastercard. Use the names and
        values that appear on your site.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.attr"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.attr">
    <xs:attribute name="name" use="required">
      <xs:annotation>
        <xs:documentation>
          The name of the field displayed on your site.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="priority" type="xs:integer">
      <xs:annotation>
        <xs:documentation>
          The importance of the fact, which may effect the order
          in which facts are displayed in search results.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="hiddenattr">
    <xs:annotation>
      <xs:documentation>
        A single piece of structured information about the listing,
        which should be hidden from users, because it is used for some
	internal purpose.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.hiddenattr"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.hiddenattr">
    <xs:attribute name="name" use="required">
      <xs:annotation>
        <xs:documentation>
          The name of the hidden field.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="link" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>
        The URL of the page on your site that contains the content. We will
        link the teaser on Google Local to this page.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="altlink">
    <xs:annotation>
      <xs:documentation>
        The URL of the mobile page that contains the content. 
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:simpleContent>
        <xs:extension base="xs:anyURI">
          <xs:attributeGroup ref="altlinklist.attr"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="altlinklist.attr">
    <xs:attribute name="operator">
      <xs:annotation>
        <xs:documentation>
          The name of mobile operator.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="jp-ntt_docomo"/>
          <xs:enumeration value="jp-kddi_au"/>
          <xs:enumeration value="jp-softbank"/>
          <xs:enumeration value="jp-default"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="markup">
      <xs:annotation>
         <xs:documentation>
          The markup language of mobile website.
         </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="chtml"/>
          <xs:enumeration value="html"/>
          <xs:enumeration value="wml"/>
          <xs:enumeration value="xhtml"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="title">
    <xs:annotation>
      <xs:documentation>
        A short summary of the content.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="author">
    <xs:annotation>
      <xs:documentation>
        The name of the author of the content. The value can either be
        a user name or a full name in the format "Firstname Lastname".
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="body">
    <xs:annotation>
      <xs:documentation>
        The entire text of a review or description of the listing. Can
        contain escaped HTML
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="website" type="xs:anyURI">
    <xs:annotation>
      <xs:documentation>
        The official website of the business.
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:element name="email">
    <xs:annotation>
      <xs:documentation>
        An email address associated with a business listing.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:pattern value="[a-zA-Z_0-9\.\-]+@([a-zA-Z_0-9\-]+\.)+[a-zA-Z]{2,6}"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="rating">
    <xs:annotation>
      <xs:documentation>
        If applicable, the rating score associated with the review. The value
        should reflect how the rating appears on your site. If there are
        multiple ratings for a single review, then use a separate rating tag
        for each rating.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.rating"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.rating">
    <xs:attribute name="name">
      <xs:annotation>
        <xs:documentation>
          Type of the rating such as "Service" or "Food Quality". If there is
          only one rating score in the review, then name may be omitted.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:element name="date">
    <xs:annotation>
      <xs:documentation>
        The date the listing or piece of content was created.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="attlist.date"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="attlist.date">
    <xs:attribute name="year" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:unsignedInt">
          <xs:minInclusive value="1990"/>
          <xs:maxInclusive value="2099"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="month" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:unsignedInt">
          <xs:minInclusive value="1"/>
          <xs:maxInclusive value="12"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="day">
      <xs:simpleType>
        <xs:restriction base="xs:unsignedInt">
          <xs:minInclusive value="1"/>
          <xs:maxInclusive value="31"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

</xs:schema>
