Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

□ Запись

<!NOTATION jpg SYSTEM "jpg-viewer.ехе">
определяет нотацию с именем
jpg
и закрепляет за ней приложение
jpg-viewer.exe
.

□ Запись

<!ENTITY news SYSTEM "news.gif" NDATA gif>
определяет внешнюю неразбираемую сущность с именем
news
, которая имеет формат (нотацию)
gif
.

□ Запись

<!ENTITY products SYSTEM "prod.jpg" NDATA jpg>
определяет внешнюю неразбираемую сущность с именем
products
, которая имеет нотацию
jpg
.

□ Запись

<!ENTITY support SYSTEM "support.gif" NDATA gif>
определяет внешнюю неразбираемую сущность с именем
support
, которая имеет нотацию
gif
.

Посмотрим теперь, какую информацию нам дают такие громоздкие определения. Обратимся к записи одного из элементов

menuitem
:

<menuitem image="products" title="Products" href="#"/>

С атрибутами

title
и
href
все ясно: они содержат простые символьные данные. Атрибут
image
несколько сложнее, он предоставляет гораздо больше информации. Типом этого атрибута является
ENTITY
, значит текст, который он содержит, является не просто символьными данными: он задает имя сущности, связанной с данным атрибутом. Иначе говоря, с атрибутом
image
связывается сущность.

Анализируя определение сущности

products
, обрабатывающая программа может понять, что это — неразбираемая внешняя сущность формата
jpg
, которая хранится в файле
prod.jpg
и для обработки которой можно использовать приложение
jpg-viewer.exe
.

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

NOTATION
. Значением этого атрибута должно быть имя нотации, которое и будет задавать формат содержимого элемента.

Пример
Листинг 1.6. Использование нотаций для определения формата содержимого элемента

<!DOCTYPE root [

 <!ELEMENT root (#PCDATA)>

 <!ATTLIST root

type NOTATION (rtf|htm|txt) #REQUIRED>

 <[NOTATION rtf SYSTEM "winword.exe">

 <!NOTATION htm SYSTEM "iexplore.exe">

 <!NOTATION txt SYSTEM "notepad.exe">

]>

<root type="htm">

 <![CDATA[

<html>

<head>

...

</head>

<body>

...

</body>

</html>]]>

</root>

В этом документе определяется три нотации, три формата данных:

rtf
,
htm
и
txt
. Атрибут
type
элемента
root
указывает формат данных, которые содержатся в этом элементе — в данном случае это
"htm"
(что, очевидно, соответствует HTML-документу).

Несмотря на то, что

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

Символьные данные в XML-документах

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

Проблема многих языков заключается в том, что для них существует несколько альтернативных кодировок символов. Например, для кириллицы существуют такие кодировки, как CP-866, KOI8-R, CP-1251, ISO-8859-5, кодовая страница Macintosh и другие, но вместе с тем не существует единого стандарта, принятого де-факто. В итоге, для того, чтобы быть уверенным, что документ будет прочтен, его нужно представлять в трех или четырех кодировках, что очень неудобно.

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

#x400
до
#x4ff
. Таблица кодов для кириллицы может быть найдена в формате PDF на Web-сайте Unicode:

http://www.unicode.org/charts/PDF/U0400.pdf.

Использование Unicode

Для описания символов сотен языков всего мира, а также других символьных обозначений (например, математических символов) Unicode позволяет использовать три формы кодирования — UTF-8, UTF-16 и UTF-32.

UTF-8

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

□ Символы с кодами в интервале

#x0
#x7F
кодируются одним байтом, первый бит которого равен нулю.

□ Для остальных символов число байт определяется количеством ведущих единиц первого байта последовательности.

□ Два первые бита каждого последующего байта равны единице и нулю соответственно.

□ Все остальные биты используются для кодирования символа.

В табл. 1.2 для каждого интервала символов показано количество байт, нужных для кодирования символа, форма кодирования и количество бит, доступных для кода.

Таблица 1.2. Формы кодирования символов в UTF-8

Диапазон Кол-во байт Форма кодирования Кол-во бит
#x0-#x7F
1 0xxxxxxx 7
#x80-#x7FF
2 110xxxxx 10xxxxxx 11
#x800-#xFFFF
3 1110xxxx 10xxxxxx 10xxxxxx 16
#x10000- #x1FFFFF
4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 21
Поделиться:
Популярные книги

Законы рода

Андрей Мельник
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

Прометей: Неандерталец

Рави Ивар
4. Прометей
Фантастика:
героическая фантастика
альтернативная история
7.88
рейтинг книги
Прометей: Неандерталец

Эволюционер из трущоб

Панарин Антон
1. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб

Хозяйка забытой усадьбы

Воронцова Александра
5. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка забытой усадьбы

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Ключи мира

Кас Маркус
9. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Ключи мира

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Я разорву эту помолвку!

Джейкобс Хэйли
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Я разорву эту помолвку!

Последний реанорец. Том IV

Павлов Вел
3. Высшая Речь
Фантастика:
фэнтези
5.20
рейтинг книги
Последний реанорец. Том IV

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Дикая фиалка заброшенных земель

Рейнер Виктория
1. Попаданки рулят!
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Дикая фиалка заброшенных земель

Чудовищная алхимия. Том 1

Тролль Борис Фёдорович
1. Мир в чужом кармане
Фантастика:
юмористическое фэнтези
попаданцы
фэнтези
5.00
рейтинг книги
Чудовищная алхимия. Том 1