Colecciones de nodos de consulta XFA

Los eventos de JavaScript y FormCalc pueden inspeccionar ocurrencias de nodos en alcance y retener listas de consulta 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 ocurrencia

node.all devuelve una lista de consulta ordenada fresca de 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 consulta ordenada fresca de nodos en alcance con la misma clase, incluidos nodos con otros nombres

node.index y node.classIndex devuelven la ocurrencia base cero dentro de sus respectivos ámbitos

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

Los nombres literales como #field, * y nombres Unicode son emparejados como nombres autoriales 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 coincide
clone()Nuevo almacenamiento de entradas independiente que referencia a los mismos nodos
append(node)Añade la misma referencia de nodo vivo al final, incluida una referencia duplicada
insert(node, before)Inserta una referencia de nodo vivo 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 formulario y datos en su lugar, 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 consulta independientes, como se describe en Colecciones de hijos vivos 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, como se describe en la Estructura transaccional del Data DOM XFA

La iteración de arreglos, 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 prototipo y prevenir extensiones lanzan errores antes de cambiar la lista de consulta

Persistencia e identidades estables

Los objetos de script pueden retener una lista de consulta o clon entre eventos; cada operación usa el resolvedor de eventos actual y los límites de transacción

Los manejadores de instance-manager consultados enrutan operaciones al grafo de eventos actual cuando se retienen o clonan entre eventos

Renombrar o reordenar un nodo superviviente conserva su identidad de lista retenida; eliminar una instancia de formulario repetida 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 a un nodo eliminado sin desreferenciar ese nodo

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

Transacciones y límites

Los nodos inválidos y las referencias de membresía fallan antes de que esa operación de lista mute el almacenamiento; un error capturado deja disponibles las operaciones válidas anteriores en el mismo evento

Un error de evento no capturado, presupuesto de operación o falla de tiempo transcurrido restaura las mutaciones de listas de consulta, los valores nativos, las instancias repetidas, el estado retenido de objetos de script y el estado del journal juntos, permitiendo que el mismo runtime reintente

TXFAFormScriptLimits.MaxArrayItems acota cada longitud de lista retenida y por separado acota los objetos de lista acumulativos y las entradas recién asignadas durante un evento; su valor cero usa el default de contexto de evento de 65,536

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

Consumo de FormCalc y 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 ocurrencias de FormCalc en rutas literales xfa.form, xfa.datasets y xfa.record usa resolución SOM nativa; la indexación de listas después de una propiedad de colección indexa esa colección

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

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

Cobertura

Esta interfaz suministra listas de consulta independientes y metadatos de ocurrencia; la creación y clonación general de nodos de plantilla/formulario, scripting adicional de clases de nodos, validación de esquemas y medios externos siguen siendo trabajo separado

Runtime de widgets XFA · Data DOM nativo