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

MemberVerhalten
lengthAktuelle 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

XFA-Widget-Runtime · Native Data DOM