لقد فعلت كل ما كنت تعتقد أنه صحيح، ولكن الصفحة لا تعمل بشكل صحيح في أحدث المتصفحات. وذلك لأنك كتبت XHTML وCSS غير صالحين، واستخدمت نموذج كائن المستند (DOM) القياسي التابع لـ W3C لمعالجة العناصر الديناميكية في الصفحة. وعندما تحاول المتصفحات تنفيذ هذه المعايير، يفشل موقعك. يحدث هذا على الأرجح بسبب نوع مستند خاطئ (DOCTYPE). تهدف هذه المقالة إلى تزويدك بكيفية عمل DOCTYPE وشرح بعض الاستخدامات الفعلية لأنواع المستندات هذه.
لماذا DOCTYPE؟
وفقًا لمعايير HTML وXHTML، يتم استخدام DOCTYPE (اختصار لـ "إعلان نوع المستند") لإخبار المتصفح بإصدار (x)HTML الذي تستخدمه، ويجب أن يظهر في أعلى كل صفحة. تعد DOCTYPEs مكونًا مهمًا لصفحات الويب: فبدونها، لن يكون CSS الخاص بك صالحًا بعد الآن.
كما هو مذكور في مقالة ALA المذكورة سابقًا (ونقاط أخرى مثيرة للاهتمام أيضًا)، يجب أيضًا تكييف DOCTYPE مع المتصفحات الأخرى، مثل Mozilla أو IE5/Mac أو IE6 أو IE7.
يحتوي DOCTYPE الجديد على URI كامل (ملاحظة sconf: معرف الموارد العالمي، معرف الموارد العالمي) (عنوان URL كامل)، والذي يخبر المتصفحات بتحليل (عرض) الصفحة في نموذج متوافق مع المعيار. قم بمعالجة (X)HTML وCSS وDOM للحصول على ما تتوقعه.
سيؤدي استخدام DOCTYPE غير مكتمل أو قديم، أو حتى عدم استخدام DOCTYPE على الإطلاق، إلى قيام المتصفح بتحويله إلى نموذج "Quirks"، حيث يفترض المتصفح أنك تكتب كودًا قديمًا ومكسورًا لما بعد التسعينيات.
باستخدام هذا الإعداد، سيحاول المتصفح تحليل صفحتك باستخدام المعيار القديم وتحليل CSS الخاص بك إلى معيار IE4. ويرد على المالك بـ DOM خاص (يرد IE على DOM الخاص بـ IE، بينما يرد Mozilla وNetscape 6 على النموذج الذي يعتقدون أنه كذلك).
لا شك أن هذا ليس ما تريده. لكنه شيء تحصل عليه كثيرًا. لذلك تريد هذه المقالة تصحيح DOCTYPEs غير الصحيحة أو غير المكتملة.
(ملاحظة: متصفح Opera لا يدعم هذه القواعد. فهو يحاول دائمًا تحليل صفحات الويب إلى صفحات مكيفة وفقًا للمعايير. ومن ناحية أخرى، لا يوفر Opera دعمًا قويًا لـ DOM الخاص بـ W3C. ولكن يمكن أيضًا تشغيلها بشكل جيد) Ed: نظرًا لأن هذا تم نشر المقالة لأول مرة، أضافت Opera وظائف متوافقة مع DOM إلى Opera 7.
أين ذهب DOCTYPE؟ (أين اختفت جميع أنواع المستندات؟)
على الرغم من أن أنواع المستندات تعد جزءًا لا يتجزأ من معايير WEB في المتصفحات، وعلى الرغم من أن W3C تقود إنشاء معايير WEB، إلا أنك تتوقع أيضًا أن مواقع W3C يمكنها توفير بعض أنواع المستندات المناسبة، وقد ترغب أيضًا في العثور على هذه المعلومات بسرعة وسهولة أكبر ومع ذلك، وأنا أكتب هذا، لا يمكنك ذلك بعد. {Ed: يدرج W3C الآن سلسلة من DOCTYPEs القياسية على موقعه على الويب. ويمكنك الاطلاع عليها في إرشادات W3C، مثل "موقع الويب الخاص بي قياسي. وموقعك على الويب؟"}
W3.org ليس قائمة منفصلة أو WebReference أو Webmonkey، ولم يكن المقصود منه في الأصل مساعدة مصممي الويب والمطورين ومنظمات المجتمع المدني على تسريع فهمهم واستخدامهم لأحدث التقنيات. هذه ليست وظيفته.
تنشر W3C سلسلة من الإرشادات، على الرغم من أن معظم مصممي الويب لا يعرفون عنها. #
يمكنك البحث عن DOCTYPEs طوال اليوم على W3.org دون الحاجة إلى إلقاء نظرة على القوائم المخصصة. وعندما تقوم بتنزيل DOCTYPE (يرتبط عادةً بمقترح محدد أو مسودة عمل)، فإنه لا يعمل بشكل صحيح على موقعك.
في جميع أنحاء موقع W3C توجد DOCTYPEs مع عناوين URI مفقودة (ملاحظة sconf: عناوين URI غير كاملة)، والتي تشير إلى موقع الويب الخاص بـ W3C. بمجرد نقلها من W3C إلى صفحات الويب الخاصة بك، ستصبح عناوين URL هذه مستندات غير موجودة.
على سبيل المثال، يتم نسخ DOCTYPE للعديد من المواقع مباشرة من W3.org:
وفيما يلي المحتوى المقتبس: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
إذا رأيت الجزء الأخير من DOCTYPE ("DTD/xhtml1-strict.dtd")، فستجد أن هذا رابط نسبي لموقع W3C. هذا موجود على موقع W3C، وليس موقعك. لذا فإن URI هذا ليس له أي تأثير على المتصفح. (ملاحظة sconf: عندما تزور W3.org، يعمل هذا فقط لأن هذا رابط نسبي).
يجب في الواقع تغيير DOCTYPE إلى:
وفيما يلي المحتوى المقتبس: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
لاحظ أن DOCTYPE الموجود خلفه يحتوي على URI كامل. يؤدي هذا إلى عرض مورد صالح على الشبكة حتى يتمكن المتصفح من العثور عليه وتحليل المستند الخاص بك إلى نموذج متوافق مع المعايير.
كيفية استخدام DOCTYPE (أنواع المستندات الفعالة)
فكيف تستخدم DOCTYPE؟ سعيد لأنك سألت. DOCTYPE الكامل أدناه هو كل ما نحتاجه:
إطار HTML 4.01 صارم وانتقالي
وفيما يلي المحتوى المقتبس: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd "> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd "> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" " http://www.w3.org/TR/html4/frameset.dtd "> |
إطار عمل XHTML 1.0 صارم وانتقالي
وفيما يلي المحتوى المقتبس: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd "> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd "> |
XHTML1.1 دتد
وفيما يلي المحتوى المقتبس: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |