Разбор xml документа — почти все возможные способы

Содержание:

XML сайты в результатах поиска

Проблема

Поисковики обычно не исполняют скрипты на страницах которые индексируют и соответственно не видят конечный вариант страницы после их исполнения. Соответственно они не видят теги и которые вставляются XSLT шаблоном. Они индексируют текст который есть в XML документе как есть.

Решение

Наша задача правильно добавить теги и в XML чтобы браузер, поисковик и меседжер в котором отправляется ссылка на страницу их понимали.

Таким же образом можно будет добавить и другие HTML теги для поисковиков, меседжеров и даже браузера если он вдруг не исполнит XSLT шаблон.

результат
Yandex Webmaster

Запуск вложений системного клиента электронной почты формата XML

Перед многими юзерами возникает проблема запуска подобных приложений, когда те содержатся в электронной почте, клиенты которой являются установленными в операционной системе. К примеру, в «Outlook Express» или «Microsoft Outlook». При их открытии возможно появление уведомления об ошибке. Чтобы избежать этого, необходимо просто-напросто загрузить файл на компьютер в любую папку, после чего осуществить чтение при помощи одной из вышеуказанных бесплатных программ. При необходимости можно воспользоваться даже стандартным блокнотом или применить для этого «Word».

Приведенные в статье программы предоставляют пользователю достаточно широкий спектр инструментов и возможностей для редактирования, чтения и создания файлов на языке «XML». Подобные приложения пригодятся не только самим программистам или людям, связанных с этой сферой, но и любому человеку, имеющему дело с компьютерной техникой.

Программа Oxygen xml editor

Среди упомянутых программ лучшими являются «Oxygen xml editor», а также «XMLpad». Они позволяют максимально эффективно использовать предоставляемые возможности, обеспечивают плавную и безукоризненную работу. Кроме того, их главным отличием от другого ПО является быстрота. Ни одна другая программа не сможет так быстро преобразовать файл «xml» для чтения, как они.

Редактирование XML-файлов онлайн

Если необходимость платить реальные деньги за виртуальный продукт не по нраву, то остается последний вариант – воспользоваться редактором, который читает формат XML онлайн. Ресурсов с подобным функционалом много, но главный помощник расположен по адресу – xmlgrid.net

Из ключевых возможностей – запуск нужного файла через вкладку непосредственного «Открытия». Еще можно вставлять ссылку на документ и применять теги и атрибуты вручную и с нуля. Кроме воспроизведения, можно посмотреть демонстрацию о языке XML, где разработчики постарались объяснить способы применения различных возможностей и варианты использования разметки.

Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3

Воспользоваться современным средством переноса данных «Конвертация данных 3.0.5.3» можно только выгрузив из системы — источника данных XML в формате обмена данными EnterpriseData. В этой публикации можно скачать приемы выгрузки из 1С 7.7 универсального формата обмена для Конвертации данных 3. Выполняем перенос данных из «1С:Предприятие 7.7» в «1С:Предприятие 8.3». Используем Конвертацию данных КД 3.0 из 1c 7.7 —> 1С 8.3. На первой стадии еще не опубликовано иного способа подложить файл для Конвертации данных 3 кроме как сформировать его вручную, постараемся решить данную проблему.

1 стартмани

Кодировки¶

И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор
символов.

Самыми распространенными кириллическими кодировками являются и . Последняя является одним из стандартов, но большая часть ФНС отчетности имеет кодировку .

В XML файле кодировка объявляется в декларации:

<?xml version="1.0" encoding="windows-1251"?>

Часто можно столкнуться с ситуацией, когда текстовый редаткор некорректно распознает кодировку и отображает кракозябры. В такой случае, необходимо выбрать кодировку вручную, для этого выполните:

Таблица I.3 — Смена кодировки в разных программах
Программа Кодировка
Notepad++ «Документ → Кодировка»
Geany «Документ → Установить кодировку»
Firefox «Вид → Кодировка»
Chrome «Настройка → Дополнительные инструменты → Кодировка»

Об «XML»

Сам язык в основном состоит из множества тегов и различных атрибутов. Его широко применяют для настроек запуска разнообразных приложений, верстки страниц сайтов, создания полнофункциональных баз данных и для систематизированного оформления данных в таблицах.

