Главная » XSLT

Использование регулярных выражений

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

Задача

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

Решение

Сопоставление с текстовыми образцами

Важнейшее применение регулярные выражения находят при сопоставлении с текстовыми образцами. Воспользовавшись функцией matches() в правиле

Читать »

Преобразование документов из формата Visio VDX в формат SVG

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

Задача

Требуется преобразовать файл в формате Microsoft Visio XML (VDX) в более переносимый формат SVG.

Решение

Показанное ниже решение предложил Джон Брин. Основные элементы Visio отображаются на элементы SVG, как показано в таблице 13.1.

Читать »

Обработка строковых литералов, содержащих кавычки

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

Задача

В XSLT 1.0 обрабатывать строковые литералы, содержащие кавычки, трудно, поскольку не существует никакого символа экранирования.

Решение

Эта проблема решается за счет нового соглашения: чтобы экранировать сим­вол кавычки, нужно ввести его два раза подряд. Ниже мы пытаемся выполнить сопоставление со строками, заключенными в двойные или одинарные кавычки. Атрибут test мы заключили в одинарные кавычки, следовательно, строковый литерал для регулярного выражения нужно заключить в двойные. Поэтому все двойные кавычки внутри этого литерала необходимо продублировать. Правила XML вынуждают нас использовать компонент ' вместо ", но это лишь под­черкивает тот факт, что экранирование средствами XML – отдельный вопрос, само по себе это не помогает решить задачу. Другими словами, если заменить "" на ", то анализатор XML будет доволен, но анализатору XSLT этого мало.

Читать »

Работа с XSLT в программах на языке Java

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

Задача

Требуется выполнить XSLT-преобразование в приложении, написанном на Java.

Решение

Обратиться к XSLT из программы на Java можно тремя способами:

?               воспользоваться интерфейсом, который предлагает ваш любимый XSLT- процессор, написанный на Java;

Читать »

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

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

<xsl:stylesheet

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

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

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

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

Читать »

Вычисление сумм и произведений

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

Задача

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

Решение

XSLT 1.0

Абстрактная форма алгоритма суммирования для процессоров, оптимизиру­ющих хвостовую рекурсию, выглядит следующим образом:

Читать »

Язык XPath

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

XPath – это язык для записи выражений. Он имеет фундаментальное значе­ние для обработки XML-документов. Нельзя овладеть XSLT, не зная XPath, точ­но так же, как нельзя выучить английский язык, не зная алфавита. Некоторые читатели первого издания этой книги пеняли мне за то, что я не включил в нее основ XPath. Эта глава добавлена отчасти, чтобы удовлетворить их, но главным образом потому, что в спецификации XPath 2.0 выразительная мощь этого языка была значительно усилена. Впрочем, многие рецепты будут рабо­тать и с XPath 1.0.

Читать »

Реализация элементов расширения на языке Java

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

Задача

Требуется расширить функциональность XSLT за счет добавления нестан­дартных элементов.

Решение

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

Читать »

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

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

Задача

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

Решение

Если вы проверяете документы на соответствие схеме, то получающиеся узлы аннотируются информацией о типе. Затем в XPath 2.0 (а равно при сопоставле­нии с шаблонами в XSLT 2.0) эти типы можно опросить.

Читать »

Рецепты применения XSLT в вертикальных приложениях – Введение

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

Эта глава отличается от прочих тем, что приведенные в ней примеры – это мини-приложения XSLT в самых разных областях («общий котел», если хотите). Многие примеры связаны с теми или иными коммерческими программами. Вводя поддержку XML, производители программного обеспечения открывают такие возможности применения своих продуктов, о которых и сами не подозревали (или не собирались реализовывать).

Читать »

Включение условий в выражения if

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

Задача

У вас есть сложная XSLT-программа, которая оказалась излишне длинной из- за того, что запись условий if-then-else в XML слишком многословна.

Решение

XPath 1.0

В XPath 1.0 есть несколько приемов, позволяющих обойтись без громоздкого выражения xsl:choose в простых ситуациях. Они основаны на том, что в число­вом контексте значение false преобразуется в 0, а значение true – в 1.

Читать »

Обращение строки

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

Задача

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

Решение XSLT 1.0

Приведенный ниже шаблон обращает строку $input неочевидным, но весьма эффективным способом.

<xsl:template name="reverse"> <xsl:param name="input"/>

Читать »

Объединение документов с одной и той же схемой

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

Задача

Есть несколько документов с одинаковой структурой, а нужно объединить их в один.

Решение

Если все документы имеют разное содержимое или вы готовы смириться с дубликатами, то решение несложно:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Читать »

Удаление заданных символов из строки

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

Задача

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

Решение

XSLT 1.0

Воспользуйтесь функцией translate() с пустой строкой замены. Напри­мер, следующий код удаляет из строки все пробельные символы:

Читать »

Использование встроенных расширений Saxon и Xalan

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

Задача

Вы хотите воспользоваться какими-то полезными расширениями, реализо­ванными в этих популярных процессорах XSLT.

Решение

XSLT 1.0

Этот рецепт разбит на ряд мини-рецептов, иллюстрирующих применение наиболее интересных расширений в Saxon и Xalan. Во всех примерах префикс saxon ассоциирован с пространством имен http://icl.com/saxon, а префикс xalan – с http://xml.apache.org/xslt.

Читать »