XFA Query Node Collections
JavaScript- en FormCalc-events kunnen in-scope node-occurrences inspecteren en onafhankelijke query-lijsten over runtime-events heen vasthouden
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";
Occurrence-properties
node.all geeft een verse geordende query-lijst terug van in-scope nodes met dezelfde letterlijke naam; een naamloze node gebruikt diens klassa-naam
node.classAll geeft een verse geordende query-lijst terug van in-scope nodes met dezelfde klasse, inclusief nodes met andere namen
node.index en node.classIndex geven de zero-based occurrence binnen die respectievelijke scopes terug
Naamloze niet-property-containers zijn transparant voor benoemde scope-opzoek, inclusief positieve en negatieve relatieve SOM-occurrences; property-containers behouden diens eigen scope
Letterlijke namen zoals #field, * en Unicode-namen worden door deze properties als authored namen gematcht
Onafhankelijke lijstoperaties
| Lid | Gedrag |
|---|---|
length | Huidig aantal lijstentries |
item(index) | Gereferenced node, of null voor een negatieve, niet-integer of out-of-range index |
namedItem(name) | Eerste gereferenced node met die letterlijke naam, of null wanneer geen node matcht |
clone() | Nieuwe onafhankelijke entry-opslag die naar dezelfde nodes verwijst |
append(node) | Voegt dezelfde live node-referentie achteraan toe, inclusief een dubbele referentie |
insert(node, before) | Voegt een live node-referentie in vóór de eerste matchende referentie; null plakt aan |
remove(node) | Verwijdert de eerste matchende referentie; een afwezige referentie raiset een fout |
Lijsten teruggegeven door resolveNodes, all en classAll gebruiken onafhankelijke entry-opslag; die opslag wijzigen laat de formulier- en databomen op hun plek, terwijl een gereferenced node wegschrijven de echte node wijzigt
Formulier- en property-node.nodes-collecties leggen live kind-weergaven bloot; diens clone()-methodes geven onafhankelijke query-lijsten terug, zoals beschreven in XFA Live Child Collections
Data DOM node.nodes levert ook een onafhankelijke clone(); diens bestaande append-, insert- en remove-methodes behouden diens native structurele gedrag, zoals beschreven in Transactional XFA Data DOM Structure
Array-iteratie, geïndexeerde reads en enumeratie leggen gereferenced nodes bloot; directe toewijzing, verwijdering, property-herdefinitie, prototype-wijzigingen en het verhinderen van extensies raisen fouten voordat de query-lijst wordt gewijzigd
Persistentie en stabiele identiteiten
Script-objecten kunnen een query-lijst of kloon over events heen vasthouden; elke operatie gebruikt de huidige event-resolver en transactielimieten
Opgevraagde instance-manager-handles routeren operaties naar de huidige event-graaf wanneer vastgehouden of gekloond over events heen
Een overlevende node hernoemen of herordenen behoudt diens vastgehouden lijst-identiteit; een herhaald formulier-instance verwijderen laat reads en writes via die verwijderde referentie falen in plaats van een vervangende instance te kiezen
Een onafhankelijke lijst kan diens opgeslagen referenties klonen en een eerder vastgehouden verwijderde-node-referentie verwijderen zonder die node te dereferencen
Query-lijstopslag is runtime-scriptstatus; het opslaan van XDP persisteert de native node-waarden en -structuur, terwijl een nieuwe runtime een nieuwe script-object-session start
Transacties en limieten
Ongeldige nodes en lidmaatschapsreferenties falen voordat die lijstoperatie opslag muteert; een gevangen fout laat eerdere geldige operaties in hetzelfde event beschikbaar
Een niet-gevangen eventfout, operation-budget of elapsed-time-falen herstelt query-lijst-mutaties, native waarden, herhaalde instances, vastgehouden script-object-status en journal-status samen, zodat dezelfde runtime kan retryen
TXFAFormScriptLimits.MaxArrayItems klemt elke vastgehouden lijstlengte af en klemt apart cumulatieve lijstobjecten en nieuw toegewezen entries tijdens één event af; diens nul-instelling gebruikt de event-context-default van 65.536
Lege klonen verbruiken het objectbudget, niet-lege klonen verbruiken ook het entry-budget, en vastgehouden lijsten blijven begrensd over aparte geslaagde events heen
FormCalc- en PDF-consumptie
output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
xfa.datasets.data.main.amount.all.length, ":",
xfa.datasets.data.main.amount[1].classIndex)
FormCalc-occurrence-selectie op letterlijke xfa.form-, xfa.datasets- en xfa.record-paden gebruikt native SOM-resolutie; lijst-indexering na een collectie-property indexeert die collectie
Sla runtime-bytes op naar XDP en geef die door aan HPDFXFAWriteHeadlessPDF om echte native velden en appearances te genereren vanuit de gecommitte waarden, inclusief bewerkingen via vastgehouden overlevende herhaalde-instance-referenties
TXFAHeadlessPDFOptions.Editable = False creëert read-only native velden met appearances, in plaats van ze te flattenen
Dekking
Deze interface levert onafhankelijke query-lijsten en occurrence-metadata; algemene template-/formulier-node-creatie en -klonen, extra node-klassa-scripting, schemavalidatie en externe media blijven apart werk