Тип: Строка. Содержит кодировку документа XML, указанную в документе внешней разбираемой сущности.
Полное описание, параметры и ограничения
СущностьDOM.КодировкаXML (DOMEntity.XMLEncoding)
СущностьDOM (DOMEntity)
КодировкаXML (XMLEncoding)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: Строка.
Содержит кодировку документа XML, указанную в документе внешней разбираемой сущности.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Поддерживаемые коды кодировок (с учетом правил http://www.w3.org/TR/2004/REC-xml-20040204/#NT-EncName):
UTF-8
UTF-16
UTF-16BE
UTF-16LE
ISO-8859-1
US-ASCII
gb18030
iso-8859-2
iso-8859-3
iso-8859-4
iso-8859-5
iso-8859-6
iso-8859-7
iso-8859-8
iso-8859-9
iso-8859-13
iso-8859-15
Shift_JIS
EUC-JP
Big5
Big5-HKSCS
GBK
GB2312
GB_2312-80
EUC-KR
KSC_5601
windows-949
windows-874
cp866
KOI8-R
KOI8-U
windows-1250
windows-1251
windows-1252
windows-1253
windows-1254
windows-1255
windows-1256
windows-1257
windows-1258
macintosh
x-mac-cyrillic
ISO-2022-JP
ISO-2022-KR
ISO-2022-CN
ISO-2022-CN-EXT
HZ-GB-2312
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Прочитать реальные объявления сущности и нотации из собственного DTD
Сущность NDATA ссылается на нотацию формата. Эти два узла не являются тегами product или ссылкой на рабочую картинку.
Где и как запускать
Полный серверный общий модуль своей учебной базы. Внутренний DTD только известной собственной строки, не вход произвольного API.
Подготовка
Только отдельная учебная база. Создайте серверный общий модуль УчебныеЗадачи с процедурой ВыполнитьПример() Экспорт. Полный модуль каждого урока вставьте целиком, включая уже показанную процедуру.
XML содержит только собственный внутренний DTD. Внешнего подмножества DOCTYPE нет, SYSTEM/PUBLIC в двух объявлениях — учебные URN, не пути и не HTTP-адреса.
guideIcon — неразбираемая сущность NDATA; она объявлена, но не используется как &guideIcon; в тексте. Её ресурс не загружается. Нотация описывает формат, не изображение.
Параметры и построитель создаются заново для этой известной строки. Никогда не переносите разрешение DTD на произвольный XML из интернета или API.
Вызовите УчебныеЗадачи.ВыполнитьПример() из серверной учебной команды. Нет записи базы, файлов или сетевых соединений; поведение DOM 1С ещё требует контрольного запуска в учебной базе.
Процедура ВыполнитьПример() Экспорт
Параметры = Новый ПараметрыЧтенияXML(, , , , , Ложь);
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку("<?xml version=""1.0""?>
|<!DOCTYPE products [
|<!NOTATION guideMark PUBLIC ""guide-marker"" ""urn:guide:marker-format"">
|<!ENTITY guideIcon SYSTEM ""urn:guide:marker-payload"" NDATA guideMark>
|]>
|<products xmlns:g=""urn:guide:dtd""><product>Книга</product></products>", Параметры);
Построитель = Новый ПостроительDOM;
Настройки = Построитель.КонфигурацияDOM;
Если НЕ Настройки.ВозможноУстановитьПараметр("disallow-doctype", Ложь) Тогда
Чтение.Закрыть();
ВызватьИсключение "Построитель не разрешает собственный внутренний DTD";
КонецЕсли;
Настройки.УстановитьПараметр("disallow-doctype", Ложь);
Попытка
Документ = Построитель.Прочитать(Чтение);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
ОписаниеТипа = Документ.ОпределениеТипаДокумента;
Если ОписаниеТипа = Неопределено Тогда
ВызватьИсключение "Включите чтение типа документа, не подменяйте его пустым новым DOCTYPE";
КонецЕсли;
Сущность = ОписаниеТипа.Сущности.ПолучитьИменованныйЭлемент("guideIcon");
Нотация = ОписаниеТипа.Нотации.ПолучитьИменованныйЭлемент("guideMark");
Если ТипЗнч(Сущность) <> Тип("СущностьDOM") ИЛИ ТипЗнч(Нотация) <> Тип("НотацияDOM") Тогда
ВызватьИсключение "Построитель не сохранил ожидаемые собственные объявления DTD";
КонецЕсли;
Узлы = Новый Массив;
Узлы.Добавить(Сущность);
Узлы.Добавить(Нотация);
Сообщить(Сущность.ИмяУзла = "guideIcon");
Сообщить(Сущность.ИмяНотации = "guideMark");
Сообщить(Сущность.СистемныйИдентификатор = "urn:guide:marker-payload");
Сообщить(Нотация.ПубличныйИдентификатор = "guide-marker");
Сообщить(Нотация.СистемныйИдентификатор = "urn:guide:marker-format");
Сообщить("PUBLIC сущности: " + Строка(Сущность.ПубличныйИдентификатор));
Сообщить("Версия внешней сущности: " + Строка(Сущность.ВерсияXML));
Сообщить("Кодировка XML сущности: " + Строка(Сущность.КодировкаXML));
Сообщить("Кодировка источника сущности: " + Строка(Сущность.КодировкаИсточника));
Для Каждого Узел Из Узлы Цикл
Сообщить("Тип узла: " + Строка(Узел.ТипУзла));
Сообщить("Имя: " + Узел.ИмяУзла);
Сообщить("База URI: " + Строка(Узел.БазовыйURI));
Сообщить(Узел.ДокументВладелец = Документ);
Сообщить(Узел.ЗначениеУзла = Неопределено);
Сообщить("Текстовое содержимое: " + Строка(Узел.ТекстовоеСодержимое));
Сообщить("Тип атрибутов: " + Строка(ТипЗнч(Узел.Атрибуты)));
Сообщить(НЕ Узел.ЕстьАтрибуты());
Сообщить(НЕ Узел.ЕстьДочерниеУзлы());
Сообщить(Узел.ДочерниеУзлы.Количество() = 0);
Сообщить(Узел.ПервыйДочерний = Неопределено);
Сообщить(Узел.ПоследнийДочерний = Неопределено);
Сообщить(Узел.ПредыдущийСоседний = Неопределено);
Сообщить(Узел.СледующийСоседний = Неопределено);
Сообщить(Узел.РодительскийУзел = Неопределено);
КонецЦикла;
Сообщить(Документ.ЭлементДокумента.ТекстовоеСодержимое = "Книга");
КонецПроцедурыРазбор по шагам
Шестой аргумент ПараметрыЧтенияXML — ИгнорироватьТипДокумента. Ложь сохраняет DTD; readonly-свойства параметров не присваиваются после создания.
ЧтениеXML закрывается при успехе и при ошибке. Собственный ПостроительDOM допускает ровно этот внутренний DTD; отсутствие объявления останавливает пример.
ПолучитьИменованныйЭлемент ищет именно объявленные имена, а типы проверяются до специальных свойств сущности/нотации.
Сущность содержит SYSTEM ресурса и ИмяНотации. Нотация имеет другой SYSTEM и PUBLIC описания формата. URN не разыменовываются.
Неразбираемая сущность и нотация — листья, не дочерние теги корня. ДокументВладелец не является РодительскимУзлом.
Версия и кодировки внешнего разбираемого ресурса здесь не прочитаны: значения только диагностируются и не выдаются за UTF-8 скачанного файла.
Как проверить результат
Пять первых Истина, затем по десять Истина для каждого из двух узлов и последнее Истина для текста Книга.
Текст product получен из собственного XML; содержимое marker-payload не загружалось.
Ожидаемый результат
Получены настоящие два узла DTD с понятной картой свойств.
На что обратить внимание
Не объявляйте наличие SYSTEM доказательством загрузки ресурса.
Если построитель не сохранил DTD, урок остановится, а не заменит реальные узлы фиктивными структурами.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.