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