الخلاصة
- وصف RFC 4180 الصادر في أكتوبر 2005 صيغة شائعة لملفات CSV وسجّل نوع الوسائط
text/csv. وهو وثيقة معلوماتية تقر باختلاف التطبيقات، وتترك بيان وجود صف العناوين لمعامل اختياري. - عرّف RFC 7111 الصادر في يناير 2014 مقاطع
#row=4و#col=2و#cell=4,1لاختيار صف أو عمود أو خلية بحسب موضعها. يبدأ العد من واحد. البرنامج الذي لا يفهم المقاطع يستطيع مع ذلك جلب الملف الكامل. - الموضع ليس هوية السجل. إذا أُضيف صف قبل الرابع، اختار
#row=4شاغل الموضع الجديد. ولا يستطيع الخادم أن يعرف على نحو موثوق إن كان طلب الملف قد أتى من رابط يتضمن مقطعاً.
عنوان دقيق لسطر واحد
تنشر مؤسسة جدول قرارات في ملف CSV. تريد كاتبة مقال الاستشهاد بالقرار الموجود في الصف الرابع. رابط الملف وحده يحمّل القارئ عبء فتح الجدول والعد. إضافة #row=4 تجعل الإحالة تبدو كعنوان مباشر للقرار: حاشية قصيرة قابلة للنقر، لا رحلة بحث في ملف كامل.
جاء هذا الشكل في RFC 7111 المنشور في يناير 2014. أضاف النص مُعرّفات مقاطع لعناوين موارد text/csv: row للصفوف، وcol للأعمدة، وcell للحقل الواقع عند تقاطعهما. المثال data.csv#row=4 يحدد رابع صف في الملف. وفي الجدول الذي استخدمه المؤلفون يكون الصف الأول رؤوس الأعمدة؛ رابع صف إذن هو ثالث سجل بيانات. حتى عبارة «رابع سجل» قد تقود إلى موضع مختلف إذا نُسي صف العناوين.
كانت الأرضية التي بُني عليها المؤشر أقل انضباطاً. RFC 4180 الصادر في أكتوبر 2005 سجّل text/csv ووصف أعراف الفواصل وعلامات الاقتباس ونهايات السطور والرؤوس. مقدمته تقول إن ملفات CSV كانت تنتقل بين برامج الجداول منذ زمن طويل بلا وصف رسمي واحد. وهو يعترف باختلافات معتبرة بين البرامج. لذلك كان النص المعلوماتي تسجيلاً لممارسة قائمة، لا إعلاناً بأن كل ملف CSV صار يتصرف مثل الآخر.
يمكن لنوع الوسائط أن يبيّن وجود رأس جدول بواسطة المعامل الاختياري header=present أو غيابه بواسطة header=absent. حين يغيب المعامل يقرر برنامج القراءة بنفسه. أما مقطع RFC 7111 فيعد الصفوف الموجودة في الملف ابتداءً من واحد. لا تكفي الدقة الظاهرية للرابط ما لم يعرف كاتبه هل الصف الأول اسم الحقول أم أول واقعة.
الرقم يعرف المقعد ولا يعرف صاحبه
لم تقف الصيغة عند صف مفرد. #col=2 يختار العمود الثاني، و#cell=4,1 الحقل الأول في الصف الرابع. تسمح الشرطة بتحديد مدى، وتشير النجمة إلى آخر صف أو عمود، وتجمع الفاصلة المنقوطة اختيارات منفصلة. هكذا أمكن الإشارة إلى قطعة صغيرة من ملف عام من دون أن ينشئ ناشره صفحة مستقلة لكل خلية.
لكن #row=4 لا يحمل مفتاح السجل ولا بصمة القيمة ولا تاريخ النسخة التي رآها صاحب الحاشية. يصل الملف إلى برنامج القارئ، فيعد حتى الرابع. إذا وجد صفاً رابعاً يستطيع تمييزه بدقة تامة. ولا يملك من الرقم وحده ما يثبت أن هذا هو السجل الذي كان هناك قبل أشهر.
لنفترض أن الصف الرابع حمل قرار موافقة. اكتشف ناشر الجدول قراراً أقدم غاب عن الترتيب، فأضافه فوقه. انتقلت الموافقة إلى الصف الخامس. الرابط القديم لا يزال يفتح الملف؛ مقطعه سليم؛ والصف الرابع موجود. قد يضيئه برنامج متوافق بشكل جميل، بينما يكون القرار الذي يدعم المقال قد نزل سطراً. فحص «هل تعمل URL؟» سيجيب بنعم عن سؤال غير السؤال الذي يهم القارئ.
حذف صف سابق يسبب انزياحاً في الاتجاه الآخر، وإعادة الترتيب تحرك سجلات كثيرة دفعة واحدة. إدخال عمود قبل خلية محددة قد يغيّر مقصد #cell=. لا تفترض هذه النتائج خطأً برمجياً؛ إنها نابعة من تعريف الموضع في RFC 7111. قد ينفذ البرنامج التعليمات بأمانة ويعرض دليلاً غير ذلك الذي عناه الكاتب.
لإثبات انزياح إحالة حقيقية يلزم ملف قديم مؤرخ ونسخة لاحقة، ثم تتبع السجل نفسه بينهما. النصوص الأصلية هنا تشرح الآلية ولا تسرد واقعة بعينها. عند فحص حاشية محددة، تكون القطعة الناقصة واضحة: النسخة التي كانت أمام الكاتب عندما وضع الرابط.
الخادم يرسل الجدول ولا يرى إصبع القارئ
توزيع الأدوار هذا أقدم من CSV. يشرح RFC 3986 المنشور في يناير 2005 أن مقطع URI مرجع غير مباشر يفسره العميل. يُفصل ما بعد # قبل استرجاع المورد الأساسي، ويعتمد تفسيره على نوع الوسائط الذي عاد، ثم يحسم برنامج المستخدم الجزء المحدد. نقل RFC 7111 هذه القاعدة العامة إلى text/csv.
لا تصل إلى الخادم عبارة «أرسل الصف الرابع». يرسل ملف CSV كله، ثم يختار البرنامج الداعم للمقاطع صفاً منه. يقول نص 2014 صراحة إنه لا توجد للخادم طريقة موثوقة لمعرفة هل استخدم الطالب مقطعاً عند طلب الملف. سجل الوصول يثبت تسليم الجدول، ولا يثبت أي صف كان كاتب الرابط يقصد عرضه.
يمكن لبرنامجين فتح الرابط نفسه وإعطاء تجربتين مختلفتين. أحدهما يميز الصف الرابع؛ الآخر لا يدعم مقاطع CSV فيفتح الجدول كاملاً أو ينزله. يصف RFC ذلك بوصفه أثراً للنشر التدريجي. يظل العنوان الأساسي قابلاً للاستخدام، وهذا يسهل تداول الرابط، لكنه يترك «دقة» الحاشية معلقة بما يفعله برنامج المستلم.
في هذا التصميم حرية مفيدة لكاتب الإحالة: يستطيع اختيار جزء من ملف تملكه مؤسسة أخرى من دون تغيير خادمها أو طلب واجهة جديدة. لكن استجابة الخادم الناجحة لا تثبت أن الجزء قد ظهر للقارئ أو أن القيمة قد فُحصت. تلك الخطوة تقع بعد التسليم، في جانب العميل.
توجد قواعد للأرقام المستحيلة. المقطع ذو الصياغة الخاطئة يُتجاهل ولا يُصحح بالتخمين. صف مفرد خارج طول الملف يُتجاهل، والمدى الذي يتجاوز نهايته يُقص إلى الحجم الموجود. هذه القواعد لا تفحص صفاً رابعاً صحيحاً من حيث الموضع لكنه صار يحمل واقعة مختلفة. الرابط السليم قد يخفي تبدل الدليل.
ويحذر القسم الأمني في RFC 7111 من سوء الفهم عندما يعرض برنامج الجزء المختار ويعرض آخر الملف كله. الوثيقة تحدد ما يفعله العميل الداعم، لكنها لا تعطي جدولاً بإصدارات المتصفحات التي طبقت ذلك. السجلات المؤرخة للتنفيذ هي ما يكمل تاريخ الانتشار.
عنوان يعيش أطول من الواقعة
انتشر CSV لأن نشر ملف بسيط رخيص وسهل. أعطاه RFC 4180 اسماً معروفاً في أنواع الوسائط، ثم أتاح RFC 7111 الاقتباس من داخله من غير بناء خدمة بيانات كاملة. يوفر هذا جهداً على الناشر والباحث، ويترك حفظ هوية الواقعة المقتبسة لمهمة أخرى.
إن كانت الإشارة مؤقتة إلى رابع صف في ملف اليوم، فقد يكفي المقطع. أما قول يراد التحقق منه بعد سنوات فيحتاج نسخة مؤرخة محفوظة أو مفتاح سجل مستقل عن ترتيب الصفوف أو عنواناً ثابتاً للواقعة نفسها. هذه الأشياء أغلى من لصق #row=4، لكنها تخبر القارئ المستقبلي أي قرار كان المقصود بعد أن يعاد ترتيب الجدول.
صدر RFC 7111 بوصفه تقديماً مستقلاً معلوماتياً، ونال تعديل تسجيل text/csv موافقة IESG المطلوبة. عرّف طريقة اختيار المكان؛ لم يمنح السجل الجالس فيه اسماً دائماً. تستطيع اللافتة على الباب أن تبقى بينما يغادر صاحب الغرفة.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات





