Главная » Статьи для тега "value-of"

Создание обобщенных функций агрегирования элементов

Добавлено Дата: 16 March, 2011 категория: XSLT

Задача

Требуется создать повторно используемые шаблоны для выполнения широ­кого спектра операций агрегирования набора узлов.

Решение

В обобщенном расширяемом решении применяется метод пометки узлов, описанный во введении к этой главе.

Читать »

Создание фреймов

Добавлено Дата: 16 March, 2011 категория: XSLT

Задача

Требуется сгенерировать HTML-разметку, в которой содержимое организо­вано с помощью фреймов.

Решение

Как и в рецепте 10.2, воспользуемся режимами для выполнения несколь­ких проходов по XML-документу. Сначала создается контейнер фреймов, со­держащий тег <FRAMESET>. Мы создадим всего два фрейма; меньший фрейм слева будет содержать имена продавцов в виде гиперссылок, загружающих со­держимое в правый фрейм. Правый – основной – фрейм будет содержать дан­ные о продажах для выбранного пользователем продавца. В примере генерируется также документ, отображаемый в основном фрейме при первой загрузке страницы.

Читать »

Генерация документации о SOAP из WSDL-документа

Добавлено Дата: 11 March, 2011 категория: XSLT

Задача

Вы создаете архитектуру предприятия на основе Web-сервисов с использова­нием SOAP и WSDL. Требуется, чтобы разработчики могли найти полную и по­лезную информацию об имеющихся сервисах.

Решение

В этом решении мы создадим на основе WSDL-описания сервер докумен­тации по Web-сервисам, то есть сервис, который предоставляет информацию о сервисах< ![if !supportFootnotes]>[3]. Мы напишем CGI-сценарий на языке Perl, который будет с помощью

Читать »

Сравнение наборов узлов на равенство по значению

Добавлено Дата: 10 March, 2011 категория: XSLT

Задача

Требуется определить, равны ли (по значению) узлы из одного набора узлам из другого набора (порядок игнорируется).

Решение

Эта задача несколько сложнее, чем кажется на первый взгляд. Рассмотрим очевидное решение, которое во многих случаях будет работать:

Читать »

Форматирование чисел

Добавлено Дата: 9 March, 2011 категория: XSLT

Задача

Требуется выводить числа в разных форматах.

Решение

У этой задачи есть два общих решения.

Использование xsl:decimal-format в сочетании с format-number()

Элемент верхнего уровня xsl:decimal-format задает именованное прави­ло форматирования, на которое можно ссылаться при вызове функции format- number(). У элемента xsl:decimal-format много атрибутов, описывающих правила форматирования. В таблице 3.1 описываются все атрибуты, и в скобках для каждого приведено значение по умолчанию.

Читать »

Создание повторно используемых утилит генерации SVG для графиков и диаграмм

Добавлено Дата: 28 February, 2011 категория: XSLT

Задача

Требуется создать библиотеку генераторов SVG, которой можно было бы пользоваться в приложениях, связанных с графическим представлением данным.

Решение XSLT 1.0

Если вы планируете много заниматься созданием SVG-файлов с помощью XSLT, то было бы полезно разработать библиотеку шаблонов для генерации гра­фических компонентов. В этом разделе мы приведем несколько примеров тако­го рода.

Читать »

Генерация оберток для данных

Добавлено Дата: 27 February, 2011 категория: XSLT

Задача

Требуется создать классы, которые надстраивали бы над заключенными в со­общение данными интерфейс, безопасный с точки зрения типов.

Решение

Показанная ниже таблица стилей работает в двух режимах. Если в качестве параметра передано имя сообщения, то генерируется обертка только для этого со­общения. В противном случае генерируются обертки для всех сообщений.

Читать »

Преобразование римских числительных в числа

Добавлено Дата: 26 February, 2011 категория: XSLT

Задача

Требуется преобразовать число, записанное римскими цифрами, в обычное число.

Решение

