Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Функция sumсуммирует численные значения набора узлов и возвращает результат. Функция применяется следующим образом:
number sum(node-set)
Взгляните на следующий пример из главы 4, который находит средние массы планет в planets.xml:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The average planetary mass is
Логические функции XPath
XPath также поддерживает следующий набор логических функций:
• boolean(). Приводит аргумент к логическому значению;
• false(). Возвращает false (ложь);
• lang(). Проверяет, совпадает ли язык, установленный в атрибуте xml:lang, с языком, переданным в функцию;
• not(). Инвертирует значение true\false аргумента;
• true(). Возвращает true (истина).
boolean()
Функция booleanпреобразует аргумент в логическое значение. Функция применяется следующим образом:
boolean boolean(object)
Ниже показано, как функция работает с различными типами XPath:
• number. Если число равно нулю, результатом будет ложь; иначе результат — истина. NaN всегда возвращает ложь;
• string. Если строка не пуста, результат — истина, иначе — ложь;
• boolean. Значение не изменяется;
• nodeset. Пустой набор узлов дает ложь, не пустой — истину;
• Фрагмент результирующего дерева в XSLT 1.0 всегда дает истину.
false()
Функция falseвозвращает ложь. Она применяется следующим образом:
boolean false()
В XPath не определены логические константы, поэтому для того чтобы присвоить переменной значение false, нужно прибегнуть к функции false. (С переменными вы познакомитесь в главе 9.)
lang()
Функция langпроверяет, совпадает ли язык контекстного узла (определенный в атрибуте xml:lang) с переданным ей языком. Функция применяется следующим образом:
boolean lang(string)
Функции нужно передать строку, определяющую язык в спецификации XML, как, например, «en» для английского, «de» для немецкого и «jp» для японского.
В следующем примере я проверяю, написан ли исходный документ на английском. Сначала я устанавливаю атрибут xml:langв planets.xmlв значение, соответствующее английскому языку:
Mercury
.0553
58.65
1516
.983
43.4
.
.
.
Теперь я удостоверяюсь, что исходный документ на самом деле написан на английском, перед тем как применять к нему шаблоны:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
| Name | Mass | Radius | Day |
not()
Функция notинвертирует логическое значение аргумента. При передаче аргумента с логическим значением true она возвращает false; при передаче аргумента со значением false функция возвращает true. Функция применяется следующим образом:
boolean not(boolean)
В следующем примере, который вы уже видели в главе 4, я хочу выбрать только те элементы, у которых есть оба атрибута — COLORи POPULATED. Для этого я применяю предикат выбора « [@COLOR and (@POPULATED]». Для того, чтобы убрать другие элементы (чтобы правила по умолчанию не включали их текст в результирующий документ), я использую предикат « [not(@COLOR) or not(@POPULATED)]»:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
Вот результат:
Colorful, Populated Planets
Colorful, Populated Planets
| Name | Mass | Radius | Day |
| Earth | 1 (Earth = 1) | 2107 miles | 1 days |
true()
Функция trueвозвращает значение true. Она применяется следующим образом:
boolean true()
В XPath не определены логические константы, поэтому для того чтобы присвоить переменной значение true, нужно прибегнуть к функции true. (С переменными вы познакомитесь в главе 9.)
Элемент : создание числовых форматов
Перед тем как закончить обсуждение функций XSLT и XPath, я хочу рассмотреть специальный элемент XSLT, , единственное предназначение которого заключается в работе только с одной функцией format-number. В частности, при помощи этого элемента определяются символы и идентификаторы, которые будет использовать format-number. У этого элемента несколько атрибутов:
• name(необязательный). Имя десятичного формата. Принимает значение типа QName. Если формат не задан, используется десятичный формат по умолчанию;
• decimal-separator(необязательный). Определяет символ, разделяющий целую и дробную части числа. По умолчанию «.». Устанавливается в символ;
• grouping-separator(необязательный). Определяет символ, разделяющий группы разрядов. По умолчанию «,».Устанавливается в символ;
• infinity(необязательный). Задает строку, обозначающую положительную бесконечность. По умолчанию «Infinity» (бесконечность). Устанавливается в строку;
• minus-sign(необязательный). Определяет символ, представляющий знак минуса. По умолчанию «-». Устанавливается в символ;
• NaN(необязательный). Определяет строку, представляющую значение «Not a Number» (не число). По умолчанию «NaN». Устанавливается в строку;
• percent(необязательный). Определяет символ, представляющий знак процента. По умолчанию «%». Устанавливается в символ;
• per-mille(необязательный). Определяет символ, представляющий знак промилле, то есть тысячных долей. По умолчанию «‰». Устанавливается в символ;
• zero-digit(необязательный). Определяет символ для использования в форматирующих строках для указания лидирующего или завершающего нуля. По умолчанию «0». Устанавливается в символ;
• digit(необязательный). Определяет символ для использования в форматирующих строках для указания цифры. По умолчанию «0». Устанавливается в символ;
• pattern-separator(необязательный). Определяет символ, разделяющий образцы для положительных и отрицательных чисел. По умолчанию «;». Устанавливается в символ.
Этот элемент — верхнего уровня, и он всегда пуст. При помощи этого элемента можно устанавливать форматирующие символы для функции format-number. Элемент xsl:decimal-format, у которого не установлен атрибутname, становится десятичным форматом по умолчанию. Наличие более одного элемента xsl:decimal-formatпо умолчанию или нескольких элементов xsl:decimal-formatс одним и тем же именем является ошибкой. В следующем примере я форматирую числа в planets.xmlпри помощи европейского формата числа, а именно — я использую запятую вместо десятичной точки для разделения целой и дробной частей, и точку вместо запятой для разделения групп разрядов. Для этого мне нужно только задать новое форматирование при помощи и затем применить его в format-number:
Интервал:
Закладка: