Описание содержимого элементов в XML. Вложенные элементы и символьные данные. Типы атрибутов, значения по умолчанию
Теги в XML-документе не просто размечают текст — они выделяют объект, который и называется элементом. Элементы являются основными структурными единицами XML — именно они иерархически организуют информацию, содержащуюся в документе.(или Элементом называется часть документа XML, разграниченная открывающим тегом, таким как <my_element>, и закрывающим тегом, таким как </my_element>.)
Элементы могут быть пустыми, то есть не содержать ни данных, ни других конструкций, либо непустыми — включать в себя текст, другие элементы и т. п.
Пустой элемент имеет следующий вид:
<имя атрибут1="значение1" атрибут2="значение2" и т. д./>
Примеры
<img src="image.gif"/>
<br/>
<answer question="To be or not to be?" value="Perhaps"/>
Непустые элементы имеют вид:
<имя атрибут1="значение1" атрибут2="значение2" и т. д.>
...
содержимое элемента
...
</имя>
Пример
<myelement myattribute="myvalue">
<mysubnode>
sometext
</mysubnode>
</myelement>
XML-документ состоит из двух основных частей: пролога и корневого элемента, как показано на рисунке 2.1.
Рис. 2.1
Пролог
В данном примере документа пролог состоит из трех строк:
<?xml version="1.0"?>
<!-- File Name: Inventory.xml -->
Первая строка представляет собой объявление XML, указывающее на то, что это XML-документ и содержащее номер версии. (На момент создания курса последняя версия XML имела номер 1.0.) Объявление XML не является обязательным, хотя спецификация требует его включения. Если вы включаете XML-объявление, оно должно находиться в начале документа.
Вторая строка пролога состоит из пробела. С целью улучшения внешнего вида документа вы можете вставлять любое количество пустых строк между элементами пролога. При обработке они будут игнорироваться.
Третья строка пролога представляет собой комментарий. Добавление комментариев в XML-документ не обязательно, но позволяет сделать его более понятным. Комментарий начинается с символов <!-- и заканчивается символами -->. Между этими двумя группами символов вы можете поместить любой текст (за исключением -->); XML-процессор проигнорирует его.
Пролог может также содержать следующие необязательные компоненты:
- объявление типа документа, определяющее тип и структуру документа.
- объявление типа документа должно следовать после XML-объявления;
- одна или несколько инструкций по обработке, содержащих информацию о порядке проходов при обработке приложения XML-процессором.
Корневой элемент
Второй основной частью XML-документа является единый корневой элемент, который в свою очередь содержит дополнительные элементы.
В XML-документе элементы определяют его логическую структуру и несут в себе информацию, содержащуюся в документе (в нашем примере это информация о книгах, такая как название, автор, цена). Типовой элемент состоит из начального тега, содержимого элемента и конечного тега. Содержимым элемента могут быть символьные данные, другие (вложенные) элементы, либо сочетание данных и вложенных элементов.
В рассматриваемом примере корневой элемент – INVENTORY. Его начальный тег – <INVENTORY>, конечный тег – </INVENTORY>, а содержимое – восемь вложенных элементов BOOK.
Примечание. Текст в XML-документе представляет собой перемежающиеся символьные данные и данные, относящиеся к разметке. Разметка – это текст, ограниченный разделителями и описывающий структуру документа. А именно, начальный и конечный теги элемента, теги пустого элемента, объявления типа документа, инструкции по обработке, ограничители раздела CDATA, символьные ссылки, ссылки на примитивы (entity). Остальной текст представляет собой символьные данные – реальное информационное содержимое документа (в нашем примере это названия, фамилии авторов, цена и другая информация о книге).
Корневой элемент в XML-документе похож на элемент BODY на HTML-странице, за исключением того, что вы можете присвоить ему любое допустимое имя.
В свою очередь, каждый элемент BOOK содержит ряд вложенных элементов, как показано на рисунке 2.2.
Рис. 2.2
Примечание. Имя, которое содержится в начальном и конечном теге, есть тип элемента.
Каждый из элементов, вложенных в элемент BOOK, например, элемент TITLE, содержит только символьные данные, как показано на рисунке 2.3.