Главная особенность документов «XML» заключается в универсальности. Их можно «прочесть», используя практически любую программу. Кроме того, общая простота для всего «XML» позволит даже самому неопытному пользователю без труда разобраться в предназначении тех или иных инструкций, прописанных в документе. Существует также возможность прочтения вышеупомянутых файлов с использованием веб-бразуера. Но такой способ является весьма некомфортным для юзера.

Особенность документов «XML» заключается в универсальности

Если человек не может открыть «xml» файл, то не следует его переименовывать, меняя расширение. Это не приведет к желаемому конвертированию файла, а лишь сведет к невозможному его дальнейшее прочтение. Для того, чтобы правильно конвертировать подобные документы, нужно использовать специально разработанное для этих целей ПО.

Поиск информации в XML файлах (XPath)¶

XPath ( англ. XML Path Language) — язык запросов к элементам
XML-документа. XPath расширяет возможности работы с XML.

XML имеет древовидную структуру. В документе всегда имеется корневой
элемент (инструкция к дереву отношения не имеет).
У элемента дерева всегда существуют потомки и предки, кроме корневого
элемента, у которого предков нет, а также тупиковых элементов (листьев
дерева), у которых нет потомков. Каждый элемент дерева находится на
определенном уровне вложенности (далее — «уровень»). У элементов на
одном уровне бывают предыдущие и следующие элементы.

Это очень похоже на организацию каталогов в файловой системе, и строки
XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример
списка книг:

<?xml version="1.0" encoding="windows-1251"?>
<bookstore>
   <book category="COOKING">
     <title lang="it">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
   </book>
   <book category="CHILDREN">
     <title lang="en">Harry Potter</title>
     <author>J K. Rowling</author>
     <year>2005</year>
     <price>29.99</price>
   </book>
   <book category="WEB">
     <title lang="en">Learning XML</title>
     <author>Erik T. Ray</author>
     <year>2003</year>
     <price>39.95</price>
   </book>
</bookstore>

XPath запрос вернет следующий результат:

<price>30.00</price>
<price>29.99</price>
<price>39.95</price>

Сокращенная форма этого запроса выглядит так: .

С помощью XPath запросов можно искать информацию по атрибутам. Например,
можно найти информацию о книге на итальянском языке: вернет .

Чтобы получить больше информации, необходимо модифицировать запрос вернет:

<book category="COOKING">
     <title lang="it">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
   </book>

В приведенной ниже таблице представлены некоторые выражения XPath и
результат их работы:

Как создать XML-фид Яндекс

В рекламе Яндекса предлагается использовать несколько форматов фидов в зависимости от типа товаров и услуг:

  • фид Яндекс.Маркета для розничной торговли;
  • фид Авто.ру для продажи автомобилей;
  • фид Яндекс.Недвижимости для риелторских агентств, продающих жилую недвижимость. 

Создание фида для динамических объявлений в Яндекс.Маркете

  1. Создайте фид в формате — Yandex Market Language.
  2. Пропишите версию XML и корневой элемент документа, содержащий дату генерации фида:
  1. Дополните информацию о товарах с помощью таких элементов как <model> (модель), <vendor> (производитель), <delivery> (возможность доставки) и прочими .
  2. Закройте теги с товарными предложениями и корневой элемент:

В результате должен получится фид подобного вида:

Создание фида для продажи легковых автомобилей

  1. Создайте XML-файл, добавьте его версию, откройте теги <data> и <cars> для добавления информации об автомобилях:
  1. Информация о каждом автомобиле вносится в тег <car></car>. Добавьте один из вариантов идентификаторов автомобилей — <unique_id> либо <vin>. Также укажите цену, валюту, ссылку на товар и его изображение:
  1. Для дополнительных сведений об автомобиле используются теги <color> (цвет), <mark_id> (марка машины), <body_type> (тип кузова) и .
  2. После добавления информации обо всех автомобилях закройте теги:

На выходе получается фид такого вида:

