DTD - เอนทิตี

เอนทิตีใช้เพื่อกำหนดทางลัดไปยังอักขระพิเศษภายในเอกสาร XML เอนทิตีหลัก ๆ มีได้ 4 ประเภท -

  • เอนทิตีในตัว

  • เอนทิตีอักขระ

  • เอนทิตีทั่วไป

  • เอนทิตีพารามิเตอร์

ไวยากรณ์การประกาศเอนทิตี

โดยทั่วไปสามารถประกาศเอนทิตีได้ internally หรือ externally. ให้เราเข้าใจสิ่งเหล่านี้และไวยากรณ์ของพวกเขาดังนี้ -

เอนทิตีภายใน

หากมีการประกาศเอนทิตีภายใน DTD จะเรียกว่าเอนทิตีภายใน

Syntax

ต่อไปนี้เป็นไวยากรณ์สำหรับการประกาศเอนทิตีภายใน -

<!ENTITY entity_name "entity_value">

ในไวยากรณ์ข้างต้น -

  • entity_name คือชื่อของเอนทิตีตามด้วยค่าภายในอัญประกาศคู่หรืออัญประกาศเดี่ยว

  • entity_value เก็บค่าสำหรับชื่อเอนทิตี

  • ค่าเอนทิตีของเอนทิตีภายในถูกยกเลิกการอ้างอิงโดยการเพิ่มคำนำหน้า & ไปยังชื่อเอนทิตีเช่น & entity_name

Example

ต่อไปนี้เป็นตัวอย่างง่ายๆสำหรับการประกาศเอนทิตีภายใน -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA)>
   <!ENTITY name "Tanmay patil">
   <!ENTITY company "TutorialsPoint">
   <!ENTITY phone_no "(011) 123-4567">
]>

<address>
   &name;
   &company;
   &phone_no;
</address>

ในตัวอย่างข้างต้นนั้นชื่อนิติบุคคลชื่อ , บริษัทและphone_noจะถูกแทนที่ด้วยค่าของพวกเขาในเอกสาร XML ค่าเอนทิตีถูกยกเลิกการอ้างอิงโดยการเพิ่มคำนำหน้า & ไปยังชื่อเอนทิตี

บันทึกไฟล์นี้เป็นไฟล์ sample.xmlและเปิดในเบราว์เซอร์ใด ๆ คุณจะพบว่าค่านิติบุคคลสำหรับชื่อ , บริษัท , phone_noจะถูกแทนที่ตามลำดับ

เอนทิตีภายนอก

หากมีการประกาศเอนทิตีภายนอก DTD จะเรียกว่าเอนทิตีภายนอก คุณสามารถอ้างถึงเอนทิตีภายนอกได้โดยใช้ตัวระบุระบบหรือตัวระบุสาธารณะ

Syntax

ต่อไปนี้เป็นไวยากรณ์สำหรับการประกาศเอนทิตีภายนอก -

<!ENTITY name SYSTEM "URI/URL">

ในไวยากรณ์ข้างต้น -

  • name คือชื่อนิติบุคคล

  • SYSTEM คือคำหลัก

  • URI/URL คือที่อยู่ของแหล่งภายนอกที่อยู่ภายในเครื่องหมายคำพูดคู่หรือเดี่ยว

Types

คุณสามารถอ้างถึง DTD ภายนอกได้โดยใช้ -

  • System Identifiers - ตัวระบุระบบช่วยให้คุณระบุตำแหน่งของไฟล์ภายนอกที่มีการประกาศ DTD

    ดังที่คุณเห็นมีคำหลัก SYSTEM และการอ้างอิง URI ที่ชี้ไปยังตำแหน่งของเอกสาร ไวยากรณ์มีดังนี้ -

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • Public Identifiers - ตัวระบุสาธารณะเป็นกลไกในการค้นหาทรัพยากร DTD และเขียนไว้ดังนี้ -

    ดังที่คุณเห็นเริ่มต้นด้วยคีย์เวิร์ด PUBLIC ตามด้วยตัวระบุพิเศษ ตัวระบุสาธารณะใช้เพื่อระบุรายการในแค็ตตาล็อก ตัวระบุสาธารณะสามารถทำตามรูปแบบใดก็ได้ อย่างไรก็ตามรูปแบบที่ใช้กันทั่วไปเรียกว่าFormal Public Identifiers หรือ FPI

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Example

ให้เราทำความเข้าใจกับหน่วยงานภายนอกด้วยตัวอย่างต่อไปนี้ -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!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)>

เอนทิตีในตัว

