Учебники

DTD — Элементы

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

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

Синтаксис

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

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

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

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

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

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

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

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

Содержимое объявления элементов в DTD можно классифицировать следующим образом:

  • Пустой контент

  • Содержание элемента

  • Смешанный контент

  • Любой контент

Пустой контент

Содержание элемента

Смешанный контент

Любой контент

Пустой контент

Это особый случай объявления элемента. Это объявление элемента не содержит никакого содержимого. Они объявлены с ключевым словом EMPTY .

Синтаксис

Ниже приводится синтаксис объявления пустого элемента —

<!ELEMENT elementname EMPTY >

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

  • ELEMENT — объявление элемента категории EMPTY

  • elementname — имя пустого элемента.

ELEMENT — объявление элемента категории EMPTY

elementname — имя пустого элемента.

пример

Ниже приведен простой пример, демонстрирующий объявление пустого элемента —

<?xml version = "1.0"?>

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

В этом примере адрес объявлен как пустой элемент. Разметка для элемента address будет выглядеть как <address />.

Элемент Содержимое

В объявлении элемента с содержимым элемента содержимое будет допустимым элементом в скобках. Мы также можем включить более одного элемента.

Синтаксис

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

<!ELEMENT elementname (child1, child2...)>
  • ELEMENT — тег объявления элемента

  • elementname — это имя элемента.

  • child1, child2 .. являются элементами, и каждый элемент должен иметь свое собственное определение в DTD.

ELEMENT — тег объявления элемента

elementname — это имя элемента.

child1, child2 .. являются элементами, и каждый элемент должен иметь свое собственное определение в 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>

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

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

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

оператор Синтаксис Описание пример
+ <! ELEMENT element-name (child1 +)> Это указывает на то, что дочерний элемент может встречаться один или несколько раз внутри родительского элемента.

<! ELEMENT адрес (имя +)>

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

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

<! ELEMENT адрес (имя *)>

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

? <! ELEMENT element-name (child1?)> Это указывает на то, что дочерний элемент может появляться ноль или один раз внутри родительского элемента.

<! ELEMENT адрес (имя?)>

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

, <! ELEMENT element-name (child1, child2)> Это дает последовательность дочерних элементов, разделенных запятой, которая должна быть включена в имя элемента.

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

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

| <! ELEMENT element-name (child1 | child2)> Это позволяет делать выбор в дочернем элементе.

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

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

<! ELEMENT адрес (имя +)>

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

<! ELEMENT адрес (имя *)>

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

<! ELEMENT адрес (имя?)>

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

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

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

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

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

правила

Мы должны следовать определенным правилам, если есть более одного элемента контента —

  • Последовательности — часто элементы в документах DTD должны отображаться в определенном порядке. Если это так, вы определяете содержимое с помощью последовательности.

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

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

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

<!ELEMENT address (name,company,phone)>
  • Выбор. Предположим, вам нужно разрешить один или другой элемент, но не оба. В таких случаях вы должны использовать символ трубы (|). Труба функционирует как эксклюзивное ИЛИ. Например —

Выбор. Предположим, вам нужно разрешить один или другой элемент, но не оба. В таких случаях вы должны использовать символ трубы (|). Труба функционирует как эксклюзивное ИЛИ. Например —

<!ELEMENT address (mobile | landline)>

Содержание смешанного элемента

Это комбинация (#PCDATA) и дочерних элементов. PCDATA обозначает проанализированные символьные данные, то есть текст, который не является разметкой. В моделях со смешанным содержимым текст может появляться сам по себе или между элементами. Правила для моделей со смешанным содержимым аналогичны элементам содержимого, как обсуждалось в предыдущем разделе.

Синтаксис

Ниже приведен общий синтаксис для содержимого смешанных элементов:

<!ELEMENT elementname (#PCDATA|child1|child2)*>
  • ELEMENT — тег объявления элемента.

  • elementname — это имя элемента.

  • PCDATA — это текст, который не является разметкой. #PCDATA должен стоять первым в объявлении смешанного содержимого.

  • child1, child2 .. являются элементами, и каждый элемент должен иметь свое собственное определение в DTD.

  • Оператор (*) должен следовать за смешанным объявлением контента, если включены дочерние элементы

  • Объявления (#PCDATA) и дочерних элементов должны быть разделены оператором (|).

ELEMENT — тег объявления элемента.

elementname — это имя элемента.

PCDATA — это текст, который не является разметкой. #PCDATA должен стоять первым в объявлении смешанного содержимого.

child1, child2 .. являются элементами, и каждый элемент должен иметь свое собственное определение в DTD.

Оператор (*) должен следовать за смешанным объявлением контента, если включены дочерние элементы

Объявления (#PCDATA) и дочерних элементов должны быть разделены оператором (|).

пример

Ниже приведен простой пример, демонстрирующий объявление смешанного элемента содержимого в 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 в содержимом. Это чаще всего упоминается как элемент смешанной категории. ЛЮБОЙ полезно, когда вам еще предстоит определить допустимое содержимое элемента.

Синтаксис

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

<!ELEMENT elementname ANY>

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

пример

Ниже приведен простой пример, демонстрирующий объявление элемента с ЛЮБОЙ информацией.