Создание фида для продажи жилой недвижимости

  1. Создайте данный фид, используя формат YRL, — Yandex Realty Language. 
  2. Все предложения добавьте внутри тега <offers>, сведения о каждом объекте недвижимости помещайте внутри элемента <offer></offer>.
  3. Заполните обязательные элементы: <internal-id> (идентификатор),<name> (название объекта недвижимости), <type> продажа</type>,<location> (местоположение объекта), <locality-element> (название населенного пункта, <url> (ссылка на предложение) и . 
  4. Закройте тег с предложениями недвижимости: </offers>

Пример готового фида YRL:

Вставка ссылок на примитивы в XML-документ

Ссылка на общий примитив имеет следующую форму записи:

&ИмяПримитива;

Ссылка на параметрический примитив имеет следующую форму записи:

%ИмяПримитива;

В представленной ниже таблице приведены формы записи ссылок на примитивы и перечень возможных мест их помещения:

Тип примитива Форма записи ссылки Места помещения
Общий внутренний разбираемый &ИмяПримитива;   Содержимое элемента, значение атрибута (в т.ч. объявление значения по умолчанию), значение в
объявлении внутреннего примитива.
Общий внешний разбираемый &ИмяПримитива;   Содержимое элемента.
Общий внешний неразбираемый Атрибут=’ИмяПримитива’   Значение атрибута, имеющего тип ENTITY или ENTITIES (в т.ч. в объявлении внутреннего примитива).
Параметрический внутренний разбираемый %ИмяПримитива;   В DTD, но не внутри объявлений разметки.
Параметрический внешний разбираемый %ИмяПримитива;   В DTD, но не внутри объявлений разметки.
Ссылка на символ &#Число;&#xЧисло;   Содержимое элемента, значение атрибута (в т.ч. объявление значения по умолчанию), значение в
объявлении внутреннего примитива. «Число» — десятичный или шестнадцатеричный код символа.

Для вставки ссылок на символы используется международная таблица символов ISO-IEC 10646, содержащая символы многих
языков. Например, &#169; или &#xA9; соответствуют символу . Коды первых 128 символов совпадают с
кодами набора ASCII.

Кроме того, в XML-документе вы можете использовать ссылку на предопределённый примитив, чтобы вставить следующие
четыре стандартных символа:

&amp; & &#38
&lt; < &#60
&gt; > &#62
&quot; « &#34

Людоговский Александр

2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.

Хитрый способ создания анимированного jpeg’а

Сегодня с успехом осуществил свой эксперимент по сжатию гифок. Меня давно уже раздражает отсутствие специального формата для сжатия анимированных файлов

Как так, gif есть, а анимированного jpeg нет, хотя для большинства существующих гифок подходит именно jpeg.
От существующих решений, мое отличается тем, что это один файл svg, который можно вставить на страницу через тэг
Под хабракатом находится сжатая версия вот этой гифки tfirma.name/public/leprosorium.ru/cosss_gif/0004w00e.gif
Оригинал весит 6 мегабайт, сжатая версия — 1,3 мегабайта.
Осторожно! Данное решение имеет существенный недостаток, который выражается в высокой загрузке процессора (около 25%). Происходит это только во время загрузки файла, около 1-2 секунд, потом все возвращается в норму.

Как проверить фид в формате XML

1. Проверка фидов Google

Фиды Google проверяют при загрузке в Merchant Center. Зайдите в пункт меню «Products» («Товары»), затем выберите «Feeds» («Фиды»). Нажмите знак плюса:

Затем выберите страну, язык, укажите название фида и способ загрузки:

Загрузите XML-файл в тестовом режиме и нажмите «Continue»:

Проверка занимает несколько минут, после ее прохождения отобразится, есть ли ошибки в фиде.

2. Проверка фидов Яндекс

Для проверки фидов в формате XML используют Яндекс XML-валидатор. Выберите нужный формат и тип добавления фида — непосредственно в сервис, в виде ссылки или файла, затем нажмите «Проверить»:

Данный фид успешно прошел валидацию.

Чем открыть файл xml на компьютере (Виндовс)

Для этих целей подходят все современные текстовые редакторы.

Эту опцию легко перенастроить в контекстном меню, используя пункт «открыть с помощью», или в постоянных настройках — «свойства»\«общие»\«изменить»\«ок».

Чем ещё можно открыть xml на компьютере?

  1. Текстовый редактор Word. Новые версии легко преобразуют список данных в читаемую структуру.
  2. Microsoft Office Excel. Информация будет организована в виде таблицы. Минус — очень медленная загрузка (Рисунок 4).
  3. Блокнот Notepad. Быстро читает даже тяжёлые документы. Его функционал можно увеличить за счёт дополнений.

Рисунок 4. Рабочий интерфейс приложения Microsoft Office Excel с открытым .xml файлом

Как проверить xml файл на ошибки

Сложная структура расширяемого языка разметки подразумевает наличие определённых несоответствий при его открытии в виде электронной таблицы. Поэтому часто задаваемый вопрос, как проверить xml файл на ошибки, требует отдельного внимания.

Они возникают при невозможности выполнения проверки информации на соответствие карте данных документа. Для получения их описания, нажмите кнопку «сведения» в открывшемся диалоговом окне.

Ниже приведены объяснения частых несоответствий.

  1. Ошибка проверки схемы. При выборе в свойствах карты опции «проверка данных на соответствие схеме при импорте и экспорте». Они были только импортированы, но не прошли саму проверку.
  2. Импорт некоторых данных в виде текста. Чтобы снова воспользоваться ими для вычислений, их надо преобразовать в цифры и даты. Используйте соответствующие типы для каждого из значений. К примеру, для выполнения функции «год» необходим тип «дата».
  3. Ошибка разбора формата. Средство синтаксического анализа не может прочесть выбранный объект. Проверьте документ на правильность и логичность его построения.
  4. Невозможно найти карту соответствующую указанным данным. Проблема возникает из-за одновременного импорта сразу нескольких объектов. Вначале импортируйте схему для того который отмечен в строке заголовка вашего окна, а потом выполняйте его импорт.
  5. Не изменяется размер таблицы. Она дополняется новой информацией только снизу. Под ней может находится элемент, который мешает менять её размер. К примеру, рисунок или ещё одна таблица, препятствующая расширению. Измените их расположение на листе.

SQL Server JSON

Когда много лет подряд Microsoft лихорадит из одной крайности в другую, то понемногу начинаешь привыкать к этому и все новое ждешь с неким скепсисом. Со временем это чувство становится только сильнее и подсознательно ничего хорошего уже не ожидаешь.
Но иногда все получается в точности да наоборот. Microsoft вываливает из коробки идеально работающий функционал, который рвет все устоявшиеся жизненные стереотипы. Ты ждешь от новой функционала очередных граблей, но, с каждой минутой, все больше понимаешь, что именно этого тебе не хватало все эти годы.
Такое пафосное вступление имеет определенные на то основания, поскольку долгое время на Microsoft Connect поддержка работы с JSON на SQL Server была одной из самых востребованных фич. Шли годы и неожиданно данный функционал реализовали вместе с релизом SQL Server 2016. Забегая вперед скажу, что вышло очень даже хорошо, но Microsoft не остановилась на этом и в SQL Server 2017 существенно улучшили производительность и без того быстрого JSON парсера.

XML практически всегда применяется не по назначению

Перевод

Язык XML был изобретен в 1996 году. Едва он успел появиться, как возможности его применения уже начали понимать неправильно, и для тех целей, к которым его пытались адаптировать, он был не лучшим выбором.
Не будет преувеличением сказать, что подавляющее большинство схем XML, которые мне доводилось видеть, представляли собой нецелесообразное или неправильное использование XML. Более того, такое применение XML свидетельствовало о фундаментальном непонимании того, чем прежде всего является XML.
XML — это язык разметки. Это не формат данных. В большинстве схем XML это разграничение явно не учитывали, путая XML с форматом данных, что в итоге означало ошибку в самом выборе XML, поскольку на самом деле нужен был именно формат данных.

Использование параметрических примитивов

Объявление параметрического внутреннего разбираемого примитива имеет следующую форму записи:

<!ENTITY % Имя Значение>

Здесь «Имя» есть имя примитива. Примитив может иметь такое же имя, что и общий примитив в документе, т.к.
параметрические и общие примитивы занимают различные пространства имён. Имя примитива также может совпадать с
именем элемента или атрибута. «Значение» есть литерал, который не может содержать символа процентов (%) и символа
амперсанда (&), если это не начальный символ в ссылке на символ или общий примитив. Строка «Значение» должна
содержать одно или несколько объявлений разметки, которые разрешено использовать в DTD.

Пример DTD:

<!DOCTYPE PRODUCTS
   
>

Приведённое выше DTD эквивалентно следующему:

<!DOCTYPE PRODUCTS
   
>

Объявление параметрического внешнего разбираемого примитива имеет следующую форму записи:

<!ENTITY % Имя SYSTEM Литерал>

Здесь «Имя» есть имя примитива. «Литерал» есть путь к файлу, содержащему данные примитива. Файл параметрического
внешнего разбираемого примитива должен содержать полные объявления разметки любых типов, допустимых в DTD.

Вы можете использовать параметрические внешние разбираемые примитивы для хранения группы взаимосвязанных объявлений.
Это позволит вам объединять эти группы объявлений различными способами. Параметрический внешний разбираемый примитив
работает во многом аналогично внешнему подмножеству DTD, но обеспечивает большую гибкость — вы можете включать
несколько файлов внешних объявлений, причём в любом порядке.

Что значит XML расширение?

Итак, давайте с начала. Ведь если не понять азы, а именно, что такое формат XML, людям трудно будет понять, каким именно образом лучше всего открыть данный формат. Этот формат содержит в себе информацию, которую отформатировали определенным методом.

У подобных документов разметка похожа на HTML, специальный язык, созданный дли страниц сайтов, с разницей в том, что в подобном документе свойства и описание определяют теги и атрибуты, которые задали вручную.

На данный момент, файлы с таким расширением встречаются частенько. XML файлы встречаются в виде единых баз информации, различных списков по настройке софта и утилит. Также, фалами XML могут быть страницы ресурсов в интернете. Файлы с подобной разметкой могут быть применены во время создания аудио, или видео каталогов.

Например, в веб программировании используют такой известный файл, как sitemap.xml. В переводе на русский, это «карта сайта» (файл, где веб мастер помещает адреса всех страниц своего ресурса). Данный файл создан для поисковика Google. Вообще, стандарт XML создали специально в виде универсального, чтобы было удобнее обмениваться информацией среди различных программ.

Изучаем XML. Эрик Рэй

В книге знакомство с XML начинается с его истории и постепенно переходит на современное состояние языка. Для начинающих автор рассказывает об основах создания документов XML и основных элементах. Для профессионалов рассматриваются боле сложные вопросы – моделирования, трансформации, настройки шаблонов, использования таблиц.

Достоинства:

  • хорошее описание материала;
  • автор дает четкие и понятные рекомендации;
  • легко читать и воспринимать информацию;
  • много примеров реальных проектов;
  • подходит для новичков и для профессионалов.

Недостатки:

в некоторых моментах не хватает дополнительных разъяснений.

Использование XSLT для предотвращения XSS путем фильтрации пользовательского контента

  • Из песочницы

Формулировка проблемы

Думаю никому из веб-разработчиков не нужно объяснять что такое XSS и чем он опасен. Но в то же время, многие сайты, такие как форумы, блоги, социальные сети и т.п., стремятся предоставить пользователю возможность вставлять на страницу свой контент. Для удобства неискушенных пользователей изобретаются WYSIWYG-редакторы, делающие процесс добавления красивого комментария легким и приятным. Но за всем этим фасадом скрывается угроза безопасности. Фактически любой WYSIWYG-редактор отправляет на сервер не просто текст комментария, он отправляет HTML-код. И даже если сам редактор не предусматривает использования опасных HTML-тегов (например <iframe>), то злоумышленника это не остановит — он может послать на сервер произвольный HTML-текст, который может представлять опастность для других посетителей сайта. Я думаю мало кому понравится получить в свой браузер что-то наподобие:

Таким образом, возникает проблема: полученный от пользователя HTML-код необходимо фильтровать. Но что значить «фильтровать»? Каким должен быть алгоритм фильтрации, чтобы не создавать необоснованных ограничений легальным пользователям, но в то же время сделать невозможной XSS-атаку со стороны злоумышленника? Увы, но HTML достаточно сложен, написать хороший парсер достаточно непросто, а любая ошибка в нем может привести к тому, что у злоумышленника появится лазейка через которую он сможет нанести удар.

Пагинатор (постраничная навигация) на XSLT

Время от времени всплывает умирающая технология XSLT и задаёт непростые вопросы. Как, например, взять максимум от 2 чисел в выражении или как организовать цикл. Соединением многих таких вопросов служит пагинатор — вывод навигации по нескольким страницам и, по возможности, удобный. На Javascript есть много примеров простых и удобных пагинаторов. Но если страницы с сервера выдаются в XML, то возникает крамольная мысль: почему бы всё оформление страниц, включая пагинатор, не сделать на статике, в XSLT? Ничего, что в эту статику можно включить JS и сделать всё проще. Кошерный подход лёгких путей не ищет.

Импорт данных из YouTube и Vimeo в Google.Docs

Из песочницы

UPDATE (12 мая 2015):

Вынужден сообщить, что с 1 мая 2015 года данные устарели. Youtube поменял правила работы API: теперь невозможно осуществлять анонимные запросы. Для получения данных необходим Authorization API-key.

Предыстория

Совсем недавно у нас случилась ситуация, когда «потерялись» все YouTube и Vimeo ссылки на ролики, количество просмотров которых нам необходимо выводить на сайте. Это нужно, чтобы потенциальные инвесторы и партнеры видели, какие текущие показатели у наших сериальных проектов. Скрипт обновляет данные раз в сутки, хотя я неоднократно просил сделать обновление показателей в реальном времени. Я много лет не программирую, ушел в совершенно иной вид деятельности и в настоящий момент возглавляю анимационную студию. Конечно же, я был обескуражен возникшей ситуацией с потерей данных, устроил разнос и прочее, но это к делу отношения не имеет.
Ссылки были восстановлены, но вот счетчик меня смутил. Пока шло восстановление, цифры я большими группами собирал вручную, а теперь после того, как их обошел скрипт и выдал результат, они катастрофически не бились. На мои претензии программистам я получал ответ, что всё ок, хоть упроверяйся. Не желая сильно заморачиваться, я решил пойти по весьма странному пути: сделать обход ссылок при помощи Google.Sheets и посмотреть на результаты, а заодно проверить, действительно ли это столь мучительный процесс: обход нескольких сотен ссылок и получение данных о просмотрах. Потратил на свой эксперимент я несколько часов, выяснил, что дело это не хитрое, собрать данные в реальном времени достаточно просто, а скрипт на нашем сайте, действительно, работает криво и данные собирает неточно, теряя по дороге миллионы просмотров.

Возможные технические ошибки при открытии

Если следовать описанной выше инструкции, проблем с открытием файла xml в большинстве случаев не возникает. Однако иногда система не работает или срабатывает некорректно. Причинами этого могут быть разные факторы – наиболее распространенные случаи описаны далее.

Документ не открывается даже на сайте Росреестра

Это может быть связано с тем, что настройки безопасности вашего браузера блокируют открытие файла, «подозревая» наличие вирусных программ и файлов. В таком случае необходимо изменить соответствующие настройки:

  1. В Google Chrome заходят в «Настройки», выбирают «Загрузки» и загружают нужный файл.
  2. В браузере Internet Explorer выбирают «Включить все содержимое» или же добавляют адрес сайта Росреестра в настройках.
  3. В браузере Mozilla сначала заходят на сайт Росреестра, а затем убирают значок в разделе «Пока отключить защиту».

Сайт Росреестра не работает или выдает ошибку

Этот случай встречается намного реже, но тем не менее, сбои на сайте Росреестра тоже возможны. В таком случае можно просто подождать возобновления работы или же открыть документ на стороннем сервисе. В сети можно найти как платные, так и бесплатные услуги по открытию файла в формате xml. Также можно обратиться в службу поддержки, чтобы уточнить, когда сайт снова заработает.

Читайте далее:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *