Data DOM XFA natif

L'exécution générale avec EnableJavaScript expose l'arbre de datasets natifs du document via les chemins de résolveur xfa.datasets, $data et $record et les accesseurs FormCalc

Les nœuds de données utilisent des identités natives stables et le même résolveur SOM dynamique que les nœuds de formulaire ; ils prennent en charge les noms, sélecteurs de classe, sélection d'occurrences, parcours parental, prédicats et résolution au niveau des nœuds

Racines et classes

Objet ou cheminSignification
xfa.datasetsLe nœud packet datasets, ou null en son absence
xfa.datasets.data et $dataLa racine data sous le packet datasets
$recordLa première racine record sous data dans le modèle de traitement non-record courant
dataGroupUn élément de données contenant des éléments enfants, y compris un groupe vide explicitement déclaré
dataValueUn élément de données portant une valeur
formNode.dataNodeLe nœud lié au champ de formulaire ou au subform, ou null en l'absence de data binding

L'attribut dataNode dans l'espace de noms de données XFA peut sélectionner explicitement la classe d'un groupe ou d'une valeur ; les préfixes d'espaces de noms sont résolus plutôt que d'exiger une orthographe de préfixe particulière

Lectures et écritures

Un dataValue expose value comme alias inscriptible de rawValue ; les deux accesseurs mettent à jour la même cellule de données liée et le même nœud de données natif

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

Les écritures de champs liés mettent à jour immédiatement la valeur de données correspondante, et les écritures de valeurs de données mettent à jour immédiatement les lectures des champs liés dans le même script ; la publication native écrit le véritable nœud de données

Les propriétés de valeurs scalaires matérialisées synchronisent leur contenu de formulaire natif après écritures de champs ou de données, y compris les alias de données partagées et la nouvelle publication de données d'instances répétées

Les éléments de données sans champ de formulaire lié restent accessibles et inscriptibles ; les transactions réussies préservent leurs modifications dans le XDP enregistré

Les champs de formulaire avec bind match=none conservent les valeurs par défaut du template et stockent les modifications dans la valeur Form DOM de leur propre occurrence ; ils n'exposent aucun nœud de données synthétique et ne modifient pas les occurrences sœurs

Les valeurs de données partagent les budgets Unicode, de taille de valeur et d'exécution avec l'hôte d'événements de formulaire ; les nœuds de groupe fournissent un accès structurel plutôt qu'une valeur brute inscriptible

Instances répétées et références conservées

L'insertion, le déplacement et la suppression d'instances de formulaire mettent à jour le Data DOM dynamique correspondant pendant le même script ; les nouvelles lignes à binding implicite exposent les valeurs par défaut du template via leurs nœuds de données avant publication

Un prototype à occurrence zéro peut créer son premier groupe de données et ses valeurs ; la publication native fournit de véritables identités pour les nouveaux nœuds, permettant aux script objects de conserver des data handles à travers les événements suivants

Les références de données conservées suivent les déplacements par identité ; utiliser une référence après suppression de son groupe fait échouer l'événement, et le rollback du runtime restaure l'ordre des occurrences natif, les valeurs et les compteurs de script objects

Les instance managers conservés par les script objects résolvent le scope courant, y compris les managers dont le compte d'occurrences initial était zéro

Contenu XML natif

Les nœuds datasets, dataGroup et dataValue exposent loadXML et saveXML avec parsing natif, mises à jour du graphe dans le même script et publication transactionnelle

Les imports XML préservent les commentaires, instructions de traitement, CDATA, espaces de noms étendus et noms Unicode tout en tenant les nœuds non textuels hors de la sélection d'enfants ordinaire du Data DOM et des valeurs de champs visibles

Les valeurs importées synchronisent immédiatement les lectures des champs liés, y compris les champs dont le dataRef existant sélectionne un suffixe différent ou dont la cible précédemment non résolue est désormais disponible

Transactions et appelants de bas niveau

TXFAWidgetRuntime construit les bindings du domaine de données, lie les champs de formulaire aux valeurs de données natives, applique les écritures de données et les nouveaux bindings d'identité, et restaure l'état XDP exact après un échec du moteur ou de la publication native

Les appelants d'événements de bas niveau utilisent TXFAEventBindingDomain et les champs DataIdentity et DataBindingEnabled de TXFAEventBinding pour fournir des relations d'objets équivalentes

L'action xeakBindDataIdentity lie un nouveau data handle virtuel à son identité de données native publiée ; les applications de bas niveau doivent appliquer transactionnellement les mutations de données et les bindings d'identité retournés

Couverture restante du modèle objet

La navigation par fenêtre d'enregistrements, la création autonome de nœuds de données et leur reparentage, les attributs de données arbitraires et l'édition complète des nœuds de propriétés de template restent des cibles d'intégration séparées

Le mirroring d'instances suit le comportement existant des instance managers à data binding implicite ; les mutations d'instances supplémentaires à binding explicite nécessitent une intégration de binding plus poussée

APIs associées

Chemins SOM dynamiques, Références FormCalc, HPDFXFAExecuteJavaScriptEvent et Runtime XFA interactif