Collections de nœuds de requête XFA

Les événements JavaScript et FormCalc peuvent inspecter les occurrences de nœuds dans la portée et conserver des listes de requête indépendantes entre les événements de la runtime

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";

Propriétés d'occurrence

node.all retourne une liste de requête ordonnée neuve des nœuds dans la portée portant le même nom littéral ; un nœud sans nom utilise plutôt son nom de classe

node.classAll retourne une liste de requête ordonnée neuve des nœuds dans la portée de même classe, nœuds portant d'autres noms compris

node.index et node.classIndex retournent l'occurrence à base zéro dans ces portées respectives

Les conteneurs sans nom non propriétés sont transparents pour la recherche de portée nommée, occurrences SOM relatives positives et négatives comprises ; les conteneurs de propriétés gardent leur propre portée

Les noms littéraux comme #field, * et les noms Unicode sont appariés comme noms rédigés par ces propriétés

Opérations de listes indépendantes

MembreComportement
lengthNombre courant d'entrées de la liste
item(index)Nœud référencé, ou null pour un index négatif, non entier ou hors plage
namedItem(name)Premier nœud référencé portant ce nom littéral, ou null quand aucun nœud ne correspond
clone()Nouveau stockage d'entrées indépendant référençant les mêmes nœuds
append(node)Ajoute la même référence de nœud vivant à la fin, référence dupliquée comprise
insert(node, before)Insère une référence de nœud vivant avant la première référence correspondante ; null ajoute en fin
remove(node)Retire la première référence correspondante ; une référence absente lève une erreur

Les listes retournées par resolveNodes, all et classAll utilisent un stockage d'entrées indépendant ; modifier ce stockage laisse les arbres de formulaires et de données en place, tandis qu'écrire un nœud référencé change le véritable nœud

Les collections node.nodes de formulaires et de propriétés exposent des vues d'enfants vivantes ; leurs méthodes clone() retournent des listes de requête indépendantes, comme décrit dans Collections d'enfants vivantes XFA

node.nodes du Data DOM fournit aussi un clone() indépendant ; ses méthodes append, insert et remove existantes gardent leur comportement structurel natif, comme décrit dans Structure transactionnelle du Data DOM XFA

L'itération de tableaux, les lectures indexées et l'énumération exposent les nœuds référencés ; affectation directe, suppression, redéfinition de propriétés, changements de prototype et empêchement des extensions lèvent des erreurs avant de modifier la liste de requête

Persistence et identités stables

Les objets script peuvent conserver une liste de requête ou un clone entre les événements ; chaque opération utilise le résolveur d'événement courant et les limites transactionnelles

Les handles de gestionnaires d'instances interrogés routent les opérations vers le graphe d'événement courant quand ils sont conservés ou clonés entre événements

Renommer ou réordonner un nœud survivant garde son identité de liste conservée ; retirer une instance de formulaire répétée fait échouer les lectures et écritures via cette référence retirée au lieu de sélectionner une instance de remplacement

Une liste indépendante peut cloner ses références stockées et retirer une référence de nœud retiré précédemment conservée sans déréférencer ce nœud

Le stockage des listes de requête est un état de script de la runtime ; l'enregistrement XDP persiste les valeurs et la structure natives des nœuds, tandis qu'une nouvelle runtime démarre une nouvelle session d'objets script

Transactions et limites

Les nœuds et références d'appartenance invalides échouent avant que cette opération de liste ne mute le stockage ; une erreur interceptée laisse les opérations valides antérieures du même événement disponibles

Une erreur d'événement non interceptée, un budget d'opérations ou un échec de temps écoulé restaure ensemble les mutations de listes de requête, les valeurs natives, les instances répétées, l'état des objets script conservés et l'état du journal, permettant à la même runtime de réessayer

TXFAFormScriptLimits.MaxArrayItems borne chaque longueur de liste conservée et borne séparément les objets de listes cumulés et les entrées nouvellement allouées pendant un événement ; son réglage à zéro utilise le défaut du contexte d'événement de 65 536

Les clones vides consomment le budget d'objets, les clones non vides consomment aussi le budget d'entrées, et les listes conservées restent bornées entre des événements réussis séparés

FormCalc et consommation PDF

output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
  xfa.datasets.data.main.amount.all.length, ":",
  xfa.datasets.data.main.amount[1].classIndex)

La sélection d'occurrences FormCalc sur les chemins littéraux xfa.form, xfa.datasets et xfa.record utilise la résolution SOM native ; l'indexation de liste après une propriété de collection indexe cette collection

Enregistrez les octets de la runtime en XDP et passez-les à HPDFXFAWriteHeadlessPDF pour générer de véritables champs et apparences natifs depuis les valeurs commises, éditions via des références d'instances répétées survivantes conservées comprises

TXFAHeadlessPDFOptions.Editable = False crée des champs natifs en lecture seule avec apparences, au lieu de les aplatir

Couverture

Cette interface fournit des listes de requête indépendantes et des métadonnées d'occurrences ; la création et le clonage généraux de nœuds de templates/formulaires, le scripting de classes de nœuds supplémentaires, la validation de schéma et les médias externes restent des travaux distincts

Runtime de widgets XFA · Data DOM natif