در مورد DTD ، در Post قبلی توضیح دادیم.
DTD بر دو نوع است.Internal DTD و External DTD
Internal DTD ، زمانی ا ستفاده می شود که تمامی داده ی DTD ، در سند جاری XML باشد.
این به این معنا ست که سند XML نیاز به هیچ سندی دیگری برای دریافت دستورات DTD ندارد.
DTD ، با عنصر !DOCTYPE شروع می شود و پس از باز شدن یک براکت ،عنصر ریشه ی سند تعریف می شود .در ادامه تمامی تعاریف DTD آورده می شود.پس از پایان این تعاریف ، یک براکت بسته نوشته می شود.
Internal DTD ، در خط دوم سند و پس از خط اعلان سند ، آورده می شود.
در صورتی که DTD سند ما Internal باشد ، در خط اعلان سند ، مقدار صفت standalone را برابر YES قرار می دهیم.
External DTD ،به حالتی می گوییم که اطلاعات DTD سند XML ما درون فایل جداگانه ای قرار گرفته باشد.
برای یک External DTD ،پس از نوشتن عنصر !DOCTYPE ،و آوردن نام عنصر ریشه ، لغت کلیدی SYSTEM را می نویسیم.
این لغت کلیدی به Parser می گوید که برای دریافت DTD سند ، باید به URI مشخص شده که در ادامه آورده می شود مراجعه کند.این URI پس از لغت کلیدی SYSTEM نوشته می شود.
برای استفاده از External DTD ، باید مقدار صفت standalone در خط اعلان سند را برابر با NO قرار دهیم.
فرض کنید ساختمان داده ای بصورت زیر در یک سند XML تعریف کرده ایم.
در صوتی که بخواهیم برای این ساختان داده یک Internal DTD تعریف کنیم ، بصورت زیر خواهد بود:
و اگر بخواهیم یک External DTD تعریف کنیم ، بصورت زیر خواهد بود:
در این تعریف ، فایل myfile.dtd ،فایلی است که حاوی اطلاعات DTD ماست.داده های این فایل در Notepad نوشته و سپس با پسوند .dtd ذخیره می شوند.اطلاعات این فایل برای مثال بالا بصورت زیر خواهد بود: