原生 XFA Data DOM

启用 EnableJavaScript 的一般执行通过 xfa.datasets、$data 和 $record resolver 路径以及 FormCalc 访问器暴露文档的原生数据集树

数据节点使用稳定的原生标识,并与表单节点共用同一实时 SOM 解析器;它们支持名称、类选择器、occurrence 选择、父级遍历、谓词和节点级解析

根与类

对象或路径含义
xfa.datasetsdatasets 包节点,缺失时为 null
xfa.datasets.data 与 $datadatasets 包之下的数据根
$record当前非记录处理模型下 data 之下的第一个记录根
dataGroup包含子元素的数据元素,包括显式声明的空组
dataValue携带值的数据元素
formNode.dataNode绑定到表单字段或 subform 的节点,不存在数据绑定时为 null

XFA 数据命名空间中的 dataNode 属性可以显式指定组或值的类;命名空间前缀会被解析,而不要求特定拼写

读与写

dataValue 把 value 暴露为 rawValue 的可写别名;两个访问器更新同一个绑定的数据单元格和原生数据节点

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 的表单字段保留模板默认值,把编辑存储在自己 occurrence 的 Form DOM 值中;它们不暴露合成的数据节点,也不会修改同级的 occurrence

数据值与表单事件宿主共享 Unicode、值大小和执行预算;组节点提供结构访问而非可写的原始值

重复实例与保留引用

表单实例的插入、移动和删除会在同一脚本内更新对应的实时 Data DOM;新的隐式绑定行在发布之前通过其数据节点暴露模板默认值

零 occurrence 的原型可以创建它的第一个数据组和值;原生发布为新节点提供真实标识,使脚本对象能在后续事件中保留数据句柄

保留的数据引用按标识跟随移动;在其组被删除后继续使用引用会使事件失败,运行时回滚会恢复原生 occurrence 顺序、值和脚本对象计数器

脚本对象保留的实例管理器解析当前作用域,包括初始 occurrence 数为零的管理器

原生 XML 内容

datasets、dataGroup 和 dataValue 节点提供带原生解析、同脚本图更新和事务化发布的 loadXML 与 saveXML

XML 导入保留注释、处理指令、CDATA、展开的命名空间和 Unicode 名称,同时把非文本节点排除在普通 Data DOM 子节点选择和可见字段值之外

导入的值立即同步绑定字段的读取,包括 dataRef 指向不同后缀的字段,以及此前未解析目标现在变为可用的字段

事务与更低层调用方

TXFAWidgetRuntime 构建数据域绑定,把表单字段链接到原生数据值,应用数据写入和新标识绑定,并在引擎或原生发布失败后恢复精确的 XDP 状态

更低层的事件调用方使用 TXFAEventBindingDomain 以及 TXFAEventBinding 的 DataIdentity 和 DataBindingEnabled 字段来提供等价的对象关系

xeakBindDataIdentity 动作把新的虚拟数据句柄绑定到其已发布的原生数据标识;更低层应用必须以事务方式应用返回的数据变更和标识绑定

剩余对象模型覆盖

记录窗口导航、独立数据节点创建与重新挂载父级、任意数据属性以及完整的模板属性节点编辑仍是独立的集成目标

实例镜像沿用既有的隐式数据绑定实例管理器行为;更多显式绑定的实例变更需要进一步的绑定集成

相关 API

Live SOM Paths、FormCalc References、HPDFXFAExecuteJavaScriptEvent 与 Interactive XFA Runtime