Главная » XSLT

Переименование элементов или атрибутов

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

Задача

Требуется изменить локальные имена или имена пространств имен элементов или атрибутов в XML-документе.

Решение

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

Читать »

Как ужиться с расширенной системой типов в XPath 2.0

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

Задача

Более строгая типизации в XPath 2.0 заставляет вас проклинать W3C и с тоской вспоминать о Perl.

Решение

Большая часть несовместимостей между версиями XPath/XSLT 1.0 и 2.0 проис­текает из-за ошибок типизации, причем это даже не зависит от наличия или от­сутствия схемы. Многих проблем, которые связаны с XPath и возникают при пе­реносе кода в версию 2.0, можно избежать, если запускать программу в режиме совместимости с версией 1.0.

Читать »

Уплощение иерархии XML

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

Задача

Имеется документ, в котором иерархия элементов имеет больше уровней, чем вам хотелось бы. Требуется выполнить уплощение дерева – избавиться от некото­рых уровней.

Решение

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

Читать »

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

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

Задача

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

Решение XSLT 1.0

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

Читать »

Определение светских и церковных праздников

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

Задача

Требуется узнать, является ли заданная дата праздничной.

Решение

К первому типу праздников относятся те, которые каждый год отмечаются в один тот же день. Например, определить абсолютную дату Дня независимости в США совсем просто:

Читать »

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

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

Задача

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

Решение

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

Читать »

Преобразование XML в текст – Введение

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

Понятно, что в век Интернета результатом преобразований с помощью XSL и XSLT являются преимущественно такие форматы, как HTML, XHTML, XML и PDF. Но и старый добрый текст никогда не устареет, поскольку это общий зна­менатель, понятный и компьютеру, и человеку. XML-документы часто преобразу­ют в текстовую форму для импорта в другие программы, которые вовсе не умеют интерпретировать XML или делают это не так, как вам нужно. Текст выводится и в тех случаях, когда результат нужно отправить на терминал или подвергнуть последующей обработке, например, через конвейер UNIX.

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

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

Читать »

Описание Java-функций расширения в формате пакета

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

<xsl:stylesheet

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

xmlns:xalan="http://xml.apache.org/xslt"

xmlns:myJava="xalan://java.lang">

<xalan:component prefix="Math" functions="sin cos tan atan">

Читать »

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

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

Задача

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

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

Читать »

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

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

Задача

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

Решение

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

Читать »

Вычисление дня недели

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

Задача

Зная день, месяц и год, требуется определить день недели.

Решение XSLT 1.0

Следующий код возвращает целое число в диапазоне от 0 до 6, где 0 соответ­ствует воскресенью.

<xsl:template name="ckbk:calculate-day-of-the-week"> <xsl:param name="date-time"/>

Читать »

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

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

Задача

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

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

Читать »

Даты и время – Введение

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

В самом языке XSLT 1.0 нет понятия времени. Однако дата и время – немало­важный аспект повседневной жизни. Необходимость манипулировать ими возни­кает в программах очень часто, особенно при разработке для Web. Поэтому так странно и печально, что в XSLT 1.0 не встроена поддержка для работы с ними.

Читать »