DTD لـ XML

语法正确的 XML 文档被称为“格式良好”。

根据 DTD 验证的 XML 文档,既是“格式良好”的,又是“有效”的。

什么是 DTD?

DTD 代表文档类型定义(Document Type Definition)。

DTD 定义 XML 文档的结构,以及合法的元素和属性。

有效的 XML 文档

“有效”的 XML 文档既是“格式良好”的,同时也要符合 DTD 的规则:

<?xml version="1.0" encoding="UTF-8"?>
!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>تذكير</heading>
<body>لا تنسى الاجتماع!</body>
</note>

上面的 DOCTYPE 声明包含对 DTD 文件的引用。下面展示并解释了 DTD 文件的内容。

DTD لـ XML

DTD 的目的是定义 XML 文档的结构,以及合法的元素和属性:

Note.dtd:

!DOCTYPE note
[
!ELEMENT note (to,from,heading,body)
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>

توضيح DTD أعلاه كما يلي:

!DOCTYPE note - تحديد أن عنصر الجذر في الوثيقة هو note
!ELEMENT note - تحديد أن عنصر note يجب أن يحتوي على العناصر التالية: "to, from, heading, body"
!ELEMENT to - تعريف عنصر to بأنه من نوع "#PCDATA"
!ELEMENT from - تعريف عنصر from بأنه من نوع "#PCDATA"
!ELEMENT heading - تعريف عنصر heading بأنه من نوع "#PCDATA"
!ELEMENT body - تعريف عنصر body بأنه من نوع "#PCDATA"

نصيحة:#PCDATA يعني بيانات النص القابلة للتحليل (parseable character data).

إعلان الكيانات باستخدام DTD

يمكن استخدام إعلان DOCTYPE أيضًا لتعريف الرموز أو الأنماط الخاصة التي تستخدم في الوثيقة:

مثال

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY nbsp "ꀊot;>
<!ENTITY writer "المؤلف: Bill Gates.">
<!ENTITY copyright "حقوق النشر: CodeW3C.com.">
]>
<note>
<to>George</to>
<from>John</from>
<heading>تذكير</heading>
<body>لا تنسى الاجتماع!</body>
<footer>&writer; ©right;</footer>
</note>

نصيحة:تتكون الكيانات من ثلاثة أجزاء: تبدأ بمفتاح الـ(&)، ثم اسم الكيان، وتنتهي بمقاطع (;).

متى يجب استخدام DTD؟

مع DTD، يمكن للجماعات المستقلة التوصل إلى إتفاق حول معايير تبادل البيانات.

باستخدام DTD، يمكنك التحقق مما إذا كانت البيانات التي تتلقاها من الخارج صالحة.

يمكنك أيضًا استخدام DTD لتحقق من بياناتك الخاصة.

إذا كنت ترغب في تعلم DTD، فاقرأ دليلنا دليل DTD.

متى لا تستخدم DTD؟

DTD ليست ضرورية للXML.

إذا كنت تقوم باختبار XML أو تستخدم ملفات XML صغيرة، فإن إنشاء DTD قد يكون ضائعًا للوقت.

إذا كنت تقوم بتطوير تطبيق، فلا تضيف DTD حتى يتم استقرار المعيار. وإلا قد يتوقف برنامجك عن العمل بسبب أخطاء التحقق.