Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Добавление элементов в документ



 

Элементы в XML-документе содержат фактическую информацию, имеющуюся в документе (для Листинга 1.2, например, это названия книг, фамилии авторов, цена и т. д.), а также отражают логическую структуру информации.

Элементы организованы в иерархическую древовидную структуру, в которой одни элементы вложены в другие. Документ должен иметь один и только один элемент верхнего уровня - элемент Документ, или корневой элемент - а все другие элементы вложены в него. Представленный ниже XML-документ является корректно сформированным.

 

<?xml version="1.0"?>

<!-- Корректно сформированный XML-документ -->

<INVENTORY>

<BOOK>

<TITLE>Война и мир</TITLE>

<AUTHOR>Лев Толстой</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR>Фёдор Достоевский</AUTHOR>

<BINDING>Мягкая обложка</BINDING>

<PAGES>590</PAGES>

<PRICE>14 000 рублей</PRICE>

</BOOK>

</INVENTORY>

Листинг 1.4 Пример корректно сформированного XML-документа

 

А вот следующий документ не является корректно сформированным.

 

<?xml version="1.0"?>

<!-- Это не корректно сформированный XML-документ -->

<BOOK>

<TITLE>Война и мир</TITLE>

<AUTHOR>Лев Толстой</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

<BOOK>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR>Фёдор Достоевский</AUTHOR>

<BINDING>Мягкая обложка</BINDING>

<PAGES>590</PAGES>

<PRICE>14 000 рублей</PRICE>

</BOOK>

Листинг 1.4 Пример не корректно сформированного XML-документа

 

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

 

<BOOK>

<TITLE>Преступление и наказание</TITLE>

<AUTHOR>Фёдор Достоевский</AUTHOR>

</BOOK>



В то же время эти элементы не являются корректно сформированными:

 

<!-- Не корректно сформированный XML-документ -->

<BOOK><TITLE>Преступление и наказание</BOOK></TITLE>

Элемент, который содержит один или более вложенных элементов (например, BOOK в Листинге 1.2), называется родительским элементом. Элемент, содержащийся непосредственно внутри родительского элемента (например, TITLE внутри BOOK), называется дочерним элементом, субэлементом или вложенным элементом.

 

Анатомия элемента

 

Элемент обычно состоит из начального тега, содержимого и конечного тега, как показано на рисунке 4.

В отличие от HTML, XML требует наличия как начального, так и конечного тега. (Единственным исключением является элемент без содержимого, для которого вы можете использовать специальный тег пустого элемента, о котором пойдет речь далее.)

Имя, которое содержится в стартовой позиции начального тега и в конечном теге (TITLE на рисунке 4), называется типом или родовым идентификатором элемента. Имя элемента идентифицирует особый тип или класс элемента, а не собственно элемент. Таким образом, документ может содержать более одного элемента с одинаковыми именами типа (например, элементы BOOK или TITLE в Листинге 1.2). При добавлении элемента в XML-документ можно выбрать любое имя типа по желанию, руководствуясь при этом следующими правилами:

· имя должно начинаться с буквы или с символа подчеркивания (_), после чего могут идти буквы, цифры, символы точки (.), тире (-) или подчеркивания;

· в спецификации XML указано, что имена типов элементов, которые начинаются с префикса “xml” (при любом сочетании строчных или прописных букв), “зарезервированы для стандартных имен”. Хотя браузер не слишком требователен в этом отношении, лучше не использовать этот префикс, дабы избежать будущих неприятностей.



Ниже приведены примеры правильного задания имен типов элементов.

 

Part

JstPlace

А

B-SECTION

Street.Address.1

Следующие имена использовать недопустимо:

1stPlace <!--В качестве первого символа нельзя использовать цифру-->

В Section <!--Пробел внутри имени не разрешается-->

B/Section <!--Косая черта внутри имени не разрешается-->

:Chapter <!--Двоеточие нельзя использовать в качестве первого символа-->

A:Section <!--Допускается, если только А объявлено как пространство имен-->

 

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

 

