Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Вопрос 2. Элементы и атрибуты XML-документа




Элементы XML-документа

XML - файл состоит из текста и разметки. Текст размещается в элементе, который начинается и заканчивается тегами.

Элемент имеет имя (это тип элемента), заключённое в угловые скобки <>, которое определяет начальный и конечный тэг (дискриптор). Имена (типы элементов) чувствительны к регистру символа. Имя элемента может начинаться с буквы, знака подчёркивания (_) или двоеточия (:) и не могут начинаться с буквосочетания “xml”.

Конечный тэг (дискриптор) дополнительно имеет косую черту.

Элемент может содержать один тэг (дискриптор) с пробелом и замыкающей косой чертой в конце:

 

<author = "Леонтьев" />

 

Элемент, состоящий из одного тэга (дискриптора) называется пустым элементом, а из двух тэгов и содержащий в себе любые данные – непустым.

Угловая скобка в начале дискриптора (<) в языках разметки называется MDO (Markup Declaration Open – открытие декларации разметки), а в конце дискриптора (>) - называется MDC (Markup Declaration Close – закрытие декларации разметки).

Хорошо оформленный XML документ обязательно должен иметь корневой элемент (root element). Внутри корневого элемента кроме текста могут находиться вложенные элементы:

 

<tutorial>

<title>"Учебное пособие по XМL"</title>

<author>Леонтьев Алексей Георгиевич</author>

</tutorial>

 

В XML - файле должен присутствовать только один корневой элемент. В примере это <tutorial>.

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

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

 

Начинается XML-файл обычно с объявления, которое ещё называют пролог (prolog). Пролог состоит из двух частей.

Первая часть пролога включает декларацию XML (XML Declaration). Декларация заключена между символами <?...?>, содержит пометку xml и номер версии спецификации XML. Она может включатьуказания на кодировку символов в которой написан данный текст. В объявление можно поместить еще параметр standalone со значениями "yes" или "no". Значение "no" показывает, что документ использует определения элементов, сделанные в другом, внешнем, документе. По умолчанию принимается значение "yes". Итак, полное объявление XML может выглядеть следующим образом:

 

<?xml version="1.0" encoding="WINDOWS-1251" standalone="yes"?>

 

Вторая часть пролога — объявление типа документа, DTD (Document Type Declaration) — может занимать одну или несколько строк. В этой части объявляются теги, использованные в документе, или приводится ссылка на файл, в котором записаны такие объявления. Объявление типа документа начинается с символов <!DOCTYPE, а заканчивается угловой скобкой — знаком "больше" >. Его содержимое зависит от способа объявления тегов.

Все это вместе выглядит так:

 

<?xml version="1.0" encoding="WINDOWS-1251" standalone="yes"?>

<!DOCTYPE tutorial SYSTEM "filename.dtd">

 

В примере рассматривается первая версия XML и русская кодировка символов для операционных систем Windows. Для операционных систем UNIX русская кодировка – "KOI8-R". Можно использовать универсальную кодировку "UTF-8" для Unicode.

Правила описания элементов XML-файла tutorial находится в каталоге SYSTEM, а не в общем каталоге PUBLIC в файле filename.dtd.

В примере, в соответствии с правилами, имя XML документа tutorial совпадает с именем корневого элемента.

 

Атрибуты XML-документа

 

Атрибуты состоят из имени и значения, где значение берется в двойные кавычки ("). Атрибуты позволяют сохранять вместе с элементом дополнительные параметры. Атрибут (или несколько атрибутов) указывается внутри начального тега элемента. При добавлении нескольких атрибутов они разделяются пробелами:

 

<author name="Леонтьев" surname="Алексей">

 

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

Значение атрибутов может заключаться как в одинарные (апострафы), так и в двойные кавычки. Кроме того возможно также использование одних кавычек внутри других:

 

< myElement attribute='"value"' >< /myElement >

 

Если значение атрибута содержит в себе кавычки, то его нужно заключить в апострофы, если значение содержит апострофы, то его заключают в кавычки. Если же кавычки и апострофы уже использованы для ограничения значений атрибутов, то внутри значения кавычку можно заменить ссылкой на сущность &quot;, а апостроф – ссылкой &apos;. Вместо ссылок на сущности можно записать коды кавычки и апострофа– &#34; и &#39;. В шестнадцатеричной форме коды кавычки и апострофа выглядят так: &#х22; и &#х27;.

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

Атрибуты удобны для описания простых значений. Практически у каждого гражданина России обязательно есть одно имя, одно отчество и одна фамилия. Их удобно записывать атрибутами. Но у гражданина России может быть несколько телефонов, поэтому их номера удобнее оформить как элементы < work-phone > и < home-phone >, вложенные в элемент < phone-list >, а не атрибуты открывающего тега < phone-list >. Заметьте, что элемент < name > с атрибутами пустой, у него нет содержимого, следовательно, не нужен закрывающий тег. Поэтому тег < name > с атрибутами завершается символами " /> ". Пример XML-документа с атрибутами в открывающем теге:

 

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE notebook SYSTEM "ntb.dtd">

< notebook >

< person >

< name first="Ивaн" sесоnd="Петрович" surname="Сидоров" />

< birthday > 25.03.1977 </ birthday >

< address >

< street > Садовая, 23-15 </ street >

< city > Санкт-Петербург </ city >

< zip > 123456 </ zip>

</ address >

< phone-list >

< work-phone>2654321 </ work-phone >

< work-phone>2654 023 </ work-phone >

< home-phone>34567 81 </ home-phone >

</ phone-list >

</ person >

< person >

< name first="Mapия" sесоnd ="Петровна" surname="Сидорова" />

< birthday > 17.05.1969 </ birthday >

< address >

< street > Малиновская, 17 </ street >

< city>Пушкин </ city >

< zip > 234561 </ zip >

</ address >

< phone-list >

< home-phone > 2334455 </ home-phone >

</ phone-list >

</ person >

</ notebook >

 

В этом примере первые две строки – пролог (декларации, определения).

Элемент < name first="Ивaн" sесоnd="Петрович" surname="Сидоров" /> - пустой и содержит три атрибута.

Элемент < person > повторяется дважды и является родительским для элементов: < name />, < birthday >, < address >, < phone-list>. Некоторые из этих элементов в свою очередь являются родительскими.

Атрибуты открывающего тега удобны и для указания типа элемента. Например, мы не уточняем, в городе живет наш родственник, в поселке или в деревне. Можно ввести в открывающий тег < city > атрибут type, прини­мающий одно из значений город, поселок, деревня. Например:

 

< city type="город" > Mocквa </ city >

 

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

 





Поделиться с друзьями:


Дата добавления: 2017-01-28; Мы поможем в написании ваших работ!; просмотров: 833 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2538 - | 2233 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.