Запись открывается на собственном ДокументDOM. Объявление XML должно идти до остальных операций, DTD задан без внешнего файла.
Где и как запускать
Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.
Подготовка
Документ и запись создаются в памяти. Имя order одинаково в DTD и записываемом корневом элементе.
Используется двухаргументный вариант ЗаписатьТипДокумента с внутренним подмножеством, без SYSTEM- или PUBLIC-файла.
Документ = Новый ДокументDOM("", "order");
Запись = Новый ЗаписьУзловDOM;
Запись.Открыть(Документ);
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьТипДокумента("order", "<!ELEMENT order (#PCDATA)>");
Запись.ЗаписатьНачалоЭлемента("order");
Запись.ЗаписатьТекст("BOOK");
Запись.ЗаписатьКонецЭлемента();
Фрагмент = Запись.УзелDOM;
Запись.Закрыть();
Сообщить("Узлов фрагмента: " + Строка(Фрагмент.ДочерниеУзлы.Количество()));Разбор по шагам
Откройте запись для своего документа.
Запишите объявление XML первым, затем внутренний DTD и элемент с текстом.
Получите собственный фрагмент и закройте объект записи.
Как проверить результат
Вызов объявления предшествует записи типа документа и элемента.
УзелDOM — результат записи в объектную модель, а не строка и не уже сохранённый файл.
Ожидаемый результат
Приведён короткий пример синтаксиса с указанными ограничениями. Он не выполнялся здесь в 1С; проверьте реальные результаты в своём учебном контексте.
На что обратить внимание
При неподдерживаемой операции или режиме записи возможно исключение; этот пример не обещает произвольную комбинацию узлов как валидный XML.
Само объявление DTD не выполняет проверку данных по DTD и не загружает внешнюю схему.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.