XFA Query Node Collections
Zdarzenia JavaScript i FormCalc mogą przeglądać wystąpienia węzłów w scope i zachowywać niezależne listy zapytań między zdarzeniami runtime
const siblings = xfa.record.amount.all;
const retained = siblings.clone();
retained.remove(retained.item(0));
retained.insert(siblings.item(0), null);
retained.item(0).rawValue = "42";
Occurrence properties
node.all zwraca świeżą uporządkowaną listę zapytania węzłów w scope o tej samej literalnej nazwie; węzeł bez nazwy używa zamiast tego swojej nazwy klasy
node.classAll zwraca świeżą uporządkowaną listę zapytania węzłów w scope o tej samej klasie, łącznie z węzłami o innych nazwach
node.index i node.classIndex zwracają wystąpienie oparte na zerze w odpowiednio tych scope
Nienazwane kontenery niebędące właściwościami są przezroczyste dla odpytania scope nazwanego, łącznie z dodatnimi i ujemnymi względnymi wystąpieniami SOM; kontenery właściwości zachowują własny scope
Literałne nazwy, takie jak #field, * i nazwy Unicode, są dopasowywane jako autorskie nazwy przez te właściwości
Independent list operations
| Członek | Zachowanie |
|---|---|
length | Bieżąca liczba wpisów listy |
item(index) | Referencjonowany węzeł albo null dla indeksu ujemnego, niecałkowitego albo poza zakresem |
namedItem(name) | Pierwszy referencjonowany węzeł o tej literalnej nazwie albo null, gdy żaden węzeł nie pasuje |
clone() | Nowe niezależne storage wpisów referencjonujące te same węzły |
append(node) | Dodaje tę samą żywą referencję węzła na koniec, łącznie z duplikatem referencji |
insert(node, before) | Wstawia żywą referencję węzła przed pierwszą pasującą referencją; null dokleja |
remove(node) | Usuwa pierwszą pasującą referencję; nieobecna referencja podnosi błąd |
Listy zwracane przez resolveNodes, all i classAll używają niezależnego storage wpisów; zmiana tego storage zostawia drzewa formularza i danych na miejscu, podczas gdy zapis referencjonowanego węzła zmienia rzeczywisty węzeł
Kolekcje node.nodes formularza i właściwości odsłaniają żywe widoki potomków; ich metody clone() zwracają niezależne listy zapytań, jak opisano w XFA Live Child Collections
Data DOM node.nodes też dostarcza niezależne clone(); jego istniejące metody append, insert i remove zachowują natywne zachowanie strukturalne, jak opisano w Transactional XFA Data DOM Structure
Iteracja tablicy, odczyty indeksowane i enumeracja odsłaniają referencjonowane węzły; bezpośrednie przypisanie, usunięcie, przedefiniowanie właściwości, zmiany prototypu i uniemożliwianie rozszerzeń podnosi błędy przed zmianą listy zapytania
Persistence and stable identities
Obiekty skryptowe mogą zachować listę zapytania albo klon między zdarzeniami; każda operacja używa bieżącego resolvera zdarzenia i limitów transakcji
Odpytane handle menedżerów instancji routują operacje do bieżącego grafu zdarzenia, gdy są zachowywane albo klonowane między zdarzeniami
Zmiana nazwy albo przestawienie przeżywającego węzła zachowuje jego zachowaną tożsamość listy; usunięcie powtarzalnego wystąpienia formularza powoduje, że odczyty i zapisy przez tę usuniętą referencję zawodzą, zamiast wybierać zastępcze wystąpienie
Niezależna lista może sklonować swoje przechowywane referencje i usunąć wcześniej zachowaną referencję usuniętego węzła bez dereferencji tego węzła
Storage list zapytań jest stanem skryptów runtime; zapis XDP utrwala natywne wartości i strukturę węzłów, a nowy runtime rozpoczyna nową sesję obiektów skryptowych
Transactions and limits
Niepoprawne węzły i referencje przynależności zawodzą przed tym, jak ta operacja listy zmieni storage; przechwycony błąd zostawia wcześniejsze poprawne operacje tego samego zdarzenia dostępne
Nieprzechwycony błąd zdarzenia, budżet operacji albo awaria upływu czasu przywraca mutacje list zapytań, natywne wartości, powtarzalne wystąpienia, zachowany stan obiektów skryptowych i stan dziennika razem, pozwalając temu samemu runtime na ponowienie
TXFAFormScriptLimits.MaxArrayItems ogranicza każdą długość zachowanej listy i oddzielnie narastające obiekty list oraz nowo alokowane wpisy podczas jednego zdarzenia; ustawienie zero używa defaultu kontekstu zdarzenia 65,536
Puste klony konsumują budżet obiektów, niepuste też budżet wpisów, a zachowane listy pozostają ograniczone między oddzielnymi udanymi zdarzeniami
FormCalc and PDF consumption
output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
xfa.datasets.data.main.amount.all.length, ":",
xfa.datasets.data.main.amount[1].classIndex)
Wybór wystąpień FormCalc na literalnych ścieżkach xfa.form, xfa.datasets i xfa.record używa natywnego rozpoznawania SOM; indeksowanie listy po property kolekcji indeksuje tę kolekcję
Zapisz bajty runtime do XDP i przekaż je do HPDFXFAWriteHeadlessPDF, aby wygenerować rzeczywiste natywne pola i wyglądy z zacommitowanych wartości, łącznie z edycjami przez zachowane przeżywające referencje powtarzalnych instancji
TXFAHeadlessPDFOptions.Editable = False tworzy natywne pola read-only z wyglądami, zamiast je spłaszczać
Coverage
Ten interfejs dostarcza niezależne listy zapytań i metadane wystąpień; ogólne tworzenie i klonowanie węzłów szablonu/formularza, dodatkowe skryptowanie klas węzłów, walidacja schematu i media zewnętrzne pozostają odrębną pracą