Подготовка (исправление) XML схем

Публикация № 1207538

Разработка - Инструментарий разработчика - Прочие инструменты разработчика

onescript oscript xsd xml schema

Иногда, XML схемы не соответствуют стандарту w3.org и это грустно :-( . Скрипт публикации исправляет ошибки XML схем в автоматическом режиме.

Вступление

Понадобилось мне для XML схемы формата CommerceML2 сделать человекочитаемую документацию. Очень удобно, знаете ли вместо такого документа

<complextype name="КоммерческаяИнформация">
    <annotation>
        <documentation>
            Собирательный компонент для всего, что может быть упомянуто в процессе обмена
        </documentation>
    </annotation>
    <sequence>
        <element ref="cml:Классификатор" minoccurs="0"></element>
        <choice>
            <element ref="cml:Каталог" minoccurs="0"></element>
            <element ref="cml:ПакетПредложений" minoccurs="0"></element>
            <element ref="cml:Документ" minoccurs="0" maxoccurs="unbounded"></element>
            <element ref="cml:ИзмененияПакетаПредложений" minoccurs="0" maxoccurs="unbounded"></element>
        </choice>
    </sequence>
    <attribute name="ВерсияСхемы" use="required">
        <simpletype>
            <restriction base="xsd:string">
                <maxlength value="5"></maxlength>
            </restriction>
        </simpletype>
    </attribute>
    <attribute name="ДатаФормирования" type="cml:ДатаВремяТип" use="required"></attribute>
</complextype>

пользоваться при разработке вот таким

Сказано - сделано, тем более ничего сложного в этом нет. Делаю следующие шаги.

На сайте v8.1c.ru я скачал файл схемы и сохранил его в файл CommerceML2-10.xsd.

На сайте liquid-technologies.com я скачал триальную версию замечательного и очень дорогого продукта Liquid Studio. Компания Liquid technologies дает полнофункциональную лицензию на 15 дней. После установки запустите программу и воспользуйтесь мастером получения триальной лицензии.

Открыл ранее скачанный файл XML схемы в Liquid Studio и остался последний шаг, воспользоваться командой Tols - Generate Documentation, но...

получаю список ошибок.

Выясняю, что не так с этой схемой и прихожу к выводу, что руками мне ее править (приводить в порядок) ужас как не хочется.

Задача

Данный скрипт исправляет следующие ошибки:

У открывающих и закрывающих тегов узлов схемы устанавливается префикс пространства имен w3.org, объявленный в заголовке схемы.

<!-- пример заголовока схемы -->
<schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cml="urn:1C.ru:commerceml_2" targetnamespace="urn:1C.ru:commerceml_2">

<!-- было -->
<simpletype>
    <restriction base="cml:НаименованиеТип"></restriction>
</simpletype>

<!-- стало -->
<xsd:simpletype>
    <xsd:restriction base="cml:НаименованиеТип"></xsd:restriction>
</xsd:simpletype>

Наименования узлов схемы регистрозависимые, поэтому наименование узла simpletype неправильно, а simpleType правильно. Для этого был создан словарь в соответствии с пространством имен w3.org по которому и переименовываются проблемные наименования.

<!-- было -->
<xsd:simpletype>
    <xsd:restriction base="cml:НаименованиеТип"></xsd:restriction>
</xsd:simpletype>

<!-- стало -->
<xsd:simpleType>
    <xsd:restriction base="cml:НаименованиеТип"></xsd:restriction>
</xsd:simpleType>

Зависимости

Скрипт разработан в среде OScript 1.3.0 Тестирование на более ранних версиях интерпретатора не проводилось.

Требуется библиотека cmdline Установите библиотеку через пакетный менеджер OScript: opm install cmdline Устанавливайте библиотеку в окне CMD, которое запущено от имени администратора.

Параметры

У скрипта один аргумент командной строки

-path <полный путь к схеме> - полный путь, включающий имя файла обрабатываемой XML схемы

Результат

Скрипт получает префикс пространства имен w3.org из атрибута xmlns:xsd="http://www.w3.org/2001/XMLSchema" заголовка XML схемы

Скрипт определяет необходимость устанавливать префикс в тегах по узлу <xsd:schema Если узел schema уже с префиксом, то считаю, что вся схема с префиксами.

Скрипт, если нужно, устанавливает префикс пространства имен w3.org в открывающих и закрывающих тегах XML схемы

Скрипт по словарю меняет наименования элементов, в которых используется camelCase стиль, пример simpleType

Скрипт создает новый результирующий файл XML схемы с суффиксом _modify

Примеры использования

oscript cxs.os -path d:\tmp\CommerceML2-10.xsd
где d:\tmp\CommerceML2-10.xsd - путь к файлу, который нужно обработать

Заключение

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

Страничка этого проекта на GitHub

Скачать файлы

Наименование Файл Версия Размер
Подготовка (исправление) XML схем:

.os 14,73Kb
0
.os 1-02 14,73Kb Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. genayo 10.03.20 20:41 Сейчас в теме
Ещё бы кто скрипт написал, который валидные xsd схемы приводит к виду, который 1С прочитает. От 1С же решения этой проблемы не дождаться :((
2. infosoft-v 503 10.03.20 20:52 Сейчас в теме
(1) хорошее предложение, спасибо. Я подумаю, как это можно сделать. 1С хорошо работает со стилем схемы Венецианские жалюзи https://habr.com/ru/company/cit/blog/259167/
Нужно искать преобразователь стилей.
3. genayo 10.03.20 21:24 Сейчас в теме
(2) О, спасибо за ссылку на статью, утащил в закладки :))
Оставьте свое сообщение

См. также

Подсистема "Показатели объектов" Промо

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

2 стартмани

06.03.2021    1120    1    pila86    8    

Работа с My SQL через ODBC

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Работа с My SQL через ODBC. Разбираем базовые принципы соединения с MySQL и получения данных. Тестировалось на платформе 8.3.18.1208

1 стартмани

05.03.2021    406    1    vov4ik1212    0    

Универсальный "сравниватель" объектов

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Сравнение реквизитов и табличных частей двух объектов 1С (справочники, документы), чтобы увидеть разницу в значениях.

1 стартмани

03.03.2021    403    0    pyrkin_vanya    5    

Вспомогательные таблицы - универсальный инструмент хранения таблиц любой структуры (константы, параметры обработок и т.д.)

Прочие инструменты разработчика v8 Россия Абонемент ($m)

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

1 стартмани

24.02.2021    461    1    xl_yaz    4    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    3022    14    huxuxuya    11    

Создание и поддержка разных редакций (Demo, Lite, Pro и пр.) модулей, отчетов и обработок

Прочие инструменты разработчика v8 Абонемент ($m)

В статье предлагается один из возможных подходов к автоматизации создания и поддержки разных редакций (Demo, Lite, Pro и пр.) модулей, отчетов и обработок. Подход может быть полезным для авторов публикаций с коммерческими разработками.

1 стартмани

16.02.2021    520    0    bme    2    

Генератор кода схемы компоновки данных (СКД)

Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Формирование кода для программного создания схемы компоновки данных (СКД)

1 стартмани

04.02.2021    3364    37    Sergspectr    28    

Автоматизированная очистка нетиповой конфигурации от //{{MRG

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Удаление //{{MRG из конфигурации автоматизированным способом.

1 стартмани

02.02.2021    603    0    nemec    0    

Пример работы с файлами odt в клиент-серверной модели работы

Прочие инструменты разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Возникла задача, реализовать печатные формы из шаблонов в формате ODT (Open Office). Особенность задачи заключалась в том, что шаблоны хранятся в виде файлов на сервере. Печать должна выполняться через веб-клиент. По выбору пользователя заполненный шаблон выводится либо в ODT либо PDF. Столкнулся с дефицитом информации по этой теме. По этой причине в самой статье опишу подход к решению задачи и особенности, связанные с работой на сервере и веб-клиенте. Прикладываю обработку, в которой все реализовано. Вам останется только отредактировать 2 функции, в которых указан список параметров шаблона. Остальной код универсальный и не зависит от конфигурации. Данная доработка выполнялась в самописной конфигурации и не требует наличия БСП. Сразу напишу, что размышления о том, что можно поместить шаблон в конфигурацию и выполнить всё на клиенте совсем не уместны. Разработка велась на платформе 8.3.16, на более ранних версиях также должна работать.

1 стартмани

01.02.2021    1079    2    biimmap    1    

Консоль текстов модулей для управляемых форм

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка предназначена для выполнения произвольного кода в режиме 1С:Предприятие для управляемых форм. Поддерживаются: конструктор запросов, расцветка кода, синтаксические подсказки, параметры, дерево текстов и запись в файл. Минимальная версия платформы - 8.3.14.1565.

1 стартмани

26.01.2021    1211    16    Reaper_1C    2    

Сравнение функций/процедур из расширения с функциями/процедурами из конфигурации

Прочие инструменты разработчика v8::УФ 1cv8.cf Абонемент ($m)

Обработка облегчает обновление функций/процедур в расширении, которые используют аннотацию &Вместо.

1 стартмани

18.01.2021    892    2    Wilka    0    

DT2CF - Экстрактор конфигурации из дампа информационной базы

Сервисные утилиты Прочие инструменты разработчика v8 Абонемент ($m)

Инструмент для извлечения файла конфигурации из файла резервной копии информационной базы (без использования платформы).

10 стартмани

21.12.2020    1503    3    SerVer1C    5    

FormCodeGenerator Программная доработка форм. Часть 1 (Режим работы "Палитра")

Практика программирования Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является описанием функционирования обработки "FormCodeGenerator " в режиме генерирования кода "на лету", без особых заморочек, данный режим идеально подходит для того что бы запустить, потыкать и забыть :)