ตัวแยกวิเคราะห์ XML ทั้งหมดต้องรองรับเอนทิตีในตัว โดยทั่วไปคุณสามารถใช้การอ้างอิงเอนทิตีเหล่านี้ได้ทุกที่ คุณยังสามารถใช้ข้อความปกติภายในเอกสาร XML เช่นในเนื้อหาองค์ประกอบและค่าแอตทริบิวต์

มีเอนทิตีในตัวห้ารายการที่มีบทบาทใน XML ที่มีรูปแบบดี ได้แก่ -

  • เครื่องหมายและ: & amp;

  • คำพูดเดียว: & apos;

  • มากกว่า: & gt;

  • น้อยกว่า: & lt;

  • คำพูดคู่: & quot;

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประกาศเอนทิตีในตัว -

<?xml version = "1.0"?>

<note>
   <description>I'm a technical writer & programmer</description>
<note>

ดังที่คุณเห็นที่นี่ปุ่ม & amp; อักขระจะถูกแทนที่ด้วย & เมื่อใดก็ตามที่โปรเซสเซอร์พบสิ่งนี้

เอนทิตีอักขระ

Character Entities ใช้เพื่อตั้งชื่อเอนทิตีบางส่วนซึ่งเป็นการแสดงข้อมูลเชิงสัญลักษณ์เช่นอักขระที่พิมพ์ยากหรือเป็นไปไม่ได้สามารถถูกแทนที่ด้วย Character Entities

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประกาศเอนทิตีอักขระ -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
   <!ELEMENT author (#PCDATA)>
   <!ENTITY writer "Tanmay patil">
   <!ENTITY copyright "&#169;">
]>
<author>&writer;&copyright;</author>

คุณจะสังเกตเห็นที่นี่เราได้ใช้ &#169;เป็นมูลค่าสำหรับตัวละครลิขสิทธิ์ บันทึกไฟล์นี้เป็นsample.xmlและเปิดในเบราว์เซอร์ของคุณและคุณจะเห็นว่าลิขสิทธิ์ถูกแทนที่ด้วยอักขระ©

เอนทิตีทั่วไป

ต้องมีการประกาศเอนทิตีทั่วไปภายใน DTD ก่อนจึงจะสามารถใช้งานได้ภายในเอกสาร XML แทนที่จะแสดงเพียงอักขระเดียวเอนทิตีทั่วไปสามารถแทนอักขระย่อหน้าและแม้แต่เอกสารทั้งหมด

ไวยากรณ์

ในการประกาศเอนทิตีทั่วไปให้ใช้การประกาศแบบฟอร์มทั่วไปนี้ใน DTD ของคุณ -

<!ENTITY ename "text">

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประกาศเอนทิตีทั่วไป -

<?xml version = "1.0"?>

<!DOCTYPE note [
   <!ENTITY source-text "tutorialspoint">
]>

<note>
   &source-text;
</note>

เมื่อใดก็ตามที่ตัวแยกวิเคราะห์ XML พบการอ้างอิงถึงเอนทิตีข้อความต้นทางโปรแกรมจะส่งข้อความแทนที่ไปยังแอปพลิเคชันที่จุดอ้างอิง

เอนทิตีพารามิเตอร์

วัตถุประสงค์ของเอนทิตีพารามิเตอร์คือเพื่อให้คุณสามารถสร้างส่วนที่ใช้ซ้ำได้ของข้อความแทนที่

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์สำหรับการประกาศเอนทิตีพารามิเตอร์ -

<!ENTITY % ename "entity_value">
  • entity_valueคืออักขระใด ๆ ที่ไม่ใช่ "&", "%" หรือ "" "

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการประกาศเอนทิตีพารามิเตอร์ สมมติว่าคุณมีการประกาศองค์ประกอบดังต่อไปนี้ -

<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>

ตอนนี้สมมติว่าคุณต้องการเพิ่มประเทศที่สิบเอ็ดเพิ่มเติมจากนั้นคุณต้องเพิ่มในการประกาศทั้งสี่ ดังนั้นเราสามารถไปสำหรับการอ้างอิงเอนทิตีพารามิเตอร์ ตอนนี้ใช้เอนทิตีพารามิเตอร์อ้างอิงตัวอย่างข้างต้นจะเป็น -

<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">

เอนทิตีพารามิเตอร์ถูกอ้างถึงในลักษณะเดียวกับการอ้างอิงเอนทิตีทั่วไปโดยมีเครื่องหมายเปอร์เซ็นต์แทนเครื่องหมายแอมเพอร์แซนด์ -

<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>

เมื่อตัวแยกวิเคราะห์อ่านคำประกาศเหล่านี้จะแทนที่ข้อความแทนที่ของเอนทิตีสำหรับการอ้างอิงเอนทิตี