XFA 查询节点集合

JavaScript 与 FormCalc 事件可以检视作用域内的节点 occurrence,并跨运行时事件保留独立的查询列表

const siblings = xfa.record.amount.all;
const retained = siblings.clone();
retained.remove(retained.item(0));
retained.insert(siblings.item(0), null);
retained.item(0).rawValue = "42";

Occurrence 属性

node.all 返回新的有序查询列表,包含作用域内同字面名称的节点;未命名节点改用其类名

node.classAll 返回新的有序查询列表,包含作用域内同类的节点,其他名称的节点也包括

node.index 与 node.classIndex 返回各自作用域内从零开始的 occurrence 序号

未命名的非属性容器对具名作用域查找是透明的,包括正负相对 SOM occurrence;属性容器保留自己的作用域

#field、* 和 Unicode 名称这类字面名称按编写名称被这些属性匹配

独立列表操作

成员行为
length当前列表条目数
item(index)被引用节点,负数、非整数或越界索引返回 null
namedItem(name)第一个该字面名称的被引用节点,无匹配时为 null
clone()新的独立条目存储,引用同样的节点
append(node)在末尾添加同一存活节点引用,重复引用也可以
insert(node, before)在第一个匹配引用之前插入存活节点引用;null 等价于追加
remove(node)移除第一个匹配引用;引用不存在时抛出错误

resolveNodes、all 和 classAll 返回的列表使用独立条目存储;改动该存储不动表单与数据树,而写被引用的节点改的是真实节点

表单与属性的 node.nodes 集合暴露存活子视图;其 clone() 方法返回独立查询列表,见XFA 存活子集合

Data DOM 的 node.nodes 也提供独立的 clone();其既有的 append、insert、remove 方法保留原生结构行为,见事务化 XFA Data DOM 结构

数组迭代、索引读取和枚举暴露被引用节点;直接赋值、删除、属性重定义、原型变更和阻止扩展都会在改动查询列表之前抛出错误

持久化与稳定身份

脚本对象可以跨事件保留查询列表或克隆;每个操作使用当前事件解析器和事务限制

查询到的 instance manager 句柄在跨事件保留或克隆时把操作路由到当前事件图

重命名或重排存活节点会保留其留存列表身份;移除重复表单实例后,经该被移除引用的读写会失败,而不是改选替换实例

独立列表可以克隆其存储的引用,并移除先前留存的已移除节点引用,而无需解引用该节点

查询列表存储属于运行时脚本状态;保存 XDP 持久化原生节点值与结构,新的运行时开启新的脚本对象会话

事务与限制

非法节点与成员引用在该列表操作改动存储之前失败;被捕获的错误让同一事件中先前合法的操作保持可用

未捕获的事件错误、操作预算或超时失败会一并恢复查询列表变更、原生值、重复实例、留存脚本对象状态和 journal 状态,同一运行时可以重试

TXFAFormScriptLimits.MaxArrayItems 约束每个留存列表长度,并单独约束一次事件内累计的列表对象与新建条目;设为零时使用事件上下文默认值 65,536

空克隆消耗对象预算,非空克隆还消耗条目预算,留存列表在多次独立成功事件间保持有界

FormCalc 与 PDF 消费

output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
  xfa.datasets.data.main.amount.all.length, ":",
  xfa.datasets.data.main.amount[1].classIndex)

FormCalc 对字面 xfa.form、xfa.datasets 和 xfa.record 路径的 occurrence 选择使用原生 SOM 解析;集合属性之后的列表索引对该集合索引

把运行时字节保存为 XDP 并交给 HPDFXFAWriteHeadlessPDF,即可从提交的值生成真实的原生字段与外观,包括经留存的存活重复实例引用做出的编辑

TXFAHeadlessPDFOptions.Editable = False 创建带外观的只读原生字段,而不是压平它们

覆盖范围

本接口提供独立查询列表和 occurrence 元数据;通用 template/表单节点创建与克隆、更多节点类脚本、schema 校验和外部媒体仍是独立工作

XFA widget 运行时 · 原生 Data DOM