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 chemin | Signification |
|---|---|
xfa.datasets | Le nœud packet datasets, ou null en son absence |
xfa.datasets.data et $data | La racine data sous le packet datasets |
$record | La première racine record sous data dans le modèle de traitement non-record courant |
dataGroup | Un élément de données contenant des éléments enfants, y compris un groupe vide explicitement déclaré |
dataValue | Un élément de données portant une valeur |
formNode.dataNode | Le 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