Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

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

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

  • вложенные элементы - в Листинге 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, то не нужно использовать ссылки на символы (< и &) или на предопределенные примитивы общего назначения < и &а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-процессором. На следующем рисунке приведен элемент, содержащий инструкцию по обработке и комментарий.