Risoluzione live dei percorsi SOM XFA

L'esecuzione generale con EnableJavaScript fornisce lo stesso resolver form live ai resolveNode/resolveNodes a livello nodo, agli xfa.resolveNode/xfa.resolveNodes e agli accessor FormCalc

La risoluzione segue le occorrenze ripetute correnti immediatamente dopo inserimento, rimozione o spostamento di istanze; le transazioni runtime riuscite persistono le scritture dei campi selezionati nei loro target dati nativi e nell'XDP salvato

Percorsi e occorrenze

PercorsoSelezione
row[1].cellLa seconda riga e la sua cella selezionata
row[*].cellLa cella selezionata in ogni riga
$form.main.row.cellLa prima riga e la prima cella attraverso un percorso assoluto
row[-1].cellLa riga che precede l'occorrenza inferita
row[+1].cellLa riga che segue l'occorrenza inferita
main..cell[*]Celle sibling corrispondenti nel primo ramo discendente
main.*Tutti i figli diretti in ordine di documento
main.#field[name='target']Campi selezionati da un predicato di proprietà di denominazione
main.#subform[*].#fieldIl campo selezionato sotto ogni subform, corrispondendo ai nomi di classe
main.part\.nameUn percorso resolver JavaScript contenente un punto con escape in un nome di nodo

Un indice omesso seleziona una occorrenza; un percorso assoluto usa l'occorrenza zero, mentre un percorso con scope prende in prestito l'indice corrispondente dell'antenato o contenitore quando le strutture hanno sibling ripetuti

L'inferenza degli indici segue i livelli di gerarchia corrispondenti anche quando i nodi sorgente e destinazione hanno nomi diversi; i selettori di classe prendono in prestito l'indice di occorrenza della classe corrispondente

Un target a occorrenza singola viene selezionato senza richiedere l'indice di occorrenza del chiamante; un'occorrenza inferita mancante restituisce una lista vuota o null invece di selezionare silenziosamente un altro scope

Gli indici relativi sono offset dall'occorrenza inferita non decorata e non sono validi nei percorsi assoluti; le espressioni di indice FormCalc possono calcolare un'occorrenza a runtime

I contenitori senza nome sono trasparenti alla ricerca dei figli nominati; la qualifica dei parent e le proprietà supportate come rawValue, name, className, index, presence e access sono disponibili, e le esportazioni lessicali degli script object possono essere risolte e assegnate attraverso percorsi FormCalc

Condizioni

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

I predicati JavaScript usano .(expression) ed eseguono con il candidato come this; i predicati FormCalc usano .[expression] e risolvono i campi relativi contro quel candidato

Un predicato seleziona i sibling corrispondenti anche quando [*] è omesso; i predicati JavaScript risolvono anche nomi di campo nudi nello scope del candidato, e i percorsi con predicati nella sorgente FormCalc devono essere passati come stringhe resolver quotate

La ricerca dei discendenti cerca in ordine di documento un ramo che soddisfa i componenti rimanenti del percorso; un ramo senza suffisso corrispondente non nasconde una corrispondenza completa successiva

Un indice di occorrenza è locale al suo gruppo di sibling corrispondenti; un indice fuori intervallo termina quella ricerca nei discendenti, quindi main..cell[1] non seleziona una cella in un'altra riga quando la prima riga ha una sola cella

Una wildcard precedente valuta la ricerca nei discendenti indipendentemente per ogni contesto selezionato, e una wildcard direttamente dopo una radice assoluta seleziona i figli della radice

I predicati JavaScript ricevono gli oggetti xfa e event dell'evento corrente; la lookup relativa al candidato, le eccezioni dei predicati e le scritture native condividono la transazione contenitore

L'Eval annidato eredita il candidato del predicato, usa variabili e funzioni di calcolo isolate, e condivide risposte di compilazione native e replay transazionale con l'evento contenitore

Exists(missing) e un accessor a un'occorrenza indicizzata inesistente restituiscono 0 attraverso Exists; l'uso ordinario di un oggetto FormCalc non risolto solleva un errore

Budget e migrazione

I percorsi ammettono al massimo 128 componenti e 65,536 unità di codice UTF-16; gli indici devono essere interi safe, e attraversamento, predicati, compilazione dinamica e operazioni su istanze condividono i budget di esecuzione dell'evento

Errori del parser, eccezioni dei predicati e budget superati abortiscono l'evento e ripristinano valori nativi dei campi, ordine delle istanze e stato degli script attraverso TXFAWidgetRuntime

Il resolveNodes generale precedente espandeva gli indici omessi attraverso tutti gli antenati ripetuti; usa main.row[*].cell[*] quando si intendono ogni riga e ogni cella, al posto di main.row.cell[*]

Copertura

Il resolver opera su oggetti form live forniti dai binding degli eventi, inclusi campi, subform, draw, exclusion group, aree e script object, il Data DOM nativo esposto attraverso $data e $record, e i nodi proprietà dichiarati del template con attributi effettivi

L'escaping dei nomi JavaScript è supportato dalle stringhe resolver; gli identificatori della sorgente FormCalc conservano la grammatica degli identificatori del compilatore

API correlate

HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Eval dinamico, Riferimenti FormCalc e Runtime XFA interattivo