|
v7: Меркурий, Ветис.API и проверка по схеме |
☑ |
0
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(";, КаталогИБ() + "registry_ws_definitions_v2.1.xsd");
Schema.add(";, КаталогИБ() + "dictionary_v2.1.xsd");
Schema.add(";, КаталогИБ() + "base_v2.0.xsd");
XML_DOM.schemas = Schema;
////собственно проверка на валидность
Ошибка = XML_DOM.validate();
Если Ошибка.errorCode = 0 Тогда
Предупреждение("Документ соответствует схеме");
Иначе
//// в свойстве .reason содержится причина ошибки.
Предупреждение("ОШИБКА: "+Ошибка.reason);
КонецЕсли;
ответ: Узел не является ни допустимым, ни недопостимым, поскольку не найдено объявление в DTD и схеме
|
|
1
php5
14.06.18
✎
20:16
|
(0) Попробуй этим сервисом проверить ->
|
|
2
AlexSTAL
14.06.18
✎
20:30
|
(1) Все сервисы, которые я нашёл, рассчитаны только на 1 схему, а в XML их несколько
Да и сама проверки тестового запроса не нужна - он корректно обрабатывается сервисом и возвращается ответ
Мне нужен для проверки запросов перед отправкой
|
|
3
AlexSTAL
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,а не на стадии формирования.
|
|
5
AlexSTAL
15.06.18
✎
10:29
|
(4) Да, такая конструкция так же работает XML_DOM.LoadXML(XML_DOM.xml);
Так формирование же завершено, может команда есть какая, "закончить документ"?
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший