DTD - องค์ประกอบ

องค์ประกอบ XML สามารถกำหนดเป็นแบบเอกสารสำเร็จรูปของเอกสาร XML องค์ประกอบสามารถทำงานเป็นภาชนะเพื่อเก็บข้อความองค์ประกอบแอตทริบิวต์วัตถุสื่อหรือผสมทั้งหมด

องค์ประกอบ DTD ถูกประกาศด้วยการประกาศ ELEMENT เมื่อไฟล์ XML ได้รับการตรวจสอบความถูกต้องโดย DTD ตัวแยกวิเคราะห์จะตรวจสอบองค์ประกอบรากในขั้นต้นจากนั้นองค์ประกอบลูกจะได้รับการตรวจสอบความถูกต้อง

ไวยากรณ์

การประกาศองค์ประกอบ DTD ทั้งหมดมีรูปแบบทั่วไปนี้ -

<!ELEMENT elementname (content)>
  • การประกาศELEMENTใช้เพื่อระบุตัววิเคราะห์ที่คุณกำลังจะกำหนดองค์ประกอบ

  • elementnameคือชื่อองค์ประกอบ (เรียกอีกอย่างว่าตัวระบุทั่วไป ) ที่คุณกำลังกำหนด

  • เนื้อหากำหนดว่าเนื้อหาใด (ถ้ามี) สามารถอยู่ในองค์ประกอบได้

ประเภทเนื้อหาองค์ประกอบ

เนื้อหาของการประกาศองค์ประกอบใน DTD สามารถแบ่งประเภทได้ดังนี้ -

  • เนื้อหาว่างเปล่า

  • เนื้อหาองค์ประกอบ

  • เนื้อหาผสม

  • เนื้อหาใด ๆ

เนื้อหาว่างเปล่า

นี่เป็นกรณีพิเศษของการประกาศองค์ประกอบ การประกาศองค์ประกอบนี้ไม่มีเนื้อหาใด ๆ สิ่งเหล่านี้ประกาศด้วยคำหลักEMPTY.

Syntax

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

<!ELEMENT elementname EMPTY >

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

  • ELEMENTเป็นการประกาศองค์ประกอบของหมวดหมู่EMPTY

  • elementname เป็นชื่อขององค์ประกอบว่าง

Example

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

<?xml version = "1.0"?>

<!DOCTYPE hr[
   <!ELEMENT address EMPTY>    
]>
<address />

ในตัวอย่างที่อยู่นี้ถูกประกาศเป็นองค์ประกอบว่าง มาร์กอัปสำหรับองค์ประกอบที่อยู่จะปรากฏเป็น <ที่อยู่ />

เนื้อหาองค์ประกอบ

ในการประกาศองค์ประกอบที่มีเนื้อหาองค์ประกอบเนื้อหาจะเป็นองค์ประกอบที่อนุญาตได้ภายในวงเล็บ นอกจากนี้เรายังสามารถรวมองค์ประกอบได้มากกว่าหนึ่งองค์ประกอบ

Syntax

ต่อไปนี้เป็นไวยากรณ์ของการประกาศองค์ประกอบที่มีเนื้อหาองค์ประกอบ -

<!ELEMENT elementname (child1, child2...)>
  • ELEMENT คือแท็กการประกาศองค์ประกอบ

  • elementname คือชื่อขององค์ประกอบ

  • child1, child2 ..เป็นองค์ประกอบและแต่ละองค์ประกอบต้องมีนิยามของตัวเองภายใน DTD

Example

ตัวอย่างด้านล่างแสดงให้เห็นตัวอย่างง่ายๆสำหรับการประกาศองค์ประกอบที่มีเนื้อหาองค์ประกอบ -

<?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>

ในตัวอย่างข้างต้นอยู่เป็นองค์ประกอบหลักและชื่อ , บริษัทและphone_noมีองค์ประกอบของเด็ก

รายชื่อตัวดำเนินการและกฎไวยากรณ์

ตารางด้านล่างแสดงรายการตัวดำเนินการและกฎไวยากรณ์ที่สามารถนำไปใช้ในการกำหนดองค์ประกอบลูก -

ตัวดำเนินการ ไวยากรณ์ คำอธิบาย ตัวอย่าง
+ <! ELEMENT ชื่อองค์ประกอบ (child1 +)> บ่งชี้ว่าองค์ประกอบลูกสามารถเกิดขึ้นได้อย่างน้อยหนึ่งครั้งภายในองค์ประกอบหลัก

<! ที่อยู่ขององค์ประกอบ (ชื่อ +)>

องค์ประกอบลูกชื่อสามารถเกิดขึ้นหนึ่งครั้งหรือมากกว่าภายในชื่อองค์ประกอบอยู่

* <! ELEMENT ชื่อองค์ประกอบ (child1 *)> บ่งชี้ว่าองค์ประกอบลูกสามารถเกิดขึ้นเป็นศูนย์หรือมากกว่าครั้งภายในองค์ประกอบหลัก

<! ที่อยู่ขององค์ประกอบ (ชื่อ *)>

องค์ประกอบลูกชื่อสามารถเกิดขึ้นได้เป็นศูนย์หรือมากกว่าครั้งภายในชื่อองค์ประกอบอยู่

เหรอ? <! ELEMENT ชื่อองค์ประกอบ (child1?)> บ่งชี้ว่าองค์ประกอบลูกสามารถเกิดขึ้นเป็นศูนย์หรือครั้งเดียวภายในองค์ประกอบหลัก

<! ที่อยู่ขององค์ประกอบ (ชื่อ?)>

องค์ประกอบลูกชื่อสามารถเกิดขึ้นได้เป็นศูนย์หรือเพียงครั้งเดียวภายในชื่อองค์ประกอบอยู่

, <! ELEMENT ชื่อองค์ประกอบ (child1, child2)> จะให้ลำดับขององค์ประกอบลูกที่คั่นด้วยลูกน้ำซึ่งต้องรวมอยู่ในชื่อองค์ประกอบ

<! ที่อยู่ขององค์ประกอบ (ชื่อ บริษัท )>

ลำดับขององค์ประกอบของเด็กชื่อ , บริษัทซึ่งจะต้องเกิดขึ้นในลำดับเดียวกันภายในชื่อองค์ประกอบอยู่

| <! ELEMENT ชื่อองค์ประกอบ (child1 | child2)> ช่วยให้สามารถเลือกองค์ประกอบลูกได้

<! ที่อยู่ขององค์ประกอบ (ชื่อ | บริษัท )>

จะช่วยให้คุณเลือกอย่างใดอย่างหนึ่งขององค์ประกอบของเด็กเช่นชื่อหรือบริษัทซึ่งจะต้องเกิดขึ้นในภายในชื่อองค์ประกอบอยู่

กฎ

เราจำเป็นต้องปฏิบัติตามกฎบางประการหากมีเนื้อหาองค์ประกอบมากกว่าหนึ่งรายการ -

  • Sequences - บ่อยครั้งองค์ประกอบภายในเอกสาร DTD ต้องปรากฏในลำดับที่แตกต่างกัน หากเป็นกรณีนี้คุณกำหนดเนื้อหาโดยใช้ลำดับ

    การประกาศระบุว่าองค์ประกอบ <address> ต้องมีลูกสามคน - <ชื่อ>, <บริษัท > และ <โทรศัพท์> และจะต้องปรากฏตามลำดับนี้ ตัวอย่างเช่น -

<!ELEMENT address (name,company,phone)>
  • Choices- สมมติว่าคุณต้องอนุญาตองค์ประกอบหนึ่งหรืออีกองค์ประกอบหนึ่ง แต่ไม่ใช่ทั้งสองอย่าง ในกรณีเช่นนี้คุณต้องใช้อักขระไปป์ (|) ท่อทำหน้าที่เป็นเอกสิทธิ์เฉพาะหรือ ตัวอย่างเช่น -

<!ELEMENT address (mobile | landline)>

เนื้อหาองค์ประกอบผสม

นี่คือการรวมกันของ (#PCDATA) และองค์ประกอบลูก PCDATA ย่อมาจากข้อมูลอักขระที่แยกวิเคราะห์นั่นคือข้อความที่ไม่ใช่มาร์กอัป ภายในโมเดลเนื้อหาแบบผสมข้อความสามารถปรากฏขึ้นเองหรือสลับระหว่างองค์ประกอบได้ กฎสำหรับโมเดลเนื้อหาแบบผสมจะคล้ายกับเนื้อหาองค์ประกอบตามที่กล่าวไว้ในส่วนก่อนหน้า

Syntax

ต่อไปนี้เป็นไวยากรณ์ทั่วไปสำหรับเนื้อหาองค์ประกอบแบบผสม -

<!ELEMENT elementname (#PCDATA|child1|child2)*>
  • ELEMENT คือแท็กการประกาศองค์ประกอบ

  • elementname คือชื่อขององค์ประกอบ

  • PCDATAคือข้อความที่ไม่ใช่มาร์กอัป #PCDATA ต้องมาก่อนในการประกาศเนื้อหาแบบผสม

  • child1, child2 ..เป็นองค์ประกอบและแต่ละองค์ประกอบต้องมีนิยามของตัวเองภายใน DTD

  • ตัวดำเนินการ (*) ต้องปฏิบัติตามการประกาศเนื้อหาผสมหากรวมองค์ประกอบลูก

  • การประกาศ (#PCDATA) และองค์ประกอบย่อยต้องคั่นด้วยตัวดำเนินการ (|)

Example

ต่อไปนี้เป็นตัวอย่างง่ายๆที่แสดงให้เห็นถึงการประกาศองค์ประกอบเนื้อหาแบบผสมใน DTD

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

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA|name)*>
   <!ELEMENT name (#PCDATA)>
]>

<address>
   Here's a bit of text mixed up with the child element.
   <name>
      Tanmay Patil
   </name>
</address>

เนื้อหาองค์ประกอบใด ๆ

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

Syntax

ต่อไปนี้เป็นไวยากรณ์สำหรับการประกาศองค์ประกอบที่มีเนื้อหาใด ๆ -

<!ELEMENT elementname ANY>

ที่นี่คำสำคัญใด ๆ ระบุว่าข้อความ (PCDATA) และ / หรือองค์ประกอบใด ๆ ที่ประกาศภายใน DTD สามารถใช้ได้ภายในเนื้อหาขององค์ประกอบ <elementname> สามารถใช้ตามลำดับกี่ครั้งก็ได้ อย่างไรก็ตามคำหลักใด ๆ ไม่อนุญาตให้คุณรวมองค์ประกอบที่ไม่ได้ประกาศไว้ใน DTD

Example

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

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

<!DOCTYPE address [
   <!ELEMENT address ANY>
]>

<address>
   Here's a bit of sample text
</address>