DTD - องค์ประกอบ
ใน DTD องค์ประกอบจะถูกประกาศด้วยการประกาศ ELEMENT
ประกาศองค์ประกอบ
ใน DTD องค์ประกอบ XML ถูกประกาศด้วยไวยากรณ์ต่อไปนี้:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
องค์ประกอบที่ว่างเปล่า
อิลิเมนต์ว่างถูกประกาศด้วยคีย์เวิร์ดหมวดหมู่ EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
องค์ประกอบที่มีการแยกวิเคราะห์ข้อมูลอักขระ
องค์ประกอบที่มีเฉพาะข้อมูลอักขระที่แยกวิเคราะห์จะถูกประกาศด้วย #PCDATA ภายในวงเล็บ:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
องค์ประกอบที่มีเนื้อหาใด ๆ
องค์ประกอบที่ประกาศด้วยคีย์เวิร์ดหมวดหมู่ "ANY" สามารถมีชุดข้อมูลที่แยกวิเคราะห์ได้:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
องค์ประกอบกับเด็ก (ลำดับ)
องค์ประกอบที่มีลูกตั้งแต่หนึ่งตัวขึ้นไปจะถูกประกาศด้วยชื่อขององค์ประกอบลูกภายในวงเล็บ:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
เมื่อมีการประกาศรายการย่อยในลำดับที่คั่นด้วยเครื่องหมายจุลภาค รายการย่อยจะต้องปรากฏในลำดับเดียวกันในเอกสาร ในการประกาศอย่างครบถ้วน เด็กจะต้องได้รับการประกาศด้วย และเด็กก็สามารถมีบุตรได้ การประกาศองค์ประกอบ "โน้ต" แบบเต็มคือ:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
ประกาศการเกิดขึ้นเพียงครั้งเดียวขององค์ประกอบ
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
ตัวอย่างข้างต้นประกาศว่าองค์ประกอบลูก "ข้อความ" จะต้องเกิดขึ้นเพียงครั้งเดียว และเพียงครั้งเดียวภายในองค์ประกอบ "บันทึก"
การประกาศอย่างน้อยหนึ่งรายการขององค์ประกอบ
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
เครื่องหมาย + ในตัวอย่างด้านบนระบุว่าองค์ประกอบลูก "ข้อความ" จะต้องเกิดขึ้นอย่างน้อยหนึ่งครั้งภายในองค์ประกอบ "บันทึก"
ประกาศการเกิดขึ้นขององค์ประกอบเป็นศูนย์หรือมากกว่า
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
เครื่องหมาย * ในตัวอย่างด้านบนระบุว่าองค์ประกอบลูก "ข้อความ" สามารถเกิดขึ้นได้ศูนย์หรือมากกว่าครั้งภายในองค์ประกอบ "บันทึก"
ประกาศศูนย์หรือหนึ่งรายการขององค์ประกอบ
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
ที่ ? ลงชื่อเข้าใช้ในตัวอย่างข้างต้น ประกาศว่าองค์ประกอบลูก "ข้อความ" สามารถเกิดขึ้นได้ศูนย์หรือครั้งเดียวภายในองค์ประกอบ "บันทึก"
ประกาศอย่างใดอย่างหนึ่ง/หรือเนื้อหา
<!ELEMENT note (to,from,header,(message|body))>
ตัวอย่างข้างต้นระบุว่าองค์ประกอบ "บันทึก" ต้องมีองค์ประกอบ "ถึง" องค์ประกอบ "จาก" องค์ประกอบ "ส่วนหัว" และองค์ประกอบ "ข้อความ" หรือ "เนื้อหา"
ประกาศเนื้อหาผสม
<!ELEMENT note (#PCDATA|to|from|header|message)*>
ตัวอย่างข้างต้นประกาศว่าองค์ประกอบ "โน้ต" สามารถมีองค์ประกอบข้อมูลอักขระที่แยกวิเคราะห์เป็นศูนย์หรือมากกว่า "ถึง" "จาก" "ส่วนหัว" หรือ "ข้อความ"