Struttura transazionale del Data DOM XFA
Gli eventi JavaScript possono creare, clonare, rinominare, agganciare, riordinare e staccare elementi nativi del Data DOM, con letture immediate degli script e persistenza nativa su tutta la transazione
const record = xfa.record;
const value = xfa.datasets.createNode("dataValue");
value.name = "amount";
value.value = "42";
record.nodes.append(value);
const retained = value.clone(false);
record.nodes.remove(value);
record.nodes.insert(value, record.nodes.item(0));
Operazioni supportate
xfa.datasets.createNode(className, name = "", namespace = "") crea un dataGroup o dataValue non agganciato; i nomi qualificati richiedono un URI di namespace non vuoto
node.clone(recursive = true) crea una copia non agganciata del Data DOM con identità fresche; false esclude i nodi figli conservando i metadata e il valore dell'elemento stesso
node.name è scrivibile per gli elementi del Data DOM e preserva namespace, ordine dei fratelli, discendenti e alias trattenuti; una costruzione senza nome deve ricevere un nome locale valido prima dell'aggancio
node.nodes.length, item(index) e namedItem(name) leggono i figli elementi ordinati vivi; item e namedItem restituiscono null quando nessun figlio corrisponde
nodes.append(node) e nodes.insert(node, before) trasferiscono lo stesso oggetto nei figli del proprietario; insert(node, null) accoda
nodes.remove(node) stacca un figlio diretto mantenendo il suo oggetto e sottoalbero disponibili agli alias trattenuti e a un futuro re-aggancio
xfa.record restituisce il primo record corrente sotto la radice dati del Data DOM e si aggiorna dopo le modifiche strutturali
Identità, XML e binding
Uno script object può trattenere un nodo, un discendente o una collezione figlia di proprietà attraverso gli eventi; gli alias vivi risolvono gli stessi oggetti nativi dopo aggancio, distacco, rinomina e rollback
loadXML e saveXML funzionano su elementi appena creati e spostati, compresi i discendenti importati e poi spostati nello stesso evento
Le identità native stabili impediscono agli alias dei discendenti importati di risolvere silenziosamente un figlio diverso dopo cambiamenti posizionali
Namespace degli attributi ereditati, reset espliciti vuoti del namespace predefinito, commenti, processing instructions, CDATA e valori Unicode sopravvivono a clonazione, spostamento, salvataggio e ricaricamento
I binding del form si aggiornano dopo le modifiche strutturali, e i valori scritti attraverso nodi dati appena agganciati raggiungono la corrispondente istanza ripetuta del form senza modificare un'altra istanza
Transazioni e limiti
Classi non valide, nomi XML, riferimenti a fratelli, cicli e nodi estranei falliscono prima che quella singola operazione modifichi il grafo script vivo
Un errore script non catturato, un fallimento dell'applicazione nativa, una cancellazione, un tetto di operazioni o un limite di tempo trascorso ripristina l'evento completo, inclusi nodi agganciati e staccati, valori dei binding, alias trattenuti, stato lessicale degli script-object e stato del giornale; lo stesso runtime può quindi riprovare
Nodi strutturali e alberi staccati condividono i tetti nativi di nodo, profondità e byte UTF-8; il deadline della transazione script originale si applica insieme a JavaScript e alle modifiche native
Consumo PDF
Salvate il runtime in XDP e passate quei byte a HPDFXFAWriteHeadlessPDF per creare veri campi e appearance PDF nativi dai binding di dati modificati
TXFAHeadlessPDFOptions.Editable = False crea campi nativi in sola lettura con appearance; quell'impostazione non li appiattisce
Copertura corrente
Questa interfaccia strutturale copre il Data DOM; la creazione e clonazione generale di nodi template/form, la mutazione indipendente di query-list e lo scripting completo delle classi di nodi restano lavoro di implementazione separato
API nativa del grafo strutturale · Runtime dei widget XFA
Collezioni di nodi di query indipendenti · API nativa del grafo strutturale · Runtime dei widget XFA