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
| Sti | Valg |
|---|---|
row[1].cell | Den anden række og dens valgte celle |
row[*].cell | Den valgte celle i hver række |
$form.main.row.cell | Første række og første celle gennem en absolut sti |
row[-1].cell | Rækken forud for den udledte occurrence |
row[+1].cell | Ræ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[*].#field | Det valgte felt under hver subform med matchende klassenavne |
main.part\.name | En 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