Показан полный собственный источник, фактический потребитель параметра и аккуратное закрытие читателя.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Тело серверной процедуры собственной обработки / общего модуля. Источники заданы в коде, рабочие данные не читаются.
Дополнительную функцию разместите отдельно в том же модуле. Она читает собственную XSD в DOM, затем создаёт реальный СхемаXML через СоздатьСхемуXML(ЭлементDOM). Не передавайте ЧтениеXML прямо в СоздатьСхемуXML.
Схемы = Новый НаборСхемXML;
Схемы.Добавить(СвояСхемаКоличестваXML());
Параметры = Новый ПараметрыЧтенияXML(, , , ТипПроверкиXML.СхемаXML);
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку("<quantity>3</quantity>", Параметры, Схемы);
Попытка
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Сообщить("Прочитано количество: " + Чтение.Значение);
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Сообщить("Чтение с собственной схемой завершено");Тот же модуль: настоящая собственная XSD quantity типа xs:int
Функция СвояСхемаКоличестваXML()
ТекстXSD = "<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema""><xs:element name=""quantity"" type=""xs:int""/></xs:schema>";
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXSD);
Попытка
ПостроительDOM = Новый ПостроительDOM;
Документ = ПостроительDOM.Прочитать(Чтение);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
ПостроительСхем = Новый ПостроительСхемXML;
Схема = ПостроительСхем.СоздатьСхемуXML(Документ.ЭлементДокумента);
Если Схема = Неопределено Тогда
ВызватьИсключение "Собственный корень xs:schema не распознан";
КонецЕсли;
Возврат Схема;
КонецФункцииРазбор по шагам
Подготовьте фиксированный собственный источник.
Выполните основной блок и необходимые дополнительные функции.
Сравните результат с описанным контрольным случаем.
Как проверить результат
Третий аргумент УстановитьСтроку — настоящий набор схем, а четвёртый аргумент конструктора параметров включает проверку. Для второго ручного опыта замените 3 на три: схема xs:int должна отклонить содержимое. Внешних schemaLocation, DTD, import/include и сетевых обращений нет.
BSL и XML / XSD / DOM 1С при сборке HTML не выполнялись; данные, файлы и сеть не изменяются.
Ожидаемый результат
Режим имеет конкретную роль в чтении / записи собственного XML, а не только подпись перечисления.
На что обратить внимание
ПараметрыЧтенияXML задаются конструктором: многие его свойства только для чтения и не должны присваиваться после создания.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.