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łonekZachowanie
lengthBieżą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ą

Runtime widgetów XFA · Native Data DOM