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