DTD - ไวยากรณ์
XML DTD สามารถระบุได้ภายในเอกสารหรือสามารถเก็บไว้ในเอกสารแยกต่างหากจากนั้นเอกสารสามารถเชื่อมโยงกับเอกสาร DTD เพื่อใช้งานได้
ไวยากรณ์
ไวยากรณ์พื้นฐานของ DTD มีดังนี้ -
<!DOCTYPE element DTD identifier
[
declaration1
declaration2
........
]>
ในไวยากรณ์ข้างต้น -
DTD เริ่มต้นด้วยตัวคั่น <! DOCTYPE
อัน element บอกให้โปรแกรมแยกวิเคราะห์แยกวิเคราะห์เอกสารจากองค์ประกอบรากที่ระบุ
DTD identifierเป็นตัวระบุสำหรับข้อกำหนดประเภทเอกสารซึ่งอาจเป็นเส้นทางไปยังไฟล์บนระบบหรือ URL ไปยังไฟล์บนอินเทอร์เน็ต หาก DTD ชี้ไปที่เส้นทางภายนอกระบบจะเรียกexternal subset.
square brackets [ ] แนบรายการทางเลือกของการประกาศเอนทิตีที่เรียกว่า internal subset.
DTD ภายใน
DTD เรียกว่า DTD ภายในหากมีการประกาศองค์ประกอบภายในไฟล์ XML ในการอ้างอิงเป็น DTD ภายในต้องตั้งค่าแอตทริบิวต์แบบสแตนด์อโลนในการประกาศ XML เป็นyes. ซึ่งหมายความว่าการประกาศทำงานโดยไม่ขึ้นกับแหล่งภายนอก
ไวยากรณ์
ไวยากรณ์ของ DTD ภายในเป็นดังที่แสดง -
<!DOCTYPE root-element [element-declarations]>
โดยที่root-elementคือชื่อของ root element และelement-declarationsคือที่ที่คุณประกาศอิลิเมนต์
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างง่ายๆของ DTD ภายใน -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
ให้เราอ่านรหัสด้านบน -
Start Declaration - เริ่มการประกาศ XML ด้วยคำสั่งต่อไปนี้
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
DTD- ทันทีหลังจากส่วนหัว XML การประกาศประเภทเอกสารจะตามมาโดยทั่วไปเรียกว่า DOCTYPE -
<!DOCTYPE address [
การประกาศ DOCTYPE มีเครื่องหมายอัศเจรีย์ (!) ที่จุดเริ่มต้นของชื่อองค์ประกอบ DOCTYPE แจ้งโปรแกรมวิเคราะห์ข้อมูลว่า DTD เชื่อมโยงกับเอกสาร XML นี้
DTD Body - การประกาศ DOCTYPE ตามด้วยเนื้อความของ DTD ที่คุณประกาศองค์ประกอบแอตทริบิวต์เอนทิตีและสัญกรณ์ -
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>
มีการประกาศองค์ประกอบหลายอย่างที่นี่ซึ่งประกอบเป็นคำศัพท์ของเอกสาร <name> <! ELEMENT name (#PCDATA)> กำหนดชื่อองค์ประกอบให้เป็นประเภท "#PCDATA" ในที่นี้ #PCDATA หมายถึงข้อมูลข้อความที่สามารถแยกวิเคราะห์ได้
End Declaration- สุดท้ายส่วนการประกาศของ DTD จะปิดโดยใช้วงเล็บปิดและวงเล็บมุมปิด (]>) สิ่งนี้จะสิ้นสุดการกำหนดอย่างมีประสิทธิภาพและหลังจากนั้นเอกสาร XML จะตามมาทันที
กฎ
การประกาศประเภทเอกสารจะต้องปรากฏที่จุดเริ่มต้นของเอกสาร (นำหน้าด้วยส่วนหัว XML เท่านั้น) - ไม่อนุญาตที่อื่นใดในเอกสาร
เช่นเดียวกับการประกาศ DOCTYPE การประกาศองค์ประกอบต้องขึ้นต้นด้วยเครื่องหมายตกใจ
ชื่อในการประกาศประเภทเอกสารต้องตรงกับประเภทองค์ประกอบขององค์ประกอบราก
DTD ภายนอก
ในองค์ประกอบ DTD ภายนอกจะถูกประกาศภายนอกไฟล์ XML เข้าถึงได้โดยระบุแอตทริบิวต์ของระบบซึ่งอาจเป็นไฟล์. dtdทางกฎหมายหรือ URL ที่ถูกต้อง หากต้องการอ้างอิงเป็น DTD ภายนอกต้องตั้งค่าแอตทริบิวต์แบบสแตนด์อโลนในการประกาศ XML เป็นno. ซึ่งหมายความว่าการประกาศรวมถึงข้อมูลจากแหล่งภายนอก
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับ DTD ภายนอก -
<!DOCTYPE root-element SYSTEM "file-name">
โดยfile-nameคือไฟล์ที่มีนามสกุล. dtd
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้ DTD ภายนอก -
<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
เนื้อหาของไฟล์ DTD address.dtd มีดังรูป -
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
ประเภท
คุณสามารถอ้างถึง DTD ภายนอกได้โดยใช้ system identifiers หรือ public identifiers.
System Identifiers
ตัวระบุระบบช่วยให้คุณระบุตำแหน่งของไฟล์ภายนอกที่มีการประกาศ DTD ไวยากรณ์มีดังนี้ -
<!DOCTYPE name SYSTEM "address.dtd" [...]>
ดังที่คุณเห็นมีคำหลัก SYSTEM และการอ้างอิง URI ที่ชี้ไปยังตำแหน่งของเอกสาร
Public Identifiers
ตัวระบุสาธารณะเป็นกลไกในการค้นหาทรัพยากร DTD และเขียนไว้ดังนี้ -
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
ดังที่คุณเห็นเริ่มต้นด้วยคีย์เวิร์ด PUBLIC ตามด้วยตัวระบุพิเศษ ตัวระบุสาธารณะใช้เพื่อระบุรายการในแค็ตตาล็อก ตัวระบุสาธารณะสามารถเป็นไปตามรูปแบบใดก็ได้อย่างไรก็ตามรูปแบบที่ใช้กันทั่วไปเรียกว่าFormal Public Identifiers หรือ FPI