الخلاصة
- خصصت RFC 1874 النوع
text/sgmlللكيانات التي يستطيع الإنسان فهم معناها العام من دون نظام SGML، وجعلت البقيةapplication/sgml. كان التصنيف متعلقاً بالتراجع عند غياب البرنامج، لا بخلو المحتوى من الأفعال. - تعاملت
charsetوSGML-bctfوSGML-bootمع عرض النص، وتحويل تركيبات البت إلى ثمانيات، والإشارة إلى جزء MIME مستقل يحمل خريطة إقلاع. وجود المعامل لا يثبت أن المستقبل طبقه. - حذرت الوثيقة من أن نظام SGML قد يسمح بأوامر على مستوى النظام. وأثبت فصل XML لاحقاً أن القرابة النحوية لا تجعل المحللات أو المعاملات أو أدوار الكيانات قابلة للاستبدال.
بدأ التصميم من جهاز لا يفهم SGML
لم يكن السؤال الأول كيف تعرض محطة كاملة الإمكانات الوثيقة، بل ماذا يرى من لا يملك برنامج SGML. قالت RFC 1874 إن text/sgml مناسب عندما يستطيع الإنسان تمييز المحتوى بسهولة من دون برنامج العرض المتخصص. ولكي يبقى ذلك ممكناً، كان كل سجل SGML محدد برمزي بدء السجل ونهايته يقابل سطراً واحداً في جسم MIME.
حافظ الشرط على معنى أدنى. لم يضمن إخفاء الوسوم، ولا حل مراجع الكيانات، ولا إعادة بناء التسلسل الهرمي أو التقديم المقصود. قد يقرأ المستلم الفكرة ولا يحصل على الوثيقة كما تخيلها المرسل.
أما الكيان الذي لا يؤدي هذا الغرض من دون المعالجة فكان يذهب إلى application/sgml. لم تكن القسمة حكماً على قيمة المحتوى، بل وصفاً لما يحدث عند فقدان القدرة المتخصصة.
شرح RFC 2046 لاحقاً دور النوع الأعلى في MIME. حتى إذا جهل البرنامج النوع الفرعي، يستطيع أن يقرر أن إظهار بيانات نصية مجهولة قد يكون معقولاً، بخلاف تحويل صورة أو صوت مجهولين إلى محارف. لذلك ينبغي أن تعطي الأنواع النصية فكرة عامة من دون أداة خاصة.
كان اسم text ينظم سلوك الجهل. ولم يمنح المحلل المعروف سلطة إضافية.
لم تكن المعاملات الثلاثة إيصالاً واحداً
خدم charset المسار الذي يعرض text/sgml كنص عادي. أما النظام المدرك لـSGML فكان ينظر إلى SGML-bctf: صيغة تحويل تركيبات البت التي تشرح كيف تحولت أرقام SGML ثابتة العرض إلى تيار الثمانيات المنقول.
ذكرت الوثيقة التحويل المطابق وصيغاً ثابتة ومتغيرة. وقد يعرف المستقبل اسم النوع ولا يدعم قيمة التحويل. وقد يعرض محارف تبدو صحيحة، بينما لا تطابق أرقام المحارف التي تفترضها إعلانات SGML. المعامل تصريح من المرسل، لا سجل من المستقبل.
أضاف SGML-boot تبعية خارجية. لم تكن قيمته خريطة الإقلاع، بل Content-ID لجزء MIME آخر من نوع application/octet-stream. احتوى ذلك الجزء ثلاثيات من الأعداد لإعادة ربط أرقام المحارف المهمة في إعلان SGML، ولم ينطبق إلا على كيان وثيقة.
الإشارة لا تساوي الحيازة. قد يغيب الجزء، أو يتكرر المعرّف، أو يفصل وسيط الجسم عن بنية multipart. وبعد العثور عليه يبقى تفسير الثلاثيات وتحليل الإعلان خطوتين مستقلتين.
أنشأت RFC 1590 إجراء عاماً لتسجيل أنواع الوسائط. جعل السجل معنى الاسم قابلاً للفحص، لكنه لم يفحص كل رسالة ولم يصادق على برنامج موجود لدى المستلم.
عند تشغيل المحلل تغيرت جهة السيطرة
نبّه قسم الأمن في RFC 1874 إلى أن كيانات SGML تُحلل وتُعالج داخل نظام المستقبل. وقد تسمح بعض الأنظمة بسلاسل أوامر صريحة على مستوى النظام. كما يمكن لتعليمات المعالجة الخاصة بالعرض أو التنضيد أن تحمل مخاطر شبيهة بـPostScript.
لهذا لم يكن text/sgml مرادفاً لمادة خاملة. كان بالإمكان عرض السطور في مسار منخفض الصلاحية. أما تمريرها إلى نظام SGML ففتح وظائف تفسير وربط وربما تنفيذ. نجاح العرض لا يأذن بالتحليل.
يمكن لمحلل أن يبني شجرة صحيحة ويحظر كل تعليمة نشطة. ويمكن لآخر أن يفشل قبل النحو بسبب BCTF. ويمكن لعارض بسيط أن يقدم معنى مفيداً من دون فهم البنية. جمع الحالات تحت عبارة «فُتحت الوثيقة» يمحو موضع القرار.
طلب MIME أيضاً تجاهل المعاملات المجهولة، حمايةً لقابلية التوسع. قد يقبل البرنامج الغلاف بذلك، لكنه إذا تجاهل SGML-boot لا يثبت أنه أعاد بناء الوثيقة بأمانة. قبول النقل ليس اكتمال التطبيق.
رفض XML أن يحوّل النسب إلى توافق
كان XML مجموعة فرعية من SGML، لكن RFC 2376 أعطته text/xml وapplication/xml. فالعديد من برامج XML لا تعالج مجموعة SGML الأكبر، وبرامج SGML لا تعالج دائماً التصحيحات التي استخدمها XML، ومعاملا BCTF وboot لا ينتميان إلى XML وسيكونان غامضين.
وصفت «المجموعة الفرعية» علاقة بين لغتين، لا قائمة بالبرامج العاملة. ولم يكن التشابه دليلاً على قبول ثنائي الاتجاه.
وسع RFC 3023 الفكرة بواسطة اللاحقة +xml. بقي النوع الكامل مسؤولاً عن معنى التطبيق، بينما كشفت اللاحقة عن نحو مشترك يمكن للأدوات العامة الاستفادة منه.
نظمت RFC 6838 تسجيل لواحق البنية وطلبت وصف الترميز والتشغيل البيني والشظايا والأمن. أثبت التسجيل أن المطالبة نُشرت وراجعت، لا أن كل مستقبل نفذها.
جعلت RFC 7303 التسلسل واضحاً: يلاحظ البرنامج +xml، ويتحقق من الفرضية باستدعاء معالج XML، ثم يتابع وفق النوع المحدد. وإذا كانت المعالجة العامة غير مناسبة، يستطيع المصمم ترك اللاحقة. كانت علامة للفحص وليست أمراً بالتنفيذ.
كما ميزت الوثيقة بين وثيقة XML، ومجموعة DTD خارجية، وكيان خارجي محلل، وكيان معامل خارجي. اشتراكها في النحو لم يجعل أدوارها واحدة.
لا يحتاج الحد التاريخي إلى حادثة مخترعة
يسجل النوع ما أعلنه المرسل. ويسجل الالتقاط ما وصل إلى نقطة واحدة. وتثبت لقطة الشاشة ما عرضه برنامج واحد. ويسجل المحلل تحويله المحلي. ولا يثبت أي منها منفرداً وجود جزء boot الصحيح أو سياسة تنفيذ سليمة أو نتيجة مفيدة.
تكفي RFC 1874 لإظهار المشكلة: قد يكون المحتوى قابلاً للقراءة وفي الوقت نفسه مدخلاً لمعالج قوي. فصل السجلات يمنع نقل الثقة من علامة رخيصة إلى فعل عالي الصلاحية.
المصادر والحدود
تثبت RFC 1590 و1874 و2046 التسجيل وأنواع SGML وسلوك MIME. وتثبت RFC 2376 و3023 و6838 و7303 فصل XML ولواحق البنية. ولا تثبت انتشاراً حالياً أو امتثال منتج أو تحليلاً ناجحاً أو تنفيذاً حقيقياً أو استغلالاً أو ضرراً.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
