Функции для работы с XML

Ниже даны формальные описания функций и примеры запросов. (В примерах, ввиду слишком длинных для книги строк, пришлось применить перенос строки, которого в реальном коде быть не должно.)

IsNodeExists(Path:String):Boolean

Проверка наличия узла. Возвращает True или False. Например, следующий запрос отвечает на вопрос, является ли первый по счету собственник участка физическим лицом:

IsNodeExists('InfoPart/CadastralZoneInfo/CadastralQuarters/
CadastralQuarterInfo/Parcels/ParcelInfo[1]/Proprietors/
ProprietorInfo[1]/Authentication/NaturalPerson')
NodesCount(Path,Tag:String):Integer

Возвращает количество узлов Tag в корне Path. Вот пример запроса, определяющего количество смежников для участка:

NodesCount('InfoPart/CadastralZoneInfo/CadastralQuarters/
CadastralQuarterInfo/Parcels/ParcelInfo[1]/AdjacentUnits',
'AdjacentUnitInfo')
XPath(Path:String):String

Возвращает текстовое значение из узла Path. Запрос, возвращающий целевое назначение участка, выглядит так:

XPath('InfoPart/CadastralZoneInfo/CadastralQuarters/
CadastralQuarterInfo/Parcels/ParcelInfo[1]/CategoryPurposeInfo/Use') 

Описанные выше функции определены на уровне самого модуля Reports. Кроме этих функций, в коде шаблонов отчетов имеются десятки вспомогательных функций, написанных на языке PascalScript. Их также можно использовать, скопировав в свой шаблон. Изучите примеры кода и найдите свой путь для реализации собственных шаблонов.