Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по веб-сервисам.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

2.2.3Элементы xml

XML-элементом является все, что заключено между начальным тэгом элемента и конечным тэгом элемента, включая сами тэги. Как уже было показано выше, элементы могут быть пустыми, иметь дочерние элементы, иметь значение и атрибуты.

  1. Существует несколько правил наименования элементов:

  2. Названия могут содержать буквы, цифры и другие символы.

  3. Названия не могут начинаться с цифры или знака препинания.

  4. Названия не могут начинаться с букв xml в любом регистре.

  5. Названия не могут содержать пробелов.

  6. Символы «:» в названиях элементов отделяют пространство имен элемента от его имени. Этот символ может быть использован в имени только один раз.

Для задания названий элементам в документ лучше всего использовать цифры и буквы, составляя названия таким образом, чтобы они отображали семантику элемента.

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

<item id="2133">

<name>Монитор</item>

</name>

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

<?xml version="1.0" encoding="utf-8" ?>

<kafedra name="22">

<group name="K1-221">

<member>

<FIO>

Иванов Иван Иванович

</FIO>

</member>

<member>

...

</member>

</group>

<group name="K1-222">

...

</group>

</kafedra>

В приведенном примере элемент «kafedra» является корневым элементом. Он является родительским для элементов «group», которые свою очередь являются родительскими для элементов «member». Элементы «group» по отношению друг к другу считаются соседними.

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

<?xml version="1.0" encoding="utf-8" ?>

<order customerId="12">

<address>Москва, Каширское шоссе, 31</address>

<date>01.04.2006</date>

<time>12:40</time>

<items>

<item id="2133">

<name>Монитор</name>

</item>

<item id="2233">

<name>Видеокарта</name>

</item>

</items>

</order>

В новой версии ПО в документ был включен еще один элемент, содержащий телефонный номер заказчика:

<?xml version="1.0" encoding="utf-8" ?>

<order customerId="12">

<address>Москва, Каширское шоссе, 31</address>

<phone>324-84-00</phone>

<date>01.04.2006</date>

<time>12:40</time>

<items>

...

</items>

</order>

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

2.2.4Атрибуты xml

Любой XML-элемент может содержать в своем начальном тэге атрибуты, которые обычно представляют некоторую дополнительную информацию об элементе. Значения атрибутов должны быть заключены в кавычки. Для этих целей могут использоваться как одинарные, так и двойные кавычки. Обычно используются двойные кавычки, однако если значение атрибута само содержит двойные кавычки, то в этом случает нужно применять одинарные кавычки для «экранирования» этого значения:

<firm name='ООО "Рога и копыта"' phone="213-34-12"/>

Одну и ту же информацию в XML можно представить по-разному:

<order>

<address>Москва, Каширское шоссе, 31</address>

...

</order>

<order address="Москва, Каширское шоссе, 31">

...

</order>

Обе приведенные выше структуры содержат одинаковую информацию. Первая для хранения адреса применяет дочерний элемент, а вторая атрибут. Оба этих подхода могут быть использованы для сохранения данных в XML, однако обычно используются дочерние элементы. Это связано с несколькими причинами:

  1. Атрибуты не могут содержать дочерние элементы и поэтому подходят для хранения только атомарных данных.

  2. Атрибуты не описывают структуру данных, что затрудняет интерпретацию документа, как программой, так и человеком.

  3. При модификации XML-документа атрибуты невозможно расширить новыми элементами, что является потенциальным источником проблем при обновлении версии программного обеспечения.

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

<order>

<address>

<city>Москва</city>

<street>Каширское шоссе</street>

<house>31</house>

</address>

...

</order>