Директива импорта.
Полное описание, параметры и ограничения
ТипКомпонентыXS.Импорт (XSComponentType.Import)
ТипКомпонентыXS (XSComponentType)
Импорт (Import)
Доступен, начиная с версии 8.1.
Описание:
Директива импорта.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Разобрать ТипКомпонентыXS.Импорт собственной схемы
В собственную схему добавляется настоящая директива с собственной разрешённой частью в памяти. ТипКомпоненты различает директивы, не пытаясь определить их по строковому имени класса.
Где и как запускать
Серверный общий модуль собственной учебной базы. Редкий API: разбор своей XSD / короткий пример синтаксиса директив.
Подготовка
Серверный общий модуль УчебныеСхемы в собственной учебной базе: Сервер = Истина, Глобальный = Ложь. Разместите дополнительные функции на уровне модуля, а основной код — в тело Процедура ВыполнитьПример() Экспорт.
Вызовите УчебныеСхемы.ВыполнитьПример() из серверной команды своей учебной обработки. Каждый урок выполняйте отдельно: XSD целиком включена строкой и относится к вымышленной книге.
Схема строится из собственной строки XML через DOM. Здесь нет DTD, чтения файла, загрузки XSD по URL и обращения к внешнему серверу. URI urn:learn:book-schema — имя пространства, не сетевой адрес.
Это пример разбора / работы с моделью XSD. Он не является проверкой XML документа продажи или созданием метаданных 1С. Браузер справочника BSL не исполняет.
Основная = ПрочитатьУчебнуюСхему("<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:g=""urn:learn:book-schema"" targetNamespace=""urn:learn:book-schema"" elementFormDefault=""qualified""><xs:element name=""book"" type=""xs:string""/></xs:schema>");
Часть = ПрочитатьУчебнуюСхему("<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:g=""urn:learn:book-part"" targetNamespace=""urn:learn:book-part"" elementFormDefault=""qualified""><xs:simpleType name=""BookCode""><xs:restriction base=""xs:string""><xs:length value=""4""/></xs:restriction></xs:simpleType></xs:schema>");
Часть.РасположениеСхемы = "urn:learn:owned-part";
Директива = Новый ИмпортXS;
Директива.РасположениеСхемы = "urn:learn:owned-part";
Директива.РазрешеннаяСхема = Часть;
Директива.ПространствоИмен = "urn:learn:book-part";
Основная.Содержимое.Вставить(0, Директива);
Если Директива.ТипКомпоненты = ТипКомпонентыXS.Импорт Тогда
Директива.ОбновитьЭлементDOM();
Сообщить("Директива: " + Директива.ЭлементDOM.ИмяЭлемента);
КонецЕсли;Тот же серверный общий модуль: построение собственной схемы из строки
Функция ПрочитатьУчебнуюСхему(ТекстXSD)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXSD);
Попытка
Дерево = Новый ПостроительDOM;
Документ = Дерево.Прочитать(Чтение);
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Построитель = Новый ПостроительСхемXML;
Схема = Построитель.СоздатьСхемуXML(Документ.ЭлементДокумента);
Если Схема = Неопределено Тогда
ВызватьИсключение "Не построена собственная схема";
КонецЕсли;
Возврат Схема;
КонецФункцииРазбор по шагам
Из собственной строки XSD строится DOM и настоящая модель СхемаXML.
ТипКомпоненты — типизированное перечисление. Обход идёт по Компоненты, то есть дочерним принадлежащим компонентам, не по обратным ссылкам Контейнер / Схема.
Работа выполняется с собственным деревом и копией либо с явно созданной собственной директивой. Никакой неизвестный объект извне не требуется.
Как проверить результат
Для выбранной директивы выведен её XML-тег import / include / redefine.
Переопределение показано как подготовленная директива: новое ограничение типа в её Содержимое не добавлено, поэтому пример не заявляет фактическую замену BookCode. Проверка законченной связанной схемы выполняется отдельно.
Ожидаемый результат
Выбранный вид компоненты использован при разборе конкретной собственной XSD.
На что обратить внимание
Не путайте XS-компоненту схемы с узлом DOM или объектом XDTO данных: это разные модели.
Компоненты отражает владение; нельзя рекурсивно идти по Контейнер и Схема без защиты от циклов.
Для директив используются собственные схемы в памяти. Этот короткий пример не загружает файлы и не утверждает, что проверен экземпляр XML.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.