14.12.2020    3613    2    huxuxuya    9    

Работа с сериализатором XDTO

Прочие инструменты разработчика Обмен через XML v8 v8::УФ 1cv8.cf Абонемент ($m)

Отладочное расширение для просмотра объектов, преобразованных в XML, с помощью сериализатора XDTO, а также для выгрузки в xml.

1 стартмани

06.12.2020    1123    1    simon_sidoruk    5    

Обновление предопределенных данных

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Обновляет предопределенные элементы, созданные в конфигураторе. Тестировалось на платформе 8.3.15.1869

1 стартмани

01.12.2020    1132    4    user618575_VladimirGluhov.1c    2    

Обработки "Заменить упаковку товара" и "Заполнение упаковок документов"

Обработка документов Оптовая торговля Учет ТМЦ Специальные Прочие инструменты разработчика v8 ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика УУ Абонемент ($m)

Обработка «Заменить упаковку товара» предназначена для присвоения нового значения единицы измерения или упаковки товара для номенклатуры. А также обработки всех имеющихся в базе данных документов и перепроведения документов

1 стартмани

26.11.2020    936    5    user923728    0    

Отчет по Глобальным командам и Подпискам на события в конфигурации с возможностью отбора по Документам и Справочникам

Прочие инструменты разработчика v8 1cv8.cf Украина Россия Абонемент ($m)

