Руководство разработчика

Устаревший интерфейс модуля XML

Устаревший интерфейс оставлен в целях совместимости. В настоящее время пользоваться им не рекомендуется из-за чрезмерной сложности. Намного более удобным средством работы с XML является объектный тип XML_КУРСОР.

Устаревший интерфейс с xml-документом в терминах объектной модели документа. В соответствии с этой моделью документ представляется в виде дерева. Вершина дерева представлена типом ЯРД_ДОКУМЕНТ, который определяет во внутреннем языке сам объект xml-документа. Любые определения, участвующие в построении дерева документа – элементы, комментарии, инструкции – будем называть узлами. Они представлены в языке типом ЯРД_УЗЕЛ. Этот тип является базовым и может определять любой узел дерева. Тип ЯРД_УЗЕЛ предоставляет основные возможности работы с узлами, и целый ряд методов языка работает именно с этим базовым типом. Но спецификация xml-документа подразумевает различные виды определений. В соответствии с этим от типа ЯРД_УЗЕЛ наследуются два типа: ЯРД_Т_УЗЕЛ и ЯРД_ЭЛЕМЕНТ. Все узлы дерева можно разделить на ветвящиеся, то есть подразумевающие включение в них дочерних узлов, и неветвящиеся. Ветвящиеся узлы – это элементы. Соответственно, они представлены в языке типом ЯРД_ЭЛЕМЕНТ. Неветвящиеся узлы – это символьные данные, комментарий, инструкция и раздел CDATA. Все эти виды узлов представлены в языке типом ЯРД_Т_УЗЕЛ. Конкретный вид узла при создании определяется соответствующей константой.

Для наглядности можно представить связь между типами в языке и видами узлов в виде схемы:

Помимо типов, участвующих в построении иерархического дерева, в модуле объявлен тип ЯРД_АТРИБУТ, который определяет в языке атрибут элемента, а также типы ЯРД_СПИСОК_УЗЛОВ и ЯРД_СПИСОК_АТРИБУТОВ, определяющие соответственно контейнер всех узлов документа и контейнер всех атрибутов элемента.

Все типы, объявленные в модуле, являются физическими и ссылаются на какую-либо структуру xml-документа. Поэтому все операции с объектом в языке отражаются на структуре объекта в документе. Кроме того, оперируя объектом в языке, необходимо помнить, что он ссылается на один единственный экземпляр физического объекта, и этот объект не обязан принадлежать одному документу. Если, например, получить объект из одного документа, а затем добавить его в другой документ – произойдет не копирование, а перемещение этого объекта, то есть из первого документа этот объект исчезнет. Для создания копий объектов предусмотрены специальные методы. При удалении объекта он убирается из документа, но остается доступным, то есть удаленный из одного документа объект можно впоследствии добавить в другой документ.

Запрещено вызывать функции и методы типов непосредственно в формульном разделе (в блоке ВЫЧИСЛИТЬ… КОНЕЦ). Необходимо создать пользовательскую функцию, в которой определяются необходимые действия, а затем вызвать эту функцию в формульном разделе.

Функции

Объектные типы