Осуществляет запись ссылки на сущность.
Синтаксис
ЗаписатьСсылкуНаСущность(<Имя>)Полное описание, параметры и ограничения
ЗаписьXML.ЗаписатьСсылкуНаСущность (XMLWriter.WriteEntityReference)
ЗаписьXML (XMLWriter)
ЗаписатьСсылкуНаСущность (WriteEntityReference)
Доступен, начиная с версии 8.1.
Синтаксис:
ЗаписатьСсылкуНаСущность(<Имя>)
Параметры:
<Имя> (обязательный)
Тип: Строка.
Имя ссылки на сущность.
Описание:
Осуществляет запись ссылки на сущность.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Записать внутреннюю сущность без внешнего DTD
Определение book = Книга находится прямо в собственном документе. Внешних SYSTEM/PUBLIC идентификаторов нет.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьТипДокумента("catalog", "<!ELEMENT catalog (#PCDATA)><!ENTITY book 'Книга'>");
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьСсылкуНаСущность("book");
Запись.ЗаписатьКонецЭлемента();
XML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Сообщить(СтрНайти(XML, "<!DOCTYPE catalog") > 0);
Сообщить(СтрНайти(XML, "&book;") > 0);
Чтение = Новый ЧтениеXML;
Попытка
Чтение.УстановитьСтроку(XML);
НайденКорень = Ложь;
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
НайденКорень = Чтение.ЛокальноеИмя = "catalog";
КонецЕсли;
КонецЦикла;
Сообщить(НайденКорень);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Сообщить(XML);
КонецПроцедуры
Разбор по шагам
После объявления XML, но до корня записать внутреннее подмножество DOCTYPE двухаргументным вариантом.
Имя catalog в DOCTYPE совпадает с корнем. Внутреннее объявление задаёт сущность book.
Ссылку записать методом ЗаписатьСсылкуНаСущность, не строкой через ЗаписатьТекст.
Проверить наличие DOCTYPE и &book; в сериализованном тексте, затем пройти документ читателем до конца. Это не проверка XSD и не обещание вида узла развёрнутой сущности.
Как проверить результат
Три проверки дают Истина.
XML содержит собственное внутреннее объявление и ссылку. Ошибка чтения не подавляется.
Ожидаемый результат
Воспроизводимый образец записи DOCTYPE и ссылки на заранее объявленную сущность.
На что обратить внимание
Не подставляйте внешний DTD или неизвестные сущности из пользовательского ввода.
ЗаписатьТекст("&book;") создал бы буквальный текст с экранированным &, а не ссылку на сущность.
Правила обработки/проверки DTD читателем задаются отдельно. Здесь проверяется собственный документ, не безопасность произвольного XML.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.