<Title> Преступление и наказание </title> <!-- НЕ корректно. -->

 

Соблюдение регистра существенно для имен элементов, как и для всего текста в описании разметки. Так, тип элемента с именем Book не будет эквивалентен типу book или BOOK.

 

Типы содержимого элемента

 

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

· вложенные элементы - в Листинге 1.2 элемент INVENTORY и элемент ВOOК имеют в своем содержимом вложенные элементы, как показано на рисунке;

 

· символьные данные - это текст, выражающий информационное содержание элемента, например, название определенной книги в элементе TITLE, как показано на следующем рисунке.

 

 

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

 

 

При добавлении в элемент символьных данных можно использовать любые символы, за исключением левой угловой скобки (<), амперсенда (&) и строки ]]>. Синтаксический анализатор XML сканирует символьные данные элемента для XML-разметки. Нельзя использовать левую угловую скобку (<), амперсанд (&) или строку (]]>) в составе символьных данных, поскольку анализатор может интерпретировать символ “<” как начало вложенного элемента, “&” как начало ссылки на примитив или символ, а “]]>” как окончание раздела СDATA. Если необходимо использовать символы “<” или “&” как часть символьных данных, нужно воспользоваться разделом СDATA. Кроме того, можно воспользоваться любым символом (в том числе и теми, которых нет на клавиатуре), воспользовавшись ссылкой на символ. Некоторые символы (например, “<” или “&”) можно вставлять с использованием предопределенных ссылок на общие примитивы.

· Ссылки на общие примитивы и ссылки на символы. На следующем рисунке приведен элемент, содержащий оба вида таких ссылок.

 

 

· Разделы CDATA — это текстовый блок, в котором вы можете свободно размещать любые символы, за исключением строки ]]>. Пример раздела CDATA внутри элемента, показан на следующем рисунке.

 

 

Раздел CDATA начинается с символов <![CDATA[ и заканчивается символами ]]>. Между этими двумя ограничителями можно поместить любые символы (включая < или &), за исключением ]]> (что будет интерпретировано как конец раздела CDATA). Все символы внутри раздела CDATA трактуются как литеральная часть символьных данных элемента, а не как XML-разметка. Ниже приведен пример правильно записанного раздела CDATA:

 

<![CDATA[

Здесь можно разместить любые символы, за исключением двух правых квадратных скобок с последующим знаком “больше”.

]]>

 

Ключевое слово CDATA (как и другие ключевые слова XML) должно быть набрано прописными буквами. Если необходимо включить в состав имеющихся символьных данных блок исходного кода или разметку, которые будут отображаться браузером, то можно воспользоваться разделом CDATA с целью предотвратить интерпретацию синтаксическим анализатором символов < или & как XML-разметку. Например:

 

<A-SECTION>

Вот пример очень простой HTML-страницы:

<![CDATA[

<HTML>

<HEAD>

<TITLE>Компания “Петров & сыновья”</TITLE>

</HEAD>

<BODY>

<Р>Добро пожаловать на нашу домашнюю страницу!</Р>

</BODY>

</HTML>

]]>

</A-SECTION>

 

