XFA Query Node Collections
JavaScript- und FormCalc-Ereignisse können in-Scope-Knotenvorkommen inspizieren und unabhängige Query-Listen über Runtime-Ereignisse hinweg zurückhalten
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";
Vorkommens-Properties
node.all liefert eine frische geordnete Query-Liste in-Scope-Knoten mit demselben literalen Namen; ein unbenannter Knoten nutzt stattdessen seinen Klassennamen
node.classAll liefert eine frische geordnete Query-Liste in-Scope-Knoten derselben Klasse, einschließlich Knoten mit anderen Namen
node.index und node.classIndex liefern das nullbasierte Vorkommen innerhalb der jeweiligen Scopes
Unbenannte Nicht-Property-Container sind für Named-Scope-Lookup transparent, einschließlich positiver und negativer relativer SOM-Vorkommen; Property-Container behalten ihren eigenen Scope
Literal Namen wie #field, * und Unicode-Namen werden von diesen Properties als authored Namen gematcht
Unabhängige Listenoperationen
| Member | Verhalten |
|---|---|
length | Aktuelle Anzahl der Listeneinträge |
item(index) | Referenzierter Knoten oder null für einen negativen, nichtganzzahligen oder außerhalb liegenden Index |
namedItem(name) | Erster referenzierter Knoten mit diesem literalen Namen oder null, wenn kein Knoten passt |
clone() | Neue unabhängige Eintragsspeicherung, die dieselben Knoten referenziert |
append(node) | Dieselbe live Knotenreferenz am Ende ergänzen, einschließlich einer Duplikatreferenz |
insert(node, before) | Eine live Knotenreferenz vor der ersten passenden Referenz einfügen; null hängt an |
remove(node) | Die erste passende Referenz entfernen; eine fehlende Referenz wirft einen Fehler |
Listen von resolveNodes, all und classAll nutzen unabhängige Eintragsspeicherung; das Ändern dieser Speicherung lässt Form- und Datenbäume in place, während das Schreiben eines referenzierten Knotens den tatsächlichen Knoten ändert
Form- und Property-node.nodes-Collections exponieren live Kinderansichten; ihre clone()-Methoden liefern unabhängige Query-Listen, wie in XFA Live Child Collections beschrieben
Data-DOM-node.nodes liefert ebenfalls einen unabhängigen clone(); seine bestehenden append-, insert- und remove-Methoden behalten ihr natives strukturelles Verhalten, wie in Transaktionale XFA-Data-DOM-Struktur beschrieben
Array-Iteration, indizierte Lesezugriffe und Enumeration exponieren referenzierte Knoten; direkte Zuweisung, Löschung, Property-Neudefinition, Prototyp-Änderungen und das Verhindern von Extensions werfen Fehler, bevor die Query-Liste geändert wird
Persistenz und stabile Identitäten
Script-Objekte können eine Query-Liste oder einen Clone über Ereignisse hinweg zurückhalten; jede Operation nutzt den aktuellen Event-Resolver und die Transaktionslimits
Abgefragte Instance-Manager-Handles routen Operationen an den aktuellen Ereignisgraphen, wenn sie über Ereignisse hinweg zurückgehalten oder geklont werden
Das Umbenennen oder Umordnen eines überlebenden Knotens behält seine zurückgehaltene Listenidentität; das Entfernen einer wiederholten Form-Instanz lässt Lese- und Schreibzugriffe über diese entfernte Referenz fehlschlagen, statt eine Ersatzinstanz auszuwählen
Eine unabhängige Liste kann ihre gespeicherten Referenzen klonen und eine zuvor zurückgehaltene entfernte Knotenreferenz entfernen, ohne diesen Knoten zu dereferenzieren
Query-Listen-Speicherung ist Runtime-Script-State; das Speichern von XDP persistiert die nativen Knotenwerte und die Struktur, während eine neue Runtime eine neue Script-Objekt-Session startet
Transaktionen und Limits
Ungültige Knoten und Membership-Referenzen schlagen fehl, bevor diese Listenoperation die Speicherung mutiert; ein abgefangener Fehler lässt früher gültige Operationen im selben Ereignis verfügbar
Ein nicht abgefangener Event-Fehler, ein Operations-Budget oder ein Laufzeit-Fehler stellt Query-Listen-Mutationen, native Werte, wiederholte Instanzen, zurückgehaltenen Script-Objekt-State und Journalzustand gemeinsam wieder her und erlaubt derselben Runtime einen Retry
TXFAFormScriptLimits.MaxArrayItems begrenzt jede zurückgehaltene Listenlänge und separat die kumulierten Listenobjekte und neu allozierten Einträge während eines Ereignisses; seine Null-Einstellung nutzt den Event-Kontext-Default von 65.536
Leere Clones verbrauchen das Objektbudget, nichtleere Clones zusätzlich das Eintragsbudget, und zurückgehaltene Listen bleiben über separate erfolgreiche Ereignisse hinweg begrenzt
FormCalc und PDF-Verbrauch
output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
xfa.datasets.data.main.amount.all.length, ":",
xfa.datasets.data.main.amount[1].classIndex)
FormCalc-Vorkommensauswahl auf literalen xfa.form-, xfa.datasets- und xfa.record-Pfaden nutzt native SOM-Auflösung; Listenindexierung nach einer Collection-Property indexiert diese Collection
Runtime-Bytes als XDP speichern und an HPDFXFAWriteHeadlessPDF übergeben, um aus den committed Werten echte native Felder und Appearances zu erzeugen, einschließlich Editierungen über zurückgehaltene überlebende wiederholte Instanz-Referenzen
TXFAHeadlessPDFOptions.Editable = False erzeugt schreibgeschützte native Felder mit Appearances, statt sie abzuflachen
Abdeckung
Diese Schnittstelle liefert unabhängige Query-Listen und Vorkommens-Metadaten; allgemeine Template-/Form-Knotenerzeugung und -Klonen, zusätzliche Knotenklassen-Scripting, Schema-Validierung und externe Medien bleiben separate Arbeiten