Позволяет "посмотреть" все "подписки на события" и "глобальные команды" и при необходимости "отфильтровать" их по нужному объекту в конфигурации - "Документу" или "Справочнику". Поможет понять, где ещё может "обрабатываться" объект...

1 стартмани

23.11.2020    1023    2    AnryMc    5    

Шаблон расширения с функцией сохранения настроек

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Удобный механизм для быстрого создания сохраняемых настроек в расширении.

1 стартмани

20.11.2020    659    0    pm74    1    

Расширение для создания собственных подсистем БСП

БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

В этой статье поделюсь некоторыми изысканиями о внутреннем устройстве стандартной подсистемы "Обновление версии ИБ" и расскажу, как разработать свою подсистему, в которой будет работать отчёт с описанием изменений.

1 стартмани

20.11.2020    4085    8    stas_ganiev    4    

Подготовка к 1С:Совместимо. Инструментарий в помощь программисту

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Инструментарий в помощь программисту для подготовки конфигурации к сертификации 1С:Совместимо.

1 стартмани

16.11.2020    1293    2    BrainAttack    0    

БСП - рабочие примеры асинхронного запуска функций и процедур

Практика программирования БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

В данной публикации я привожу рабочие примеры асинхронного использования функций и процедур конфигурации на БСП

2 стартмани

02.11.2020    4886    17    quazare    2    

Работа с формулой-шаблоном

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

"Работа с формулой-шаблоном" - внешняя обработка, в которой для "Идентификаторы объектов метаданных"/"Идентификаторы объектов расширений" рекурсивно строится дерево реквизитов/стандартных реквизитов, дополнительных реквизитов/сведений и можно с их помощью, используя операторов и функций слева с помощью перетаскивания мышью, построить формулу, которую потом применять к элементам справочника/документа и т.д. (например - задавать шаблоны наименований, имен файлов и т.п).

