Нативный 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