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>