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äg | Urval |
|---|---|
row[1].cell | Den andra raden och dess valda cell |
row[*].cell | Den valda cellen i varje rad |
$form.main.row.cell | Första raden och första cellen via en absolut sökväg |
row[-1].cell | Raden före den härledda förekomsten |
row[+1].cell | Raden 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[*].#field | Det valda fältet under varje subform, med matchande klassnamn |
main.part\.name | En 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