Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-02.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
137.22 Кб
Скачать

4.1.7.3. Атрибуты перечислимого типа

Атрибуты перечислимого типа представляются списком значений. Атрибуты могут принимать одно значение из списка значений, предоставляемых в объявлении. Тип перечисления может задаваться нотациями (notationtype) и собственно перечислениями (enumeration). Перечисление – это одно или несколько имен, которые разде­лены пробелами и символами "|". Перечисление задает несколько возможных вариантов значения атрибута, например("черный"|"белый"). Хотя в качестве значения можно использовать ключевые слова#IMPLIEDили#REQUIRED, обычно используется значение по умолчанию. Нотации будут рассмотрены далее.

Пример объявления атрибутов перечислимого типа:

<!ELEMENT font (#PCDATA)>

<!ATTLIST font

face (Arial|Times_New_Roman|Courier_New)"Arial"

size (10pt|12pt|14pt|18pt) "12pt"

style (normal|bold|italic) "normal"

>

4.1.7.4. Обработка пробелов и определение языка содержимого элемента

Специальный атрибут, называемый xml:space, может быть присоединён к элементу для того, чтобы уведомить процессор о намерении сохранить пробел в данном элементе для использования приложением. Если данный атрибут объявляется, он должен быть задан как перечислимый тип, значениями которого могут быть либо "default" или "preserve", либо одно из значений, например:

<!ATTLIST poem xml:space (default|preserve) 'preserve'>

или

<!ATTLIST pre xml:space (preserve) #FIXED 'preserve'>.

Значение "default" указывает, что для данного элемента принимаются режимы обработки по умолчанию пробелов в данном приложении, а значение "preserve" задает режим сохранения в приложении всех пробелов. Это определение действует для всех элементов внутри содержимого элемента, для которого оно задано, если только оно не переопределяется другим экземпляром атрибутаxml:space. Обычно атрибутxml:spaceуказывается, если необходимо сохранить исходное форматирование документа, например, при выводе программы или стихов.

При обработке документа также часто используется идентификация естественного или формального языка, на котором написано содержимое. Для определения языка содержимого элемента и языка значений атрибутов в элемент документа может быть вставлен специальный атрибут xml:lang. Значением атрибута являются коды языков, например,uk,ru,en,en-USилиen-GB.

В правильных документах этот атрибут, как и некоторые другие, обязан быть объявлен, если используется.

Пример использования атрибутов xml:space и xml:lang:

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

<!DOCTYPE program-book [

<!ELEMENT program-book

(name, language, description, program)+>

<!ATTLIST program-book

Xml:space (default|preserve) 'default'

>

<!ELEMENT name (#PCDATA)>

<!ATTLIST name

xml:lang (en|ru) 'en'

>

<!ELEMENT language (#PCDATA)>

<!ATTLIST language

xml:lang (en|ru) 'ru'

>

<!ELEMENT description (#PCDATA)>

<!ATTLIST description

xml:lang (en|ru) 'ru'

>

<!ELEMENT program (#PCDATA)>

<!ATTLIST program

xml:space (preserve) #FIXED 'preserve'

>

]>

<program-book>

<name>add2.c</name>

<language xml:lang="en">C</language>

<description>Сложение двух чисел</description>

<program>

int main(void)

{

int a1, a2, sum;

printf("Введите слагаемые:");

scanf("%d %d", &a1, &a2);

sum = a1 + a2;

printf("Сумма:", sum);

}

</program>

</program-book>

Если в процессоре XMLпроизводится нормализация текста (удаление лишних пробелов и форматирование по ширине страницы), то в выводимом документе будут удалены лишние пробелы в содержимом дескриптора<description>, а содержимое дескриптора<program>будет выведено без переформатирования. В дескрипторах<name>и<description> по умолчанию используется соответственно английский и русский язык, а для дескриптора<language>явно определен английский язык.

Соседние файлы в папке Лекции