Live XFA SOM-sti-opløsning

Generel afvikling med EnableJavaScript leverer samme live formular-resolver til node-niveau resolveNode/resolveNodes, xfa.resolveNode/xfa.resolveNodes og FormCalc-accessors

Opløsning følger de aktuelle gentagne occurrences straks efter instance-indsættelse, -fjernelse eller -flytning; succesfulde runtime-transaktioner persisterer valgte feltskrivninger til deres native datamål og til gemt XDP

Stier og occurrences

StiValg
row[1].cellDen anden række og dens valgte celle
row[*].cellDen valgte celle i hver række
$form.main.row.cellFørste række og første celle gennem en absolut sti
row[-1].cellRækken forud for den udledte occurrence
row[+1].cellRækken efter den udledte occurrence
main..cell[*]Matchende sibling-celler i den første efterkommer-gren
main.*Alle direkte børn i dokumentrækkefølge
main.#field[name='target']Felter valgt af et navngivnings-property-prædikat
main.#subform[*].#fieldDet valgte felt under hver subform med matchende klassenavne
main.part\.nameEn JavaScript resolver-sti indeholdende et escaped punktum i et nodenavn

Et udeladt indeks vælger én occurrence; en absolut sti bruger occurrence nul, mens en scope-bundet sti låner det tilsvarende forfader- eller container-indeks, når strukturerne har gentagne søskende

Indeks-inference følger tilsvarende hierarkiniveauer, selv når kilde- og destinationsnoder har forskellige navne; klasse-selektorer låner det tilsvarende klasse occurrence-indeks

Et enkelt forekommende mål vælges uden at kræve kalderens occurrence-indeks; en manglende udledt occurrence returnerer en tom liste eller null i stedet for stille at vælge et andet scope

Relative indeks er offsets fra den udsmykkede udledte occurrence og er ugyldige i absolutte stier; FormCalc indeksudtryk kan beregne en occurrence ved runtime

Unavngivne containers er transparente for navngivet børnopslag; parent-kvalifikation og understøttede properties som rawValue, name, className, index, presence og access er tilgængelige, og script-object leksikalske eksporter kan opløses og tildeles gennem FormCalc-stier

Betingelser

const rows = xfa.resolveNodes("main.row[*].(Number(this.cell.rawValue)>15)");
const selected = xfa.resolveNodes("main.row[*].[cell ge 20].cell");

target = Sum($.resolveNodes("row.[cell ge 20].cell"))
row[1].cell = 25
var p = Ref(row[1].cell)
p = 30

JavaScript-prædikater bruger .(udtryk) og afvikles med kandidaten som this; FormCalc-prædikater bruger .[udtryk] og opløser relative felter mod kandidaten

Et prædikat vælger matchende søskende, selv når [*] er udeladt; JavaScript-prædikater opløser også bare feltnavne i kandidat-scope, og prædikatstier i FormCalc-kilde skal sendes som quotede resolver-strenge

Efterkommer-opslag søger i dokumentrækkefølge efter en gren, der tilfredsstiller de resterende stikomponenter; en gren uden matchende suffiks skjuler ikke et senere komplet match

Et occurrence-indeks er lokalt for sin matchende sibling-gruppe; et indeks uden for intervallet afslutter den efterkommer-søgning, så main..cell[1] ikke vælger en celle i en anden række, når første række kun har én celle

Et foregående wildcard evaluerer efterkommer-oplookup uafhængigt for hver valgt kontekst, og et wildcard direkte efter en absolut rod vælger rodens børn

JavaScript-prædikater modtager det aktuelle events xfa og event-objekter; kandidat-relative opslag, prædikat-exceptions og native skrivninger deler den omsluttende transaktion

Nestet Eval nedarver prædikat-kandidaten, bruger isolerede beregningsvariabler og -funktioner og deler native kompileringsresponser og transaktionel replay med det omsluttende event

Exists(missing) og en accessor til en ikke-eksisterende indekseret occurrence returnerer 0 gennem Exists; almindelig brug af et uopløst FormCalc-objekt udløser en fejl

Budgetter og migration

Stier tillader højst 128 komponenter og 65.536 UTF-16 code units; indeks skal være sikre heltal, og traversal, prædikater, dynamisk kompilering og instance-operationer deler event-afviklingsbudgetterne

Parserfejl, prædikat-exceptions og overskredne budgetter afbryder eventet og gendanner native feltværdier, instance-rækkefølge og script-tilstand gennem TXFAWidgetRuntime

Tidligere generel resolveNodes udvidede udeladte indeks på tværs af alle gentagne forfædre; brug main.row[*].cell[*], når hver række og hver celle er tænkt, og erstat main.row.cell[*]

Dækning

Resolveren arbejder på live formularobjekter leveret af event-bindingerne, inklusive felter, subforms, draws, eksklusionsgrupper, areas og script-objekter, den native Data DOM udstillet gennem $data og $record samt deklarerede skabelon property-noder med effektive attributter

JavaScript navne-escaping understøttes af resolver-strenge; FormCalc kilde-identifikatorer beholder compilerens identifikatorgrammatik

Relaterede API'er

HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Dynamisk Eval, FormCalc-referencer og Interactive XFA Runtime