3 стартмани

02.11.2020    1325    3    kn    0    

Просмотр структуры базы в СУБД, в том числе расширений

Структура метаданных Расширения Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Структура таблиц базы данных с учётом расширений.

1 стартмани

29.09.2020    4587    44    Yashazz    8    

Генератор внешних печатных форм

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Консоль запросов Прочие инструменты разработчика Универсальные печатные формы v8 1cv8.cf Абонемент ($m)

Генератор печатных форм - инструмент для создания внешних печатных форм в режиме предприятия с минимальным написанием кода

3 стартмани

18.09.2020    2840    16    andy_zhav    7    

Отладка расчета себестоимости в ERP - просмотр изменений временных таблиц

Практика программирования Закрытие периода Прочие инструменты разработчика v8::БУ ERP2 БУ Абонемент ($m)

Как уследить за изменениями в сотне временных таблиц на различных этапах выполнения расчета себестоимости. Тестировалось на 1С:ERP Агропромышленный комплекс 2 (2.4.12.75)

1 стартмани

09.09.2020    3474    10    doom2good    0    

Разбор областей и параметров печатной формы MXL и генерация кода заполнения. Обработка

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Назначение обработки - выделение областей и параметров из печатной формы и генерация кода заполнения печатных форм и отчетов на базе табличного документа 1С

1 стартмани

05.09.2020    2902    6    Ivon    0    

Тестирование проводок в ЕРП

Прочие инструменты разработчика v8 ERP2 Россия БУ Абонемент ($m)

Показывает тексты запросов, которыми формируются бухгалтерские проводки по документу. В обработке можно отредактировать тексты запросов и посмотреть, как изменится результат отражения в регл. учете. Также в обработке можно узнать содержание временных таблиц, которые формируются при отражении документа в регл. учете. Обработку рекомендуется использовать для отладки формирования проводок и анализа проблем с отражением в регл. учете.

1 стартмани

02.09.2020    1963    8    JohnConnor    3    

CSV парсинг на 1С8, допускающий включение кавычек и символа переноса строки в полях

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Чтение файла происходит блоками, а не посимвольно, что ускоряет процесс. Конец строки это символ возврата каретки (13), символ переноса строки (10) игнорируется и может быть включен в текстовое поле. Также парные кавычки "" внутри поля воспринимаются как одиночный символ кавычек.

1 стартмани

31.08.2020    1745    1    e-rogov    0    

Визуальный html WYSIWYG редактор без сторонних библиотек на управляемых формах

Прочие инструменты разработчика Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой и удобный html редактор без сторонних библиотек.

1 стартмани

31.08.2020    4854    10    ivanov660    12    

Генератор кода COM-обмена

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для автоматического создания кода для загрузки данных из другой базы 1С через COM-соединение.

1 стартмани

20.08.2020    2357    9    ManyakRus    4    

Проверка ведения учета (универсальная)

Анализ учета Прочие инструменты разработчика v8 v8::Запросы Россия Абонемент ($m)

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

2 стартмани

11.08.2020    2992    17    vozhd    2    

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Прочие инструменты разработчика WEB v8 1cv8.cf Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

06.08.2020    3598    2    DrZombi    7    

Сужающийся поиск различий между базами

Поиск данных Универсальные обработки Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Автоматизированный поиск различий в данных, сужающийся по времени.

1 стартмани

30.07.2020    2663    1    Yashazz    0    

Подготовка текста кода 1С для регистрации программы ЭВМ

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Данная обработка предназначена для подготовки текста кода форм, модулей менеджера, объектов из выгруженных файлов.

1 стартмани

21.07.2020    2754    1    uribur    5    

Консоль кода для управляемых форм

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

17.07.2020    16492    264    salexdv    243    

Обозреватель объектов подсистем ( справочники, опции, документы)

Администрирование данных 1С БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

15.07.2020    3327    3    sergbsv    1    

Сравнение результатов глобального поиска по текстам

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

3 стартмани

15.07.2020    2779    0    Hitcher    2    

Шаблон отчета с обработкой данных

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Отчет с кнопкой программного вывода результата в таблицу значений (дерево значений).

1 стартмани

14.07.2020    2608    0    user1209971    0    

Шаблонизатор

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Создание программного кода для заполнения документа по указанному шаблону.

1 стартмани

06.07.2020    2890    4    Salimbek    0