Учебники

DTD — Сущности

Объекты используются для определения ярлыков для специальных символов в документах XML. Объекты могут быть в основном четырех типов —

  • Встроенные объекты

  • Персонажи персонажей

  • Общие лица

  • Параметр сущностей

Встроенные объекты

Персонажи персонажей

Общие лица

Параметр сущностей

Синтаксис декларации объекта

В общем, объекты могут быть объявлены внутренне или внешне . Давайте разберемся с каждым из них и их синтаксисом следующим образом:

Внутренняя сущность

Если объект объявлен в DTD, он называется внутренним объектом.

Синтаксис

Ниже приводится синтаксис объявления внутренней сущности:

<!ENTITY entity_name "entity_value">

В приведенном выше синтаксисе —

  • entity_name — это имя объекта, за которым следует его значение в двойных или одинарных кавычках.

  • entity_value содержит значение для имени объекта.

  • Значение сущности Внутреннего Сущности отменяется путем добавления префикса & к имени сущности, т. Е. & Entity_name.

entity_name — это имя объекта, за которым следует его значение в двойных или одинарных кавычках.

entity_value содержит значение для имени объекта.

Значение сущности Внутреннего Сущности отменяется путем добавления префикса & к имени сущности, т. Е. & Entity_name.

пример

Ниже приведен простой пример для объявления внутренней сущности:

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

В приведенном выше примере имена соответствующих сущностей name , company и phone_no заменены их значениями в XML-документе. Значения сущности освобождаются от ссылки путем добавления префикса & к имени сущности.

Сохраните этот файл как sample.xml и откройте его в любом браузере. Вы заметите, что значения сущностей для name , company , phone_no заменяются соответственно.

Внешняя сущность

Если объект объявляется вне DTD, он называется внешним объектом. Вы можете ссылаться на внешнюю сущность, используя системные идентификаторы или открытые идентификаторы.

Синтаксис

Ниже приведен синтаксис объявления внешнего объекта:

<!ENTITY name SYSTEM "URI/URL">

В приведенном выше синтаксисе —

  • имя это имя объекта.

  • СИСТЕМА это ключевое слово.

  • URI / URL — это адрес внешнего источника, заключенный в двойные или одинарные кавычки.

имя это имя объекта.

СИСТЕМА это ключевое слово.

URI / URL — это адрес внешнего источника, заключенный в двойные или одинарные кавычки.

Типы

Вы можете обратиться к внешнему DTD, используя —

  • Системные идентификаторы . Системный идентификатор позволяет указать местоположение внешнего файла, содержащего объявления DTD.

    Как вы можете видеть, он содержит ключевое слово SYSTEM и ссылку URI, указывающую на местоположение документа. Синтаксис выглядит следующим образом —

Системные идентификаторы . Системный идентификатор позволяет указать местоположение внешнего файла, содержащего объявления DTD.

Как вы можете видеть, он содержит ключевое слово SYSTEM и ссылку URI, указывающую на местоположение документа. Синтаксис выглядит следующим образом —

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • Публичные идентификаторы — Публичные идентификаторы предоставляют механизм для определения местоположения ресурсов DTD и записываются, как показано ниже:

    Как видите, он начинается с ключевого слова PUBLIC, за которым следует специальный идентификатор. Публичные идентификаторы используются для идентификации записи в каталоге. Публичные идентификаторы могут иметь любой формат; однако обычно используемый формат называется формальными общедоступными идентификаторами или FPI.

Публичные идентификаторы — Публичные идентификаторы предоставляют механизм для определения местоположения ресурсов DTD и записываются, как показано ниже:

Как видите, он начинается с ключевого слова PUBLIC, за которым следует специальный идентификатор. Публичные идентификаторы используются для идентификации записи в каталоге. Публичные идентификаторы могут иметь любой формат; однако обычно используемый формат называется формальными общедоступными идентификаторами или FPI.

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

пример

Давайте поймем внешнюю сущность со следующим примером —

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

амперсанд: & amp;

Одинарная кавычка: & apos;

Больше чем: & gt;

Менее чем: & lt;

Двойная кавычка: & quot;

пример

В следующем примере демонстрируется объявление встроенной сущности:

<?xml version = "1.0"?>

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

Как вы можете видеть здесь & amp; символ заменяется на & всякий раз, когда процессор сталкивается с этим.

Персонажи персонажей

Символьные объекты используются для именования некоторых объектов, которые являются символическим представлением информации, т.е. символы, которые сложно или невозможно ввести, могут быть заменены символьными объектами.

пример

Следующий пример демонстрирует объявление сущности символа —

<?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 — это любой символ, который не является символом «&», «%» или «».

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;)>

Когда синтаксический анализатор читает эти объявления, он заменяет текст замены объекта ссылкой на объект.