Правила заполнения XML-файла
XML-файл (фид) — это формат данных, разработанный для описания товарных предложений продавца. Основан на формате Yandex Market XML (YML). Он помогает решать две задачи:
- добавлять товары в каталог и обновлять информацию о них;
- управлять загрузкой ассортимента в личный кабинет, ценами и остатками.
XML-документ с описанием товаров, то есть XML-фид, размещается на веб-сервере продавца, а система Мегамаркета получает из него информацию.
Правила для XML-файла
1. Товарный фид должен быть размещён на отдельной странице http/https сайта продавца или на любом другом стороннем хосте.
Фид не должен находиться:
- на ftp/sftp сервере;
- в облачных хранилищах (Яндекс. Диск, Google.Диск).
2. Максимальный объём файла составляет 500 МБ.
3. Нельзя менять структуру файла. Требования к его заполнению должны быть соблюдены.
4. Минимальное значение для всех обязательных элементов – 1 символ, не считая пробелы и специальные знаки.
5. Фид должен быть представлен в кодировке UTF-8 или Windows-1251.
6. Файл XML должен соответствовать общим требованиям стандарта XML.
7. XML-заголовок файла <?xml> должен начинаться с первой строки, с 0-го символа.
8. Все атрибуты элементов файла должны быть указаны в двойных кавычках " ".
9. Нельзя использовать непечатаемые символы с ASCII-кодами от 0 до 31, за исключением знаков с кодами 9, 10, 13 — табуляция, перевод строки, возврат каретки.
10. Символы ", &, >, <, ' нужно заменять на соответствующие коды:
Символ в тексте | Код для XML-файла Мегамаркета |
|
|
|
|
|
|
|
|
|
|
Как заполнить XML-файл
Заголовок
Должен быть в любом XML-файле. Заголовок не может дублироваться.
Он занимает первую строку и начинается с нулевого символа.
Кодировка обязательно должна быть UTF-8.
<?xml version="1.0" encoding="UTF-8"?>
Корневой элемент <yml_catalog>
Должен быть в любом XML-файле. В качестве корневого используется элемент <yml_catalog> с атрибутом date.
В атрибуте укажите дату и время, на которые актуальны данные в файле.
Дату и время нужно отметить, согласно стандарту RFC 3339. Обязательно указывайте часовой пояс. Он отсчитывается от Всемирного координированного времени (UTC).
Например, время по Красноярску нужно отметить так:
<yml_catalog date="2022-05-12t14:37+07:00">
Элемент <shop>
Должен быть в любом XML-файле. Прописывается в элементе <yml_catalog> один раз. Должен содержать данные о магазине, которому предназначен этот фид.
Список параметров, входящих в <shop>
1. Categories
Элемент с описанием категорий товаров. Каждая категория описывается в отдельном элементе category.
Повторяться не может.
Наличие в файле обязательно.
Элементы, входящие в Categories:
category
Категория товара.
category IdId категории из системы продавца. Должен быть уникальным в рамках всех категорий. Тип данных:
Повторяться может. Наличие в файле обязательно. | category nameНазвание категории. Тип данных: длина до 512 символов включительно. Повторяться не может. Наличие в файле обязательно. | category parentIdId родительской категории продавца. Используется, если категории делятся на подкатегории. Тип данных:
Повторяться не может. Наличие в файле необязательно. |
2. Shipment-options
Элемент с описанием параметров отгрузки офферов продавцом. Эти параметры будут применены ко всему ассортименту товаров.
Повторяться может.
Наличие в файле необязательно.
Элементы, входящие в Shipment-options:
option daysКоличество рабочих дней для доставки заказа. Тип данных:
Повторяться может. Наличие в файле обязательно, если есть shipment-options. | option order-beforeВремя, до которого в этот день принимаются заказы для доставки. Тип данных: целое число от 1 до 23. Повторяться может. Наличие в файле обязательно, если есть shipment-options. |
3. Offers
Список товаров магазина. Может присутствовать только в единственном экземпляре. Каждый товар описывается отдельно.
Повторяться может.
Наличие в файле обязательно.
Элементы, входящие в Offers:
offer id
Должен соответствовать артикулу товара в системе учёта заказов продавца. Товары, у которых несколько цветов, размеров и других отличий, должны записываться с разным id.
Тип данных:
- длина до 80 символов включительно;
- не должно быть пробелов.
Повторяться может.
Наличие в файле обязательно.
offer name
Название товара. Может присутствовать только в единственном экземпляре.
Тип данных: длина до 512 символов включительно.
Повторяться может.
Наличие в файле обязательно.
available
Показывает доступность конкретного товара:
- true - доступен для продажи;
- false - недоступен для продажи.
Если доступность не указана, система по умолчанию пропишет true.
Повторяться может.
Наличие в файле необязательно.
url
Ссылка на страницу товара в магазине продавца.
Тип данных: длина до 512 символов включительно.
Повторяться может.
Наличие в файле необязательно.
price
Цена товара.
Тип данных:
- целое число >=0;
- по умолчанию округляется до целых значений;
- максимальное допустимое значение 99 999 999.
Повторяться может.
Наличие в файле необязательно.
oldprice
Предыдущая цена товара. Зачеркнута на витрине как старая цена.
Тип данных:
- целое число >=0;
- по умолчанию округляется до целых значений;
- максимальное допустимое значение 99 999 999.
Повторяться может.
Наличие в файле необязательно.
categoryId
Id категории продавца, в которую входит данный товар. Может присутствовать только в единственном экземпляре.
Тип данных:
- целое число >0;
- длина до 50 символов включительно.
Повторяться может.
Наличие в файле обязательно.
picture
Ссылка на изображение товара. Ссылку на основное изображение необходимо указывать первой. А после неё - дополнительные изображения.
Тип данных: длина до 512 символов включительно.
Повторяться не может.
Наличие в файле необязательно.
vat
Содержит значение ставки НДС для товара.
Тип данных:
Возможные значения | ставка НДС при данном значении |
---|---|
1 | 20% |
2 | 10% |
VAT_7 | 7% |
VAT_5 | 5% |
6 VAT_0 | 0% |
5 | Без НДС |
Повторяться может.
Наличие в файле необязательно.
model
Модель товара.
Тип данных: длина до 512 символов включительно.
Повторяться может.
Наличие в файле необязательно.
vendor
Бренд товара.
Тип данных: длина до 512 символов включительно.
Повторяться может.
Наличие в файле необязательно.
vendorCode
Артикул товара.
Тип данных: длина до 512 символов включительно.
Повторяться может.
Наличие в файле необязательно.
description
Описание товара.
Тип данных: длина до 3000 символов включительно.
Повторяться может.
barcode
Штрих-код в формате EAN.
Тип данных:
- целое число 8, 12 или 13 символов;
- должен находиться за пределами диапазона 20xxxxxxxxxxxx;
- первые 2 цифры не должны быть равны 20 в 13-цифровом баркоде.
Повторяться может.
Наличие в файле необязательно.
shipment-options
Элемент с описанием параметров отгрузки данного товара.
Наличие в файле необязательно.
Элементы, входящие в shipment-options:
shipment-options option order-beforeВремя, до которого принимаются заказы для отгрузки. Тип данных: целое число от 1 до 23. Повторяться может. Наличие в файле обязательно. | shipment-options option daysКоличество дней, за которое произойдёт отгрузка заказа конкретного товара. Тип данных:
Повторяться может. Наличие в файле обязательно. |
outlet
Данные по остатку товара и склада.
Повторяться не может.
Наличие в файле обязательно.
Элементы, входящие в outlet:
outlet idИдентификатор склада, который указан в разделе Настройки → Склад и доставка. Тип данных: длина до 200 символов включительно. Повторяться может. Наличие в файле необязательно. | outlet instockКоличество товара на складе в шт. Тип данных:
Повторяться может. Наличие в файле необязательно. |
Пример заполненного XML-файла
<?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="2022-01-02 10:00"> <shop> <categories> <category id="1"> Детские товары </category> <category id="2" parentId="1"> Детские игрушки </category> <category id="3" parentId="1"> Конструкторы </category> </categories> <shipment-options> <option days="1" order-before="15"/> </shipment-options> <offers> <offer id="158" available="true"> <url>http://www.test.ru/158.html</url> <name> Indesit SB 185</name> <price>18500</price> <oldprice>25500</oldprice> <categoryId>1293</categoryId> <picture>http://www.test.ru/1580.jpg</picture> <vat>2</vat> <shipment-options> <option days="1" order-before="15"/> </shipment-options> <vendor>Indesit</vendor> <vendorCode>12345678</vendorCode> <barcode>7564756475648</barcode> <model>Indesit SB 185</model> <description> Indesit SB 185</description> <outlets > <outlet id="1" instock="50" price="15458" oldprice="500000"/> <outlet id="3" instock="650" price="13458" oldprice="500000/> </outlets > </offer> </offers> </shop> </yml_catalog>