чем открыть файл xslt

Краткий обзор бесплатных XML редакторов

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

Но руководство поставило задачу найти бесплатный аналог. Результатом поиска краткий обзор бесплатных XML редакторов.

— Работа с XML/XSLT/XSD
— Удобный редактор с подсказками и подсветкой
— XSLT процессор и дебагер.

Бесплатные XML редакторы

Exchanger XML Lite V3.2. Возникли проблемы с установкой. Инсталляция проходила почти до конца и замирала. А жаль. По описанию на сайте у него очень богатый набор функций.

EditiX Lite Version. Хороший редактор. Умеет делать XSLT трансформации. Но подсказки выдаются в виде выделения похожих частей кода, а не выпадающим списком и табличного представления документа.
чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Serna Free. Этот редактор понравился мне меньше всех. Он прячет XML теги и жутко тормозит. Работать очень не удобно.
чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

XML Marker. Очень понравился. Показывает XML в табличном виде доступном для редактирования. Жаль нет подсказок и возможности делать XSLT трансформации.
чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

XMLPad. Понравился больше всех. Показывает XML в табличном виде и в виде дерева. Есть подсказки. Есть возможность делать XSLT трансформации.
чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Ни один из рассмотренных бесплатных редакторов не может полностью заменить хороший платный редактор. Больше всех поставленным требованиям соответствует XMLPad. Но XML Marker можно одновременно редактировать код и видеть результат в табличном виде.

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

UPD. Большой обзор XML редакторов «Choosing an XML editor»

UPD. Письма читателей.

Добрый день Александр,

Не являюсь участником сообщества «Хабрахабр», поэтому, с Вашего позволения реагирую почтой на Ваш пост.

Если возможно, буду благодарен, если разместите данное замечание в Вашем посте.

Источник

Файлы XSLT – чем открыть и преобразовать формат файла

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Файл с расширением XSLT представляет собой файл расширяемого языка стилей преобразования. Это язык, который использует инструкции XSL для преобразования и стилизации XML-файла.

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

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

Как открыть файл XSLT

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

Используйте расширенный текстовый редактор для открытия и редактирования файла XSLT. Она структурирует файл XSLT таким образом, что код гораздо легче редактировать и читать, чем с самыми простыми текстовыми редакторами, такими как Блокнот.

Visual Studio от Microsoft – ещё один инструмент для открытия и редактирования XSLT, который упрощает весь процесс редактирования. Пока вы вносите изменения в файл XSLT, вы можете посмотреть, как преобразования будут выглядеть в результирующем файле, через меню XML.

Хотя они не бесплатны, XMLSpy XSLT Editor и Liquid XML Studio – это ещё несколько хороших вариантов.

Вы также можете открыть файлы XSLT в веб-браузере для просмотра кода, но это не позволит вам вносить изменения.

Как преобразовать файл XSLT

Если вы откроете файл XSLT в редакторе, таком как Visual Studio, вы сможете сохранить файл в ряде других форматов, таких как XSL, XSD, XML, DTD, CONFIG и других.

То, что вы можете использовать вместо преобразования файла XSLT, – это способ фактическое преобразование файлов XML.

XSLT-файлы создают документы путём объединения инструкций XSL-файла и кода XML-файла. Для этой цели вы можете использовать XSL Transformer от FreeFormatter.com. Он поддерживает вставку значений XML и XSL на веб-сайт, а также загрузку этих файлов с вашего компьютера.

Дополнительная информация о файлах XSLT

Более подробную информацию о том, как XSLT-файлы структурированы, а также примеры и учебные пособия по их использованию можно найти на W3Schools, Quackit и в официальной спецификации XSLT.

Статья Википедии на эту тему – ещё один хороший источник расширенной информации о файлах XSLT.

Всё ещё не можете открыть файл?

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

Расширение файла XSLT очень похоже на расширение файла, встречающееся в нескольких других форматах файлов, таких как XLSX, XSPF и XSLIC (XenServer License), но это не означает, что эти форматы имеют что-то общее. Если ваш файл не открывается как XSLT-файл с использованием программ, о которых я упоминал выше, попробуйте перепроверить, с каким форматом файла вы работаете.

