Colecciones de nodos de consultas XFA

Los eventos JavaScript y FormCalc pueden inspeccionar las apariciones de nodos en alcance y retener listas de consultas independientes a través de eventos del runtime

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";

Propiedades de apariciones

node.all devuelve una lista de consultas ordenada fresca de los nodos en alcance con el mismo nombre literal; un nodo sin nombre usa su nombre de clase en su lugar

node.classAll devuelve una lista de consultas ordenada fresca de los nodos en alcance con la misma clase, incluidos los nodos con otros nombres

node.index y node.classIndex devuelven la aparición de base cero dentro de sus respectivos ámbitos

Los contenedores sin nombre que no son de propiedades son transparentes para la búsqueda de ámbitos con nombre, incluidas las apariciones SOM relativas positivas y negativas; los contenedores de propiedades retienen su propio ámbito

Los nombres literales como #field, * y los nombres Unicode se emparejan como nombres del autor por estas propiedades

Operaciones de listas independientes

MiembroComportamiento
lengthNúmero actual de entradas de la lista
item(index)Nodo referenciado, o null para un índice negativo, no entero o fuera de rango
namedItem(name)Primer nodo referenciado con ese nombre literal, o null cuando ningún nodo empareja
clone()Nuevo almacenamiento de entradas independiente que referencia los mismos nodos
append(node)Añade la misma referencia de nodo viva al final, incluida una referencia duplicada
insert(node, before)Inserta una referencia de nodo viva antes de la primera referencia coincidente; null añade al final
remove(node)Elimina la primera referencia coincidente; una referencia ausente lanza un error

Las listas devueltas por resolveNodes, all y classAll usan almacenamiento de entradas independiente; cambiar ese almacenamiento deja los árboles de formularios y datos en su sitio, mientras que escribir un nodo referenciado cambia el nodo real

Las colecciones node.nodes de formularios y propiedades exponen vistas vivas de hijos; sus métodos clone() devuelven listas de consultas independientes, según se describe en Colecciones vivas de hijos XFA

El node.nodes del Data DOM también suministra un clone() independiente; sus métodos existentes append, insert y remove retienen su comportamiento estructural nativo, según se describe en la estructura transaccional del Data DOM XFA

La iteración de arrays, las lecturas indexadas y la enumeración exponen los nodos referenciados; la asignación directa, la eliminación, la redefinición de propiedades, los cambios de prototype y prevenir extensiones lanzan errores antes de cambiar la lista de consultas

Persistencia e identidades estables

Los script objects pueden retener una lista de consultas o un clone a través de eventos; cada operación usa el resolver de eventos actual y los límites de la transacción

Los handles de instance-managers consultados dirigen las operaciones al grafo de eventos actual cuando se retienen o clonan a través de eventos

Renombrar o reordenar un nodo superviviente mantiene su identidad de lista retenida; eliminar una instancia repetida de formulario hace que las lecturas y escrituras a través de esa referencia eliminada fallen en lugar de seleccionar una instancia de reemplazo

Una lista independiente puede clonar sus referencias almacenadas y eliminar una referencia previamente retenida de un nodo eliminado sin desreferenciar ese nodo

El almacenamiento de listas de consultas es estado de scripts del runtime; guardar XDP persiste los valores y la estructura nativa de nodos, mientras que un runtime nuevo inicia una nueva sesión de script objects

Transacciones y límites

Los nodos inválidos y las referencias de pertenencia fallan antes de que esa operación de lista mute el almacenamiento; un error capturado deja disponibles las operaciones válidas previas del mismo evento

Un error de evento no capturado, un presupuesto de operaciones o un fallo de tiempo transcurrido restaura juntos las mutaciones de listas de consultas, los valores nativos, las instancias repetidas, el estado de script objects retenido y el estado del journal, permitiendo al mismo runtime reintentar

TXFAFormScriptLimits.MaxArrayItems acota la longitud de cada lista retenida y acota por separado los objetos de listas acumulativos y las entradas recién asignadas durante un evento; su ajusto cero usa el valor por defecto de 65.536 del contexto de eventos

Los clones vacíos consumen el presupuesto de objetos, los clones no vacíos consumen además el presupuesto de entradas, y las listas retenidas permanecen acotadas a través de eventos exitosos separados

FormCalc y consumo PDF

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

La selección de apariciones de FormCalc sobre paths literales xfa.form, xfa.datasets y xfa.record usa la resolución SOM nativa; la indexación de listas tras una propiedad de colección indexa esa colección

Guarde los bytes del runtime a XDP y páselos a HPDFXFAWriteHeadlessPDF para generar campos y appearances nativos reales a partir de los valores confirmados, incluidas las ediciones a través de referencias retenidas supervivientes de instancias repetidas

TXFAHeadlessPDFOptions.Editable = False crea campos nativos de solo lectura con appearances, en lugar de aplanarlos

Cobertura

Esta interfaz suministra listas de consultas independientes y metadatos de apariciones; la creación y clonado general de nodos de template/formularios, el scripting adicional de clases de nodos, la validación de esquemas y los medios externos siguen siendo trabajo aparte

Runtime de widgets XFA · Data DOM nativo