سؤال

أعرف الغرض من DOCTYPE (وما هو كل عنوان url/معرف على السطر) فيما يتعلق بمعايير الويب والتحقق من صحة الصفحة، لكنني غير متأكد من ماهيته فعليًا في سياق مستند XML.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello</p>
  </body>
</html>

هل هو جزء من بنية مستند XML الفعلي، أم أنه نوع من "التلميح" الشبيه بالتعليق الذي يتم تدوينه ثم تجريده؟

ما هي أهمية "!" قبل الاسم؟هل يشير هذا إلى نوع خاص من "العنصر"؟ماذا يطلقون؟

المثال الذي نشرته هو XHTML للويب، ولكن هل يتم استخدام DOCTYPE أيضًا في مستندات XML للأغراض العامة؟

هل كانت مفيدة؟

المحلول

لقد تم "توريث" DOCTYPE من SGML (كان من المفترض أن يشير إلى ملف DTD الذي يشرح كيفية تحليل الملف)، إلا أن بناء جملة XML ومساحات الأسماء التي لا تحتاج إلى شرح جعلتها غير ذات صلة إلى حد كبير.الاستخدام الحقيقي الوحيد لـ DOCTYPE/DTD في XML هو تحديد الكيانات المسماة المسموح بها (على سبيل المثال. &nbsp;).

تسمح مواصفات XML أيضًا للموزعين "غير المعتمدين" الذين يتجاهلون ملف DTD تمامًا (تستخدم متصفحات الويب مثل هذه الموزعات، إلا إذا وقعت في الخطأ text/html فخ وفي هذه الحالة لا يتم استخدام محلل XML على الإطلاق).

DTD هو سيئة للغاية لغرض التحقق من الصحة (من الصعب تحديد قواعد لأكثر من مستوى واحد من التداخل، ولا توجد طريقة لتحديد أنواع السمات بخلاف عدد قليل من الأنواع المحددة مسبقًا).يمكن أن يكون المخطط، RelaxNG أكثر دقة بكثير.

لا يدعم DTD مساحات الأسماء بشكل كامل أيضًا، مما يؤدي إلى حلول سخيفة مثل XHTMLplusMathMLplusSVG DOCTYPE.

في متصفحات الويب، يكون لبعض أنواع DOCTYPE آثار جانبية مرغوبة تفعيل وضع العرض المتوافق مع المعايير.يعد هذا اختراقًا أكثر من الاستخدام المقصود لـ DOCTYPEs.

  • إذا كنت تستخدم XHTML حقيقي (application/xhtml+xml - الذي لا يفتح في IE على الإطلاق)، فلا تستخدم DOCTYPE على الإطلاق (تلك توصية من XHTML 5).سيؤدي وضع XML إلى تشغيل العرض المتوافق مع المعايير بغض النظر عن DOCTYPE.

  • إذا كنت تستخدم text/html الوضع، ثم استخدم <!DOCTYPE html>.هذا هو HTML 5 DOCTYPE وهو الأقصر الذي يؤدي إلى أفضل عرض ممكن في جميع المتصفحات.لا تستخدم المتصفحات DOCTYPE لأي غرض آخر، لذلك لن يفوتك أي شيء.

  • إذا كنت تقوم بمعالجة ملفات XHTML باستخدام موزعي XML (خارج المتصفحات)، إذن لو سمحت لا تنس إعداد كتالوج DTD بشكل صحيح، وإلا فقد يكون المحلل اللغوي الخاص بك كذلك دوس جي w3.org تحاول جلب DTD في كل مرة.إذا لم تتمكن من استخدام كتالوج DTD، فقم بتعطيل "العناصر الخارجية" في المحلل اللغوي أو احذف DOCTYPE ولا تستخدم الكيانات المسماة (على سبيل المثال.يستخدم &#160; بدلا من &nbsp;)

نصائح أخرى

يعد DOCTYPE جزءًا من مواصفات XML (راجع القسم الفرعي ذي الصلة هنا) ويمكن أن تتضمن إما رابطًا إلى ملف دتد, أو إعلانات DTD "الداخلية" أو كليهما.العديد من الاستخدامات "الحديثة" لـ XML لا تستخدم DOCTYPE على الإطلاق، على الرغم من ذلك - كما ذكر موقع PorneL، يعد كل من XML Schema وRelaxNG من الطرق الأكثر قوة لتحديد بناء جملة المستند.يرى منشور مدونة تيم براي هذا لمزيد من الخلفية قليلا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top