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