Natives XFA Data DOM
Die allgemeine Ausführung mit EnableJavaScript legt den native-Datasets-Baum des Dokuments über xfa.datasets-, $data- und $record-Resolver-Pfade sowie FormCalc-Accessoren offen
Datenknoten nutzen stabile native Identitäten und denselben Live-SOM-Resolver wie Formularknoten; sie unterstützen Namen, Klassenselektoren, Vorkommensauswahl, Eltern-Traversierung, Prädikate und Knotenauflösung
Wurzeln und Klassen
| Objekt oder Pfad | Bedeutung |
|---|---|
xfa.datasets | Der Datasets-Packet-Knoten, oder null wenn fehlend |
xfa.datasets.data und $data | Die Datenwurzel unter dem Datasets-Packet |
$record | Die erste Record-Wurzel unter data im aktuellen Non-Record-Verarbeitungsmodell |
dataGroup | Ein Datenelement mit Kindelementen, einschließlich einer explizit deklarierten leeren Gruppe |
dataValue | Ein Datenelement mit einem Wert |
formNode.dataNode | Der an das Formularfeld oder Subformular gebundene Knoten, oder null wenn keine Data-Bindung vorliegt |
Das dataNode-Attribut im XFA-Data-Namespace kann die Klasse einer Gruppe oder eines Werts explizit wählen; Namespace-Präfixe werden aufgelöst, statt eine bestimmte Präfixschreibweise zu verlangen
Lese- und Schreibzugriffe
Ein dataValue legt value als schreibbaren Alias von rawValue offen; beide Accessoren aktualisieren dieselbe gebundene Datenzelle und denselben nativen Datenknoten
const value = xfa.resolveNode("$record.row[1].cell");
value.rawValue = "25";
target.rawValue = xfa.resolveNode("main.row[1].cell").rawValue;
$record.row[1].cell = 25
target = row[1].cell
var p = Ref($record.row[1].cell)
p = 30
Schreibzugriffe auf gebundene Felder aktualisieren den entsprechenden Datenwert sofort, und Datenwert-Schreibzugriffe aktualisieren gebundene Feld-Lesezugriffe noch im selben Skript; die native Veröffentlichung schreibt den tatsächlichen Datenknoten
Materialisierte Scalar-Value-Properties synchronisieren ihren nativen Formularinhalt nach Feld- oder Daten-Schreibzugriffen, einschließlich Shared-Data-Aliases und neuer Datenveröffentlichung wiederholter Instanzen
Datenelemente ohne gebundenes Formularfeld bleiben zugreifbar und beschreibbar; erfolgreiche Transaktionen bewahren ihre Änderungen im gespeicherten XDP
Formularfelder mit bind match=none behalten Template-Defaults und speichern Änderungen im Form-DOM-Wert ihres eigenen Vorkommens; sie legen keinen synthetischen Datenknoten offen und verändern keine Geschwister-Vorkommen
Datenwerte teilen sich Unicode-, Wertgrößen- und Ausführungsbudgets mit dem Formular-Ereignis-Host; Gruppenknoten bieten strukturellen Zugriff statt eines schreibbaren Raw-Werts
Wiederholte Instanzen und erhaltene Referenzen
Einfügen, Verschieben und Entfernen von Formularinstanzen aktualisiert das entsprechende Live-Data-DOM noch im selben Skript; neue implizit gebundene Zeilen legen Template-Defaults über ihre Datenknoten offen, bevor die Veröffentlichung erfolgt
Ein Prototyp ohne Vorkommen kann seine erste Datengruppe und Werte erzeugen; die native Veröffentlichung liefert echte Identitäten für die neuen Knoten, sodass Skriptobjekte Daten-Handles über nachfolgende Ereignisse hinweg behalten können
Erhaltene Datenreferenzen folgen Verschiebungen über die Identität; die Verwendung einer Referenz nach dem Entfernen ihrer Gruppe lässt das Ereignis fehlschlagen, und der Runtime-Rollback stellt native Vorkommensreihenfolge, Werte und Skriptobjekt-Zähler wieder her
Von Skriptobjekten gehaltene Instance Manager lösen den aktuellen Bereich auf, einschließlich Managern, deren anfängliche Vorkommenszahl null war
Nativer XML-Inhalt
datasets-, dataGroup- und dataValue-Knoten legen loadXML und saveXML mit nativem Parsing, Graph-Aktualisierungen im selben Skript und transaktionaler Veröffentlichung offen
XML-Importe bewahren Kommentare, Processing Instructions, CDATA, expandierte Namespaces und Unicode-Namen und halten Nichttext-Knoten dennoch aus der gewöhnlichen Data-DOM-Kindauswahl und sichtbaren Feldwerten heraus
Importierte Werte synchronisieren gebundene Feld-Lesezugriffe sofort, einschließlich Felder, deren bestehende dataRef ein anderes Suffix wählt oder deren zuvor unaufgelöstes Ziel jetzt verfügbar ist
Transaktionen und Aufrufer auf niedrigerer Ebene
TXFAWidgetRuntime baut Data-Domain-Bindings, verknüpft Formularfelder mit nativen Datenwerten, wendet Daten-Schreibzugriffe und neue Identitäts-Bindings an und stellt den exakten XDP-Zustand nach Engine- oder nativen Veröffentlichungsfehlern wieder her
Ereignis-Aufrufer auf niedrigerer Ebene verwenden TXFAEventBindingDomain sowie die Felder DataIdentity und DataBindingEnabled von TXFAEventBinding, um äquivalente Objektbeziehungen bereitzustellen
Die xeakBindDataIdentity-Aktion bindet ein neues virtuelles Daten-Handle an seine veröffentlichte native Datenidentität; Anwendungen auf niedrigerer Ebene müssen zurückgegebene Datenmutationen und Identitäts-Bindings transaktional anwenden
Verbleibende Object-Model-Abdeckung
Record-Window-Navigation, eigenständige Datenknoten-Erzeugung und Reparenting, beliebige Datenattribute und vollständige Template-Property-Knoten-Bearbeitung bleiben separate Integrationsziele
Die Instanzspiegelung folgt dem bestehenden Verhalten des impliziten Data-Binding-Instance-Managers; zusätzliche Instanzmutationen mit expliziten Bindings erfordern weitere Binding-Integration
Verwandte APIs
Live-SOM-Pfade, FormCalc-Referenzen, HPDFXFAExecuteJavaScriptEvent und Interaktive XFA-Runtime