Объявление типов элементов

Конструкции языка

Содержимое XML- документа представляет собой набор элементов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных. Рассмотрим каждый из них подробней.

Элементы данных

Элемент - это структурная единица XML- документа. Заключая слово rose в в тэги <flower> </flower> , мы определяем непустой элемент, называемый <flower>, содержимым которого является rose. В общем случае в качестве содержимого элементов могут выступать как просто какой-то текст, так и другие, вложенные, элементы документа, секции CDATA, инструкции по обработке, комментарии, - т.е. практически любые части XML- документа.

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

<flower>rose</flower>

<city>Novosibirsk</city>

,а эти - нет:

<rose>

<flower>

rose

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

Например, опишем месторасположение Новосибирских университетов (указываем, что Новосибирский Университет расположен в городе Новосибирске, который, в свою очередь, находится в России), используя для этого вложенность элементов XML :

<country id="Russia">

<cities-list>

<city>

<title>Новосибирск</title>

<state>Siberia</state>

<universities-list>

<university id="2">

<title>Новосибирский Государственный Технический Университет</title>

<noprivate/>

<address URL="www.nstu.ru"/>

<description>очень хороший институт</description>

</university>

<university id="2">

<title>Новосибирский Государственный Университет</title>

<noprivate/>

<address URL="www.nsu.ru"/>

<description>тоже не плохой</description>

</university>

</universities-list>

</city>

</cities-list>

</country>

Производя в последствии поиск в этом документе, программа клиента будет опираться на информацию, заложенную в его структуру - используя элементы документа. Т.е. если, например, требуется найти нужный университет в нужном городе, используя приведенный фрагмент документа, то необходимо будет просмотреть содержимое конкретного элемента <university>, находящегося внутри конкретного элемента <city>. Поиск при этом, естественно, будет гораздо более эффективен, чем нахождение нужной последовательности по всему документу.

В XML документе, как правило, определяется хотя бы один элемент, называемый корневым и с него программы-анализаторы начинают просмотр документа. В приведенном примере этим элементом является <country>

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

Например, прочитав фрагмент <city>Holliwood</city> мы можем догадаться, что речь в этой части документа идет о городе, а вот во фрагменте <restaurant>Holliwood</restaurant> - о забегаловке.

Объявление типов элементов

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

Объявление типа элемента имеет следующую обобщенную форму:

<!ELEMENT Имя опись_содержимого>

Здесь Имя есть имя объявляемого типа элемента. Опись одержимого - это описание содержимого, которое определяет, что может содержать элемент.

Ниже приведено объявление типа элемента с именем TITLE, для содержимого которого могут использоваться только символьные данные (дочерние элементы не допускаются):

<!ELEMENT TITLE (#PCDATA)>

А вот объявление для типа элемента с именем GENERAL, содержимое которого может быть любым:

<!ELEMENT GENERAL ANY>

В качестве последнего примера рассмотрим законченный XML-документ с двумя типами элементов. Объявление типа элемента COLLECTION указывает, что он может содержать один или несколько элементов CD, a объявление типа элемента CD указывает, что он может содержать только символьные данные. Заметим, что документ соответствует этим объявлениям, и, следовательно, является валидным:

<?xml version="1.0"?>

<!DOCTYPE COLLECTION

[

<!ELEMENT COLLECTION (CD)+>

<!ELEMENTCD(#PCDATA)>

<!-- Вы также можете включать комментарии в DTD. -->

]

>

<COLLECTION>

<CD>Mozart Violin Concertos 1,2, and 3</CD>

<CD>Telemann Trumpet Concertos</CD>

<CD>Handel Concetti Grossi Op. 3</CD>

</COLLECTION>

Вы можете объявить определенный тип элемента в данном документе только один раз.

Наши рекомендации