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

2.7. Правила для создания атрибутов

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

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

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

  • каждое имя атрибута может только один раз присутствовать в одном и том же начальном теге или в теге пустого элемента.

Например, следующие описания имен в стартовых тегах являются допустимыми:

<ANIMATION FileName=Waldo.ani”>

<LIST _1stPlace=”Sam”>

<ENTRY Zip.Code=”94941”>

Приведенные ниже имена атрибутов недопустимы:

<!-- Дублирование имени атрибута внутри одного тега: -->

<ANIMATION FileName="Waldo1.ani" FileName="Waldo2.ani">

<LIST 1stPlace=""Sam"> <!- Первый символ не может быть цифрой -->

<ITEM A:Category="cookware"> <!—В IE допускается, только

если вы объявили А как пространство имен -->

В соответствии с XML-спецификацией двоеточие (:) в имени элемента зарезервировано для задания пространства имен. Пространства имен дают возможность дифференцировать элементы с одними и теми же именами; этот вопрос будет обсуждаться позже. Internet Explorer 5 разрешает вам использовать двоеточие в имени элемента только в том случае, если оно следует за пространством имен, объявленным в документе. Например, запись A:Category будет корректной, только если А объявлено как пространство имен.

2.8. Правила для корректного задания значений атрибутов

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

  • строка может быть заключена как в одинарные ('), так и в двойные кавычки (");

  • строка не может содержать внутри себя тот же символ кавычек, которыми она ограничена;

  • строка может содержать ссылку на символ или ссылку на внутренние примитивы общего назначения (об этом будет рассказано позже);

  • строка не может содержать символ < (синтаксический анализатор может воспринять этот символ как начало описания XML-разметки.);

  • строка не может содержать символ &, если это не ссылка на символ или примитив.

Ниже приведены неправильные описания:

<EMPLOYEE Status=""downsized""> <!-- Нельзя использовать символы ограничители внутри строки. -->

<ALBUM Type="<CD>"> <!-- Нельзя использовать символ < внутри строки -->

<WEATHER Forecast="Cold &Windy"> <!-- Нельзя использовать символ &,

если это не ссылка -->

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

<EMPLOYEE Status='"downsized"'> <!-- Правильное значение атрибута. -->

Аналогично, чтобы включить одинарные кавычки в значение атрибута, следует использовать в качестве ограничителей двойные кавычки:

<CANDIDATE name="W.T, 'Bill' Bagley"> <!-- Правильное значение атрибута. -->

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

При создании корректно сформированного документа, в котором не объявлен тип документа (как это мы делали в предыдущих примерах), атрибуту можно присвоить любое значение, соответствующее приведенным выше правилам. Однако, если создаётся описание типа документа и внутри него определяются атрибуты, то можно ограничить типы значений, которые могут быть присвоены конкретному атрибуту. Например, можно определить атрибут, которому могут быть присвоены только значения “yes” или “nо”. Таким образом, одно из преимуществ задания определенного типа информации через атрибуты элементов в отличие от задания через содержимое элемента заключается в том, что при этом можно контролировать все типы данных, которые могут быть присвоены атрибуту, и синтаксический анализатор учитывает эти ограничения типов.