Алексей Валиков - Технология 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в десятичной системе счисления):
Интервал:
Закладка: