Canlı XFA SOM Path Resolution
EnableJavaScript ile genel yürütme, aynı canlı form resolver'ı node-düzeyi resolveNode/resolveNodes'a, xfa.resolveNode/xfa.resolveNodes'a ve FormCalc accessor'larına sağlar
Resolution, instance ekleme, kaldırma veya taşımanın hemen ardından mevcut tekrar-occurrence'ları izler; başarılı runtime transaction'ları, seçili field yazmalarını native data hedeflerine ve kayıtlı XDP'ye kalıcılaştırır
Path'ler ve occurrence'lar
| Path | Seçim |
|---|---|
row[1].cell | İkinci row ve onun seçili hücresi |
row[*].cell | Her row'daki seçili hücre |
$form.main.row.cell | Mutlak bir path üzerinden ilk row ve ilk hücre |
row[-1].cell | Çıkarılmış occurrence'dan önceki row |
row[+1].cell | Çıkarılmış occurrence'dan sonraki row |
main..cell[*] | İlk descendant dalındaki eşleşen kardeş hücreler |
main.* | Document sırasına göre tüm doğrudan child'lar |
main.#field[name='target'] | Bir adlandırma property predicate'i tarafından seçilen field'lar |
main.#subform[*].#field | Her subform altındaki seçili field, class adlarıyla eşleşir |
main.part\.name | Node adında escape edilmiş nokta içeren bir JavaScript resolver path'i |
Atlanmış bir indeks tek bir occurrence seçer; mutlak bir path occurrence zero kullanırken, scope'lu bir path yapılar tekrar-kardeşlere sahip olduğunda karşılık gelen ancestor veya container indeksini ödünç alır
İndeks çıkarımı, kaynak ve hedef node'lar farklı adlara sahip olsa bile karşılık gelen hiyerarşi düzeylerini izler; class selector'ları, karşılık gelen class occurrence indeksini ödünç alır
Tek-occurrence'lı bir hedef, çağıranın occurrence indeksini gerektirmeden seçilir; eksik bir çıkarılmış occurrence, başka bir scope'u sessizce seçmek yerine boş liste veya null döndürür
Göreli indeksler, süslenmemiş çıkarılmış occurrence'dan offset'tir ve mutlak path'lerde geçersizdir; FormCalc indeks ifadeleri, runtime'da bir occurrence hesaplayabilir
Adsız container'lar, adlandırılmış child aramasına saydamdır; parent nitelemesi ve rawValue, name, className, index, presence ve access gibi desteklenen özellikler kullanılabilir ve script-object lexical export'ları FormCalc path'leri üzerinden çözümlenebilir ve atanabilir
Koşullar
const rows = xfa.resolveNodes("main.row[*].(Number(this.cell.rawValue)>15)");
const selected = xfa.resolveNodes("main.row[*].[cell ge 20].cell");
target = Sum($.resolveNodes("row.[cell ge 20].cell"))
row[1].cell = 25
var p = Ref(row[1].cell)
p = 30
JavaScript predicate'leri .(expression) kullanır ve aday this olarak yürütür; FormCalc predicate'leri .[expression] kullanır ve göreli field'ları o adaya karşı çözer
Bir predicate, [*] atlanmış olsa bile eşleşen kardeşleri seçer; JavaScript predicate'leri ayrıca aday scope'unda çıplak field adlarını çözer ve FormCalc kaynağındaki predicate path'leri quote'lanmış resolver string'leri olarak geçirilmelidir
Descendant araması, kalan path bileşenlerini karşılayan bir dalı document sırasına göre arar; eşleşen soneki olmayan bir dal, sonraki eksiksiz bir eşleşmeyi gizlemez
Bir occurrence indeksi, kendi eşleşen kardeş grubuna lokaldir; aralık-dışı bir indeks o descendant aramasını sonlandırır — böylece main..cell[1], ilk row'da tek hücre varken başka bir row'daki hücreyi seçmez
Öncelen bir wildcard, her seçili context için descendant aramasını bağımsız değerlendirir ve mutlak bir root'tan hemen sonraki wildcard, root'un child'larını seçer
JavaScript predicate'leri, mevcut event'in xfa ve event object'lerini alır; aday-göreli arama, predicate exception'ları ve native yazmalar, kapsayan transaction'ı paylaşır
İç-ice Eval, predicate adayını kalıtır, izole calculation variable'ları ve function'ları kullanır ve native compilation response'larını ve transactional replay'i kapsayan event ile paylaşır
Exists(missing) ve mevcut-olmayan bir indeksli occurrence'a bir accessor, Exists üzerinden 0 döndürür; çözümlenmemiş bir FormCalc object'inin sıradan kullanımı hata raise eder
Bütçeler ve migration
Path'ler, en fazla 128 bileşen ve 65.536 UTF-16 code unit'e izin verir; indeksler safe integer olmalıdır ve traversal, predicate'ler, dinamik compilation ve instance operation'ları event yürütme bütçelerini paylaşır
Parser hataları, predicate exception'ları ve aşılmış bütçeler event'i abort eder ve native field value'larını, instance sırasını ve script state'ini TXFAWidgetRuntime üzerinden geri alır
Önceki genel resolveNodes, atlanmış indeksleri tüm tekrar-ancestor'lara genişletiyordu; her row ve her hücre kastediliyorken main.row.cell[*] yerine main.row[*].cell[*] kullanın
Kapsam
Resolver, event binding'leri tarafından sağlanan canlı form object'leri üzerinde çalışır; field'lar, subform'lar, draw'lar, exclusion grupları, area'lar ve script object'ler, $data ve $record üzerinden açığa çıkarılan native Data DOM ve etkin attribute'lu bildirilmiş template property node'ları dâhil
JavaScript ad escaping'i resolver string'leriyle desteklenir; FormCalc kaynak identifier'ları, compiler'ın identifier gramerini korur
İlgili API'ler
HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Dinamik Eval, FormCalc References ve Interactive XFA Runtime