Native XFA Data DOM
Obecné provedení s EnableJavaScript vystavuje nativní strom datasetů dokumentu přes resolver cesty xfa.datasets, $data a $record i accessorů FormCalc
Datové uzly používají stabilní nativní identity a tentýž živý SOM resolver jako form uzly; podporují názvy, selektory tříd, výběr výskytů, traversal rodičů, predikáty i rozřešení na úrovni uzlu
Kořeny a třídy
| Objekt či cesta | Význam |
|---|---|
xfa.datasets | Uzel packetu datasets, či null, když chybí |
xfa.datasets.data a $data | Datový kořen pod packetem datasets |
$record | První kořen záznamu pod data v aktuálním modelu zpracování bez záznamů |
dataGroup | Datový element obsahující potomní elementy, tedy i explicitně deklarovanou prázdnou skupinu |
dataValue | Datový element nesoucí hodnotu |
formNode.dataNode | Uzel navázaný na form pole či subform, či null, když žádný datový binding chybí |
Atribut dataNode v datovém namespace XFA umí explicitně vybrat třídu skupiny či hodnoty; namespace prefixy se rozřešují, místo aby se vyžadoval konkrétní pravopis prefixu
Čtení a zápisy
DataValue vystavuje value jako zapisovatelný alias rawValue; oba accessory aktualizují tutéž navázanou datovou buňku i nativní datový uzel
const value = xfa.resolveNode("$record.row[1].cell");
value.rawValue = "25";
target.rawValue = xfa.resolveNode("main.row[1].cell").rawValue;
$record.row[1].cell = 25
target = row[1].cell
var p = Ref($record.row[1].cell)
p = 30
Zápisy do navázaných polí hned aktualizují odpovídající datovou hodnotu a zápisy datové hodnoty hned aktualizují čtení navázaných polí v rámci téhož skriptu; nativní publikace zapisuje skutečný datový uzel
Materializované skalární value vlastnosti si po zápisech polí či dat synchronizují nativní form obsah, tedy i aliasy sdílených dat i publikaci dat nových opakovaných instancí
Datové elementy bez navázaného form pole zůstávají dostupné a zapisovatelné; úspěšné transakce zachovají jejich změny v uloženém XDP
Form pole s bind match=none si uchovají šablonové defaulty a ukládají editace ve Form DOM hodnotě vlastního výskytu; nevystavují žádný syntetický datový uzel ani nemění sousední výskyty
Datové hodnoty sdílejí rozpočty Unicode, velikosti hodnot i provedení s hostitelem událostí formuláře; skupinové uzly dodávají strukturální přístup, nikoli zapisovatelnou surovou hodnotu
Opakované instance a držené reference
Vložení, přesun i odebrání form instance aktualizuje odpovídající živý Data DOM během téhož skriptu; nové řádky implicitního bindingu vystaví šablonové defaulty přes své datové uzly, dřív než publikace
Prototyp s nulovým počtem výskytů může vytvořit svou první datovou skupinu i hodnoty; nativní publikace dodá skutečné identity nových uzlů, takže skriptové objekty si mohou držet datové handly napříč dalšími událostmi
Držené datové reference sledují pohyb podle identity; použití reference po odebrání její skupiny událost zhatí a runtime rollback obnoví nativní pořadí výskytů, hodnoty i počítadla skriptových objektů
Instance manažeři držení skriptovými objekty rozřeší aktuální scope, tedy i manažery s počátečním počtem výskytů nula
Nativní XML obsah
Uzly datasets, dataGroup a dataValue vystavují loadXML a saveXML s nativním parsováním, aktualizacemi grafu ve stejném skriptu i transakční publikací
XML importy zachovávají komentáře, processing instructions, CDATA, expandované namespace i Unicode názvy, zatímco netextové uzly drží mimo běžný výběr potomků Data DOM i viditelné hodnoty polí
Importované hodnoty hned synchronizují čtení navázaných polí, tedy i polí, jejichž stávající dataRef vybere jinou příponu, či jejichž dřív nerozřešený cíl je teď dostupný
Transakce a nížeúrovňoví volající
TXFAWidgetRuntime postaví bindingy datové domény, propojí form pole s nativními datovými hodnotami, aplikuje datové zápisy i nové identity bindingů a obnoví přesný stav XDP po selhání engine či nativní publikace
Nížeúrovňoví volající událostí použijí TXFAEventBindingDomain a pole DataIdentity a DataBindingEnabled z TXFAEventBinding k dodání ekvivalentních objektových vztahů
Akce xeakBindDataIdentity naváže nový virtuální datový handle na jeho publikovanou nativní datovou identitu; nížeúrovňové aplikace musí vrácené datové mutace i identity bindingy aplikovat transakčně
Zbývající pokrytí objektového modelu
Navigace v okně záznamů, samostatné vytváření a přesouvání datových uzlů, libovolné datové atributy i kompletní editace šablonových property uzlů zůstávají samostatnými integračními cíli
Zrcadlení instancí sleduje stávající chování instance manageru implicitního datového bindingu; dodatečné mutace instancí explicitního bindingu vyžadují další binding integraci
Související API
Živé SOM cesty, FormCalc reference, HPDFXFAExecuteJavaScriptEvent a Interactive XFA Runtime