Прайс-лист оффлайн-магазина

Составьте прайс-лист в формате YML. Стандарт YML (Yandex Market Language) разработан Яндексом и основан на стандарте XML.

Требования

  1. В YML нельзя использовать непечатаемые символы с ASCII-кодами от 0 до 31 (за исключением символов с кодами 9, 10, 13 — табуляция, перевод строки, возврат каретки).

  2. Символы " & > < ' нужно заменять на эквивалентные коды:

    Символ в тексте

    Код для YML-файла

    "
    &
    >
    <
    '
    &quot;
    &amp;
    &gt;
    &lt;
    &apos;
  3. Допустимые кодировки YML-файла: UTF-8, windows-1251.

Структура

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2017-02-05 17:22">
  <shop>
    ...
    <offers>
      <offer>
        ...
      </offer>
      ...     
    </offers>
    <promos>
      <promo>
        ...
      </promo>
      ...
    </promos>
  </shop>
</yml_catalog>
Элемент Описание
xml header Стандартный XML-заголовок. Должен начинаться с первой строки, с нулевого символа.
yml_catalog Любой XML-документ может содержать только один корневой элемент. Формат YML в качестве корневого использует элемент <yml_catalog>. Атрибут date элемента <yml_catalog> должен соответствовать дате и времени генерации YML-файла на стороне магазина. Дата должна иметь формат YYYY-MM-DD hh:mm.
shop

Элемент содержит описание магазина (shop), его предложений (offers) и акций (promos):

Пример YML с несколькими товарами

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2018-12-04 00:04">
  <shop>
    <name>Отборные продукты</name>
    <company>ООО Отборные продукты</company>
    <url>https://example-shop.ru</url>
    <platform>uCoz</platform>
    <version>1.0</version>
    <currencies>
      <currency id="RUR" rate="1"/>
    </currencies>
    <categories>
      <category id="20959">Личная гигиена</category>
      <category id="24048" parentId="20959">Дезодоранты</category>
      <category id="20960">Молочные продукты</category>
      <category id="24049" parentId="20959">Молоко</category>
      <category id="20961">Свежие фрукты и овощи</category>
      <category id="20962">Алкогольные напитки</category>
      <category id="24050" parentId="20962">Пиво</category>
      <category id="20963">Безалкогольные напитки</category>
    </categories>
    <offers>
      <!--Дезодорант-->
      <offer id="50736">
        <name>Антиперспирант женский Цветочный бриз Каждый День, 50мл</name>
        <price>100</price><!--Цена во всех точках продаж, кроме указанных в outlets-->
        <oldprice>120.0</oldprice>
        <currencyId>RUR</currencyId>
        <categoryId>24048</categoryId>
        <vendor>Каждый День</vendor>
        <description>50 мл</description>
        <barcode>4690363024544</barcode>
        <param name="volume" unit="мл">50</param>
        <outlets>
          <outlet id="1001" instock="11">
            <price>110.0</price><!--Цена только в этой точке-->
            <oldprice>130.0</oldprice>
          </outlet>
          <outlet id="1002" instock="5"/>
        </outlets>
        <private-label>true</private-label>
      </offer>

      <!--Молоко-->
      <offer id="50737">
        <name>Молоко Простоквашино отборное 3,4-4,5% 0,93 л</name>
        <vendor>Простоквашино</vendor>
        <price>99.95</price>
        <currencyId>RUR</currencyId>
        <categoryId>24049</categoryId>
        <description>4,5% 0,93 л</description>
        <param name="volume" unit="л">0,93</param>
        <barcode>4607053473537</barcode>
      </offer>

      <!--Фрукты, овощи по весу-->
      <offer id="50738">
        <name>Яблоки голден, Россия, 1кг</name>
        <price>125.6</price>
        <country_of_origin>Россия</country_of_origin>
        <currencyId>RUR</currencyId>
        <categoryId>20961</categoryId>
        <param name="weight" unit="кг">1</param>
        <outlets>
          <outlet id="1001">
            <price>99.0</price><!--Цена только в этой точке продаж-->
            <oldprice>125.6</oldprice><!--Старая цена для расчета скидки только в этой точке-->
          </outlet>
          <outlet id="1002">
            <price>105.0</price><!--Цена только в этой точке продаж-->
          </outlet>
        </outlets>
      </offer>

      <!--Фрукты, овощи поштучно-->
      <offer id="50738">
        <name>Лимоны Турция, 3шт</name>
        <country_of_origin>Турция</country_of_origin>
        <price>25.00</price>
        <currencyId>RUR</currencyId>
        <categoryId>20961</categoryId>
        <description>3шт</description>
        <param name="штук в упаковке" unit="шт">3</param>
        <barcode>2000036912123</barcode>
      </offer>

      <!--Фрукты, овощи в фасовке-->
      <offer id="50739">
        <name>Шпинат фасованный, Россия, 150г</name>
        <country_of_origin>Россия</country_of_origin>
        <price>23.50</price>
        <currencyId>RUR</currencyId>
        <categoryId>20961</categoryId>
        <param name="weight" unit="г">150</param>
      </offer>

      <!-- Алкоголь -->
      <offer id="50740" type="alco">
        <name>Пиво Мишенька под Вишенкой, Волковская пивоварня, 0.5л, 6.2%</name>
        <vendor>Волковская пивоварня</vendor>
        <country_of_origin>Россия</country_of_origin>
        <price>45.50</price>
        <oldprice>51.0</oldprice>
        <currencyId>RUR</currencyId>
        <categoryId>24048</categoryId>
        <description>0,5 л, 6.2%</description>
        <param name="volume" unit="л">0,5</param>
        <barcode>2000036912551</barcode>
      </offer>

      <!-- Упаковка 24 бутылки газировки -->
      <offer id="50741">
        <name>Газированный напиток COCA-COLA Zero, 0,5 л, 24 штуки</name>
        <vendor>COCA-COLA</vendor>
        <price>789.60</price>
        <currencyId>RUR</currencyId>
        <categoryId>20963</categoryId>
        <description>0,5 л, 24 штуки</description>
        <param name="volume" unit="л">0,5</param>
        <param name="quantity" unit="шт">24</param>
        <barcode>2000053473537</barcode>
        <outlets>
          <outlet id="1001" instock="2"/>
          <outlet id="1002" instock="5"/>
        </outlets>
      </offer>
    </offers>

   <!-- Акции -->
    <promos>
      <promo id="1" type="flash discount">
        <start-date>2018-12-01T19:21:12+0000</start-date>
        <end-date>2018-12-05T19:21:12+0000</end-date>
        <description>5 дней скидка на дезодоранты Юнилевер в двух точках продаж</description>
        <purchase>
          <product offer-id="50736" outlet-id="205">
            <discount-price currency="RUR">80</discount-price>
          </product>
          <product offer-id="50736" outlet-id="206">
            <discount-price currency="RUR">80</discount-price>
          </product>
        </purchase>
      </promo>
      <promo id="2" type="n plus m">
        <start-date>2018-12-04T19:21:12+0000</start-date>
        <end-date>2018-12-05T19:21:12+0000</end-date>
        <description>Купи 4 бутылки сока и получи пятую в подарок</description>
        <purchase>
          <required-quantity>4</required-quantity>
          <free-quantity>1</free-quantity>
          <product offer-id="50740" outlet-id="202"/><!--акция действует только в этой точке-->
          <product offer-id="50740" outlet-id="203"/><!--акция действует только в этой точке-->
          <product category-id="24050"/><!--акция действует на всю категорию-->
        </purchase>
      </promo>
    </promos>
  </shop>
</yml_catalog>