XFA Query Node Collections

JavaScriptové i FormCalc události mohou prohlížet výskyty uzlů v scopu a držet nezávislé query seznamy napříč runtime událostmi

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

Vlastnosti výskytů

node.all vrátí čerstvý uspořádaný query seznam uzlů v scopu se stejným literálním názvem; nepojmenovaný uzel použije místo něj název své třídy

node.classAll vrátí čerstvý uspořádaný query seznam uzlů v scopu se stejnou třídou, tedy i uzly s jinými názvy

node.index a node.classIndex vrátí zero-based výskyt v těch příslušných scopech

Nepojmenované ne-property kontejnery jsou pro vyhledávání pojmenovaného scopu průhledné, tedy i kladné i záporné relativní SOM výskyty; property kontejnery si uchovávají vlastní scope

Literální názvy jako #field, * i Unicode názvy ty vlastnosti porovnají jako autorské názvy

Nezávislé seznamové operace

ČlenChování
lengthAktuální počet položek seznamu
item(index)Referencovaný uzel, či null pro záporný, neceločíselný či mimo rozsah ležící index
namedItem(name)První referencovaný uzel s tím literálním názvem, či null, když se žádný netrefí
clone()Nové nezávislé úložiště položek referencující tytéž uzly
append(node)Přidá tutéž živou referenci uzlu na konec, tedy i duplicitní referenci
insert(node, before)Vloží živou referenci uzlu před první odpovídající referenci; null připojí
remove(node)Odebere první odpovídající referenci; chybějící reference hodí chybu

Seznamy vrácené resolveNodes, all a classAll používají nezávislé úložiště položek; změna toho úložiště nechá stromy formulářů i dat na místě, zatímco zápis do referencovaného uzlu změní skutečný uzel

Kolekce node.nodes formulářů a vlastností vystavují živé potomní pohledy; jejich metody clone() vrátí nezávislé query seznamy, jak popisuje XFA Live Child Collections

Data DOM node.nodes taky dodává nezávislé clone(); její stávající metody append, insert a remove si uchovávají nativní strukturální chování, jak popisuje Transakční struktura XFA Data DOM

Iterace polem, indexovaná čtení i enumerace vystavují referencované uzly; přímé přiřazení, mazání, předefinování vlastnosti, změny prototypu i znemožnění rozšíření hodí chyby, dřív než změní query seznam

Perzistence a stabilní identity

Skriptové objekty si mohou napříč událostmi držet query seznam či kopii; každá operace použije aktuální resolver události i transakční limity

Dotazované handly instance managerů směrují operace na aktuální grafový stav události, když jsou držené či klonované napříč událostmi

Přejmenování či přeřazení přeživšího uzlu zachová identitu jeho drženého seznamu; odebrání opakované form instance způsobí selhání čtení a zápisů přes tu odebranou referenci, místo výběru náhradní instance

Nezávislý seznam může klonovat své uložené reference a odebrat dřív drženou referenci odebraného uzlu, aniž by ten uzel dereferencoval

Úložiště query seznamů je skriptový stav runtime; uložení XDP perzistuje nativní hodnoty i strukturu uzlů, zatímco nový runtime zahájí nové sezení skriptových objektů

Transakce a limity

Neplatné uzly i členské reference selžou, dřív než ta seznamová operace změní úložiště; zachycená chyba nechá dřívější platné operace téže události dostupné

Nezachycená chyba události, rozpočet operací či selhání uplynulého času obnoví mutace query seznamů, nativní hodnoty, opakované instance, držený stav skriptových objektů i stav journalu společně, takže tentýž runtime může zkusit znovu

TXFAFormScriptLimits.MaxArrayItems ohraničuje délku každého drženého seznamu a samostatně kumulativní seznamové objekty i nově alokované položky během jedné události; nastavení nula použije default kontextu události 65 536

Prázdné kopie konzumují rozpočet objektů, neprázdné navíc rozpočet položek a držené seznamy zůstávají ohraničené napříč samostatnými úspěšnými událostmi

Konzumace FormCalc a PDF

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

Výběr výskytů FormCalc na literálních cestách xfa.form, xfa.datasets a xfa.record použije nativní SOM rozřešení; indexování seznamu za kolekční vlastností indexuje tu kolekci

Uložte runtime bajty do XDP a předejte je HPDFXFAWriteHeadlessPDF, chcete-li z potvrzených hodnot vygenerovat skutečná nativní pole i appearance, tedy i s editacemi přes držené přeživší reference opakovaných instancí

TXFAHeadlessPDFOptions.Editable = False vytvoří read-only nativní pole s appearance, namísto jejich zploštění

Pokrytí

Toto rozhraní dodává nezávislé query seznamy i metadata výskytů; obecná tvorba a klonování šablonových/form uzlů, další skriptování uzlových tříd, validace schema i externí média zůstávají samostatnou prací

XFA widget runtime · Native Data DOM