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

1С:Предприятие ::

Метки: 

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);

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


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует