Live XFA SOM Path Resolution

Algemene executie met EnableJavaScript levert dezelfde live formulier-resolver aan node-niveau resolveNode/resolveNodes, xfa.resolveNode/xfa.resolveNodes en FormCalc-accessors

Resolutie volgt de huidige herhaalde occurrences direct na instance-insertie, -verwijdering of -verplaatsing; geslaagde runtime-transacties persisteren gekozen veld-writes naar diens native datatargets en naar opgeslagen XDP

Paden en occurrences

PadSelectie
row[1].cellDe tweede rij en diens gekozen cel
row[*].cellDe gekozen cel in elke rij
$form.main.row.cellDe eerste rij en eerste cel via een absoluut pad
row[-1].cellDe rij vóór de inferred occurrence
row[+1].cellDe rij na de inferred occurrence
main..cell[*]Matchende sibling-cellen in de eerst descendant-tak
main.*Alle directe kinderen in documentvolgorde
main.#field[name='target']Velden gekozen door een naamgevings-property-predicate
main.#subform[*].#fieldHet gekozen veld onder elke subform, matchend op klassenamen
main.part\.nameEen JavaScript-resolver-pad met een geëscapete punt in een nodenaam

Een weggelaten index kiest één occurrence; een absoluut pad gebruikt occurrence nul, terwijl een scoped pad de bijbehorende voorouder- of container-index leent wanneer de structuren herhaalde siblings hebben

Index-inferentie volgt bijbehorende hiërarchieniveaus zelfs wanneer bron- en doel-nodes verschillende namen hebben; klasse-selectors lenen de bijbehorende klasse-occurrence-index

Een eenmalig voorkomende target wordt gekozen zonder de occurrence-index van de aanroeper te vragen; een ontbrekende inferred occurrence geeft een lege lijst of null terug in plaats van stilletjes een andere scope te kiezen

Relatieve indices zijn offsets vanaf de versierde inferred occurrence en zijn ongeldig in absolute paden; FormCalc-indexexpressies kunnen een occurrence tijdens runtime berekenen

Naamloze containers zijn transparant voor benoemde kind-opzoek; ouderkwalificatie en ondersteunde properties zoals rawValue, name, className, index, presence en access zijn beschikbaar, en script-object lexicale exports kunnen via FormCalc-paden worden geresolved en toegewezen

Condities

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-predicates gebruiken .(expression) en voeren uit met de candidate als this; FormCalc-predicates gebruiken .[expression] en resolven relatieve velden tegen die candidate

Een predicate kiest matchende siblings zelfs wanneer [*] wordt weggelaten; JavaScript-predicates resolven ook kale veldnamen in de candidate-scope, en predicate-paden in FormCalc-bron moeten als geqoutete resolver-strings worden doorgegeven

Descendant-opzoek doorzoekt in documentvolgorde naar een tak die aan de resterende padcomponenten voldoet; een tak zonder matchend suffix verhult geen latere complete match

Een occurrence-index is lokaal binnen diens matchende sibling-groep; een out-of-range index beëindigt die descendant-zoekactie, dus main..cell[1] kiest geen cel in een andere rij wanneer de eerste rij slechts één cel heeft

Een voorafgaande wildcard evalueert descendant-opzoek onafhankelijk voor elke gekozen context, en een wildcard direct na een absolute wortel kiest de kinderen van de wortel

JavaScript-predicates ontvangen de xfa- en event-objecten van het huidige event; candidate-relatieve opzoek, predicate-exceptions en native writes delen de omvattende transactie

Nested Eval erft de predicate-candidate, gebruikt geïsoleerde berekeningsvariabelen en -functies en deelt native compilatie-responses en transactionele replay met het omvattende event

Exists(missing) en een accessor naar een niet-bestaande geïndexeerde occurrence geven 0 terug via Exists; gewoon gebruik van een onopgelost FormCalc-object raiset een fout

Budgetten en migratie

Paden staan hoogstens 128 componenten en 65.536 UTF-16-code-units toe; indices moeten safe integers zijn, en traversal, predicates, dynamische compilatie en instance-operaties delen de event executiebudgetten

Parserfouten, predicate-exceptions en overschreden budgetten breken het event af en herstellen native veldwaarden, instance-volgorde en scriptstatus via TXFAWidgetRuntime

Eerdere algemene resolveNodes klapten weggelaten indices uit over alle herhaalde voorouders heen; gebruik main.row[*].cell[*] wanneer elke rij en elke cel bedoeld zijn, ter vervanging van main.row.cell[*]

Dekking

De resolver opereert op live formulier-objecten aangeleverd door de event-bindingen, inclusief velden, subforms, draws, exclusiegroepen, area's en script-objecten, de native Data DOM blootgelegd via $data en $record, en gedeclareerde template-property-nodes met effectieve attributes

JavaScript-naam-escaping wordt ondersteund door resolver-strings; FormCalc-bronidentificatoren behouden de identifier-grammatica van de compiler

Related APIs

HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Dynamic Eval, FormCalc References en Interactive XFA Runtime