تعريف نوع المستند: الفرق بين النسختين

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
JarBot (نقاش | مساهمات)
ط بوت:عنونة مرجع غير معنون (1.1)
JarBot (نقاش | مساهمات)
سطر 12:
[[لغة الترميز القابلة للامتداد]] يستخدم مجموعة فرعية من [[تعريف نوع المستند(DTD) التابع لـ SGML DTD]].
 
{{As of | 2009}} النسخة الأحدث من [[XML Namespace-aware schema languages(لغات توصف بنية مخطط XML)]] (مثل [[W3C XML schema:مجموعة الشبكة العالمية لمتصفحات الويب و ISO RELAX NG :مجموعة من اللغات توصف XML)]] قد حلت إلى حد كبير على DTD. نسخة namespace-aware من DTD جاري تطويرها كجزء 9 [http://www.dsdl.org/] لل [[ISO DSDL:مخطط وثيقة تعريف اللغات.]] تعريف نوع المستند(DTD) لا تزال قائمة في التطبيقات التي تحتاج إلى نشر أحرف خاصة مثل [[أداة التعريف|ال]] [XML و[[HTML Character Entity References]]، والتي كانت مستمدة من مجموعات أكبر محدّدة كجزء من [[ISO SGML.]]
== ربط DTD مع المستندات ==
تعريف نوع المستند يربط DTD مع مستندات XML. تعريف نوع المستند يظهر في جزء القواعد ''doctypedecl'' قرب بدء مستند اكس ام ال.<ref name="W3C, doctypedecl">{{مرجعاستشهاد ويب
|عنوان=doctypedecl
|مسار=http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-doctypedecl
سطر 21:
| مسار أرشيف = https://web.archive.org/web/20180929050956/http://www.w3.org/TR/2004/REC-xml11-20040204/ | تاريخ أرشيف = 29 سبتمبر 2018 }}</ref> التعريف ينص على أن المستند هو مثيل من النوع الذي حدده DTD المشار إليه.
 
DTD تقدم نوعين من التعريفات :
 
# ''جزء داخلي''
# ''جزء خارجي''
 
التعريفات التي تأخذ شكل الجزء الداخلي تكون جزءا من تعريف نوع المستند في المستند نفسه. أما التعريفات في الجزء الخارجي تكون موجودة في ملف نصي منفصل. الجزء الخارجي قد يُشار إليه عن طريق مُعامل مُعرف عام'' [[public identifier]]'' و/ أو معامل مُعرف في النظام ''[[system identifier.]]'' برامج قراءة المستندات قد لا تكون ملزمه لقراءة الجزء الخارجي.
 
=== مثال ===
سطر 37:
</syntaxhighlight>
 
جميع مستندات HTML 4.01 مُتوقعة {{By whom|تاريخ=أغسطس 2009}} لتتوافق مع واحد من ثلاثة SGML DTD:أنواع لتعريف مستند SGML. public identifiers لهذه ال DTD ثابتة وهي كما يلي :
 
* <code>[http://www.w3.org/TR/html4/strict.dtd -//W3C//DTD HTML 4.01//EN]</code>
سطر 43:
* <code>[http://www.w3.org/TR/html4/frameset.dtd -//W3C//DTD HTML 4.01 Frameset//EN]</code>
 
system identifiers لهذه ال DTD، إذا كانت موجودة في تعريف نوع المستندالمستند، ،ستكونستكون على شكل [[URI references:العنوان العام للمورد]] System identifiers يمكن أن تختلف، ولكنها من المتوقع معرفتها {{By whom|تاريخ=أغسطس 2009}} للإشارة إلى مجموعة محددة من التعريفات في موقع للحل. SGML يسمح لل public identifiers ليتم تعيينها إلى system identifiers في [[الكتالوجات]] التي يتم اختياريا وضعها متاحة لحل URL عن طريق برامج تحليل المستند.
== ترميزية التعريفات ==
DTD يصف البنية لفئة المستند عن طريق العنصر وتعريفات قائمة محتويات ذلك العنصر(attribute-list declarations). اسم تعريفات العنصر(Element declarations name) مجموعة من العناصر المسموح بها ضمن المستند، وتحدد ما إذا كان وكيف تعرّف هذه العناصر ونوع الداتا التي قد تكون واردة داخل كل عنصر. Attribute-list declarations name المجموعة المسموح بها من سمات(attribute) لكل عنصر مُعرف، بما في ذلك [[نوع (تصنيف)|النوع]] لكل قيمة من السمات، إن لم يكن مجموعة واضحة من قيم صالحة.
 
تعريفات ترميزية DTD تعرّف [[نوع العنصر]]، و[[قائمة السمات (attribute lists)]] [[والكيانات(entities) والرموز]] المسموح بها في بنية الفئة المقابلة لمستندات اكس ام ال.<ref>[http://books.google.com/books?id=_NqW2BjQtFIC&amp;pg=PA43&amp;lpg=PA43&amp;dq=DTD+Markup-Declarations&amp;source=bl&amp;ots=_3P2DUCXGL&amp;sig=K_Slr8Xj3Mpb_V3zBMPR92tSYOM&amp;hl=de&amp;sa=X&amp;oi=book_result&amp;resnum=4&amp;ct=result#PPA44,M1 سامز تعليم نفسك XML في 10 دقيقة] أندرو فون H. وات</ref>
 
=== تعريفات نوع العنصر ===
 
تعريف نوع العنصر يحدد العنصر ومضمونه الممكن. مستند XML الصحيح يحتوي فقط على العناصر التي تمّ تعريفها في DTD.
 
مجموعة من الكلمات الرئيسية المختلفة والحروف التي تحدد محتوى العنصر :
 
* <tt>EMPTY</tt> مضمون فارغ
سطر 59:
* <tt>،</tt> للأوامر
*
| للبدائل ("إما... أو")
 
* () للمجموعات
سطر 76:
=== محتوى قائمة تعريفات السمات(Attribute List) ===
 
قائمة سمة العنصر تحدد الاسم، نوع البيانات والقيمة الافتراضية لكل سمة(attribute) االمرتبطةالمرتبطة مع نوع عنصر معطى، <ref>http://www.stylusstudio.com/w3c/xml11/attdecls.htm # attdecls</ref> على سبيل المثال :
 
<syntaxhighlight lang="xml">
سطر 85:
</syntaxhighlight>
 
هناك أنواع للسمات (attributes) وهي كالتالي :
 
* CDATA (مجموعة الاحرف)
سطر 95:
* Listings و NOTATION-listings
 
القيمة الافتراضية يمكن أن تحدد اين يجب ظهور السمة (#REQUIRED) أم لا (#IMPLIED) ,وما ان كان له قيمة ثابتة (#FIXED)، وأي قيمة ينبغي استخدامها كقيمة افتراضية ("...") في حالة منح السمة استبعد في علامة XML.
 
=== كيان التعريفات ===
 
الكيانات(Entities) هي متغيرات تستخدم لتحديد المختصرات ؛ الاستخدام النموذجي لإمكانية قراءة المستخدم أسماء لأحرف خاصة.<ref>{{مرجعاستشهاد ويب| مسار = http://www.w3schools.com/dtd/dtd_entities.asp| عنوان =DTD Entities| مسار الأرشيفأرشيف = https://web.archive.org/web/20150619083326/http://www.w3schools.com/dtd/dtd_entities.asp | تاريخ الأرشيفأرشيف = 19 يونيو 2015 }}</ref>
وبالتالي، الكيانات تساعد على تجنب التكرار وجعل التحرير أسهل. على وجه العموم، هناك نوعان رئيسيان مختلفة :
 
* الداخلية (مضمّن) كيانات تحدد مراجع كيان من أجل استبدال جمل معينة بنص مبدل. مضمون الكيان يعطى في التعريف.
سطر 107:
=== تدوين التعريفات ===
 
الترميزات تقرأ تنسيق الملف من وثائق خارجية غير موزعه لتشمل بيانات غير XML في مستند XML. على سبيل المثال صورة من صيغة GIF :
 
<syntaxhighlight lang="xml">
سطر 115:
== XML تعريف نوع المستند(DTD)، والتحقق من صحة المخطط ==
 
قواعد XML DTD واحدة من عدة لغات [[مخطط XML.]]
 
ثمة مفهوم خاطئ شائع يقتضي إلى ان ملف XML الغير متحقق من صحته لايجب عليه قراءة تعريف نوع المستند(DTD)، بينما هي في الواقعالواقع، ،لايزاللايزال يجب عليه أن يفحصها DTD لبناء قواعد صحيحة فضلا عن تعريفات الكيانات والسمات الافتراضية. عند عدم التحقق من صحة محلل، بغض النظر، قد لا تكون مؤهلة لقراءة ''الكيانات الخارجية (external entities)''، بما في ذلك الجزء الخارجي لDTD. إذا كان مستند XML يعتمد على التعريفات الموجودة فقط في الكيانات الخارجية، فإنه يجب تأكيد <code>standalone="no"</code> في [[تعريف XML.]] التعرف على التحقق من صحة DTD يمكن أن يؤدى [[باستخدام]] [[كتالوجات (XML Catalogs).]]
 
<syntaxhighlight lang="xml">
سطر 134:
</ people_list>
</syntaxhighlight>
== مثال XML DTD ==
مثال بسيط جدا على XML DTD لوصف قائمة بأسماء الأشخاص الذين يمكن أن تتكون من :
 
<syntaxhighlight lang="xml">
سطر 146:
</syntaxhighlight>
 
لنأخذ الامثلة سطرا سطر :
 
# <code>people_list</code> هو اسم عنصر صحيح، وهذا العنصر يحتوي على أي عدد من عناصر <code>person</code> <code>*</code> يدل على أنه لا يمكن أن يكون صفر أو أكثر من عناصر <code>person</code> داخل العنصر <code>people_list</code>
# <code>person</code> هو اسم عنصر صحيح، وهذا العنصر يحتوي على عنصر واحد اسمه <code>name</code>، يليه آخر اسمه <code>birthdate</code> (اختياري)، ثم <code>gender</code> (أيضا اختياري) <code>socialsecuritynumber</code> (اختياري أيضا). <code>?</code> يشير إلى أن العنصر اختياري. الإشارة إلى عنصر <code>name</code> لا توجد فيها <code>?</code>، لذلك العنصر <code>person</code> ''يجب أن'' يحتوي على عنصر من <code>name</code>
# <code>name</code> هو اسم عنصر صحيح، وهذا العنصر يحتوي على عناصر تحتوي(parsed character data" (#PCDATA ".
# <code>birthdate</code> هو اسم عنصر صحيح، وهذا العنصر يحتوي على parsed character data.
# <code>gender</code> هو اسم عنصر صحيح، وهذا العنصر يحتوي على parsed character data.
# <code>socialsecuritynumber</code> هو اسم عنصر صحيح، وهذا العنصر يحتوي على parsed character data..
 
المثال التالي لملف XML الذي يستخدم ويتفق مع DTD. فإنه يفترض أن نتمكن من تحديد DTD مع مراجع URL ذات ارتباط "example.dtd" ؛ وpeople_list "" after"!DOCTYPE "يخبرنا أن السمات الجذرية، أو العنصر الأول في تعريف DTD، يسمى" people_list ":
 
<syntaxhighlight lang="xml">
سطر 170:
</syntaxhighlight>
 
يمكن للشخص أن يفعل هذا في [[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 المعقدة لن تحقق لهم أي منافع محددة {{بحاجة لمصدر|تاريخ=نوفمبر 2008}}، ولذلك DTD لا يزال بعيدا أكثر شعبية. XML Schema Definition هو في حد ذاته مستند XML بينما DTD ليس كذلك.
* [[RELAX NG]]، الذي هو أيضا جزء من [[DSDL]]، يعتبر معيار ISO الدولي. هو أكثر تعبيرا من XSD، في حين يوفر قواعد بسيطة، ولكن دعم البرمجيات التجارية كان بطيئا في التوفير.
 
== مراجع ==