Источник

Инструменты для работы с XML в Visual Studio 2008

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

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

Нужно признать, что ручное редактирование XML-файлов может быть очень утомительным и отнимать много времени. Чтобы помочь в этом XML редактор Visual Studio 2008 поставляется с большим количеством функций для улучшения производительности. Одной из таких функций является расширяемая библиотека фрагментов XML кода — XML файлов которые содержат конфигурируемые участки кода, которые выступают в роли шаблонов для использования во время редактирования документа. С Visual Studio устанавливается много файлов фрагментов XML кода, которые помогают разработчикам при написании схем XML и стилевых страниц XSLT. Чтобы вызвать фрагмент во время редактирования XML-файла, выберите «Insert Snippet» («Вставить Фрагмент») из меню «Edit > IntelliSense» («Редактировать > IntelliSense»). Как только вы вставили фрагмент, вы можете перемещаться между подсвеченными полями, которые можно изменять клавишей TAB, чтобы вводить данные. На Рисунке 1 показан пример вставки фрагмента.

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Рисунок 1: Вызов фрагмента XML кода в Visual Studio 2008.

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

Создайте XML файл и наберите в нем:

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

По умолчанию XML редактор генерирует только требующееся содержимое, но это поведение может быть переопределено при помощи аннотаций в XML схемах. Больше информации вы найдете в MSDN под заголовком, «How to: Generate an XML Snippet From an XML Schema».

Кеш схемы и каталоги Схем

Для продвинутых пользователей XML редактор предлагает такие функций как кеш схемы каталоги файлов схем. Кеш схемы это папка которая содержит множество хорошо известных W3C схем, также как и много схем конкретно созданных Microsoft или связанных с их технологиями. Она служит как репозиторий широко используемых схем, которые обычно не меняются. Вы найдете расположение схем по умолчанию в %vsinstalldir%\xml\schemas, где «%vsinstalldir%» это переменная представляющая расположение в которое установлена Visual Studio. Когда вы объявляете одно из пространств имен определенных этими схемами в ваших XML файлах, редактор будет автоматически ассоциировать соответствующие схемы из расположения кеша и быстро предоставлять IntelliSense и валидацию для этой схемы.

Каталог схем это XML файлы размещающиеся в директории кеша схем (файл catalog.xml по умолчанию). Они дают продвинутым пользователям более точный контроль над различными пространствами имен, которые они возможно будут использовать. Например, вы можете ассоциировать определенные пространства имен с внешними источниками:

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

Нововведение в Visual Studio 2008, вы также можете добавлять условия:

Наконец, вы можете создать цепочку ссылаясь из одного файла каталога на другой:

Работа с большими файлами

Другая важная функция редактирования которую я хотел бы отметить это поддержка редактором XML больших файлов. Хотя вы и могли работать с большими файлами в предыдущих версиях, Visual Studio 2008 поддерживает инкрементальный анализ XML документов. Теперь, если вы работаете с файлом размером 10 Мб, вам не нужно ждать пока Visual Studio проанализирует файл целиком каждый раз как вы внесли изменения. XML редактор изолирует правки и переанализирует только те части которые требуется, предлагая таким образом лучшую производительность и отклик.

Я описал лишь несколько интересных функций XML редактора, но очевидно, нельзя рассмотреть здесь все из них. Таблица 1 показывает некоторые из функций которые доступны пользователям Visual Studio.

ФункцияПоддержка в Visual Studio 2008
АвтозавершениеX
Подсветка синтаксисаX
Сворачивание/Разворачивание кодаX
IntelliSenseX
Расширяемая библиотека фрагментов кодаX
Динамические фрагменты кодаX
Переход к определению (из XML к XSD)X
Навигация назад/впередX
Поддержка проекта и профиля пользователяX
Валидация в режиме реального времениX
Полная поддержка XSDX
Поддержка пространств именX
Поддержка DTDX
Генерация XSD по XMLX
Конвертация DTD в XSDX
Поддержка ЮникодаX
Поддержка больших файлов (10 Мб+)X

Отладка стилевых таблиц XSLT

