Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
format-number(123456789, '#')
→ '123456780'
Определение десятичного формата:
Примеры функций format-number
:
format-number(123456789, '#', 'format3')
→ '23456789:'
format-number(12345.06789, '#.#####', 'format3')
→ '23456.1789:'
Десятичный формат, определяемый элементом xsl:decimal-format
, в отличие от многих других элементов не может переопределяться в преобразованиях со старшим порядком импорта. Элементы xsl:decimal-format
должны определять десятичные форматы с различными именами (за исключением тех случаев, когда значения их атрибутов полностью совпадают).
Контроль вывода документа
Несмотря на то, что XSLT-процессоры должны лишь только преобразовывать логические модели документов, организованные в виде деревьев, многие из них имеют также возможность выдавать результат преобразования в виде последовательности символов.
Элемент xsl:output
Синтаксис этого элемента приведен ниже:
method = "xml" | "html" | "text" | " имя "
version = " токен "
encoding = " строка "
omit-xml-declaration = "yes" | "no"
standalone = "yes" | "no"
doctype-public = " строка "
doctype-system = " строка "
cdata-section-elements = " имена "
indent = "yes" | "no"
media-type = " строка "/>
Элемент верхнего уровня xsl:output
позволяет указывать, каким образом должно быть выведено результирующее дерево.
Главным атрибутом элемента xsl:output
является атрибут method
, который определяет, какой метод должен использоваться для вывода документа. Значением этого атрибута может быть любое имя, но при этом техническая рекомендация XSLT определяет только три стандартных метода вывода — "xml"
, "html"
и "text"
. В том случае, если процессор поддерживает нестандартный метод вывода, его реализация полностью зависит от производителя.
Если в преобразовании не определен элемент xsl:output
или в нем не указан атрибут method
, метод преобразования выбирается по умолчанию исходя из следующих условий.
□ Если корень выходящего документа имеет дочерний элемент с локальным именем " html
" (в любом регистре символов), которому предшествуют только пробельные символы, методом вывода по умолчанию становится "html
".
□ Во всех остальных случаях методом вывода по умолчанию является "xml"
.
Для документа
XSL Transformations (XSLT)
Version 1.0
Version 1.0
Методом вывода по умолчанию будет "html"
, а для документа
XSL Transformations (XSLT)
Version 1.0
Version 1.0
будет выбран метод вывода "xml"
.
Помимо главного атрибута method
, элемент xsl:output
имеет следующие атрибуты:
□ version
(версия) — определяет версию языка выходящего документа;
□ indent
(индентация) — определяет, должен ли процессор добавлять пробельные символы для более наглядного форматирования документа;
□ encoding
(кодировка) — определяет, в какой кодировке должен быть выведен документ. Значение этого атрибута не зависит от регистра символов, то есть значения encoding="utf-8"
и encoding="UtF-8"
будут эквивалентны. В атрибуте encoding
можно использовать только печатаемые символы ASCII, то есть символы интервала от #x21
до #x7e
. Значением encoding
должно быть название набора символов, определенное в стандартах IANA (Internet Assigned Numbers Authority) или RFC2278. В противном случае, атрибут должен начинаться символами " x-
";
□ media-type
— определяет тип содержимого MIME выходящего документа;
□ doctype-system
— определяет системный идентификатор, который должен быть использован в декларации типа документа (DTD);
□ doctype-public
— определяет публичный идентификатор, который должен быть использован в декларации типа документа (DTD);
□ omit-xml-declaration
(пропустить декларацию XML) — определяет, нужно ли включать декларацию XML в выходящий документ или нет. Значением этого атрибута должно быть либо "yes"
(пропустить декларацию), либо "no"
(включить декларацию в выходящий документ);
□ standalone
(самостоятельный документ) — определяет, должен ли процессор выводить указание на самостоятельность документа (standalone declaration). Значением этого атрибута может быть либо "yes"
(выводить указание), либо "no"
(не выводить указание на самостоятельность);
□ cdata-section-elements
— определяет список элементов, текстовое содержимое которых должно быть выведено с использованием секций CDATA.
Использование этих атрибутов зависит от того, какой из методов выбран для вывода преобразованного документа.
Метод вывода "xml"
Для того чтобы вывести результирующее дерево в виде XML-документа, следует использовать в элементе xsl:output
метод "xml"
. Ниже мы подробно опишем, каким образом на выход должны влиять другие атрибуты этого элемента.
Этот атрибут определяет версию языка XML, которая должна использоваться для вывода результирующего документа. В случае если процессор не поддерживает указанную версию, он может либо выдать ошибку, либо использовать одну из поддерживаемых версий. На данный момент единственной действующей версией языка является версия 1.0 и потому, если в атрибуте в version
будет указано другое значение, единственным эффектом от этого будет измененный параметр version
в декларации XML.
Предположим, что в преобразовании версия выходящего документа задана как 1.2:
Тогда процессор может вывести декларацию XML в следующем виде:
Значением атрибута version по умолчанию является "1.0"
, то есть, для того, чтобы получить декларацию XML вида
и т. д. ?>
достаточно опустить определение атрибута version
:
Атрибут encoding
указывает на то, какая кодировка предпочтительна для выходящего документа. Множество кодировок зависит от используемого процессора, но при этом в соответствии с технической рекомендацией все они обязаны поддерживать Unicode-формы кодировок UTF-8 и UTF-16.
В случае если процессор не поддерживает кодировку, указанную в атрибуте encoding
, процессор может либо выдать ошибку, либо использовать UTF-8 или UTF-16.
Если атрибут encoding
опущен, процессор должен по умолчанию использовать UTF-8 или UTF-16. На практике абсолютное большинство процессоров используют по умолчанию кодировку UTF-8.
При выводе содержимого выходящего документа может возникнуть ситуация, когда в выходящем потоке будут находиться символы, которые невозможно будет отобразить при используемой кодировке. В этом случае непечатаемые символы должны быть заменены символьными сущностями.
Представим себе входящий документ в кодировке UTF-8, содержащий символ кириллицы " Э
" с Unicode-кодом #x42d
(или #1069
в десятичной системе счисления):
Интервал:
Закладка: