Collezioni di nodi di query XFA
Gli eventi JavaScript e FormCalc possono esaminare le occorrenze di nodi in ambito e trattenere liste di query indipendenti attraverso gli eventi 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";
Proprietà di occorrenza
node.all restituisce una lista di query ordinata fresca dei nodi in ambito con lo stesso nome letterale; un nodo senza nome usa il nome della sua classe al suo posto
node.classAll restituisce una lista di query ordinata fresca dei nodi in ambito della stessa classe, inclusi nodi con altri nomi
node.index e node.classIndex restituiscono l'occorrenza a base zero nei rispettivi ambiti
I contenitori senza nome che non sono proprietà sono trasparenti alla ricerca di ambito per nome, incluse le occorrenze SOM relative positive e negative; i contenitori di proprietà conservano il proprio ambito
I nomi letterali come #field, * e i nomi Unicode vengono abbinati come nomi autoriali da queste proprietà
Operazioni sulle liste indipendenti
| Membro | Comportamento |
|---|---|
length | Numero corrente di voci della lista |
item(index) | Nodo referenziato, o null per un indice negativo, non intero o fuori intervallo |
namedItem(name) | Primo nodo referenziato con quel nome letterale, o null quando nessun nodo corrisponde |
clone() | Nuova archiviazione di voci indipendente che referenzia gli stessi nodi |
append(node) | Aggiunge lo stesso riferimento vivo al nodo in coda, incluso un riferimento duplicato |
insert(node, before) | Inserisce un riferimento vivo al nodo prima del primo riferimento corrispondente; null accoda |
remove(node) | Rimuove il primo riferimento corrispondente; un riferimento assente solleva un errore |
Le liste restituite da resolveNodes, all e classAll usano archiviazione di voci indipendente; cambiare quell'archiviazione lascia gli alberi di modulo e dati al proprio posto, mentre scrivere un nodo referenziato cambia il nodo effettivo
Le collezioni node.nodes di moduli e proprietà espongono viste vive dei figli; i loro metodi clone() restituiscono liste di query indipendenti, come descritto in Collezioni di figli vivi XFA
Il node.nodes del Data DOM fornisce anche un clone() indipendente; i suoi esistenti metodi append, insert e remove conservano il loro comportamento strutturale nativo, come descritto nella Struttura transazionale del Data DOM XFA
L'iterazione degli array, le letture indicizzate e l'enumerazione espongono i nodi referenziati; assegnazione diretta, eliminazione, ridefinizione di proprietà, cambi del prototipo e impedimento delle estensioni sollevano errori prima di cambiare la lista di query
Persistenza e identità stabili
Gli oggetti script possono trattenere una lista di query o un clone attraverso gli eventi; ogni operazione usa il risolutore di eventi corrente e i limiti di transazione
Gli handle dei gestori di istanze interrogati instradano le operazioni al grafo di eventi corrente quando vengono trattenuti o clonati tra eventi
Rinominare o riordinare un nodo sopravvissuto conserva la sua identità di lista trattenuta; rimuovere un'istanza di modulo ripetuta fa sì che letture e scritture attraverso quel riferimento rimosso falliscano invece di selezionare un'istanza di sostituzione
Una lista indipendente può clonare le proprie referenze archiviate e rimuovere una referenza trattenuta in precedenza a un nodo rimosso senza dereferenziare quel nodo
L'archiviazione delle liste di query è stato script del runtime; salvare XDP persiste i valori e la struttura nativa dei nodi, mentre un nuovo runtime avvia una nuova sessione di oggetti script
Transazioni e limiti
Nodi non validi e riferimenti di appartenenza falliscono prima che quell'operazione di lista muti l'archiviazione; un errore intercettato lascia disponibili le operazioni valide precedenti nello stesso evento
Un errore di evento non intercettato, un budget di operazione o un fallimento di tempo trascorso ripristina insieme le mutazioni delle liste di query, i valori nativi, le istanze ripetute, lo stato trattenuto degli oggetti script e lo stato del journal, permettendo allo stesso runtime di riprovare
TXFAFormScriptLimits.MaxArrayItems limita la lunghezza di ogni lista trattenuta e separatamente limita gli oggetti di lista cumulativi e le voci appena allocate durante un evento; il suo valore zero usa il default del contesto evento di 65.536
I cloni vuoti consumano il budget di oggetti, i cloni non vuoti consumano anche il budget di voci, e le liste trattenute restano limitate attraverso eventi riusciti separati
Consumo FormCalc e 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 selezione delle occorrenze di FormCalc sui percorsi letterali xfa.form, xfa.datasets e xfa.record usa la risoluzione SOM nativa; l'indicizzazione delle liste dopo una proprietà di collezione indicizza quella collezione
Salvare i byte del runtime in XDP e passarli a HPDFXFAWriteHeadlessPDF per generare campi e appearance native effettivi dai valori confermati, incluse le modifiche attraverso riferimenti trattenuti a istanze ripetute sopravvissute
TXFAHeadlessPDFOptions.Editable = False crea campi nativi di sola lettura con appearance, invece di appiattirli
Copertura
Questa interfaccia fornisce liste di query indipendenti e metadati di occorrenza; la creazione e la clonazione generale di nodi di template/modulo, lo scripting aggiuntivo di classi di nodi, la validazione degli schemi e i mezzi esterni restano lavoro separato