Римская система счисления не является позиционной. Число в ней записыва­ется путем прибавления или вычитания фиксированного количества римских цифр. Если следующий символ имеет меньшее или такое же значение, то произво­дится добавление, иначе вычитание.

Читать »

Создание обобщенных генераторов наборов узлов

Добавлено Дата: 26 February, 2011 категория: XSLT

Задача

Требуется написать повторно используемые шаблоны для динамической ге­нерации набора узлов.

Решение

Первая обобщенная функция из этой категории генерирует набор узлов путем вызова для значений, последовательность которых определяется функ­цией приращения. Процедура повторяется, пока не будет достигнута верхняя граница:

Читать »

Проверка битов

Добавлено Дата: 24 February, 2011 категория: XSLT

Задача

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

При работе с XML не пытайтесь во чтобы бы то ни стало закодировать ин­формацию в виде набора битов. Применяйте это решение лишь тогда, когда не можете контролировать способ представления данных.

Читать »

Генерация Web-клиента для тестирования ввода данных

Добавлено Дата: 22 February, 2011 категория: XSLT

Задача

Требуется автономно протестировать процесс путем ввода данных в форму с последующим преобразованием их в сообщение, которое посылается процессу.

Решение

В этом примере мы сгенерируем инструмент для ввода данных на стороне клиента. Это будет HTML-форма, в которой можно заполнить поля, составляю­щие сообщение. В форме указано, что данные должны обрабатываться CGI-сце- нарием, который мы сгенерируем в рецепте 12.7.

Читать »

Исламский календарь

Добавлено Дата: 21 February, 2011 категория: XSLT

Задача

Требуется работать с датами в исламской системе летоисчисления.

Трудно, если вообще невозможно, придумать универсально пригодные ал­горитмы для исламского календаря. Связано это с тем, что месяц начина­ется в тот день, когда человек впервые видит серп луны. Вычислить даты новолуния можно абсолютно точно, но вот видимость луны зависит от та­ких факторов, как погода и положение наблюдателя. Поэтому очень слож­но заранее сказать, когда начнется новый месяц. Хуже того, некоторым мусульманам достаточно, чтобы луну увидел местный наблюдатель, тогда как другие требуют, чтобы наблюдение было произведено двумя заслужи­вающими доверия мусульманами. Исключением является Саудовская Аравия, где в основу календаря положены астрономические вычисления, а не визуальные наблюдения. Приведенные ниже алгоритмы работы с ис­ламским календарем могут давать ошибку в несколько дней.

Читать »

Расширение XSLT с помощью JavaScript

Добавлено Дата: 19 February, 2011 категория: XSLT

Задача

Требуется реализовать на языке JavaScript функциональность, отсутствую­щую в XSLT.

Решение

В следующих примерах мы пользуемся имеющейся в процессоре Xalan-Java 2 возможностью вызывать программы на сценарных языках, например JavaScript. Обычно расширения на JavaScript пишутся для того, чтобы вызвать функцию, кото­рой нет ни в XSLT, ни в XPath. Типичный пример – тригонометрические функции:

Читать »

Повторение строки N раз

Добавлено Дата: 15 February, 2011 категория: XSLT

Задача

Требуется повторить строку N раз, где N – параметр. Например, нужно допол­нить строку пробелами, чтобы выровнять ее по правому или левому краю.

Решение XSLT 1.0

Задачу можно решить красиво, применив рекурсивный алгоритм, который удваивает строку, пока не будет достигнута нужная длина. Надо только аккурат­но рассмотреть случай, когда значение $count нечетно.

Читать »

Создание таблиц стилей, управляемых данными

Добавлено Дата: 15 February, 2011 категория: XSLT

Задача

Требует сгенерировать HTML-разметку, стилизованную в соответствии с отображаемыми данными.

Решение XSLT 1.0

Наборы атрибутов в XSLT – отличный механизм для инкапсуляции сложнос­тей, сопутствующих стилизации, которая управляется данными. Рассмотрим сле­дующий XML-документ, описывающий инвестиционный портфель:

Читать »