XSLT является стандартным языком трансформаций утвержденным W3C, который очень популярен среди большой группы разработчиков. Редакция Visual Studio Professional предоставляет поддержку редактирования и отладки стилевых таблиц XSLT. Редактирование файлов XSLT подобно редактированию XML файлов. Когда речь заходит об отладке XSLT, Visual Studio поддерживает два главных сценария:

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

Отладка отдельных трансформаций

Рисунок 2 демонстрирует среду отладки, в момент когда вы работаете с XSLT трансформациями. В конфигурации по умолчанию, вы можете видеть XSLT файл и вкладки видов ввода документа и вывода документа. Вы также можете сконфигурировать Visual Studio, чтобы одновременно отображались все три документа. Когда вы проходите через код трансформации, вы можете видеть входящие данные, трансформацию которая обрабатывает этот ввод и генерацию выходного файла.

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Рисунок 2: Отладка отдельных XSLT трансформаций.

Если вы используете среду отладки C# или Visual Basic вы заметите, что отладка XSLT выглядит очень похоже на отладку других программ использующих язык CLR. Все способы управления и комбинации клавиш остаются такими же. На Рисунке 2 вы также можете видеть окно Locals (Локальные переменные), в котором могут отображаться скрытые переменные XSLT (self, position, и last), точно также как и переменные которые определены в вашем шаблоне. Также вы можете видеть окно стека вызова, которое вы можете использовать, чтобы перемещаться к различным шаблонам XSLT вверху и внизу стека. Также вы можете использовать отладчик XSLT для установки точек останова и в коде XSLT и в XML документах.

Хотя отладка отдельных трансформаций полезна, иногда вам нужно отлаживать XSLT как часть вашего приложения на C# или Visual Basic. Отладчик XSLT, который тесно интегрирован с другими отладчиками CLR позволяет вам бесшовно переходить из C# к XSLT, а затем к Visual Basic во время отладки приложения. Следующий пример показывает фрагмент кода C# который использует класс XslCompiledTransform для инициализации XSLT трансформации:

XslCompiledTransform xsltcmd =
new XslCompiledTransform( true );
xsltcmd.Load(XSLTFile);
XmlUrlResolver resolver = new XmlUrlResolver();
XmlWriter writer = XmlWriter.Create(OutputFile);

Если вы установите точку останова на вызове метода и пройдете в него, отладчик покажет вам стилевую таблицу XSLT (Рисунок 3). Все функции описанные в разделе отладки отдельной таблицы стилей также применимы здесь. Единственным исключением является возможность устанавливать точки останова в файлах данных. Эта функция не доступна, когда вы переходите из в XSLT из другой программы на CLR. Все остальное будет вести себя точно также как описано в выше.

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Рисунок 3: Отладка XSLT трансформации из приложения C#.

Таблица 2 представляет сводку различных функций доступных во время отладки XSLT трансформаций.

Feature
Visual Studio 2008 Support
Browser viewX
Locals, watch, call stackX
Viewing input XML, output, and XLST during debuggingX
Breakpoints in XMLX
Breakpoints in XSLTX
CLR language debugger integrationX

Расширение инструментов XML

