Нативный Data DOM XFA

Общее выполнение с EnableJavaScript открывает нативное дерево datasets документа через resolver-пути xfa.datasets, $data и $record и accessor'ы FormCalc

Узлы данных используют стабильные нативные идентичности и тот же живой SOM-resolver, что и узлы формы; они поддерживают имена, селекторы классов, выбор вхождений, обход родителей, предикаты и разрешение на уровне узлов

Корни и классы

Объект или путьЗначение
xfa.datasetsУзел packet datasets или null при отсутствии
xfa.datasets.data и $dataКорень data под packet datasets
$recordПервый корень record под data в текущей модели обработки без record
dataGroupЭлемент данных с дочерними элементами, включая явно объявленную пустую группу
dataValueЭлемент данных, несущий значение
formNode.dataNodeУзел, привязанный к полю формы или subform, или null, когда привязки данных нет

Атрибут dataNode в пространстве имён данных XFA может явно выбирать класс группы или значения; префиксы пространств имён разрешаются, а не требуют конкретного написания префикса

Чтение и запись

dataValue открывает value как записываемый алиас rawValue; оба accessor'а обновляют одну и ту же связанную ячейку данных и нативный узел данных

const value = xfa.resolveNode("$record.row[1].cell");
value.rawValue = "25";
target.rawValue = xfa.resolveNode("main.row[1].cell").rawValue;

$record.row[1].cell = 25
target = row[1].cell
var p = Ref($record.row[1].cell)
p = 30

Записи в связанное поле немедленно обновляют соответствующее значение данных, а записи в значение данных немедленно обновляют чтение связанного поля внутри того же скрипта; нативная публикация пишет фактический узел данных

Материализованные свойства скалярных значений синхронизируют нативное содержимое формы после записей в поля или данные, включая алиасы общих данных и публикацию данных новых повторяющихся экземпляров

Элементы данных без связанного поля формы остаются доступными и записываемыми; успешные транзакции сохраняют их изменения в сохраняемом XDP

Поля формы с bind match=none удерживают дефолты шаблона и хранят правки в значении Form DOM своего собственного вхождения; они не открывают синтетический узел данных и не изменяют соседние вхождения

Значения данных делят бюджеты Unicode, размера значения и выполнения с хостом событий формы; узлы групп предоставляют структурный доступ, а не записываемое raw-значение

Повторяющиеся экземпляры и удерживаемые ссылки

Вставка, перемещение и удаление экземпляров формы обновляют соответствующий живой Data DOM внутри того же скрипта; новые строки с неявной привязкой открывают дефолты шаблона через свои узлы данных до публикации

Прототип с нулевым числом вхождений может создать свою первую группу данных и значения; нативная публикация выдаёт реальные идентичности новым узлам, позволяя script objects удерживать data-хэндлы между событиями

Удерживаемые ссылки на данные следуют за перемещением по идентичности; использование ссылки после удаления её группы проваливает событие, а rollback рантайма восстанавливает нативный порядок вхождений, значения и счётчики script objects

Instance managers, удерживаемые script objects, разрешают текущую область видимости, включая менеджеры, у которых изначально было ноль вхождений

Нативное XML-содержимое

Узлы datasets, dataGroup и dataValue открывают loadXML и saveXML с нативным разбором, обновлением графа внутри скрипта и транзакционной публикацией

Импорт XML сохраняет комментарии, инструкции обработки, CDATA, расширенные пространства имён и имена Unicode, удерживая нетекстовые узлы вне обычного выбора детей Data DOM и видимых значений полей

Импортированные значения немедленно синхронизируют чтение связанных полей, включая поля, чей существующий dataRef выбирает другой суффикс или чья ранее неразрешённая цель теперь доступна

Транзакции и низкоуровневые вызывающие

TXFAWidgetRuntime строит привязки домена данных, связывает поля формы с нативными значениями данных, применяет записи данных и новые привязки идентичностей, а после сбоя движка или нативной публикации восстанавливает точное состояние XDP

Низкоуровневые вызывающие событий используют TXFAEventBindingDomain и поля DataIdentity и DataBindingEnabled в TXFAEventBinding, чтобы предоставить эквивалентные связи объектов

Действие xeakBindDataIdentity привязывает новый виртуальный data-хэндл к его опубликованной нативной идентичности данных; низкоуровневые приложения должны применять возвращённые мутации данных и привязки идентичностей транзакционно

Оставшееся покрытие объектной модели

Навигация по окну записей, автономное создание узлов данных и перепривязка к другому родителю, произвольные атрибуты данных и полное редактирование узлов свойств шаблона остаются отдельными целями интеграции

Зеркалирование экземпляров следует существующему поведению instance manager с неявной привязкой данных; дополнительные мутации экземпляров с явной привязкой требуют дальнейшей интеграции привязок

Связанные API

Живые SOM-пути, Ссылки FormCalc, HPDFXFAExecuteJavaScriptEvent и Интерактивный XFA Runtime