Внутри раздела CDATA процессор будет предполагать, что <HTML>, например, есть начало вложенного элемента, но не часть символьных данных элемента A-SECTION. Поскольку можно непосредственно помещать символы < и & внутрь раздела CDATA, то не нужно использовать ссылки на символы (&#60; и &#38;) или на предопределенные примитивы общего назначения &lt; и &аmр;. Фактически, при использовании подобной ссылки, синтаксический анализатор интерпретирует каждый из символов в ссылке как литерал и не замещает ссылку символами < и &. Раздел CDATA можно поместить в любое место, занимаемое символьными данными - т.е. внутри содержимого элемента, но не внутри XML-разметки. Вот правильно записанный раздел CDATA:

 

<?xml version="1.0"?>

<MUSICAL>

<TITLE_PAGE>

<![CDATA[

<Оклахома!>

По Роджеру & Хаммерштайну

]]>

</TITLE_PAGE>

<!-- Здесь расположены другие элементы... -->

</MUSICAL>

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

 

<?xmlversion="1.0"?>

<![CDATA[ ОШИБКА: не внутри содержимого элемента! ]]>

<DOC ELEMENT>

<SUB_ELEMENT <![CDATA[ ОШИБКА: внутри разметки! ]]> >

содержимое подэлемента...

</SUB ELEMENT>

</DOC_ELEMENT>

 

Разделы CDАТА не являются вложениями. Нельзя поместить один раздел СDАТА внутрь другого.

· Инструкции по обработке содержат информацию, необходимую для XML-приложений.

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

 

 

Пустые элементы

 

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

 

<HR></HR>

 

Либо можно использовать специальный тег пустого элемента:

 

<HR/>

 

Эти нотации являются эквивалентными.

Поскольку пустой элемент не имеет содержимого, может возникнуть вопрос о его предназначении. Есть два варианта:

· можно использовать пустой элемент, чтобы указать XML-прило-жению выполнить действие или отобразить объект. Аналогом в HTML является пустой элемент BR, который является указанием браузеру вставить разрыв строки, а также пустой элемент HR, указывающий на вставку горизонтальной разделительной линии. Другими словами, само присутствие элемента с определенным именем - без какого-либо содержимого - может послужить важной информацией для приложения;

· пустой элемент может нести информацию посредством атрибутов, о которых будет рассказано далее. Аналогом в HTML является пустой элемент IMG (изображение), содержащий атрибуты, которые сообщают процессору, где искать графический файл и как его отобразить.

 

Лабораторная работа №3

 

1. В XML-документ из лабораторной работы №2 вставьте в виде комментария ФИО автора созданной картотеки и дату её создания.

2. Содержимое элементов, в которых содержатся данные о месте проживания студентов, заключите в угловые скобки (например, <street><ул. Молодёжная></street>). Для этого по указанию преподавателя в некоторых случаях воспользуйтесь разделом CDATA, а в некоторых - ссылкой на символы.

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

4. Откройте откорректированный XML-документ в браузере Internet Explorer.

5. При появлении сообщений об ошибках, постарайтесь их найти и устранить.

6. Сдайте работу преподавателю.

 

Задание атрибутов для элементов

 

В начальный тег элемента либо в тег пустого элемента можно включить одно или несколько описаний атрибутов. Описание атрибута представляет собой пару имя - значение, связанную с данным элементом. Например, следующий элемент PRICE включает атрибут с именем Туре, которому присвоено значение “розничная”:

 

<PRICE Type=”розничная”>14 000 рублей</PRICE>

 

Следующий элемент BOOK включает два атрибута, Category и Display:

 

 

<BOOK Category=”Художественная литература” Display=”Заголовок”>

<TITLE>Война и мир</TITLE>

<AUTHOR>Лев Толстой</AUTHOR>

<BINDING>Жёсткая обложка</BINDING>

<PAGES>510</PAGES>

<PRICE>12 000 рублей</PRICE>

</BOOK>

 

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

 

<COVER_IMAGE Source="Faun.gif" />

 

Задание атрибутов обеспечивает альтернативный способ включения информации в элемент. Обычно все относящиеся к элементу данные, которые нужно отобразить, помещаются внутри содержимого элемента. Атрибуты же используются для хранения различных свойств элемента, которые не обязательно будут отображены (например, категория, или указания по отображению). В спецификации XML не установлено строгих разграничений относительно типа информации, которую можно описывать с помощью атрибутов или внутри содержимого элемента.

При отображении XML-документа с использованием CSS-таблицы, браузер не выводит атрибуты или их значения. Отображение же XML-документа с использованием связывания данных, сценария для HTML-страницы, либо XSL-таблицы стилей (об этих способах тоображения будет рассказано далее) предоставляет доступ к атрибутам и их значениям.

 


Эта страница нарушает авторские права

allrefrs.ru - 2019 год. Все права принадлежат их авторам!