حل مسارات SOM الحية في XFA
التنفيذ العام مع EnableJavaScript يزوّد محلل النماذج الحي نفسه إلى resolveNode/resolveNodes على مستوى العقدة وxfa.resolveNode/xfa.resolveNodes وواصفات FormCalc
الحل يتبع النسخ المتكررة الحالية فورًا بعد إدخال نسخة أو إزالتها أو نقلها؛ والمعاملات الناجحة في runtime تستمر كتابات الحقول المنتقاة إلى أهداف بياناتها الأصلية وإلى XDP المحفوظ
المسارات والنسخ
| المسار | الانتقاء |
|---|---|
row[1].cell | الصف الثاني وخلية المنتقاة لديه |
row[*].cell | الخلية المنتقاة في كل صف |
$form.main.row.cell | الصف الأول وأول خلية عبر مسار مطلق |
row[-1].cell | الصف السابق للنسخة المستنتَجة |
row[+1].cell | الصف اللاحق للنسخة المستنتَجة |
main..cell[*] | خلايا الأشقاء المطابقة في فرع الحفيد الأول |
main.* | كل الأبناء المباشرين بترتيب المستند |
main.#field[name='target'] | حقول منتقاة بمسند خاصية تسمية |
main.#subform[*].#field | الحقل المنتقى تحت كل subform، مطابقًا أسماء الأصناف |
main.part\.name | مسار محلل JavaScript يحتوي نقطة مهربة في اسم عقدة |
الفهرس الغائب ينتقي نسخة واحدة؛ والمسار المطلق يستخدم النسخة الصفرية، بينما يستعير المسار محدود النطاق فهرس ancestor أو الحاوية المقابل عندما تمتلك البنى أشقاء متكررين
استنتاج الفهرس يتبع مستويات الهرمية المقابلة حتى عندما تكون لأسماء عقد المصدر والوجهة اسمان مختلفان؛ ومحددات الأصناف تستعير فهرس نسخة الصنف المقابل
الهدف أحادي النسخة يُنتقى دون اشتراط فهرس نسخة المستدعي؛ والنسخة المستنتَجة المفقودة تعيد قائمة فارغة أو null بدلًا من انتقاء نطاق آخر بصمت
الفهارس النسبية إزاحات من النسخة المستنتَجة غير المزينة وغير صالحة في المسارات المطلقة؛ وتعبيرات فهارس FormCalc يمكنها حساب نسخة لحظة التشغيل
الحاويات غير المسنّاة شفافة لبحث الأبناء المسنّى؛ وتأهل الوالد والخصائص المدعومة مثل rawValue وname وclassName وindex وpresence وaccess متاحة، وعمليات تصدير كائنات السكربت المعجمية يمكن حلها وإسنادها عبر مسارات FormCalc
الشرطات
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 تستخدم .(expression) وتنفّذ بـ candidate بوصفه this؛ ومسندات FormCalc تستخدم .[expression] وتحل الحقول النسبية مقابل ذلك المرشح
المسند ينتقي أشقاء مطابقين حتى عند إغفال [*]؛ ومسندات JavaScript تحل أيضًا أسماء حقول عارية في نطاق المرشح، ومسارات المسندات في مصدر FormCalc يجب تمريرها سلاسل محلل مقتبسة
بحث الحفيد يبحث بترتيب المستند عن فرع يلبي بقية مكونات المسار؛ والفرع بلا لاحقة مطابقة لا يُخفي مطابقة كاملة لاحقة
فهرس النسخة محلي لمجموعة أشقائه المطابقة؛ والفهرس خارج النطاق ينهي ذلك البحث للحفيد، فـ main..cell[1] لا ينتقي خلية في صف آخر عندما يكون للصف الأول خلية واحدة فقط
wildcard سابقًا يقيّم بحث الحفيد باستقلالية لكل سياق منتقى، وwildcard مباشرةً بعد جذر مطلق ينتقي أبناء الجذر
مسندات JavaScript تتلقى كائني xfa وevent للحدث الحالي؛ والبحث النسبي للمرشح واستثناءات المسند والكتابات الأصلية تتشارك المعاملة المحيطة
Eval المتداخلة ترث مرشح المسند وتستخدم متغيرات ودوال حساب معزولة وتتشارك استجابات الترجمة الأصلية وإعادة التشغيل transactional مع الحدث المحيط
Exists(missing) والواصل إلى نسخة مفهرسة غير موجودة يعيدان 0 عبر Exists؛ والاستخدام العادي لكائن FormCalc غير محلول يثير خطأ
الميزانيات والترحيل
المسارات تسمح بحد أقصى 128 مكوّنًا و65,536 وحدة UTF-16 code؛ والفهارس يجب أن تكون أعدادًا آمنة صحيحة، والتجوال والمسندات والترجمة الديناميكية وعمليات النسخ تتشارك ميزانيات تنفيذ الحدث
أخطاء المحلل واستثناءات المسندات والميزانيات المستنفدة تُجهض الحدث وتستعيد قيم الحقول الأصلية وترتيب النسخ وحالة السكربت عبر TXFAWidgetRuntime
resolveNodes العام الأقدم كان يوسّع الفهارس الغائبة عبر كل أسلاف متكررين؛ استخدم main.row[*].cell[*] عندما يكون المقصود كل صف وكل خلية، مستبدلًا main.row.cell[*]
التغطية
المحلل يعمل على كائنات نماذج حية يزوّدها ارتباطات الأحداث، بما يشمل الحقول وsubforms وdraws ومجموعات الاستبعاد والمناطق وكائنات السكربت، وData DOM الأصلي المكشوف عبر $data و$record، وعقد خصائص القالب المعلنة بسماتها الفعالة
هروب الأسماء في JavaScript مدعوم بسلاسل المحلل؛ ومعرّفات مصدر FormCalc تحفظ قواعد معرّفات المترجم
واجهات مرتبطة
HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Eval الديناميكية, مراجع FormCalc وبيئة تشغيل XFA التفاعلية