نعلن أن doctype في HTML لديه بشكل عام الأنواع التالية:
<! doctype html public -// w3c // dtd xhtml 1.0 transitional // en http://www.w3
<! doctype html public -// w3c // dtd xhtml 1.0 Strict // en http://www.w3
<! 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>
نعم ، هناك HTML و XHTML هنا ، وهناك أيضًا انتقالية وصارمة. كما يوحي الاسم ، يعني XHTML أن هذا المستند مكتوب بتنسيق XML ، ويعني HTML أن هذا المستند مكتوب بتنسيق HTML. يعني الانتقال أن هذا الوثيقة تلبي متطلبات Transitional.DTD أو Loose.DTD ، في حين أن الصارم يعني أن هذه الوثيقة تلبي متطلبات Strict.DTD. ولكن في الواقع ، غالبًا ما يكون لدينا سوء فهم التالي:
(1) تم الإعلان عن وثيقي XHTML ، ثم يجب أن يكون المستند الخاص بي بتنسيق XML بالضبط.
(2) تم الإعلان عن وثيقي صارم ، لذلك يجب تقديم مستندي بطريقة صارمة ، وإلا ، يتم تقديمها بطريقة المراوغات.
كل من هذين الفهم مباشر للغاية ، لكنهما مخطئون ، وغالبًا ما نرتكب مثل هذه الأخطاء.
أولاً ، تم الإعلان عن المستند باسم XHTML و HTML ، وليس له علاقة مباشرة مع تحليل المستند (أي تحليل المتصفح للوثيقة). في الواقع ، تعتمد كيفية قيام مستند Parse Parse على التنسيق الذي يوفره الخادم المستند. بشكل عام ، هناك طريقتان: Text/HTML و Application/XHTML XML. يمكن تحليل المستندات الواردة في التطبيق/HTML XML في XML. ومع ذلك ، بسبب الأسباب التاريخية للمتصفح ، لا تدعم جميع المتصفحات مستندات تنسيق تطبيقات تطبيق/XHTML XML. الإصدارات قبل IE7 (بما في ذلك IE7) لا يمكن دعم هذا التنسيق. إذا واجه IE7 مستندًا في هذا التنسيق ، فسيطلب من المستخدم حفظ ملفات أخرى. بالنظر إلى الاستخدام الواسع النطاق لـ IE ، يتم توفير معظم المستندات حاليًا في Text/HTML. المستندات المقدمة في النص/HTML هي تحليل وفقًا لدلالات HTML. يعلم الجميع أن HTML يتحمل الأخطاء للغاية. حتى إذا لم يتم إغلاق العلامة الموجودة في المستند بشكل صحيح ، فيمكن عرض HTML بشكل صحيح. لذلك ، إذا تم توفير XHTML الخاص بك في Text/HTML (في معظم الحالات) ، حتى لو أعلنت XHTML في Doctype ، فإن المستند الخاص بك ليس تحليلًا بتنسيق XML ، لذلك لا يمكن أن يضمن أن وثيقتك تتوافق بشكل صارم مع مواصفات XML. في الواقع ، يقترح العديد من الخبراء أنه إذا لم يتم توفير المستند الخاص بك في شكل تطبيق/XHTML XML ، فيجب عليك إعلانه على أنه HTML.
ثانياً ، لا يتم تحديد الوثيقة التي تعلن بها المستند الذي تعلنه المستند الخاص بك. في الواقع ، إذا أعلنت Doctype و DTD ، يتم تقديم المستند الخاص بك في وضع صارم (أو الوضع القياسي ، ويتضمن العديد من المتصفحات أيضًا وضعًا قياسيًا تقريبًا ، ولا يوجد أي تمييز هنا). بالنسبة للمستندات التي لا يوجد بها doctype ، يتم استخدام وضع المراوغات لتقديمه. لذلك ، فإن وضع عرض المتصفح ليس له علاقة مباشرة مع DTD الذي أعلنته.
أخيرًا ، سواء كنت أعلنت أنه صارم. Strict.dtd أكثر صرامة من الانتقال. dtd أو roould.dtd ، ولا يمكن استخدام العديد من العناصر في strict.dtd. ومع ذلك ، نظرًا لتوافق المتصفح ، حتى لو أعلنت صارمة. أعتقد أن المتصفح لا يأخذ DTD في الاعتبار. على سبيل المثال ، لا توجد علامة iframe في strict.dtd ، ولكن حتى إذا أعلن Doctype الخاص بك الصارم. لا يحلل المتصفح مستندك وفقًا لـ DTD الذي أعلنته. في الوقت الحاضر ، يمكن أن يضمن أن المستند يتوافق مع Strict.dtd أو transitional.dtd. لا يمكن تحليله إلا من خلال بعض صحة الإنترنت ، مثل مدقق W3C. لا يمكن للمتصفح تزويدك بدعم جيد. بالطبع ، في الواقع ، إذا كان بإمكانك كتابة وثيقك بشكل صارم وفقًا لـ DTD الذي تعلن عنه ، فمن الأفضل ، حتى لا ينتج عن المستند أخطاء عندما يلتزم المتصفح بدقة بـ DTD في المستقبل.
لذلك،
(1) إذا تم توفير المستند الخاص بك في Text/HTML ، فيجب عليك إعلانه على أنه HTML. إذا كنت تريد عرض IE7 بشكل صحيح ، فعليك القيام بذلك أكثر.
(2) إذا تم إعلان المستند الخاص بك باسم XHTML ، فيجب عليك توفيره في شكل تطبيق/HTML XML.
(3) حاول إعلان Doctype و DTD أمام المستند الخاص بك ، وذلك لضمان عدم استخدام وضع المراوغات لتقديم المستند.
(4) إذا أعلنت DTD ، فيجب عليك كتابة المستند الخاص بك بشكل صارم وفقًا لمتطلبات DTD. خاصة إذا أعلنت صارمة.
ملاحظة: بمرور الوقت ، سيكون دعم المتصفح لـ HTML و XHTML ، و strict.dtd و transitional.dtd أفضل. إذا كان متصفحك أعلى بكثير من IE7 و IE8 و FF 3.0 و Safari 3.0 ، فيجب عليك الانتباه إلى قابلية تطبيق هذه المقالة.