Технология XSLT
Шрифт:
http://www.unicode.org/charts/PDF/U0400.pdf.
Использование Unicode
Для описания символов сотен языков всего мира, а также других символьных обозначений (например, математических символов) Unicode позволяет использовать три формы кодирования — UTF-8, UTF-16 и UTF-32.
В UTF-8 символы разных диапазонов кодируются последовательностями, состоящими из разного количества байт в соответствии со следующими правилами.
□ Символы с кодами в интервале
□ Для остальных символов число байт определяется количеством ведущих единиц первого байта последовательности.
□ Два первые бита каждого последующего байта равны единице и нулю соответственно.
□ Все
В табл. 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 |
К примеру, символу "
или
Полужирным шрифтом выделены управляющие биты UTF-8 (
Удобство UTF-8 заключается в том, что кодировка первых 127 символов совпадает с широко распространенной 7-битной кодировкой ASCII. Это делает возможным использование уже существующего программного обеспечения для обработки текста в UTF-8, например текстовых редакторов.
Для записи наиболее часто используемых символов с кодами, меньшими
Таблица 1.3. Формы кодирования символов в UTF-16
Диапазон | Кол-во байт | Форма кодирования | Кол-во бит |
---|---|---|---|
#x0-#xD7FF | 2 | xxxxxxxx xxxxxxxx | 16 |
#xD800-#xDFFF | Зарезервированы | ||
#xE000-#xFFFF | 2 | xxxxxxxx xxxxxxxx | 16 |
#x10000-#xFFFFF | 4 | 110110xxxxxxxxxx 110110xxxxxxxxxx | 20 |
Символ "
Для символа с кодом
или
Полужирным шрифтом выделены управляющие биты 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, кроме суррогатных блоков и символов с кодами