Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Таблица 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 |
К примеру, символу " Э
" (заглавной русской букве " Э
") Unicode присваивает код #x42D
или 10000101101
в двоичном представлении. Это значение входит в интервал #x80-#x7ff
, значит, для кодирования нужно использовать двух-байтовую форму вида 110xxxxx 10xxxxxx
, где символы " x
" обозначают 11 бит, доступных для кодировки. Таким образом, данному символу будет соответствовать следующий двоичный код:
110 10000 10 101101
или #xD0AD
в шестнадцатеричном представлении.
Полужирным шрифтом выделены управляющие биты UTF-8 ( 110
означает, что символ закодирован двухбайтной последовательностью, 10
определяет второй байт последовательности), курсивом — биты кода символа.
Удобство UTF-8 заключается в том, что кодировка первых 127 символов совпадает с широко распространенной 7-битной кодировкой ASCII. Это делает возможным использование уже существующего программного обеспечения для обработки текста в UTF-8, например текстовых редакторов.
Для записи наиболее часто используемых символов с кодами, меньшими #xFFFF
, UTF-16 использует двухбайтные последовательности, в которых каждый бит соответствует биту кода. Помимо этого, в UTF-16 могут быть также представлены символы с кодами в диапазоне #10000-#FFFFF
. Для кодирования этих символов в UTF-16 применяются пары 16-битных значений в интервале #xD800-#xDFFF
(ранее зарезервированные Unicode), называемые суррогатными парами (surrogate pairs). Младшие 10 бит каждого значения отводятся на кодировку символа, что в итоге дает 20 бит, достаточных для записи любого кода, не превышающего #xFFFFF
(табл. 1.3).
Таблица 1.3. Формы кодирования символов в UTF-16
Диапазон | Кол-во байт | Форма кодирования | Кол-во бит |
---|---|---|---|
#x0-#xD7FF |
2 | xxxxxxxx xxxxxxxx |
16 |
#xD800-#xDFFF |
Зарезервированы | ||
#xE000-#xFFFF |
2 | xxxxxxxx xxxxxxxx |
16 |
#x10000-#xFFFFF |
4 | 110110xxxxxxxxxx 110110xxxxxxxxxx |
20 |
Символ " Э
" с кодом #x42D
будет записан в UTF-16 в виде последовательности из двух байт — #x042D
.
Для символа с кодом #x153DC
(в двоичном представлении — 10101001111011100
) понадобится 4 байта. Он будет записан в виде
110110 0001010100 110110 1111011100
или #xD854DBDC
в шестнадцатеричном исчислении.
Полужирным шрифтом выделены управляющие биты UTF-16, курсивом — биты кода символа.
UTF-32 является самой простой формой кодирования — для каждого символа, вне зависимости от диапазона, используются 4 байта. Такой способ, несомненно, не является самым экономичным с точки зрения объема хранимой информации, но во многих случаях предоставляет определенные преимущества при обработке текста, так как символы не нужно декодировать.
Коды некоторых символов Unicode
В таблицах символов Unicode кодируются не только символы и знаки различных языков, но также и некоторые управляющие символы, например, неразрываемый пробел (no-break space), табуляция, перенос строки и так далее. Коды некоторых из этих символов, часто использующихся в XML-технологиях, мы приводим в табл. 1.4.
Таблица 1.4. Unicode-коды некоторых символов
Код | Обозначение | Описание |
---|---|---|
#х9 |
[НТ] |
Горизонтальная табуляция (horizontal tabulation) |
#xA |
[LF] |
Перевод строки (line feed) |
#xD |
[CR] |
Возврат каретки (carriage return) |
#x20 |
[SP] |
Пробел (space) |
#x21 |
! |
Восклицательный знак (exclamation sign) |
#x22 |
" |
Двойные кавычки (quotation mark) |
#x26 |
& |
Амперсант (ampersand) |
#x27 |
' |
Апостроф или одинарные кавычки (apostrophe) |
#x3C |
< |
Знак "меньше" или левая угловая скобка (less-than sign) |
#x3F |
? |
Вопросительный знак (question mark) |
#xA0 |
[NBSP] |
Неразрываемый пробел (no-break space) |
Коды многих других символов можно найти на Web-сайте Unicode Consortium в разделе Code Charts: http://www.unicode.org/charts/.
Базовые продукции XML
Теперь, когда мы разобрали модель символов Unicode, которая используется в XML, можно дать EBNF-определения основных базовых конструкций языка — символов, имен, именных токенов и их последовательностей.
В XML можно использовать любые символы Unicode, кроме суррогатных блоков и символов с кодами #xFFFE
и #xFFFF
:
[2] Char ::= #x9 | #xA | #xD | [#x20 - #xD7FF]
| [#хЕ000 - #xFFFD) | [#х10000 - #x10FFFF]
Для удобства все множество символов разделено на несколько категорий.
□ Буквы, которые соответствуют продукции Letter
, в свою очередь, делятся на основные ( BaseChar
) и идеографические ( Ideographic
). Буквы относятся к алфавитам, из которых состоят слова различных языков. Продукции букв чрезвычайно просты, но громоздки, поскольку перечисляют символы различных алфавитов. Читатель может легко найти их в технической рекомендации XML по адресу http://www.w3.org/TR/REC-xml.htmlпод номерами [84] ( Letter
), [85] ( BaseChar
) и [86] ( Ideographic
).
□ Цифры, которые составляют в различных культурах числа. Цифры определяются продукцией Digit
с номером [88].
□ Модифицирующие символы ( CombiningChar
), которые изменяют написание или звучание символов, как, например, #x308 — двойная точка сверху символа, которая используется для обозначения умляута в немецком и для замены e
на ё
в русском языке. Продукция CombiningChar
имеет номер [87].
□ Символы расширения ( Extender
). Продукция Extender
имеет порядковый номер [89].
Следующей простейшей символьной конструкцией является пробельное пространство S
. Приведем еще раз его продукцию:
[3] S ::= (#х9 | #хА | #xD | #x20)+
Во многих продукциях XML-языков используются имена. Например, имена даются элементам, атрибутам, переменным XPath и так далее. В основе определения имени лежат именные символы NameChar
:
[4] NameChar ::= Letter | Digit | CombiningChar | Extender
| '.' | '-' | '_' | ':'
Имя начинается либо буквой, либо символами " _
" или " :
" и состоит из последовательности именных символов:
[5] Name ::= (Letter | '_' | ' :') (NameChar*)
В некоторых правилах XML используется последовательность имен, соответствующая продукции Names
:
Интервал:
Закладка: