Levande XFA SOM-sökvägsupplösning

Generell körning med EnableJavaScript levererar samma levande formulärupplösare till nodnivåns resolveNode/resolveNodes, xfa.resolveNode/xfa.resolveNodes och FormCalc-accessorer

Upplösningen följer de aktuella upprepade förekomsterna omedelbart efter instansinsättning, borttagning eller flytt; lyckade körningstransaktioner sparar valda fältskrivningar till deras nativa datamål och till sparad XDP

Sökvägar och förekomster

SökvägUrval
row[1].cellDen andra raden och dess valda cell
row[*].cellDen valda cellen i varje rad
$form.main.row.cellFörsta raden och första cellen via en absolut sökväg
row[-1].cellRaden före den härledda förekomsten
row[+1].cellRaden efter den härledda förekomsten
main..cell[*]Matchande syskonceller i den första ättlinggrenen
main.*Alla direkta barn i dokumentordning
main.#field[name='target']Fält valda med ett namngivningsegenskapspredikat
main.#subform[*].#fieldDet valda fältet under varje subform, med matchande klassnamn
main.part\.nameEn JavaScript-upplösarsökväg med ett escape:at punkttecken i ett nodnamn

Ett utelämnat index väljer en förekomst; en absolut sökväg använder förekomst noll, medan en scope-begränsad sökväg lånar motsvarande förfäder- eller containerindex när strukturerna har upprepade syskon

Index härledning följer motsvarande hierarkinivåer även när käll- och målnoder har olika namn; klassväljare lånar motsvarande klassförekomstindex

Ett mål som förekommer en gång väljs utan att anroparens förekomstindex krävs; en saknad härledd förekomst returnerar en tom lista eller null i stället för att tyst välja ett annat scope

Relativa index är offset från den ohärledda förekomsten utan index och är ogiltiga i absoluta sökvägar; FormCalc-indexuttryck kan beräkna en förekomst vid körning

Namnlösa containrar är transparenta vid namnbaserad barnuppslagning; föräldrkvalificering och stödda egenskaper som rawValue, name, className, index, presence och access finns tillgängliga, och lexikala export från skriptobjekt kan lösas upp och tilldelas via FormCalc-sökvägar

Villkor

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-predikat använder .(expression) och körs med kandidaten som this; FormCalc-predikat använder .[expression] och löser relativa fält mot den kandidaten

Ett predikat väljer matchande syskon även när [*] är utelämnat; JavaScript-predikat löser även rena fältnamn i kandidatens scope, och predikatsökvägar i FormCalc-källkod måste skickas som citerade upplösarsträngar

Ättlinguppslagning söker i dokumentordning efter en gren som uppfyller de återstående sökvägskomponenterna; en gren utan matchande suffix doler inte en senare komplett träff

Ett förekomstindex är lokalt för sin matchande syskongrupp; ett index utanför intervallet avslutar den ättlingsökningen, så main..cell[1] väljer ingen cell i en annan rad när den första raden bara har en cell

Ett föregående jokertecken utvärderar ättlinguppslagning oberoende för varje valt kontext, och ett jokertecken direkt efter en absolut rot väljer rotens barn

JavaScript-predikat tar emot den aktuella händelsens xfa- och event-objekt; kandidatrelaterad uppslagning, predikatundantag och nativa skrivningar delar den omslutande transaktionen

Nästlad Eval ärver predikatkandidaten, använder isolerade beräkningsvariabler och funktioner samt delar nativa kompileringsresponser och transaktionsåteruppspelning med den omslutande händelsen

Exists(missing) och en accessor till en icke existerande indexerad förekomst returnerar 0 via Exists; vanlig användning av ett olöst FormCalc-objekt kastar ett fel

Budgetar och migrering

Sökvägar tillåter högst 128 komponenter och 65 536 UTF-16-kodenheter; index måste vara säkra heltal, och traversering, predikat, dynamisk kompilering och instansoperationer delar händelsens körningsbudgetar

Parserfel, predikatundantag och överskridna budgetar avbryter händelsen och återställer nativa fältvärden, instansordning och skripttillstånd via TXFAWidgetRuntime

Tidigare generell resolveNodes expanderade utelämnade index över alla upprepade förfäder; använd main.row[*].cell[*] när varje rad och varje cell avses, som ersättning för main.row.cell[*]

Täckning

Upplösaren arbetar med levande formulärobjekt som levereras av händelsebindningarna, bland annat fält, subforms, draws, exkluderingsgrupper, areas och skriptobjekt, den nativa Data DOM som exponeras via $data och $record, samt deklarerade mallegenskapsnoder med effektiva attribut

JavaScript-namnescaping stöds i upplösarsträngar; FormCalc-källidentifierare behåller kompilatorns identifieragrammatik

Relaterade API:er

HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Dynamisk Eval, FormCalc-referenser och Interaktiv XFA-runtime