XML редактор предоставляет хорошую основ для разработчиков, чтобы создавать пользовательские дизайнеры поверх него. Рисунок 4 как это было сделано в предыдущей версии Visual Studio (Visual Studio 2005). Разработчики могли построить расширение поверх XML Editor через общий доступ к буферу. Они должны били создавать пользовательские дизайнеры путем предоставления общего доступа к буферу IVsTextLines и анализировать XML используя System.Xml.XmlReader или XmlDocument. Don Demsak использует этот способ, когда создает XPathmania и дополнения XPath к Visual Studio (для дополнительной информации об XPathmania, см http://www.donxml.com). Однако, так как интеграция происходит на уровне буфера, этот способ создает много больших правок буфера. В дополнение к этому, он имеет некоторые ограничения потому что анализатор System.Xml принимает только валидный XML в то время как дизайнеры, по определению, должны работать с не валидными файлами.

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Рисунок 4: Старый способ создания пользовательских XML дизайнеров поверх XML редактора.

С другой стороны в XML редакторе есть свой собственный анализатор с восстановлением после ошибок. Она также создает свое собственное дерево анализа представляющее содержимое буфера. В Visual Studio 2008, Microsoft открыла это дерево LINQ to XML сторонним разработчикам. Новая архитектура показана на Рисунке 5. Новое API позволяет разработчикам создавать пользовательские виды поверх дерева анализа XML редактора, предоставляющие им логику восстановления после ошибок XML редактора и дерево анализа LINQ to XML с транзакциями по обновлению, результаты выполнения которых появляются в буфере интегрированным Visual Studio UndoManager. Эти изменения облегчают разработчикам создание XML инструментов поверх Visual Studio 2008.

чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

Figure 5: Способ расширения XML редактора в Visual Studio 2008.

Источник

XSLT первый шаг

1. Введение

Важные ссылки по теме, первоисточники:

Переводы на русский язык:

Для лучшего понимания всего происходящего я рекомендую читать спецификации в следующем порядке:

Особо пытливые могут также уделить внимание расширенному языку стилей XSL.

2. Валидный XHTML

Что такое валидный XHTML? В первую очередь, это XML-документ, который должен соответствовать спецификации XML. Во-вторую, почти обычная HTML-страница, к которой все привыкли.

Почему нужен именно XHTML? Исключительно из соображений совместимости и кросс-браузерности. Страница в XHTML будет с большей вероятностью отображаться корректно в популярных браузерах, чем обычный HTML.

Для рядового клепателя страниц словосочетание XML-документ должно означать следующее:

Также сам XHTML обязывает выполнять следующие условия:

Пример простого документа XHTML1.0:

И так обо всём по порядку.

Объявление XML-документа, в котором указывается его версия и кодировка.

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

Объявление типа документа и его схемы.

Объявление пространства имён и используемого языка.

Очень важно указывать ссылку именно в таком регистре и никак иначе. Это связано с тем, что в XML имена элементов и содержимое их атрибутов регистрозависимы.

Три версии XHTML1.0 предназначены для лучшей обратной совместимости:

Помимо XHTML1.0 на данный момент доступен XHTML1.1:

XHTML1.1 по сути является тем же XHTML1.0 Strict и призван вытеснить другие версии XHTML1.0. Однако, по сравнению с XHTML1.0 Strict, у него есть ряд отличий:

Итак, если вам нужна наибольшая кросс-браузерность и совместимость с рекомендациями W3C, то XHTML1.1 самое оно!

Из этих соображений результатом моих преобразований будет именно XHTML1.1.

3. XSLT-преобразования

Что такое XSLT? Это язык преобразований XML-документа, который был разработан как часть расширенного языка стилей (XSL).

Зачем нужен XSLT? Он позволяет реализовать схему, при которой данные хранятся отдельно, а их представление отдельно. То есть, один XML-документ преобразуется с помощью другого XML-документа (XSL, в котором находятся XSLT-шаблоны) в конечный документ. Результатом может быть XML, HTML или текстовый документ любого формата.

Для того, чтобы воспользоваться XSLT-преобразованиями, в первую очередь нужно сформировать правильный стиль XSL и подключить его к XML-файлу.

Валидным XSL-документом является XML-документ, у которого задано пространство имён xsl и присутствует корневой элемент stylesheet. В самом простом случае стиль может выглядеть, например, так:

Этот стиль не содержит каких-либо явных определений шаблонов или других элементов XSL. Однако, его уже можно использовать. Чтобы посмотреть результат, достаточно сформировать произвольный XML-документ и подключить к нему этот стиль:

За подключение стиля отвечает строка:

Если файлы text.xml и test.xsl созданы и находятся в одной папке, то с помощью любого XSLT-парсера можно преобразовать исходный test.xml в результирующий документ. В качестве парсера могут выступать все популярные браузеры (IE5+, FF2+, Opera9+ и другие), а также модули в языках программирования, например, в PHP. Если вы используете браузер, то достаточно открыть test.xml, и он сразу отобразит примерно такой результат:

При этом кодировка результата будет UTF-8, несмотря на то, что исходный документ был сформирован в windows-1251. К сожалению, браузеры обычно не позволяют просмотреть код результирующего документа, но модуль XSLT в PHP5 даёт возможность передать результирующий код в переменную, которую можно сохранить в файл. Поэтому, используя PHP, я приведу исходный код результирующего документа:

Этот код не является валидным XML-документом и тем более XHTML1.1. Для того, чтобы сформировать нужный код, я усложню исходный XSL-стиль и добавлю туда необходимые шаблоны и преобразования. При этом исходный XML-документ останется без изменений.

В качестве примера я приведу XSL-стиль, который при помощи XSLT будет выводить список атрибутов исходного XML-документа с их значениями, при этом будет формироваться валидный XHTML1.1. Итак, стиль:

Чтобы понять, как он работает, я распишу каждое действие отдельно:

Документ сформирован в кодировке windows-1251, о чём сообщается в атрибуте encoding. Версию XML-документа желательно всегда указывать, это рекомендация W3C.

Затем идёт объявление корневого элемента, стиля:

Следующим шагом в корневом элементе stylesheet объявляется, каким образом нужно формировать результирующий документ:

Объявление основного шаблона:

Именно этот XSLT-шаблон соответствует корню исходного дерева и будет вызван первым для преобразования. Атрибут match принимает значения, которые должны соответствовать языку поиска элементов XPath.

Остальные шаблоны, если таковые имеются, должны подключаться из этого шаблона при помощи средств XSLT.

Атрибут xmlns= «http://www.w3.org/1999/xhtml» указывает на пространство имён xhtml, которое будет применено по умолчанию к этому элементу и всем дочерним элементам, у которых оно не задано явно.

Атрибут xml:lang= «ru» указывает на язык, в котором сформирована страница в чем разница» rel=dofollow»>страница (будущая).

Эта часть стиля была нужна для формирования атрибутики валидного XHTML1.1 кода.

Теперь что касается XSLT-преобразований:

Вставка простого текста:

Текст «Мой список:» будет подставлен в тег

Организация цикла по выборке:

Атрибут select принимает выражение XPath, на основе которого делает выборку. Если выборка вернула список узлов, то начинает работать цикл по каждому элементу.

В данном случае выборка вернёт список атрибутов для этого (корневого) и всех дочерних элементов.

В данном случае проверяется на чётность позиция элемента в списке выборки. Если тест возвращает true (порядковый номер элемента чётный), то срабатывает содержимое этого элемента.

Управление атрибутами вышестоящего элемента:

Вывод значений элемента:

Этот код подставит в вышестоящий элемент строку, собранную из имени текущего элемента и его значения. Содержимое атрибута select соответствует XPath.

Вывод ссылки на разработчика парсера XSLT:

Этот небольшой код XSLT формирует ссылку на разработчика парсера XSLT. Во многих случаях она будет разная и содержать разные значения.

Результатом обработки этого стиля ( test.xsl ) станет такой код:

Этот код соответствует стандарту XHTML1.1 и был сформирован на основе исходного XML-документа. Для проверки можно воспользоваться валидатором от W3C, который расположен по адресу http://validator.w3.org/.

В браузере этот код выглядит примерно так:

IE 6FireFox 3Opera 9.02
чем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xsltчем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xsltчем открыть файл xslt. Смотреть фото чем открыть файл xslt. Смотреть картинку чем открыть файл xslt. Картинка про чем открыть файл xslt. Фото чем открыть файл xslt

4. Приложение

Ссылки на исходный код

Постоянный адрес статьи //anton-pribora.ru/articles/xml/xslt-first-step/. /Автор: Прибора Антон Николаевич, 2009 год/

Использование PHP5 для обработки XSLT

Для получения результирующего документа при помощи PHP5 я использовал такой код:

Дополнительную информацию по использованию XSLT в PHP5 можно найти по адресу http://ru2.php.net/manual/ru/book.xslt.php.

Мысли вслух

«Товарищи, мы стоим на краю огромной пропасти! И я предлагаю сделать большой, решительный шаг вперёд!»

© 2021 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.

Источник

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

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