XFA form tree creation and editing

TXFAWidgetRuntime wspiera transakcyjne tworzenie, klonowanie i edycję żywego drzewa formularzy JavaScript przez xfa.form i kolekcje węzłów

Żywe drzewo formularzy ma niezależne natywne tożsamości i może zostać zapisane jako pakiet formularzy XDP bez modyfikowania autorskiego szablonu

Creating and inserting a field

var row = xfa.resolveNode("row[1]");
var field = xfa.form.createNode("field", "additional");
row.nodes.append(field);
field.w = "160pt";
field.h = "24pt";
field.ui.getElement("textEdit");
field.font.typeface = "DejaVu Sans";
field.rawValue = "Additional value";

createNode(className, name, namespaceURI) zwraca odłączony węzeł, z pustą nazwą i przestrzenią nazw modelu używaną, gdy opcjonalne argumenty są pominięte

Akceptowane klasy obejmują field, subform, draw, area, exclGroup i klasy właściwości rozpoznawane przez schemat właściwości runtime

Utworzenie węzła nie wstawia go do formularza ani nie tworzy widocznego widgeta, dopóki nie zostanie dołączony z wymaganymi właściwościami UI i value

Collection operations and cloning

OperacjaZachowanie
parent.nodes.append(node)Przenosi odłączony albo dołączony węzeł na koniec żywej kolekcji potomków rodzica
parent.nodes.insert(node, before)Przenosi węzeł bezpośrednio przed istniejącego potomka tego samego rodzica
parent.nodes.remove(node)Odłącza potomka, zachowując jego tożsamość skryptową do późniejszego ponownego użycia
node.clone(true)Zwraca odłączony klon głęboki z odrębnymi natywnymi i skryptowymi tożsamościami
node.clone(false)Zwracza odłączony klon płytki bez potomków i skopiowanej wartości pola

Kolejność kolekcji, parent, odpytanie właściwości i obsługiwane rozpoznawanie SOM odzwierciedlają udane edycje natychmiast wewnątrz zdarzenia

Referencje zachowane przez obiekty skryptowe nadal adresują swoje własne węzły po zacommitowanej edycji albo rollbacku zdarzenia, łącznie z odłączonymi klonami głębokimi i płytkimi

Cykl, potomek referencjonowany z innego rodzica albo węzeł modelu danych przekazany do operacji formularza podnosi wyjątek, zanim ta niepoprawna operacja zmieni drzewo

Korzeń modelu formularza może zawierać nowo utworzone subformy i pola, ale sam korzeń modelu nie może zostać przeniesiony ani sklonowany

Repeated scopes and initial instances

Rzeczywiste instancje formularza zachowują odrębne tożsamości nawet przy równych autorskich nazwach, różnych kontekstach danych albo braku pakietu datasets

Puste scalenie używa jawnego licznika occur.initial albo occur.min, gdy initial jest nieobecne, a nieobecne max domyślnie min

Dla pustego scalenia początkowa liczba poza minimum i maksimum jest dozwolona, łącznie z zerowymi początkowymi kopiami

Zagnieżdżone i nienazwane subformy zachowują własne ścieżki wystąpień, a materializowanie tych instancji nie syntetyzuje pakietu datasets

Te reguły wystąpień podążają za XML Forms Architecture 3.3, wydrukowane strony 339-345

Commit, rollback and output

Udane zdarzenie stosuje swój dziennik strukturalny, przebudowuje natywne widgety i udostępnia edytowany formularz SaveToBytes i automatycznemu natywnemu tworzeniu PDF

Nieprzechwycony wyjątek skryptu, natywna awaria commitu albo przekroczony budżet zdarzenia przywraca oryginalny dokument, tożsamości widgetów i zachowany stan skryptów, więc późniejsze zdarzenie może ponowić

Istniejące budżety operacji, węzłów, głębokości, bajtów, widgetów i upływu czasu też stosują się do strukturalnego przygotowania i commitu

Zapisane instancje formularza mogą zostać przeładowane i przekazane do HPDFXFAWriteHeadlessPDF, aby utworzyć rzeczywiste pola PDF i strumienie wyglądów z dostarczonymi bajtami fontów

Scope

Te API edytują żywy model formularza i jego obsługiwany schemat właściwości

Ogólna edycja xfa.template, kompletne przetwarzanie choice subform-set, pełny schemat klas XFA i dowolne kombinacje selektorów powiązań pozostają odrębnymi zdolnościami