مرجع XLSForm
مرجع سريع لمن يبني ملف XLSForm: ما تقرؤه CommonLynk من كل ورقة، وكل عمود ومفتاح، وما لا تدعمه، وأين تختلف عن ODK وKoboToolbox وSurveyCTO.
هذه الصفحة لمن يبني ملف XLSForm لاستيراده إلى CommonLynk. وهي تبيّن ما تقرؤه المنصة من كل ورقة، وعمل كل عمود ومفتاح، وما لا تدعمه وما يحدث له، وأين تختلف CommonLynk عن ODK وKoboToolbox وSurveyCTO.
قوائم أنواع الأسئلة والدوال والأعمدة والمفاتيح وقيم احتساب الدرجات في هذه الصفحة مولَّدة من المنصة نفسها، فهي تصف ما تفعله اليوم. وللاطلاع على شرح متدرّج لبناء نموذج، راجع «بناء نموذج» و«منطق التخطي واحتساب الدرجات».
ما تقرؤه CommonLynk من الملف
يُستورد ملف ODK أو KoboToolbox أو SurveyCTO العادي كما هو. وكل ما تضيفه CommonLynk اختياري، ومسمّى على طريقة تسمية تلك الأدوات لإضافاتها، فيبقى ملف CommonLynk قابلًا للفتح فيها.
| الورقة | ما يُقرأ منها |
|---|---|
survey | صف لكل سؤال أو مجموعة أو تكرار. |
choices | خيارات كل قائمة اختيار، وتُطابَق مع السؤال باسم القائمة دون تمييز بين الأحرف الكبيرة والصغيرة. |
settings | عنوان النموذج ومعرّفه وإصداره ولغته الافتراضية. |
commonlynk | اختيارية. إعدادات النموذج الخاصة بـ CommonLynk: انظر «ورقة commonlynk» أدناه. |
commonlynk_domains | اختيارية. تسميات مجالات احتساب الدرجات: انظر «احتساب الدرجات» أدناه. |
| أي ورقة أخرى | لا تُقرأ. وورقة الدليل في القالب الذي تقدّمه CommonLynk واحدة منها. |
في ورقة الأسئلة تُطبَّق على السؤال قيمة كل عمود من الأعمدة التالية. وتأخذ أعمدة التسمية والتلميح ورسالة القيد عمودًا لكل لغة، كما يشرح «بناء نموذج».
appearancecalculationchoice_filterconstraintconstraint_messagedefaulthintlabelnameread_onlyrelevantrepeat_countrequiredtype
أما أي عمود آخر يحمل قيمة في صف سؤال فيُحفظ مع ذلك السؤال: يظهر في تبويب التصميم للنموذج، ويُذكر في صفحة الاستيراد على أنه محفوظ غير مطبَّق، ويُكتب من جديد عند تصدير النموذج. فلا يضيع شيء مما كتبته في الطريق.
اسم السؤال هو هويته: يشير إليه منطق التخطي، ويطابق عليه التحديث، ويُسمّى به كل عمود في التصدير. اكتبه بأحرف لاتينية صغيرة وأرقام وشرطات سفلية، مبتدئًا بحرف؛ وتُحوَّل الأحرف الكبيرة إلى صغيرة، ويصبح أي حرف آخر شرطة سفلية. ولكل صف اسم إلا الملاحظة.
ثلاثة مسارات بثلاثة معانٍ
| المسار | ما يفعله |
|---|---|
| «النماذج ← استيراد XLSForm» | يُنشئ نموذجًا جديدًا في حالة المسودة، ويبيّن صفًا صفًا ما استُورد وما تغيّر في الطريق وما حُفظ. |
| «استيراد XLSForm» في تبويب التصميم لنموذج | يحدّث ذلك النموذج في مكانه. تُطابَق الأسئلة بأسمائها: يحتفظ السؤال المطابَق بإجاباته، والاسم الجديد سؤال جديد، والسؤال الذي يغفله الملف يُسحب إن كانت له إجابات ويُحذف إن لم تكن. ومتى صارت للنموذج ردود احتفظ كل سؤال بنوعه. |
| «تصدير» في بطاقة XLSForm لنموذج | يكتب النموذج في ملف. ولا يتغيّر شيء على المنصة. |
لا يُطبَّق الملف المطابق لآخر ملف بُني منه النموذج مرة أخرى إلا إذا اخترت «طبّق هذا الملف مرة أخرى» عند التحديث، وبدونه يقول الاستيراد إنه لم يتغيّر شيء. اختره عندما يتحسّن مستورد المنصة وينبغي إعادة بناء النموذج من الملف نفسه. ولا يُنشئ استيراد الملف نفسه مرتين في النشاط أو المشروع نفسه شيئًا في المرة الثانية.
أنواع الأسئلة
كل نوع سؤال في CommonLynk، وأنواع XLSForm التي تُستورد على أنها هو، وما يكتبه التصدير له.
| نوع السؤال | يُستورد من | يُكتب عند التصدير |
|---|---|---|
| نص قصير. ويُستورد صف الحساب نصًا قصيرًا محسوبًا، والصف المخفي نصًا قصيرًا. | textcalculatehidden | text |
| نص طويل | يُبنى في CommonLynk فقط | text + appearance multiline |
| رقم. ويُستورد سؤال النطاق رقمًا عاديًا. | integerdecimalrange | integer |
| رقم هاتف | يُبنى في CommonLynk فقط | text + appearance numbers |
| رقم هاتف محمول | يُبنى في CommonLynk فقط | text + appearance numbers |
| تاريخ. ويُستورد سؤال الوقت أو التاريخ والوقت تاريخًا، ولا يُجمع الوقت من اليوم. | datetimedatetime | date |
| اختيار واحد، يُعرض قائمة | select_one LIST | select_one LIST |
| اختيار متعدد | select_multiple LIST | select_multiple LIST |
| اختيار واحد، يُعرض قائمة منسدلة | select_one LIST + appearance minimal | select_one LIST + appearance minimal |
| مقياس ليكرت، من 1 إلى 5 | يُبنى في CommonLynk فقط | select_one cl_likert5 + appearance likert |
| نعم أو لا. ويُستورد سؤال الإقرار على هذا النوع. | acknowledge | select_one cl_yes_no |
| تقييم، من 1 إلى 10 نجوم | يُبنى في CommonLynk فقط | integer |
| مصفوفة أو شبكة. ولا شبكة في XLSForm، فيكتب التصدير ملاحظة مكانها. | يُبنى في CommonLynk فقط | note |
| ترتيب | rank LIST | rank LIST |
| موقع جغرافي. ويُستورد سؤال المسار أو المساحة على هذا النوع. | geopointgeotracegeoshape | geopoint |
| ملاحظة صوتية | audio | audio |
| صورة | imagephoto | image |
| فيديو | video | video |
| رفع مستند أو ملف | file | file |
| مسح رمز شريطي أو رمز QR | barcode | barcode |
| توقيع | signature | signature |
| ملاحظة: نص يظهر لمن يملأ النموذج، بلا إجابة | note | note |
النوع الذي يُبنى في CommonLynk فقط يُصدَّر بأقرب صيغة له في XLSForm. فإذا استُورد من جديد نموذجًا جديدًا صار النوع الذي تُستورد به تلك الصيغة لا النوع الأصلي: يصبح سؤال ليكرت سؤال اختيار، ورقم الهاتف نصًا قصيرًا. ولا يغيّر تحديث نموذج له ردود نوع أي سؤال موجود فيه.
تُفتح المجموعات والتكرارات وتُغلق بهذه الأنواع، مكتوبة بشرطة سفلية أو بمسافة:
begin_group·begin groupend_group·end groupbegin_repeat·begin repeatend_repeat·end repeat
أي نوع آخر يُتجاوز ويُذكر في صفحة الاستيراد، ولا يُحفظ صفه. ويشمل ذلك أنواع البيانات الوصفية هذه:
startendtodaydeviceidusername
تسجّل CommonLynk وقت بدء كل رد ووقت إرساله ومن أرسله، دون الحاجة إليها.
ورقة commonlynk
ورقة اختيارية من عمودين بالعنوانين التاليين، ومفتاح واحد في كل صف. والقيمة التي لا تعرفها المنصة تُذكر في صفحة الاستيراد وتُترك دون تعيين لتختارها في إعدادات النموذج، ولا تُخمَّن أبدًا.
settingvalue
| المفتاح | عند الاستيراد | المعنى |
|---|---|---|
title_en | يُطبَّق | عنوان النموذج بالإنجليزية، ويتقدّم على عنوان النموذج في ورقة الإعدادات. |
title_ar | يُطبَّق | عنوان النموذج بالعربية. |
title::<language> | يُطبَّق | عنوان النموذج بأي لغة أخرى تعرفها المنصة، وتُسمّى اللغة كما في عمود التسمية. |
form_type | يُطبَّق | نوع النموذج: واحد من أنواع النماذج المذكورة أدناه. |
scoring | يُطبَّق | طريقة احتساب درجة النموذج: طريقة احتساب أو كلمة احتساب. انظر «احتساب الدرجات». ويُقرأ أيضًا باسم scoring_method. |
pass_threshold | يُطبَّق | درجة النجاح، نسبةً مئوية. |
subject | يُطبَّق | السجل الذي يخصّه النموذج: واحدة من فئات المستجيبين المذكورة أدناه. ويُقرأ أيضًا باسم respondent_type. |
public | يُطبَّق | نعم أو لا، مكتوبتين بالإنجليزية: هل يمكن ملء النموذج عبر رابط عام. |
scale_max | يُتحقَّق منه ولا يُخزَّن | أعلى درجة يمكن أن يبلغها النموذج كله. انظر «احتساب الدرجات». |
scored_question_count | يُتحقَّق منه ولا يُخزَّن | عدد الأسئلة التي حددتها للاحتساب. ويذكر الاستيراد أي اختلاف في العدد. |
cl_version | يُقرأ | إصدار هذه الإضافات الذي كُتب له الملف، كي يُقرأ الملف الأقدم بالمعنى الذي قُصد به. والملف الذي يخلو منه يُقرأ على أنه الإصدار 1. |
هذه المفاتيح تُعدّ ملاحظاتك الخاصة: تُذكر في صفحة الاستيراد ولا تُطبَّق أبدًا، وأي مفتاح آخر تضيفه يُعامَل بالطريقة نفسها:
domainsidindicesinstance_nameitems_per_domainnotenotespurposepurpose_arpurpose_enrespondentversion
أنواع النماذج، للمفتاح form_type:
| القيمة | المعنى |
|---|---|
registration | تسجيل |
needs_assessment | تقييم الاحتياجات |
baseline_assessment | تقييم خط الأساس |
endline_assessment | تقييم نهاية المشروع |
pre_test | اختبار قبلي |
post_test | اختبار بعدي |
coaching_log | سجل جلسات التوجيه |
satisfaction_eval | تقييم الرضا |
feedback | نموذج الملاحظات |
referral | نموذج الإحالة |
other | أخرى |
enterprise_followup | يُجاب عنها لمنشأة بعد مدة من تدريب مالكها. تقرأ لوحة التحكم الأسئلة المسمّاة ef_formalised وef_formalised_date وef_hired_since_training وef_new_staff. |
فئات المستجيبين، للمفتاح subject:
| القيمة | المعنى |
|---|---|
individual | الأفراد |
household | الأسر |
establishment | المنشآت |
أعمدة الأسئلة الخاصة بـ CommonLynk
أعمدة اختيارية في ورقة الأسئلة، قيمة واحدة لكل سؤال. ولا تُطبَّق إلا على صف محدَّد للاحتساب: فالنقاط أو مفتاح الإجابة في صف غير محتسب يُحفظان ويُذكران، ولا يُطبَّقان.
| العمود | المعنى |
|---|---|
cl::scored | نعم، بالإنجليزية، لاحتساب السؤال في الدرجة. |
cl::points | عدد صحيح. في اختبار المعارف هي النقاط التي تكسبها الإجابة الصحيحة، وفي درجة التقييم انظر «كيف يضيف السؤال إلى مجموع التقييم». |
cl::correct | اسم الخيار الصحيح، أو النص الصحيح، لاختبار المعارف. ويسري على أسئلة الاختيار ونعم أو لا والنص القصير. |
cl::domain | مفتاح مجال الاحتساب الذي يُحتسب فيه السؤال. |
cl::reverse | نعم، بالإنجليزية، حين تكون الإجابة الأعلى هي الأفضل. يُحتسب السؤال في مجاله ويُعرض بجانب درجة النموذج، ولا يُضاف إليها ولا يُطرح منها أبدًا. |
cl::bound | على الملاحظة: القيمة yes تعرض الملاحظة في البطاقة نفسها مع السؤال الذي يليها، وتُقرأ مع ذلك السؤال. وعند التصدير تكون ملاحظة عادية تحمل هذه العلامة، فإعادة استيراد الملف تستعيد الربط. |
وأي عمود آخر يبدأ بالبادئة نفسها يُحفظ، ويُذكر على أنه محفوظ غير مطبَّق، ويُكتب من جديد عند التصدير، مثل أي عمود لا تفسّره المنصة.
احتساب الدرجات
يُحتسب للنموذج درجة بإحدى أربع طرق. حدّدها بمفتاح الاحتساب في ورقة commonlynk، أو في إعدادات النموذج.
| القيمة | ما يفعله |
|---|---|
none | بلا درجة. |
knowledge | اختبار بمفتاح إجابات. يكسب كل سؤال محتسب نقاطه حين تطابق إجابته الإجابة الصحيحة، دون تمييز بين الأحرف الكبيرة والصغيرة. والسؤال الذي لم يُجَب لا يكسب شيئًا من نقاطه، والسؤال الذي تخطّاه منطق النموذج يُستبعد من الحد الأعلى. وفي سؤال الاختيار المتعدد لا يُقارَن إلا أول خيار محدَّد. |
rating_average | متوسط قيم الأسئلة المحتسبة، يُرجَّح كل منها بنقاطه، وهي 1 ما لم تحددها. وتقرأ النسبة المئوية كل قيمة قياسًا إلى أعلى مقياسها. |
rating_sum | مجموع الأسئلة المحتسبة. ويُبيَّن أدناه كيف يضيف إليه كل سؤال. |
ويقبل مفتاح الاحتساب هذه الكلمات أيضًا، وتصبح كل منها طريقة احتساب:
| الكلمة | تصبح |
|---|---|
items | اختبار المعارف إذا كان لأي سؤال محتسب مفتاح إجابة، وإلا مجموع التقييم. |
scale | rating_average |
points | rating_sum |
calculated | rating_sum |
domains | rating_sum |
كيف يضيف السؤال إلى مجموع التقييم
يضيف سؤال الاختيار قيمة الخيار المختار مقسومة على أعلى قيمة بين خياراته، مضروبة في نقاطه. فالخيار المسمّى 0 أو 1 أو 2 وهكذا قيمته ذلك الرقم، والخيار المسمّى «نعم» بالإنجليزية قيمته 1 والمسمّى «لا» قيمته 0، والمطابقة على الاسم لا على التسمية الظاهرة. فإذا كانت الخيارات من 0 إلى 2 والنقاط 6، أضاف السؤال 0 أو 3 أو 6. وإذا ساوت النقاط أعلى خيار أضاف السؤال القيمة نفسها: فتسعة أسئلة خياراتها من 0 إلى 3 ونقاط كل منها 3 يتراوح مجموعها بين 0 و27.
أما السؤال المُدخَل، وهو الرقم أو سؤال ليكرت أو التقييم المبني في CommonLynk، فيضيف قيمته كما أُدخلت مضروبة في نقاطه. فللنقاط نفسها معنيان إذن: أقصى ما يضيفه سؤال الاختيار، ومضاعِف لقيمة السؤال المُدخَل.
سؤال الاختيار المحتسب الذي ليست خياراته أرقامًا ولا «نعم» و«لا» لا يمكن احتساب درجته، وكذلك سؤال الاختيار المتعدد: يذكره الاستيراد، ولا يضيف شيئًا.
في مجموع التقييم ومتوسطه، يُستبعد السؤال الذي لا إجابة له، سواء تُخطّي أو تُرك فارغًا، من الدرجة ومن الحد الأعلى معًا.
المفتاح scale_max في ورقة commonlynk هو أعلى درجة يمكن أن يبلغها النموذج كله. وهو تحقّق لا إعداد: يجمع الاستيراد ما يمكن أن تبلغه الأسئلة المحتسبة ويذكر أي اختلاف. وهو غير «الحد الأقصى لمقياس التقييم» في إعدادات النموذج، فذاك أعلى مقياس السؤال الواحد، ويُستعمل للسؤال المُدخَل الذي لا حد أعلى خاصًا به.
التحديث الذي يغيّر طريقة احتساب درجة النموذج يعيد احتساب ردوده المكتملة في الاستيراد نفسه، وتُعلَّم أي قيمة مؤشر محسوبة منها لتُحسب من جديد.
المجالات والأسئلة العكسية
المجال وسم على الأسئلة لا مجموعة: فقد يُحتسب سؤالان في مجموعة واحدة في مجالين مختلفين. سمِّ مجال السؤال المحتسب في عمود المجال. ثم يخزّن كل رد مكتمل درجة لكل مجال بجانب درجة النموذج، تظهر في صفحة الرد، وتُصدَّر بجانب الدرجة، وتُكتب من جديد عند التصدير، ويمكن للمؤشر أن يقرأ مجالًا واحدًا بدلًا من الدرجة الكلية.
تعطي ورقة commonlynk_domains كل مجال تسميته: صف لكل مجال، فيه المفتاح وعمود تسمية لكل لغة، واختياريًا الحد الأعلى الذي يمكن أن يبلغه المجال، ويُتحقَّق منه كما يُتحقَّق من scale_max ولا يُخزَّن، كما في المثال أدناه. ودون هذه الورقة يُسمّى المجال باسم مجموعته إذا لم تحوِ المجموعة غيره، وإلا طلب الاستيراد تسمية. ومع الورقة، يُذكر عمود المجال الذي يسمّي مفتاحًا غير مدرج فيها ولا يُطبَّق.
key | label::English (en) | label::Arabic (ar) | max |
|---|---|---|---|
risk | Risk factors | عوامل الخطر | 28 |
prot | Protective factors | عوامل الحماية | 8 |
السؤال المحدَّد عكسيًا يسير في الاتجاه المعاكس: الإجابة الأعلى هي الأفضل. ولا يُحتسب إلا في مجاله، ويُعرض بجانب درجة النموذج، ولا يُضاف إليها ولا يُطرح منها أبدًا، فلا تتجاوز الدرجة الكلية المعلنة. وإذا كانت كل الأسئلة المحتسبة عكسية، كوّنت هي درجة النموذج.
في المثال أعلاه، تكوّن أسئلة الخطر درجة النموذج من 28، وتُعرض أسئلة الحماية، المحدَّدة عكسيًا، بجانبها من 8.
التعبيرات
تُقرأ أعمدة الإظهار والقيد والحساب بقواعد واحدة، وتُقيَّم بالطريقة نفسها في الصفحة، وعلى الهاتف دون اتصال، وعلى الخادم. والدالة المقبولة في عمود منها مقبولة في العمودين الآخرين.
يمكن أن يستعمل التعبير إجابات أخرى وأرقامًا ونصًا بين علامتي اقتباس وعمليات حسابية ومقارنات وأداتي الوصل «و» و«أو» والأقواس. وفي القيد تمثّل النقطة الإجابة التي يُتحقَّق منها. والسؤال الذي لم يُجَب يجعل نتيجة الحساب فارغة لا صفرًا، ولاحتساب الفراغ صفرًا صرّح بذلك بدالة الشرط.
${name}'text'+ - * div mod= != > >= < <=and or( ).
وهذه هي الدوال التي تقيّمها:
| الدالة | ما يفعله |
|---|---|
if() | شرط، ثم قيمة إذا تحقق، ثم قيمة إذا لم يتحقق. ويمكن أن يجمع الشرط مقارنات بـ «و» و«أو». |
concat() | تضم وسائطها نصًا واحدًا. |
choice-label() | تأخذ سؤالًا وقيمة، وتعطي تسمية ذلك الخيار في قائمة السؤال. ويُسمّى السؤال ولا تُقرأ إجابته. |
count-selected() | عدد الخيارات في إجابة الاختيار المتعدد، و0 إن لم تحوِ شيئًا. |
false() | خطأ. |
index() | ترتيب الإدخال الحالي في التكرار بدءًا من 1، وفارغة خارج التكرار. |
not() | تقلب الصواب خطأً والخطأ صوابًا. |
pulldata() | تأخذ ملفًا وعمودًا وعمود مفتاح ومفتاحًا، وتعطي قيمة من مجموعة بيانات مرفقة بالنموذج، من الصف الذي يساوي فيه عمود المفتاح المفتاح. تُكتب الثلاثة الأولى بين علامتي اقتباس، وإذا لم يوجد الصف أو كان المفتاح فارغًا كانت النتيجة فارغة. |
regex() | تأخذ نصًا ونمطًا، وتعطي صوابًا إذا وُجد النمط في النص. ويُكتب النمط بين علامتي اقتباس. |
selected() | تأخذ سؤالًا وقيمة، وتعطي صوابًا إذا كان ذلك الخيار بين الإجابات. والتحديد يُحتسب 1 في العمليات الحسابية. |
selected-at() | تأخذ سؤالًا وموضعًا، وتعطي الخيار في ذلك الموضع من إجابة الاختيار المتعدد بدءًا من 0. ومع دالة ترتيب الإدخال تختبر الإدخال الحالي في التكرار. |
string-length() | عدد الأحرف في نص. |
today() | يوم إعطاء الإجابة، بتوقيت مساحة العمل. انظر «التواريخ» أدناه. |
true() | صواب. |
count() | على التكرار: عدد الإدخالات التي تحوي إجابة. سمِّ التكرار نفسه أو أي سؤال داخله. |
sum() | على التكرار: مجموع سؤال داخله. |
min() | على التكرار: أصغر قيمة لسؤال داخله. |
max() | على التكرار: أكبر قيمة لسؤال داخله. |
avg() | على التكرار: متوسط سؤال داخله. |
وفي الحساب فقط، تعطي هذه الصيغة تسمية الخيار المختار في سؤال، كما يكتبها ODK:
jr:choice-name(${q}, '${q}')
قراءة التكرار كاملًا
تقرأ دوال التجميع الخمس، وهي آخر خمس دوال في الجدول أعلاه، كل إدخالات التكرار من أي موضع في النموذج. سمِّ التكرار نفسه لعدّ إدخالاته، أو سؤالًا داخله لقراءة قيمه. ولا يُعدّ إلا الإدخال الذي يحوي إجابة واحدة على الأقل. وإذا لم توجد إدخالات أعطت دالتا العدّ والجمع صفرًا وأعطت البقية فراغًا، وقيمة واحدة فارغة أو غير رقمية تجعل الجمع والأصغر والأكبر والمتوسط فارغة. وتتبع القيمة الإدخالات كلما أُضيفت أو حُذفت، وتُحسب من جديد عند الإرسال. ويجب أن تسمّي دالة التجميع تكرارًا أو سؤالًا داخله، وأي اسم آخر يُذكر وتُخزَّن نتيجته فارغة.
لعدّ الإدخالات التي تطابق شرطًا، اكتب داخل التكرار حسابًا يساوي 1 عند المطابقة و0 في غيرها، ثم اجمعه بدالة الجمع بعد التكرار:
type | name | calculation | الموضع |
|---|---|---|---|
calculate | e_is_female | if(${e_sex} = 'female', 1, 0) | داخل التكرار |
calculate | jobs_female | sum(${e_is_female}) | بعد التكرار |
التواريخ
دالة اليوم تعطي يوم إعطاء الإجابة، بتوقيت مساحة العمل. ويُقارَن تاريخان مكتوبان بالسنة والشهر واليوم، بما في ذلك تاريخ مكتوب بين علامتي اقتباس، مقارنة صحيحة من حيث الأسبق والأحدث.
دون اتصال، دالة اليوم تعطي يوم جمع الرد لا يوم وصوله إلى الخادم. ولا يُتحقَّق من رد أُرسل مرة أخرى قياسًا إلى يوم لاحق. وإذا لم يُبلغ الهاتف عن اليوم، لا يُحكم على القيد الذي يستعمل دالة اليوم: تُحفظ الإجابة ويُعلَّم السؤال للمراجعة. وفي عمود القيمة الافتراضية، دالة اليوم تعطي يوم فتح النموذج.
ما لا تدعمه المنصة وما يحدث له
الجزء الذي لا تقيّمه المنصة يُذكر في صفحة الاستيراد، ويبقى باقي الصف ساريًا، ويُحفظ نصك الأصلي مع السؤال ويُكتب من جديد عند تصدير النموذج. وإلى أن تغيّره، يتوقف ما يحدث على العمود:
- في عمود الإظهار يظهر السؤال دائمًا؛
- في عمود القيد لا يُفرض ذلك الجزء، وإن ظل الحد البسيط في القيد نفسه مفروضًا؛
- في عمود الحساب تُخزَّن القيمة فارغة.
| التعبير | السبب |
|---|---|
now() | الوقت من اليوم ليس جزءًا من القواعد. استعمل دالة اليوم للتاريخ. |
date('2026-01-01') | لا تُقيَّم. والتاريخ المكتوب بين علامتي اقتباس يُقارَن تاريخًا دونها. |
count(${employee}[e_sex = 'female']) | التصفية بين قوسين معقوفين ليست جزءًا من القواعد. عدّ المطابقات بحساب مساعد داخل التكرار، كما سبق. |
sum(if(${e_sex} = 'female', 1, 0)) | تُرفض بدلًا من أن تعطي عددًا خاطئًا: انظر «قراءة التكرار كاملًا». |
count-selected-by(${crops}, 'onion') | ليست دالة في XLSForm ولا في ODK، وتُذكر كأي دالة غير معروفة. |
today() + 7 | الحساب على التاريخ ليس جزءًا من القواعد. قارن التواريخ بدلًا من ذلك، مثل . <= today(). |
round(${area}, 2) | وأي دالة ليست في الجدول أعلاه تُذكر بالطريقة نفسها. |
ويُذكر كذلك ما لا يُدعم من البنية: يُدمج التكرار الذي داخل تكرار في التكرار المحيط به، ولا يُطبَّق شرط الإظهار على صف بداية التكرار، ويُعرض المظهر المختصر على سؤال الاختيار المتعدد قائمة مربعات اختيار. وتبيّن الاختلافات أدناه السبب.
الاختلافات عن ODK وKoboToolbox وSurveyCTO
حيث يتصرف هنا ملف يعمل في تلك الأدوات تصرفًا مختلفًا، ولماذا. وكل اختلاف مقصود ما لم يقل صفه غير ذلك.
| في CommonLynk | ODK وKoboToolbox وSurveyCTO | السبب |
|---|---|---|
| لا يُعدّ إدخال التكرار إلا إذا حوى إجابة واحدة على الأقل، في دالة العدّ وفي كل دالة تجميع أخرى. | يُعدّ كل إدخال أُنشئ، بما في ذلك الفارغ. | فيطابق العدد حينئذ الصفوف التي يحويها التصدير والقيمة التي يقرؤها المؤشر. ولا يمكن الدفاع عن عدد 5 بجانب أربعة صفوف مصدَّرة. |
| التصفية بين قوسين معقوفين تُذكر، وتُحفظ كما كُتبت، ولا تُقيَّم. | تُقيَّم. | قواعد واحدة تقيّم كل قاعدة في الصفحة ودون اتصال وعلى الخادم، ولا تصفية فيها. وللعدّ المشروط صيغة مدعومة: الحساب المساعد. |
now() date()تُذكر الدالتان ولا تُحسبان، وكذلك الحساب على التاريخ. | تُقيَّم الثلاثة كلها. | دالة today() هي التاريخ الوحيد الذي تعرّفه القواعد، حتى تعطي القاعدة الجواب نفسه متصلًا وغير متصل وعلى الخادم. |
| التكرار الذي داخل تكرار يُدمج في التكرار المحيط به، ويقول الاستيراد ذلك. | تتداخل التكرارات. | التكرار هنا مستوى واحد عن قصد. والدمج يُبقي كل سؤال وإجاباته، فلا يسقط شيء. |
| لا يُطبَّق شرط الإظهار على صف بداية التكرار، ويقول الاستيراد ذلك. | يُظهر الشرط التكرار كله أو يخفيه. | غير مدعوم بعد. ضع الشرط على مجموعة تحيط بالتكرار، أو على الأسئلة داخله، فكلاهما يُطبَّق. |
| المظهر المختصر على سؤال الاختيار المتعدد يُعرض قائمة مربعات اختيار، ويقول الاستيراد ذلك. | قائمة منسدلة مدمجة من مربعات الاختيار. | القائمة المنسدلة هنا تحمل إجابة واحدة، ورسم سؤال الاختيار المتعدد بها يُضيّع كل خيار عدا الأول. |
| تُتجاوز أنواع البيانات الوصفية المذكورة في «أنواع الأسئلة»، وهي وقت البدء ووقت الانتهاء واليوم ومعرّف الجهاز واسم المستخدم، ويذكر الاستيراد كلًا منها. | تُسجَّل مع كل إرسال. | تسجّل CommonLynk في كل رد وقت بدئه ووقت إرساله ومن أرسله. |
| يُستورد سؤال الوقت أو التاريخ والوقت تاريخًا. | للوقت نوع مستقل. | غير مدعوم بعد: لا يوجد نوع سؤال للوقت. |
| احتساب الدرجات جزء من النموذج: طريقة، ونقاط لكل سؤال، ومجالات، وأسئلة عكسية، تُخزَّن في كل رد، وتُصدَّر، ويُعاد احتسابها حين يتغيّر النموذج، ويقرؤها المؤشر. | لا نموذج لاحتساب الدرجات، فالدرجة صف حساب يكتبه المؤلف. | الدرجة المخزّنة قيمة واحدة يقرؤها كل تقرير وتصدير ومؤشر بالطريقة نفسها. وليس لدى تلك الأدوات نموذج احتساب يُحتذى، فصُمّم هذا النموذج انطلاقًا من الأدوات التي يحتسب درجاتها. |
| يُرفض النموذج الذي فيه تكرار على الرابط العام المجهول، أما الرابط الخاص بكل مستجيب فيعرض التكرارات كاملة. | تعرض نماذج الويب التكرارات. | صفحة الرابط العام لا تعرض أي تكرار، فتضيع الإدخالات دون تنبيه. والرفض أسلم من فقدان البيانات. |
سلوك العمل دون اتصال الذي يغيّر طريقة البناء
- يُتحقَّق من القيد على الهاتف كلما تغيّرت الإجابة، وقبل الشاشة التالية، وعند الإرسال، حتى دون اتصال، ثم يتحقق منه الخادم مرة أخرى.
- تتبع دالة اليوم القواعد المذكورة في «التواريخ»: فهي دون اتصال يوم إعطاء الإجابة، لا يوم وصول الرد إلى الخادم.
- لا ينتقل إلى هواتف الجمع مع النموذج إلا الأعمدة التي تقرؤها دالة سحب البيانات فيه. أرفق مجموعة البيانات قبل النشر: فالنموذج الذي تنقصه مجموعة بياناته لا يمكن نشره ولا تفعيله. واستبدال مجموعة البيانات ينشر إصدارًا جديدًا من النموذج، وتحتفظ الردود بالبيانات التي مُلئت بها.
- السؤال المسمّى باسم حقل من حقول ملف فئة المستجيبين في النموذج يُملأ مسبقًا من سجل المستجيب، ثم ينتقل ذلك الحقل إلى هواتف الجمع لكل من في القائمة. غيّر اسم السؤال إن لم يكن بحاجة إلى ملء مسبق.