Transactional XFA Data DOM Structure
JavaScriptové události mohou vytvářet, klonovat, přejmenovávat, připojovat, přeřazovat i odpojovat nativní elementy Data DOM, s okamžitými skriptovými čteními i nativní perzistencí napříč transakcí
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));
Podporované operace
xfa.datasets.createNode(className, name = "", namespace = "") vytvoří nepřipojený dataGroup či dataValue; kvalifikované názvy vyžadují neprázdné namespace URI
node.clone(recursive = true) vytvoří nepřipojenou kopii Data DOM s čerstvými identitami; false vyloučí podřízené uzly, zatímco vlastní metadata i hodnota elementu zůstanou
node.name je zapisovatelné u elementů Data DOM a zachovává namespace, sourozenecké pořadí, potomky i držené aliasy; nepojmenovaná konstrukce musí před připojením dostat platný lokální název
node.nodes.length, item(index) a namedItem(name) čtou živé uspořádané elementové potomky; item a namedItem vrátí null, když se žádný potomek netrefí
nodes.append(node) a nodes.insert(node, before) přenesou tentýž objekt do potomků vlastníka; insert(node, null) připojí
nodes.remove(node) odpojí přímého potomka, zatímco jeho objekt i podstrom zůstanou dostupné drženým aliasům i pozdějšímu znovupřipojení
xfa.record vrací aktuální první záznam pod datovým kořenem Data DOM a aktualizuje se po strukturálních editacích
Identita, XML a bindingy
Skriptový objekt může napříč událostmi držet uzel, potomka či vlastnící potomní kolekci; živé aliasy se rozřeší na tytéž nativní objekty po připojení, odpojení, přejmenování i rollbacku
loadXML a saveXML fungují na nově vytvořených i přesunutých elementech, tedy i na potomcích importovaných a pak přesunutých během téže události
Stabilní nativní identity brání tomu, aby importované potomkové aliasy po změně pozic tiše ukázaly na jiného potomka
Zděděné atributové namespace, explicitně prázdné resety default namespace, komentáře, processing instructions, CDATA i Unicode hodnoty přežijí clone, přesun, uložení i reload
Form bindingy se po strukturálních změnách obnoví a hodnoty zapsané přes nově připojené datové uzly se dostanou k odpovídající opakované form instanci, aniž by změnily jinou instanci
Transakce a limity
Neplatné třídy, XML názvy, sourozenecké reference, cykly i cizí uzly selžou, dřív než ta jednotlivá operace změní živý skriptový graf
Nezachycená skriptová chyba, neúspěšná nativní aplikace, zrušení, strop operací či limit uplynulého času obnoví kompletní událost, tedy i připojené a odpojené uzly, binding hodnoty, držené aliasy, lexický stav skriptových objektů i stav journalu; tentýž runtime pak může zkusit znovu
Strukturální uzly i odpojené stromy sdílejí nativní stropy uzlů, hloubky i UTF-8 bajtů; původní transakční deadline skriptu platí pro JavaScript i nativní změny společně
Konzumace PDF
Uložte runtime do XDP a předejte ty bajty HPDFXFAWriteHeadlessPDF, chcete-li ze změněných datových bindingů vytvořit skutečná nativní PDF pole a appearance
TXFAHeadlessPDFOptions.Editable = False vytvoří read-only nativní pole s appearance; to nastavení je nezploští
Aktuální pokrytí
Tahle stránka popisuje editace Data DOM; transakční skriptování form stromu poskytuje podporované živé vytváření, klonování, vkládání a odebírání formulářů i nativní konzumaci PDF
Obecná editace šablon, kompletní zpracování choice subform-set i úplné schema uzlových tříd XFA zůstávají samostatnými schopnostmi
Nezávislé query kolekce uzlů · Nativní API strukturálního grafu · XFA widget runtime