Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Меркурий, Ветис.API и проверка по схеме

v7: Меркурий, Ветис.API и проверка по схеме
Я
   AlexSTAL
 
14.06.18 - 18:58
кто подскажет, можно ли проверить сформированный XML-запрос к сервису Ветис.API WSDL по средством XSD-схем?
Покрутил как мог:
    XML_DOM = CreateObject("Msxml2.DOMDocument.6.0"); 

    Header = XML_DOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" );
    XML_DOM.appendChild(Header);
    ...
    
    Schema = СоздатьОбъект("msxml2.xmlschemacache.6.0");
    Schema.add("http://api.vetrf.ru/schema/cdm/registry/ws-definitions/v2";, КаталогИБ() + "registry_ws_definitions_v2.1.xsd");
    Schema.add("http://api.vetrf.ru/schema/cdm/dictionary/v2";, КаталогИБ() + "dictionary_v2.1.xsd");
    Schema.add("http://api.vetrf.ru/schema/cdm/base";, КаталогИБ() + "base_v2.0.xsd");
    
    
    XML_DOM.schemas = Schema;
    ////собственно проверка на валидность
    Ошибка = XML_DOM.validate();
    Если Ошибка.errorCode = 0 Тогда
        Предупреждение("Документ соответствует схеме");
    Иначе
        //// в свойстве .reason содержится причина ошибки.
        Предупреждение("ОШИБКА: "+Ошибка.reason);
    КонецЕсли;    


ответ: Узел не является ни допустимым, ни недопостимым, поскольку не найдено объявление в DTD и схеме
 
 
   php5
 
1 - 14.06.18 - 20:16
(0) Попробуй этим сервисом проверить -> https://www.freeformatter.com/xml-validator-xsd.html
   AlexSTAL
 
2 - 14.06.18 - 20:30
(1) Все сервисы, которые я нашёл, рассчитаны только на 1 схему, а в XML их несколько
Да и сама проверки тестового запроса не нужна - он корректно обрабатывается сервисом и возвращается ответ
Мне нужен для проверки запросов перед отправкой
   AlexSTAL
 
3 - 15.06.18 - 10:13
Так. Наметился прогресс...
Создал тестовый XML и тестовую схему XSD (с тегами импорта других XSD). Проверил в XML-редакторах валидность и работоспособность - всё ок.

Делаю всё то же в 1С - болт, ошибка: "Элемент "Envelope" используется, но не был объявлен в DTD и схеме"

Странно, попробовал в 1С просто загрузить XML из файла и проверить на валидность - работает!

Так... Генерю XML файл, сохраняю, сразу его читаю, проверяю - работает!

Посмотрел все свойства и методы - ничего не нашёл, связанно с кэшированием или прочим, пробовал вставлять паузу 10 секунд, пробовал атрибуты "async" и "validateOnParse" - без сохранения не проходит валидацию.
Пробовал и 4-ую и 6-ую версию

Подскажите, возможно ли без сохранения/чтения проверять на валидность?
   Сияющий в темноте
 
4 - 15.06.18 - 10:15
Наверное,если сохранить в строку и прочитать из строки,то тоже должно работать.
Проверка работает на уже сформированном xml,а не на стадии формирования.
   AlexSTAL
 
5 - 15.06.18 - 10:29
(4) Да, такая конструкция так же работает     XML_DOM.LoadXML(XML_DOM.xml);

Так формирование же завершено, может команда есть какая, "закончить документ"?

Список тем форума
Рекламное место пустует  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует