DTD - Элементы

XML-элементы можно определить как строительные блоки XML-документа. Элементы могут вести себя как контейнер для хранения текста, элементов, атрибутов, медиа-объектов или всего вместе.

Элемент DTD объявляется с помощью объявления ELEMENT. Когда XML-файл проверяется DTD, синтаксический анализатор сначала проверяет корневой элемент, а затем проверяются дочерние элементы.

Синтаксис

Все объявления элементов DTD имеют эту общую форму -

<!ELEMENT elementname (content)>
  • Объявление ELEMENT используется для указания парсеру, который вы собираетесь определить элемент.

  • elementname - это имя элемента (также называемое универсальным идентификатором ), который вы определяете.

  • content определяет, какой контент (если он есть) может находиться внутри элемента.

Типы содержимого элементов

Содержимое объявления элементов в 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>

В приведенном выше примере адрес является родительским элементом, а name , company и phone_no - его дочерними элементами.

Список операторов и синтаксических правил

В таблице ниже показан список операторов и правил синтаксиса, которые можно применять при определении дочерних элементов.

Оператор Синтаксис Описание пример
+ <! ЭЛЕМЕНТ имя-элемента (ребенок1 +)> Он указывает, что дочерний элемент может встречаться один или несколько раз внутри родительского элемента.

<! Адрес ЭЛЕМЕНТА (имя +)>

Имя дочернего элемента может встречаться один или несколько раз внутри адреса имени элемента .

* <! ЭЛЕМЕНТ имя-элемента (child1 *)> Это указывает на то, что дочерний элемент может встречаться внутри родительского элемента ноль или более раз.

<! Адрес ЭЛЕМЕНТА (имя *)>

Имя дочернего элемента может встречаться ноль или более раз внутри адреса имени элемента .

? <! ЭЛЕМЕНТ имя-элемента (ребенок1?)> Он указывает, что дочерний элемент может встречаться ноль или один раз внутри родительского элемента.

<! Адрес ЭЛЕМЕНТА (имя?)>

Имя дочернего элемента может встречаться ноль или один раз внутри адреса имени элемента .

, <! ЭЛЕМЕНТ имя-элемента (ребенок1, ребенок2)> Он дает последовательность дочерних элементов, разделенных запятыми, которые должны быть включены в имя элемента.

<! ELEMENT адрес (название, компания)>

Последовательность имен дочерних элементов , компания , которые должны находиться в том же порядке внутри адреса имени элемента .

| <! ЭЛЕМЕНТ имя-элемента (ребенок1 | ребенок2)> Это позволяет делать выбор в дочернем элементе.

<! ELEMENT адрес (название | компания)>

Это позволяет вам выбрать любой из дочерних элементов, то есть имя или компанию , которые должны находиться внутри адреса имени элемента .

Правила

Нам нужно следовать определенным правилам, если есть более одного содержимого элемента -

  • Sequences - Часто элементы в документах DTD должны появляться в определенном порядке. Если это так, вы определяете контент, используя последовательность.

    Объявление указывает, что элемент <address> должен иметь ровно три дочерних элемента - <name>, <company> и <phone> - и что они должны появляться в этом порядке. Например -

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

ЛЮБОЙ элемент содержимого

Вы можете объявить элемент, используя ключевое слово ANY в содержимом. Его чаще всего называют элементом смешанной категории. ЛЮБОЙ полезен, когда вы еще не определились с допустимым содержимым элемента.

Syntax

Ниже приведен синтаксис объявления элементов с ЛЮБЫМ содержимым:

<!ELEMENT elementname ANY>

Здесь ключевое слово ANY указывает, что текст (PCDATA) и / или любые элементы, объявленные в DTD, могут использоваться в содержимом элемента <elementname>. Их можно использовать в любом порядке сколько угодно раз. Однако ключевое слово ANY не позволяет включать элементы, не объявленные в 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>