تعريف نوع المستند
تعريف نوع المستند (DTD) عبارة عن مجموعة من "التعريفات المتفق عليها عالميا(markup declarations) " التي بدورها تحدد "نوع المستند المستخدم في " لغات البرمجة التي تتبع لغة الترميز القياسي العام:تعريف نوع المستند(DTD) يستخدم قواعد صارمه من خلالها تُحدد بدقة اي العناصر والمراجع(references) التي قد تظهر في موقع ما في وثيقة من نوع معين، وما هو مضمون العناصر وصفاتها(attributes). تعريف نوع المستند(DTD) يعرّف أيضا الكيانات(entities) التي يمكن استخدامها في مستند" ما."
لغة الترميز القابلة للامتداد يستخدم مجموعة فرعية من تعريف نوع المستند(DTD) التابع لـ SGML DTD.
تعريف نوع المستند يربط DTD مع مستندات XML. تعريف نوع المستند يظهر في جزء القواعد "doctypedecl" قرب بدء مستند اكس ام ال. التعريف ينص على أن المستند هو مثيل من النوع الذي حدده DTD المشار إليه.
DTD تقدم نوعين من التعريفات :التعريفات التي تأخذ شكل الجزء الداخلي تكون جزءا من تعريف نوع المستند في المستند نفسه. أما التعريفات في الجزء الخارجي تكون موجودة في ملف نصي منفصل. الجزء الخارجي قد يُشار إليه عن طريق مُعامل مُعرف عام" public identifier" و/ أو معامل مُعرف في النظام "system identifier." برامج قراءة المستندات قد لا تكون ملزمه لقراءة الجزء الخارجي.
في المثال التالي لتعريف نوع مستند يحتوي على كِلا النوعين من المعاملات العامة public identifier ومعاملات النظام system identifier:
جميع مستندات HTML 4.01 مُتوقعة لتتوافق مع واحد من ثلاثة SGML DTD:أنواع لتعريف مستند SGML. public identifiers لهذه ال DTD ثابتة وهي كما يلي :system identifiers لهذه ال DTD، إذا كانت موجودة في تعريف نوع المستند ،ستكون على شكل System identifiers يمكن أن تختلف، ولكنها من المتوقع معرفتها للإشارة إلى مجموعة محددة من التعريفات في موقع للحل. SGML يسمح لل public identifiers ليتم تعيينها إلى system identifiers في الكتالوجات التي يتم اختياريا وضعها متاحة لحل URL عن طريق برامج تحليل المستند.
DTD يصف البنية لفئة المستند عن طريق العنصر وتعريفات قائمة محتويات ذلك العنصر(attribute-list declarations). اسم تعريفات العنصر(Element declarations name) مجموعة من العناصر المسموح بها ضمن المستند، وتحدد ما إذا كان وكيف تعرّف هذه العناصر ونوع الداتا التي قد تكون واردة داخل كل عنصر. Attribute-list declarations name المجموعة المسموح بها من سمات(attribute) لكل عنصر مُعرف، بما في ذلك النوع لكل قيمة من السمات، إن لم يكن مجموعة واضحة من قيم صالحة.
تعريفات ترميزية DTD تعرّف نوع العنصر، وقائمة السمات (attribute lists) والكيانات(entities) والرموز المسموح بها في بنية الفئة المقابلة لمستندات اكس ام ال.
تعريف نوع العنصر يحدد العنصر ومضمونه الممكن. مستند XML الصحيح يحتوي فقط على العناصر التي تمّ تعريفها في DTD.
مجموعة من الكلمات الرئيسية المختلفة والحروف التي تحدد محتوى العنصر :
| للبدائل ("إما... أو")أمثلة
قائمة سمة العنصر تحدد الاسم، نوع البيانات والقيمة الافتراضية لكل سمة(attribute) االمرتبطة مع نوع عنصر معطى، على سبيل المثال : قواعد XML DTD واحدة من عدة لغات مخطط XML.
ثمة مفهوم خاطئ شائع يقتضي إلى ان ملف XML الغير متحقق من صحته لايجب عليه قراءة تعريف نوع المستند(DTD)، بينما هي في الواقع ،لايزال يجب عليه أن يفحصها DTD لبناء قواعد صحيحة فضلا عن تعريفات الكيانات والسمات الافتراضية. عند عدم التحقق من صحة محلل، بغض النظر، قد لا تكون مؤهلة لقراءة "الكيانات الخارجية (external entities)"، بما في ذلك الجزء الخارجي لDTD. إذا كان مستند XML يعتمد على التعريفات الموجودة فقط في الكيانات الخارجية، فإنه يجب تأكيد codice_4 في تعريف XML. التعرف على التحقق من صحة DTD يمكن أن يؤدى باستخدام كتالوجات (XML Catalogs).
tml PUBLIC
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra people_list>
مثال بسيط جدا على XML DTD لوصف قائمة بأسماء الأشخاص الذين يمكن أن تتكون من :
لنأخذ الامثلة سطرا سطر :المثال التالي لملف XML الذي يستخدم ويتفق مع DTD. فإنه يفترض أن نتمكن من تحديد DTD مع مراجع URL ذات ارتباط "example.dtd" ؛ وpeople_list "" after"!DOCTYPE "يخبرنا أن السمات الجذرية، أو العنصر الأول في تعريف DTD، يسمى" people_list ":Male
 people_list>
يمكن للشخص أن يفعل هذا في XML-enabled browser (مثل أو عن طريق لصق وحفظ جزء DTD أعلى الملف النصي المسمى "example.dtd" وملف XML في ملف نصي مختلف المسمى، ويتم فتح ملف XML بواسطة المتصفح. كلا الملفين يجب حفظهما في نفس المجلد. بغض النظر، العديد من المتصفحات لا تتأكد من أن مستند XML يتفق مع القواعد الواردة في DTD، بل هي مطلوبة فقط للتأكد من أن بناء جمل DTD صحيحة. لأسباب أمنية، كما أنها قد تختار عدم قراءة DTD الخارجية.
البدائل المتاحة ل DTD :