Главная » XSLT

Работа с последовательностями

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

Задача

Вы хотите манипулировать наборами произвольных узлов и атомарных зна­чений, взятых из одного или нескольких XML-документов.

Решение

XPath 1.0

В версии XPath 1.0 нет понятия последовательности, а потому приведенные ниже рецепты к ней как правило неприменимы. В XPath 1.0 есть наборы узлов. Вот идиоматический способ сконструировать пустой набор узлов в XPath 1.0:

Читать »

Тестирование граничных условий и ошибочных данных

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

Задача

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

Решение

Тестирование граничных условий

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

Читать »

Выполнение обхода во внутреннем порядке

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

Задача

Имеется XML-документ или фрагмент документа, представляющий выраже­ние, которое требуется обработать во внутреннем порядке.

Решение

Обход во внутреннем порядке применяется как правило к двоичным деревь­ям. Общий вид алгоритма таков:

Читать »

Завершается ли данная строка указанной подстрокой?

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

Задача

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

Решение

XSLT 1.0

substring($value, (string-length($value) – string-length($substr)) + 1)

= $substr

XSLT 2.0

ends-with($value, $substr)

Читать »

Создание замкнутого преобразования

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

Задача

Требуется упаковать и XML-данные, и таблицу стилей для их преобразования в HTML в один файл.

Решение

Для этого рецепта необходим браузер, поддерживающий XSLT-преобра- зования на стороне клиента (IE 6.0 и старше, IE 5.x + MSXML 3.0, Netscape

Читать »

Форматирование даты и времени

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

Задача

Требуется отформатировать дату и время в соответствии с заданной формат­ной строкой.

Решение

Мы повторно используем многие ранее разработанные в этой главе шаблоны. В шаблоне format-date-time спецификаторы формата имеют вид %x (см. ниже), а прочие символы выводятся буквально. По умолчанию подразумевается формат ISO для даты и времени по григорианскому календарю.

Читать »

Функции расширения на языке сценариев с использованием встроенного сценария

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

<xsl:stylesheet version="1.0"

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

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

xmlns:trig="http://www.acmeX.com/extend/trig">

<xalan:component prefix="trig" functions="sin cons tan atan"> <xalan:script lang="javascript">

Читать »

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

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

Задача

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

Решение

<xsl:template name="generic:bounded-aggregation"> <xsl:param name="x" select="0"/> <xsl:param name="func" select=" ‘identity’ "/> <xsl:param name="func-param1"/>

Читать »

Расщепление документов

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

Задача

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

Решение XSLT 1.0

В XSLT 1.0 приходится опираться на широко распространенное, но все же не­стандартное расширение, которое позволяет выводить несколько документов1.

Читать »

Получение названий дней и месяцев

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

Задача

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

Решение XSLT 1.0

Если для вашего приложения интернационализация не нужна, подойдет та­кой простой код:

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

Читать »

Функции расширения в MSXML

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

XSLT 1.0

Компоненты MSXML 3.0, 4.0, равно как и процессор XSLT в .NET, расширяе­мы на языках Jscript и VBScript. В .NET расширения можно писать и на языке C#. В MSXML для объявления расширений служит элемент ms:script:

<xsl:stylesheet version="1.0"

Читать »

Юлианский календарь

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

Задача

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

Решение

<xsl:template name="ckbk:julian-date-to-julian-day"> <xsl:param name="year"/> <xsl:param name="month"/> <xsl:param name="day"/>

Читать »

Генерация определений констант

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

Задача

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

Решение

Можно построить преобразование на язык C++, которое легко адаптируется для языков C, C# и Java:

Читать »

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

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

Задача

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

Решение

Обычно, преобразуя XML в HTML, выполняют два или более проходов по XML-файлу, чтобы создать индексные страницы и содержимое. Индексные стра­ницы содержат ссылки на содержимое. (Для этого достаточно XSLT 1.0.) В следу­ющем решении из файла SalesBySalesPerson.xml (см. главу 2) генерируется индекс и сводные страницы.

Читать »

Создание интерактивных Web-страниц, включающих SVG

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

Задача

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

Решение

В основе этого решения лежит код из статьи Дидье Мартина (Didier Martin) на сайте XML.com Integration by Parts: XSLT, XLink and SVG (http://www.xml.com/ lpt/a/2000/03/22/style/index.html). Таблица стилей встраивает в HTML-страни- цу SVG-графику вкупе с информацией, полученной из XML-документа. Для вза­имодействия с графикой включен также сценарий на языке JavaScript. Данный пример может служить прототипом для сайтов по торговле недвижимостью, по­зволяющих пользователю взаимодействовать с чертежом дома.

Читать »