Стивен Холзнер - XSLT

Тут можно читать онлайн Стивен Холзнер - XSLT - бесплатно полную версию книги (целиком) без сокращений. Жанр: Интернет, издательство Питер, год 2002. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Холзнер - XSLT краткое содержание

XSLT - описание и краткое содержание, автор Стивен Холзнер, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.

Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.

Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике

XSLT - читать онлайн бесплатно полную версию (весь текст целиком)

XSLT - читать книгу онлайн бесплатно, автор Стивен Холзнер
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Здесь я вызываю шаблон localize, установив languageв «fr»:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">



.

.

.

А вот как выглядит параметризованный шаблон «COLORS». Заметьте, что я объявляю параметр COLORв шаблоне при помощи элемента (и заметьте, что в HTML 4.01 символьный элемент для «е» в «Planetes», который я и использую — это è):

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">



Name Mass Radius Day

Planets

Planeten

Planètes

.

.

.

Вот результирующий локализованный документ:

Planètes

.

.

.

Этот документ показан на рис. 9.3.

Рис 93Вызов именованного шаблона с параметрами для установки языков Вызов - фото 30

Рис. 9.3.Вызов именованного шаблона с параметрами для установки языков

Вызов шаблона во многом похож на вызов функции, что обсуждалось в главе 8, и способность передавать данные через параметры усиливает сходство. Но в отсутствие оператора присваивания, как в языках программирования, кажется, что нельзя присвоить переменной значение, возвращаемое именованным шаблоном, впрочем, поразмыслив, это можно сделать. С шаблонами можно и еще в одном случае поступить так же, как с функциями, — осуществить рекурсивный вызов.

Рекурсивный вызов шаблонов

Эта тема предназначена, главным образом, для программистов, поскольку здесь я буду пользоваться XSLT как языком программирования. В частности, я реализую вызов именованным шаблоном самого себя, то есть рекурсивный вызов. Классический пример рекурсии — вычисление факториала: например, факториал 6, что записывается как 6!, равен 6*5*4*3*2*1, или 720.

При реализации рекурсии в настоящем языке программирования создается функция — например, factorial, которая вызывается со значением 6: factorial(6). Факториал 6 вычисляется как 6 * factorial(5), поэтому функции нужно лишь умножить на 6 результат вызова самой себя со значением 5, то есть factorial(5).

Далее, factorial(5)— это 5*factorial(4), поэтому функция снова вызывает сама себя, чтобы вычислить значение factorial(4). Этот процесс продолжается до вычисления factorial(1), а мы знаем, что 1! — это просто 1, поэтому factorial(1)возвращает 1. С этого момента управление последовательно возвращается на все предыдущие этапы, в результате чего будет вычислено выражение 1*2*3*4*5*6, или 720, что составляет 6!.

Кажется, что в таком языке стилей, как XSLT, реализовать подобное невозможно. Тем не менее, это можно сделать, по крайней мере, в XSLT 1.0. Основная идея состоит в том, что значение, возвращаемое шаблоном, можно сохранять в переменной, если шаблон вызывается внутри элемента , в котором объявляется эта переменная. Пусть, например, у нас есть именованный шаблон factorial, и мы хотим вычислить 6!. Тогда шаблону можно передать значение 6 при помощи элемента и присвоить строковое значение результата переменной result, которое я затем показываю:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

6! =

.

.

.

Следующий пример демонстрирует, как можно реализовать шаблон factorial, чтобы для вычисления факториала он вызывал сам себя. На языке программирования я мог бы написать рекурсивный вызов как n!=n*factorial(n-1), но у нас нет оператора присваивания; поэтому, когда я вычисляю factorial(n-1), я сохраняю это значение в новой переменной tempи на каждом шаге возвращаю значение n*$temp:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

6! =

Вот результирующий документ:

6! = 720

Как видите, это можно сделать, по крайней мере, в XSLT 1.0, в котором разрешены использованные здесь фрагменты результирующего дерева.

Шаблон: значение по умолчанию

Как я говорил ранее, в случае задания параметру значения при объявлении, оно может быть перекрыто, если вы зададите другое значение в элементе . Но если другого значения не указывать, исходное значение выступит в роли значения по умолчанию.

Следующий пример видоизменяет рассмотренный ранее пример «COLORS». Шаблон имеет параметр COLOR, но я могу вызвать шаблон, не устанавливая COLORв какое-либо определенное значение:

В этом случае параметр COLORпринимает значение по умолчанию« blue» (голубой), заданное в элементе в шаблоне «COLORS»:

Как задавать значения шаблона в командной строке

Кроме возможностей, предоставляемых элементами и , значение параметров таблицы стилей во многих процессорах XSLT можно также задавать в командной строке. Способ зависит от конкретного процессора.

Следующий пример показывает, как можно присвоить параметру param1значение value1в командной строке, используя процессор XSLT от Oracle в Windows. Заметьте, что при установке значений параметра в командной строке его все равно нужно объявлять в таблице стилей при помощи :

C:\>java oraclе.xml.parser.v2.oraxsl -p param1='value1' planets.xml planets.xsl output.xml

Вот как то же самое можно сделать при помощи Saxon:

C:\>saxon source.xml stylesheet.xsl param1=value1 > output.xml

при помощи Xalan:

C:\>java org.apache.xalan.xslt.Process -IN planets.xml -XSL planets.xsl -OUT output.xml -PARAM parma1 value1

и XT:

C:\XSL>java -Dcom jclark.xsl.sax parser=org.apache.xerces.parsers.SAXParser.com.jclark.xsl.sax.Driver planets.xml planets.xsl output.xml param1=value1

Элемент : выбор по ключу

Элемент позволяет создать ключ и выбрать узлы по этому ключу. Он обладает следующими атрибутами:

name(обязательный). Имя ключа, устанавливается в QName;

match(обязательный). Устанавливается в образец выбора для выбора узлов, к которым применяется ключ;

use(обязательный). Устанавливается в выражение, определяющее значение ключа.

При помощи ключей можно легко распознавать элементы; конкретные ключи можно выбрать при помощи образца «key()». В главе 4 мы познакомились с ключами, имеющими одно значение. В следующем примере я использую ключи для выбора планет, у которых атрибут COLORбыл установлен в «BLUE» — в данном случае это Земля:

.

.

.

Earth

1

1

2107

1

128.4

Я создал ключ COLOR, выбирающий элементы путем проверки их атрибута COLOR. Ключ выглядит следующим образом:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

.

.

.

После этого я применил образец «key()» для того, чтобы выбрать элементы , у которых атрибут COLORустановлен в «BLUE»:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Name Mass Radius Day

The Planets Table

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Холзнер читать все книги автора по порядку

Стивен Холзнер - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




XSLT отзывы


Отзывы читателей о книге XSLT, автор: Стивен Холзнер. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x