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

PathSeçim
row[1].cellİkinci row ve onun seçili hücresi
row[*].cellHer row'daki seçili hücre
$form.main.row.cellMutlak 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[*].#fieldHer subform altındaki seçili field, class adlarıyla eşleşir
main.part\.nameNode 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