مقدمه (DTD Introduction)
اینجا با «دی تی دی (DTD)» آشنا می شویم. دی تی دی «تعریف نوع سند (Document Type Definition)» است. یعنی نقشه اسکلتیِ XML را می دهد. سپس، برنامه می تواند «اعتبارسنجی (Validation)» را انجام دهد؛ مثل چک لیست نمره دهی در مدرسه.
DTD چیست و چرا مهم است؟
DTD ساختار، عناصر، و صفات مجاز را تعریف می کند. بنابراین، تیم ها با یک استاندارد مشترک هماهنگ می مانند. همچنین، برنامه ها می توانند داده XML را معتبر بررسی کنند؛ مثل اطمینان از ترتیب درست تکالیف.
تعریف داخلی DTD داخل XML
وقتی DTD داخل همان فایل XML باشد، در بخش <!DOCTYPE> می آید. این روش سریع و جمع وجور است.
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
نکته: #PCDATA یعنی «متن خام (Parsed Character Data)». یعنی فقط متن، بدون عناصر فرزند.
تفسیر سریع قواعد بالا
!DOCTYPE note: ریشه سند عنصرnoteاست.!ELEMENT note: باید چهار فرزند ترتیبی داشته باشد.!ELEMENT to|from|heading|body: هرکدام فقط متن می گیرند.
تعریف خارجی DTD در فایل جدا
گاهی بهتر است DTD را در فایلی جدا نگه داریم. سپس با سیستمِ DOCTYPE به آن ارجاع می دهیم. این روش برای اشتراک گذاری استاندارد عالی است.
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
محتوای فایل note.dtd
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
هشدار: مسیر فایل DTD باید درست و در دسترس باشد. وگرنه اعتبارسنجی شکست می خورد.
گام های عملی
- عنصرهای لازم را در DTD تعریف کن.
- برای متن ها از
#PCDATAاستفاده کن. - DTD را داخلی یا خارجی قرار بده.
- XML را با DTD اعتبارسنجی کن.
مطالب مرتبط: توابع (XQuery Functions) · ساخت DTD (DTD Building) · سرور (XML Server).
جمع بندی سریع
- DTD نقشه ساختار XML است.
- اعتبارسنجی را ممکن می کند.
- می تواند داخلی یا خارجی باشد.
- #PCDATA یعنی فقط متن.
- مسیر DTD را دقیق بنویس.