تعريف نوع المستند
هذه المقالة بحاجة إلى تهذيب بإعادة كتابتها بالكامل أو إعادة كتابة أجزاء منها للأسباب المذكورة في صفحة النقاش. رجاء أزل هذا الإخطار بعد أن تتم إعادة الكتابة. وسم هذا القالب منذ: سبتمبر 2011 |
تعريف نوع المستند (DTD) عبارة عن مجموعة من التعريفات المتفق عليها عالميا(markup declarations) التي بدورها تحدد نوع المستند المستخدم في لغات البرمجة التي تتبع SGML )SGML:لغة التوصيف العامة القياسية، XML:نظام متّفق عليه لتشكيل النّصوص، HTML:لغة تستعمل في بناء وثائق النّصّ المتشعّب أو المتصفّحات وتسمى الويب). وتعريف نوع المستند هو نوع من تطبيقات XML:نظام متّفق عليه لتشكيل النّصوص.
تعريف نوع المستند(DTD) يستخدم قواعد صارمه من خلالها تُحدد بدقة اي العناصر والمراجع(references) التي قد تظهر في موقع ما في وثيقة من نوع معين، وما هو مضمون العناصر وصفاتها(attributes). تعريف نوع المستند(DTD) يعرّف أيضا الكيانات(entities) التي يمكن استخدامها في مستند ما.
XML يستخدم مجموعة فرعية من تعريف نوع المستند(DTD) التابع لـ SGML DTD.
اعتبارًا من 2009[update] النسخة الأحدث من XML Namespace-aware schema languages(لغات توصف بنية مخطط XML) (مثل W3C XML schema:مجموعة الشبكة العالمية لمتصفّحات الويب و ISO RELAX NG :مجموعة من اللغات توصف XML) قد حلت إلى حد كبير على DTD. نسخة namespace-aware من DTD جاري تطويرها كجزء 9 [١] لل ISO DSDL:مخطط وثيقة تعريف اللغات. تعريف نوع المستند(DTD) لا تزال قائمة في التطبيقات التي تحتاج إلى نشر أحرف خاصة مثل ال [XML وHTML Character Entity References، والتي كانت مستمدة من مجموعات أكبر محدّدة كجزء من ISO SGML.
ربط DTD مع المستندات
تعريف نوع المستند يربط DTD مع مستندات XML. تعريف نوع المستند يظهر في جزء القواعد doctypedecl قرب بدء مستند اكس ام ال.[١] التعريف ينص على أن المستند هو مثيل من النوع الذي حدده DTD المشار إليه.
DTD تقدم نوعين من التعريف :
- جزء داخلي
- جزء خارجي
التعريفات التي تأخذ شكل الجزء الداخلي تكون جزءا من تعريف نوع المستند في المستند نفسه. أما التعريفات في الجزء الخارجي تكون موجودة في ملف نصي منفصل. الجزء الخارجي قد يُشار إليه عن طريق مُعامل مُعرف عام public identifier و/ أو معامل مُعرف في النظام system identifier. برامج قراءة المستندات قد لا تكون ملزمه لقراءة الجزء الخارجي.
مثال
في المثال التالي لتعريف نوع مستند يحتوي على كِلا النوعين من المعاملات العامه public identifier ومعاملات النظام system identifier:
<sourcelang="xml"> <!<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> </source>
جميع مستندات HTML 4.01 مُتوقعة قالب:By whom لتتوافق مع واحد من ثلاثة SGML DTD:أنواع لتعريف مستند SGML. public identifiers لهذه ال DTD ثابتة وهي كما يلي :
system identifiers لهذه ال DTD، إذا كانت موجودة في تعريف نوع المستند ،ستكون على شكل URI references:العنوان العام للمَوْرِد System identifiers يمكن أن تختلف، ولكنها من المتوقع معرفتها قالب:By whom للإشارة إلى مجموعة محددة من التعريفات في موقع للحل. SGML يسمح لل public identifiers ليتم تعيينها إلى system identifiers في الكتالوجات التي يتم اختياريا وضعها متاحة لحل URL عن طريق برامج تحليل المستند.
ترميزية التعريفات
DTD يصف البنية لفئة المستند عن طريق العنصر وتعريفات قائمة محتويات ذلك العنصر(attribute-list declarations). اسم تعريفات العنصر(Element declarations name) مجموعة من العناصر المسموح بها ضمن المستند، وتحدد ما إذا كان وكيف تعرّف هذه العناصر ونوع الداتا التي قد تكون واردة داخل كل عنصر. Attribute-list declarations name المجموعة المسموح بها من سمات(attribute) لكل عنصر مُعرف، بما في ذلك النوع لكل قيمة من السمات، إن لم يكن مجموعة واضحة من قيم صالحة.
تعريفات ترميزية DTD تعرّف نوع العنصر، وقائمة السمات (attribute lists) والكيانات(entities) والرموز المسموح بها في بنية الفئة المقابلة لمستندات اكس ام ال.[٢]
تعريفات نوع العنصر
تعريف نوع العنصر يحدد العنصر ومضمونه الممكن. مستند XML الصحيح يحتوي فقط على العناصر التي تمّ تعريفها في DTD.
مجموعة من الكلمات الرئيسية المختلفة والحروف التي تحدد محتوى العنصر :
- EMPTY مضمون فارغ
- ANY لأي مضمون
- ، للأوامر
| للبدائل ("إما... أو")
- () للمجموعات
- * لأي عدد (صفر أو أكثر)
- + على الاقل مرة واحدة (واحد أو أكثر)
- ؟ علامة للاختياري (صفر أو واحد)
- إذا لم يكن هناك *، + أو؟، يجب أن يظهر العنصر مرة واحدة فقط.
أمثلة
<sourcelang="xml"> <!ELEMENT html (head, body)> <!ELEMENT p (#PCDATA | p | ul | dl | table | h1|h2|h3)*> </source>
محتوى قائمة تعريفات السمات(Attribute List)
قائمة سمة العنص تحدد الاسم، نوع البيانات والقيمة الافتراضية لكل سمة(attribute) االمرتبطة مع نوع عنصر معطى، [٣] على سبيل المثال :
<sourcelang="xml"> <!ATTLIST img
id ID #IMPLIED src CDATA #REQUIRED
> </source>
هناك أنواع للسمات (attributes) وهي كالتالي :
- CDATA (مجموعة الاحرف)
- ID
- IDREF وIDREFS
- NMTOKEN وNMTOKENS
- ENTITY و ENTITIES
- NOTATION و NOTATIONS
- Listings و NOTATION-listings
القيمة الافتراضية يمكن أن تحدد اين يجب ظهور السمة (#REQUIRED) أم لا (#IMPLIED) ,وما ان كان له قية ثابتة (#FIXED)، وأي قيمة ينبغي استخدامها كقيمة افتراضية ("...") في حالة منح السمة استبعد في علامة XML.
كيان التعريفات
الكيانات(Entities) هي متغيرات تستخدم لتحديد المختصرات ؛ الاستخدام النموذجي لإمكانية قراءة المستخدم أسماء لأحرف خاصة.[٤] وبالتالي، الكيانات تساعد على تجنب التكرار وجعل التحرير أسهل. على وجه العموم، هناك نوعان رئيسيان مختلفة :
- الداخلية (مضمّن) كيانات تحدد مراجع كيان من أجل استبدال جمل معينة بنص مبدل. مضمون الكيان يعطى في التعريف.
- الخارجية (مضمّن) الكيانات تشير إلى كائنات تخزين خارجية.
تدوين التعريفات
الترميزات تقرأ تنسيق الملف من وثائق خارجية غير موزعه لتشمل بيانات غير XML في مستند XML. على سبيل المثال صورة من صيغة GIF :
<sourcelang="xml"> <!NOTATION GIF system "image/gif"> </source>
XML تعريف نوع المستند(DTD)، والتحقق من صحة المخطط
قواعد XML DTD واحدة من عدة لغات مخطط XML.
ثمة مفهوم خاطئ شائع يقتضي إلى ان ملف XML الغير متحقق من صحته لايجب عليه قراءة تعريف نوع المستند(DTD)، بينما هي في الواقع ،لايزال يجب عليه أن يفحصها DTD لبناء قواعد صحيحة فضلا عن تعريفات الكيانات والسمات الافتراضية. عند عدم التحقق من صحة محلل، بغض النظر، قد لا تكون مؤهلة لقراءة الكيانات الخارجية (external entities)، بما في ذلك الجزء الخارجي لDTD. إذا كان مستند XML يعتمد على التعريفات الموجودة فقط في الكيانات الخارجية، فإنه يجب تأكيد standalone="no"
في تعريف XML. التعرف على التحقق من صحة DTD يمكن أن يؤدى باستخدام كتالوجات (XML Catalogs).
<sourcelang="xml"> <!DOCTYPEDOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<؟xml version="1.0" encoding="UTF-8"?>> <!DOCTYPE people_list SYSTEM "example.dtd"> <people_list>
<person> <name>Njandu Varuthude</name> <birthdate>04/02/1977</birthdate> <gender>Male</gender> </person>
</ people_list> </source>
مثال XML DTD
مثال بسيط جدا على XML DTD لوصف قائمة بأسماء الأشخاص الذين يمكن أن تتكون من :
<sourcelang="xml"> <!ELEMENT people_list (person*)> <!ELEMENT person (name, birthdate?, gender?, socialsecuritynumber?)> <!ELEMENT name (#PCDATA)> <!ELEMENT birthdate (#PCDATA)> <!ELEMENT gender (#PCDATA)> <!ELEMENT socialsecuritynumber (#PCDATA)> </source>
لنأخذ الامثلة سطرا سطر :
people_list
هو اسم عنصر صحيح، وهذا العنصر يحتوي على أي عدد من عناصرperson
*
يدل على أنه لا يمكن أن يكون صفر أو أكثر من عناصرperson
داخل العنصرpeople_list
person
هو اسم عنصر صحيح، وهذا العنصر يحتوي على عنصر واحد اسمهname
، يليه آخر اسمهbirthdate
(اختياري)، ثمgender
(أيضا اختياري)socialsecuritynumber
(اختياري أيضا).?
يشير إلى أن العنصر اختياري. الإشارة إلى عنصرname
لا توجد فيها?
، لذلك العنصرperson
يجب أن يحتوي على عنصر منname
name
هو اسم عنصر صحيح، وهذا العنصر يحتوي على عناصر تحتوي(parsed character data" (#PCDATA ".birthdate
هو اسم عنصر صحيح، وهذا العنصر يحتوي على parsed character data.gender
هو اسم عنصر صحيح، وهذا العنصر يحتوي على parsed character data.socialsecuritynumber
هو اسم عنصر صحيح، وهذا العنصر يحتوي على parsed character data..
المثال التالي لملف XML الذي يستخدم ويتفق مع DTD. فإنه يفترض أن نتمكن من تحديد DTD مع مراجع URL ذات ارتباط "example.dtd" ؛ وpeople_list "" after"!DOCTYPE "يخبرنا أن السمات الجذرية، أو العنصر الأول في تعريف DTD، يسمى" people_list ":
<sourcelang="xml"> <؟اxml version="1.0" encoding="UTF-8"?>> <!DOCTYPE people_list SYSTEM "example.dtd"> <people_list>
<person> <name>Fred Bloggs</name> <birthdate>27/11/2008</birthdate>
<gender>Male</gender>
<gender>Male</gender> </person>
</ people_list> </source>
يمكن للشخص أن يفعل هذا في XML-enabled browser (مثل IE5:متصفح أو Mozilla:مجموعة برامج تعمل على الإنترنت وتحتوي على متصفّح وقاريء رسائل الكترونيّة) عن طريق لصق وحفظ جزء DTD أعلى الملف النصي المسمى example.dtd وملف XML في ملف نصي مختلف المسمى، ويتم فتح ملف XML بواسطة المتصفح. كلا الملفين يجب حفظهما في نفس المجلد. بغض النظر، العديد من المتصفحات لا تتأكد من أن مستند XML يتفق مع القواعد الواردة في DTD، بل هي مطلوبة فقط للتأكد من أن بناء جمل DTD صحيحة. لأسباب أمنية، كما انها قد تختار عدم قراءة DTD الخارجية.
البدائل المتاحة ل DTD :
- XML schema، التي يشار إليها أيضا في صيغة
تعريف مخطط XML Schema Definition (XSD)، وقد حقق مركز التوصية ضمن W3C، ويحظى بشعبية في "البيانات الموجهة" (وهذا يعني ،أن XML ذا طابع معاملات لا طابع نشر)اُستخدم XML لأنه أقوى في الكتابة وأسهل في تحويله لJava declarations :لغة من لغات برمجة الحاسب الآلي. معظم دول النشر العالمية وجدت أن إضافة XSD المعقدة لن تحقق لهم أي منافع محددة [بحاجة لمصدر]، ولذلك DTD لا يزال بعيدا أكثر شعبية. XML Schema Definition هو في حد ذاته مستند XML بينما DTD ليس كذلك.
- RELAX NG، الذي هو أيضا جزء من DSDL، يعتبر معيار ISO الدولي. هو أكثر تعبيرا من XSD، في حين يوفر قواعد بسيطة، ولكن دعم البرمجيات التجارية كان بطيئا في التوفير.
أنظر أيضاً
- تعريف نوع المستند
- Semantic Web :توسيع الشبكة العالمية التي تمكن الناس من تبادل المحتوى وراء حدود التطبيقات ومواقع الويب.
- مخطط لغة XML المقارنات -- مقارنة لغات أخرى مخطط XML.
المراجع
- ^ doctypedecl. Extensible Markup Language (XML) 1.1. W3C.
- ^ سامز تعليم نفسك XML في 10 دقيقة أندرو فون H. وات
- ^ http://www.stylusstudio.com/w3c/xml11/attdecls.htm # attdecls
- ^ http://www.w3schools.com/dtd/dtd_entities.asp
وصلات خارجية
إن الوصلات الخارجية لهذه المقالة قد لا تتوافق مع سياسة المحتوى أو المبادئ التوجيهية. رجاء حسّن المقالة بإزالة الوصلات الخارجية المفرطة أو الغير مناسبة. (أغسطس 2009) |
- [http://www.w3.org/TR/REC-xml/#dt-doctype تعريف ال [إكسمل نوع من التعريف وثيقة لغة الترميز الموسعة (كلاسيك) 1.0 (الطبعة الرابعة) على W3.org]
- XML DTD مرجع سريع]
- أسئلة وأجوبة XML] لديه بعض DTD إدخالات محددة
- دروس من DTD W3Schools]
- Zvon دروس DTD] -- في 7 لغات
- البرنامج التعليمي التفاعلي DTD] من XMLzoo
- doctypes مختلفة للHTML]
- XMLPatterns.com -- تصميم نماذج لتطوير نظم تعريف نوع المستند(DTD)]
- [http://www.lumrix.net/dtd2xs/ dtd2xs] يحول DTD إلى مخطط XML
- [http://sourceforge.net/projects/plainxml/ PlainXML] يحول DTD إلى POJO الأجسام
- الإحصاء DTD]]
ca:Document Type Definition cs:Document Type Definition de:Dokumenttypdefinition Document Type Definition]] eo:Dokumento-Speco-Difino es:Definición de tipo de documento et:Dokumendi tüübi definitsioon fa:تعریف نوع سند fi:DTD fr:Document Type Definition he:Document Type Definition hr:Document Type Definition it:Document Type Definition ja:Document Type Definition ko:문서 형식 정의 nl:Document Type Definition nn:Dokumenttypedefinisjon no:Document Type Definition pl:Document Type Definition pt:Definição de Tipo de Documento ru:DTD sk:Definícia typu dokumentu sv:Document Type Definition te:డాక్యుమెంట్ టైప్ డెఫినిషన్ tr:DTD uk:Document Type Definition wuu:DTD zh:文件类型描述