Тип: Строка. Текстовое содержимое узла DOM. Содержит текстовое значение узла и всех его потомков. Значение не содержит разметки. Никакой нормализации пробельных символов не выполняется, и возвращаемая строка не содержит пробельных символов в содержимом элемента (см. свойство ЭтоПробельныеСимволыЭлемента). Принцип формирования текстового значения узла: Элемент, Атрибут, Сущность, СсылкаНаСущность, ФрагментДокумента - объединение текстового содержимого каждого из дочерних узлов, исключая Комментарий; ИнструкцияОбработки. Пустая строка, если дочерних узлов нет; Текст, СекцияCDATA, Комментарий; ИнструкцияОбработки - значение свойства СущностьDOM.ЗначениеУзла; Документ, ОпределениеТипаДокумента, Нотация - Неопределено.
Полное описание, параметры и ограничения
СущностьDOM.ТекстовоеСодержимое (DOMEntity.TextContent)
СущностьDOM (DOMEntity)
ТекстовоеСодержимое (TextContent)
Доступен, начиная с версии 8.1.
Использование:
Чтение и запись.
Описание:
Тип: Строка.
Текстовое содержимое узла DOM.
Содержит текстовое значение узла и всех его потомков. Значение не содержит разметки.
Никакой нормализации пробельных символов не выполняется, и возвращаемая строка не содержит пробельных символов в содержимом элемента (см. свойство ЭтоПробельныеСимволыЭлемента).
Принцип формирования текстового значения узла:
Элемент, Атрибут, Сущность, СсылкаНаСущность, ФрагментДокумента - объединение текстового содержимого каждого из дочерних узлов, исключая Комментарий; ИнструкцияОбработки. Пустая строка, если дочерних узлов нет;
Текст, СекцияCDATA, Комментарий; ИнструкцияОбработки - значение свойства СущностьDOM.ЗначениеУзла;
Документ, ОпределениеТипаДокумента, Нотация - Неопределено.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 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, урок остановится, а не заменит реальные узлы фиктивными структурами.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.