Document Type Definition

שפת Document Type Definition (ראשי תיבות: DTD, בעברית: הגדרת סוג מסמך) היא שפה המשמשת להגדרת מבנה של מסמכים הכתובים בשפת XML או בשפת SGML. שפה זו היא אחת משפות ה-SGML וסכמת XML, ובעזרתה ניתן ליצור הגדרות וחוקים לצורה שבה מסמכים הכתובים בשפת סימון יעוצבו.

הצורך ב־Document Type Definition 

השפות XML ו־SGML הן שפות סימון המשמשות להעברת והצגת מידע בצורה טקסטואלית. ייצוג המידע בצורה טקסטואלית הוא הגורם לאחד מהיתרונות הבולטים של שפות אלו - קריאת הנתונים יכולה להתבצע במערכות ממוחשבות שונות ללא תלות במערכת ההפעלה או בתוכנה המשמשת לקריאת הנתונים.

שפת XML הפכה להיות נפוצה ובעלת תפקידים רבים, במיוחד בשל גמישותה הרבה:
 כיום XML היא הבסיס לשפות שונות, וממנה נגזרות שפות כגון SVG, MathML, XHTML וכיוצא באלה.
 שמירה והעברת מידע בין פלטפורמות, תוכנות ומערכות הפעלה שונות.
 פורמט להעברת נתונים בין שירותים ברשת.
 סריאליזציה של אובייקטים בתכנות.

מאחר ששפת XML היא גמישה ובת הרחבה (eXtensible Markup Language), ומכיוון שלכל מסמך יש תפקיד שונה ועליו להחזיק נתונים שונים, יש צורך לקבוע תקן שיגדיר כיצד המסמך ייראה. 

מטרת ה־Document Type Definition היא לקבוע את התבנית או את הצורה שבה הנתונים יסודרו במסמך.
ניתן לומר כי ה־Document Type Definition הוא מסמך שמגדיר כיצד התוכנה הקוראת את הנתונים מצפה לקבל את המידע, כדי שתוכל לעבד אותו.

דוגמה למסמך DTD 
דוגמה לקוד DTD, ולאחריו הסבר לקוד:

 <!ELEMENT people_list (person*)>
 <!ELEMENT person (name, birthdate?, gender?, socialsecuritynumber?)>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT birthdate (#PCDATA)>
 <!ELEMENT gender (#PCDATA)>
 <!ELEMENT socialsecuritynumber (#PCDATA)>

הסבר, מחולק לפי שורות:
 people_list הוא אלמנט חוקי במסמך, והוא יכול להכיל תחתיו את האלמנט person. הכוכבית (*) מסמלת כי תחת אלמנט זה יכולים להופיע אפס או יותר אלמנטים מסוג person.
 person הוא אלמנט חוקי במסמך, ואלמנט זה יכיל תחתיו את האלמנט name, ולאחריו האלמנטים birthdate (אופציונלי), gender (אופציונלי) ו/או socialsecuritynumber (אופציונלי). סימן השאלה (?) מסמל כי האלמנט יכול להופיע פעם אחת או לא להופיע בכלל (אופציונלי). מכיוון שאין אחרי name סימן שאלה (או כל סימן אחר, כגון כוכבית וכיוצא בזה), הוא חייב להופיע בכל אלמנט person.
 name הוא אלמנט חוקי במסמך, ואלמנט זה יכול להכיל מידע מסוג character data (טקסט, אך לא אלמנטים).
 birthdate הוא אלמנט חוקי במסמך, ואלמנט זה יכול להכיל מידע מסוג character data.
 gender הוא אלמנט חוקי במסמך, ואלמנט זה יכול להכיל מידע מסוג character data.
 socialsecuritynumber הוא אלמנט חוקי במסמך, ואלמנט זה יכול להכיל מידע מסוג character data.

ראו גם 
 סכמת XML
 XSD

קישורים חיצוניים 
 הגדרה של DTD באתר של W3C
 מדריך לשפת DTD באתר W3Schools.com

XML
שפות סימון