XFA Query Node Collections

JavaScript ve FormCalc event'leri, scope-içi node occurrence'larını inceleyebilir ve runtime event'leri boyunca bağımsız sorgu listeleri tutabilir

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 özellikleri

node.all, aynı literal ada sahip scope-içi node'ların taze sıralı bir sorgu listesini döndürür; adsız bir node, onun yerine class adını kullanır

node.classAll, aynı class'a sahip scope-içi node'ların taze sıralı bir sorgu listesini döndürür — başka adları olan node'lar dâhil

node.index ve node.classIndex, ilgili scope'lar içindeki zero-based occurrence'ı döndürür

Adsız property-olmayan container'lar, adlandırılmış scope aramasına saydamdır — pozitif ve negatif göreli SOM occurrence'ları dâhil; property container'ları kendi scope'unu tutar

#field, * gibi literal adlar ve Unicode adlar, bu özellikler tarafından yazılmış adlar olarak eşleştirilir

Bağımsız liste operation'ları

ÜyeDavranış
lengthListe entry'lerinin mevcut sayısı
item(index)Referans verilen node, negatif, noninteger veya aralık-dışı indeks için null
namedItem(name)O literal ada sahip ilk referans-verilen node, eşleşen node yoksa null
clone()Aynı node'lara referans veren yeni bağımsız entry depolaması
append(node)Aynı canlı node referansını sona ekleyin — duplicate bir referans dâhil
insert(node, before)Canlı bir node referansını ilk eşleşen referanstan önce ekleyin; null append eder
remove(node)İlk eşleşen referansı kaldırın; olmayan bir referans hata raise eder

resolveNodes, all ve classAll tarafından döndürülen listeler bağımsız entry depolaması kullanır; o depolamayı değiştirmek form ve data ağaçlarını yerinde bırakır, bir referans-verilen node yazmak ise gerçek node'u değiştirir

Form ve property node.nodes koleksiyonları canlı child view'ları açığa çıkarır; onların clone() method'ları bağımsız sorgu listeleri döndürür — XFA Live Child Collections içinde anlatıldığı gibi

Data DOM node.nodes, ayrıca bağımsız bir clone() sağlar; onun mevcut append, insert ve remove method'ları native structural davranışlarını korur — Transactional XFA Data DOM Structure içinde anlatıldığı gibi

Array iterasyonu, indeksli okumalar ve enumeration, referans-verilen node'ları açığa çıkarır; doğrudan atama, silme, property yeniden-tanımlama, prototype değişiklikleri ve extension'ları önleme, sorgu listesini değiştirmeden önce hata raise eder

Persistence ve kararlı identity'ler

Script object'leri, bir sorgu listesini veya clone'u event'ler boyunca tutabilir; her operation, mevcut event resolver'ını ve transaction limitlerini kullanır

Sorgulanan instance-manager handle'ları, event'ler boyunca tutulduklarında veya klonlandıklarında operation'ları mevcut event grafiğine yönlendirir

Hayatta-kalan bir node'u yeniden adlandırmak veya yeniden sıralamak, onun tutulan liste identity'sini korur; bir tekrar-form instance'ını kaldırmak, o kaldırılmış referans üzerinden okuma ve yazmayı, replacement bir instance seçmek yerine başarısız kılar

Bağımsız bir liste, saklı referanslarını klonlayabilir ve önceden tutulan bir kaldırılmış-node referansını, o node'u dereference etmeden kaldırabilir

Sorgu listesi depolaması, runtime script state'idir; XDP kaydetmek native node value'larını ve yapısını kalıcılaştırır, yeni bir runtime ise yeni bir script-object session'ı başlatır

Transaction'lar ve limitler

Geçersiz node'lar ve üyelik referansları, o liste operation'ı depolamayı mutasyona uğratmadan önce başarısız olur; yakalanan bir hata, aynı event içindeki önceki geçerli operation'ları kullanılabilir bırakır

Yakalanmamış bir event hatası, operation bütçesi veya geçen-süre başarısızlığı, sorgu listesi mutation'larını, native value'ları, tekrar-instance'ları, tutulan script-object state'ini ve journal state'ini birlikte geri alır ve aynı runtime'ın yeniden denemesine izin verir

TXFAFormScriptLimits.MaxArrayItems, her tutulan liste uzunluğunu sınırlar ve bir event sırasında kümülatif liste object'lerini ve yeni tahsis edilen entry'leri ayrıca sınırlar; sıfır ayarı, 65.536'lık event context default'unu kullanır

Boş clone'lar object bütçesini tüketir, boş-olmayan clone'lar ayrıca entry bütçesini tüketir ve tutulan listeler ayrı başarılı event'ler boyunca sınırlı kalır

FormCalc ve PDF tüketimi

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

Literal xfa.form, xfa.datasets ve xfa.record path'lerinde FormCalc occurrence seçimi, native SOM resolution kullanır; bir collection property'sinden sonraki liste indeksleme o collection'ı indeksler

Runtime baytlarını XDP'ye kaydedin ve gerçek native field'lar ve görünümler üretmek için commit edilmiş value'lardan HPDFXFAWriteHeadlessPDF'e geçin — tutulan hayatta-kalan tekrar-instance referansları üzerinden edit'ler dâhil

TXFAHeadlessPDFOptions.Editable = False, onları flatten etmek yerine görünümlü read-only native field'lar oluşturur

Kapsam

Bu interface, bağımsız sorgu listeleri ve occurrence metadata sağlar; genel template/form node oluşturma ve klonlama, ek node-class scripting, schema validation ve harici media ayrı işler olarak kalır

XFA widget runtime · Native Data DOM