Estructura transaccional del Data DOM de XFA

Los eventos JavaScript pueden crear, clonar, renombrar, adjuntar, reordenar y separar elementos nativos del Data DOM, con lecturas inmediatas de scripts y persistencia nativa de toda la transacción

const record = xfa.record;
const value = xfa.datasets.createNode("dataValue");
value.name = "amount";
value.value = "42";
record.nodes.append(value);
const retained = value.clone(false);
record.nodes.remove(value);
record.nodes.insert(value, record.nodes.item(0));

Operaciones soportadas

xfa.datasets.createNode(className, name = "", namespace = "") crea un dataGroup o dataValue sin adjuntar; los nombres calificados exigen un URI de namespace no vacío

node.clone(recursive = true) crea una copia sin adjuntar del Data DOM con identidades frescas; false excluye los nodos hijos reteniendo los metadatos y el valor del propio elemento

node.name es escribible para los elementos del Data DOM y preserva namespace, orden de hermanos, descendientes y aliases retenidos; una construcción sin nombre debe recibir un nombre local válido antes de adjuntarse

node.nodes.length, item(index) y namedItem(name) leen los hijos elementos ordenados vivos; item y namedItem devuelven null cuando ningún hijo coincide

nodes.append(node) y nodes.insert(node, before) transfieren el mismo objeto a los hijos del propietario; insert(node, null) añade al final

nodes.remove(node) separa un hijo directo manteniendo su objeto y subárbol disponibles para los aliases retenidos y una readjunción posterior

xfa.record devuelve el primer record actual bajo la raíz de datos del Data DOM y se actualiza tras las ediciones estructurales

Identidad, XML y bindings

Un objeto script puede retener un nodo, un descendiente o una colección hija propietaria entre eventos; los aliases vivos resuelven los mismos objetos nativos después de adjuntar, separar, renombrar y hacer rollback

loadXML y saveXML funcionan sobre elementos recién creados y movidos, incluyendo descendientes importados y luego movidos durante el mismo evento

Las identidades nativas estables evitan que los aliases de descendientes importados resuelvan silenciosamente un hijo distinto tras cambios de posición

Los namespaces de atributos heredados, los resets explícitos de namespace por defecto vacío, los comentarios, las instrucciones de procesamiento, CDATA y los valores Unicode sobreviven al clone, move, save y reload

Los bindings de formularios se refrescan tras los cambios estructurales, y los valores escritos a través de nodos de datos recién adjuntos llegan a la instancia repetida correspondiente del formulario sin cambiar otra instancia

Transacciones y límites

Las clases inválidas, nombres XML, referencias de hermanos, ciclos y nodos ajenos fallan antes de que esa operación individual cambie el grafo vivo de scripts

Un error de script no capturado, una falla de aplicación nativa, una cancelación, un cap de operaciones o un límite de tiempo transcurrido restauran el evento completo, incluyendo nodos adjuntos y separados, valores de binding, aliases retenidos, estado léxico de objetos script y estado del journal; el mismo runtime puede luego reintentar

Los nodos estructurales y los árboles separados comparten caps nativos de nodo, profundidad y bytes UTF-8; el deadline original de la transacción de script aplica a los cambios de JavaScript y nativos en conjunto

Consumo del PDF

Guarde el runtime en XDP y pase esos bytes a HPDFXFAWriteHeadlessPDF para crear campos y apariencias PDF nativos reales a partir de los bindings de datos modificados

TXFAHeadlessPDFOptions.Editable = False crea campos nativos de solo lectura con apariencias; esa configuración no los aplana

Cobertura actual

Esta interfaz estructural cubre el Data DOM; la creación y el clonado generales de nodos de template/formulario, la mutación independiente de query-lists y el scripting completo de clases de nodos siguen siendo trabajo de implementación separado

API nativa del grafo estructural · Runtime de widgets XFA

Colecciones de nodos de consulta independientes · API nativa de grafo estructural · Runtime de widgets XFA