Live XFA SOM Path Resolution
Ogólne wykonanie z EnableJavaScript dostarcza ten sam żywy resolver formularzy do node-level resolveNode/resolveNodes, xfa.resolveNode/xfa.resolveNodes i akesorów FormCalc
Rozpoznawanie podąża za bieżącymi powtarzalnymi wystąpieniami natychmiast po wstawieniu, usunięciu albo przeniesieniu instancji; udane transakcje runtime utrwalają wybrane zapisy pól w ich natywnych celach danych i w zapisanym XDP
Paths and occurrences
| Ścieżka | Wybór |
|---|---|
row[1].cell | Drugi rząd i jego wybrana komórka |
row[*].cell | Wybrana komórka w każdym rzędzie |
$form.main.row.cell | Pierwszy rząd i pierwsza komórka przez ścieżkę absolutną |
row[-1].cell | Rząd poprzedzający wystąpienie wnioskowane |
row[+1].cell | Rząd następujący po wystąpieniu wnioskowanym |
main..cell[*] | Pasujące komórki rodzeństwa w pierwszej gałęzi potomków |
main.* | Wszyscy bezpośredni potomkowie w kolejności dokumentu |
main.#field[name='target'] | Pola wybrane predykatem właściwości nazewniczej |
main.#subform[*].#field | Wybrane pole pod każdą subformą, pasujące do nazw klas |
main.part\.name | Ścieżka resolvera JavaScript zawierająca escape'owaną kropkę w nazwie węzła |
Pominięty indeks wybiera jedno wystąpienie; ścieżka absolutna używa wystąpienia zero, podczas gdy ścieżka scopowana pożycza odpowiadający indeks przodka albo kontenera, gdy struktury mają powtarzalne rodzeństwo
Wnioskowanie indeksów podąża za odpowiadającymi poziomami hierarchii nawet, gdy węzły źródła i celu mają różne nazwy; selektory klas pożyczają odpowiadający indeks wystąpienia klasy
Cel o pojedynczym wystąpieniu jest wybierany bez wymagania indeksu wystąpienia wywołującego; brakujące wystąpienie wnioskowane zwraca pustą listę albo null, zamiast cicho wybrać inny scope
Względne indeksy to offsety od gołego wystąpienia wnioskowanego i są niepoprawne w ścieżkach absolutnych; wyrażenia indeksów FormCalc mogą obliczyć wystąpienie w runtime
Nienazwane kontenery są przezroczyste dla odpytania nazwanych potomków; kwalifikacja rodzica i obsługiwane właściwości, takie jak rawValue, name, className, index, presence i access, są dostępne, a leksykalne eksporty obiektów skryptowych mogą być rozpoznawane i przypisywane przez ścieżki FormCalc
Conditions
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
Predykaty JavaScript używają .(wyrażenie) i wykonują się z kandydatem jako this; predykaty FormCalc używają .[wyrażenie] i rozpoznają względne pola względem tego kandydata
Predykat wybiera pasujące rodzeństwo nawet, gdy [*] jest pominięte; predykaty JavaScript też rozpoznają gołe nazwy pól w scope kandydata, a predykatowe ścieżki w źródle FormCalc muszą być przekazywane jako cytowane napisy resolvera
Odpytanie potomków przeszukuje w kolejności dokumentu gałąź spełniającą pozostałe komponenty ścieżki; gałąź bez pasującego sufiksu nie ukrywa późniejszego kompletnego dopasowania
Indeks wystąpienia jest lokalny dla swojej pasującej grupy rodzeństwa; indeks poza zakresem kończy to wyszukiwanie potomków, więc main..cell[1] nie wybiera komórki w innym rzędzie, gdy pierwszy rząd ma tylko jedną komórkę
Poprzedzająca dzika karta ewaluuje odpytanie potomków niezależnie dla każdego wybranego kontekstu, a dzika karta bezpośrednio po absolutnym korzeniu wybiera potomków korzenia
Predykaty JavaScript otrzymują obiekty xfa i event bieżącego zdarzenia; odpytanie względne wobec kandydata, wyjątki predykatów i natywne zapisy dzielą otaczającą transakcję
Zagnieżdżony Eval dziedziczy kandydata predykatu, używa izolowanych zmiennych i funkcji obliczeń i dzieli natywne odpowiedzi kompilacji oraz transakcyjny replay z otaczającym zdarzeniem
Exists(missing) i aksesora nieistniejącego wystąpienia indeksowanego zwracają 0 przez Exists; zwykłe użycie nierozpoznanego obiektu FormCalc podnosi błąd
Budgets and migration
Ścieżki dopuszczają co najwyżej 128 komponentów i 65,536 jednostek kodowych UTF-16; indeksy muszą być bezpiecznymi liczbami całkowitymi, a traversalu, predykaty, dynamiczna kompilacja i operacje instancji dzielą budżety wykonania zdarzenia
Błędy parsera, wyjątki predykatów i przekroczone budżety przerywają zdarzenie i przywracają natywne wartości pól, kolejność instancji i stan skryptów przez TXFAWidgetRuntime
Wcześniejszy ogólny resolveNodes rozszerzał pominięte indeksy przez wszystkich powtarzalnych przodków; użyj main.row[*].cell[*], gdy chodzi o każdy rząd i każdą komórkę, zastępując main.row.cell[*]
Coverage
Resolver działa na żywych obiektach formularza dostarczanych przez powiązania zdarzeń, w tym pola, subformy, drawy, grupy wykluczeń, obszary i obiekty skryptowe, natywny Data DOM odsłaniany przez $data i $record oraz zadeklarowane węzły właściwości szablonu z efektywnymi atrybutami
Escape'owanie nazw JavaScript jest wspierane przez napisy resolvera; identyfikatory źródła FormCalc zachowują gramatykę identyfikatorów kompilatora
Related APIs
HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Dynamic Eval, FormCalc References i Interactive XFA Runtime