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
| Miembro | Comportamiento |
|---|---|
length | Nú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