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

10.03.20

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Подготовка (исправление) XML схем:
.os 14,73Kb ver:1-02
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Вступление

Понадобилось мне для 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

Вступайте в нашу телеграмм-группу Инфостарт

onescript oscript xsd xml schema

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    66827    356    163    

309

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    257387    1425    421    

1163

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    53430    109    29    

121

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    37875    100    46    

121

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    25013    92    44    

102

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    3389    12    1    

14

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    52567    182    63    

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