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

Эмуляция объектно-ориентированных методик повторного использования и паттернов проектирования

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

Задача

Хотелось бы перейти от «копирования и вставки» к созданию библиотек по­вторно используемого XSLT-кода.

Решение

Понятно, что XSLT – не объектно-ориентированный язык. Однако объектная ориентация – это, скорее, принципы конструирования обобщенного повторно ис­пользуемого кода, а не просто классы, объекты, наследование, инкапсуляция и т.д.

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

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

Читать »

Отбор узлов по контексту

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

Задача

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

Решение XSLT 1.0

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

Читать »

Создание HTML-таблиц

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

Задача

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

Решение

Таблицы часто создаются в два этапа. Сначала генерируется табличная раз­метка верхнего уровня, а затем для создания строк и ячеек применяются шаблоны.

Показанное ниже решение – это частичная модификация таблицы стилей из ре­цепта 10.2. Изменения выделены полужирным шрифтом:

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

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

Читать »

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

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

Задача

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

Решение

Этот генератор сервера является дополнением к генератору клиента из рецеп­та 12.6. Сейчас мы приведем лишь часть решения, а детали отложим до раздела «Обсуждение».

Читать »

Отбор всех элементов, кроме одного

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

Задача

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

Решение

Самый лучший способ отобрать все элементы, кроме одного, такой:

<xsl:apply-templates select="*[not(self::element-to-ignore)]"/>

Читать »

Генерация Web-сайтов из тематических карт

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

Задача

Требуется получить знания о предмете, представленном в тематической кар­те, и на этой основе сгенерировать с помощью XSLT Web-сайт.

Решение

В основу решения положен каркас Cogitative Topic Maps Web Site (CTW), представленный публике в сборнике статей XML Topic Maps под редакцией Джека Парка (Jack Park) (Addison Wesley, 2002). Оригинальная работа была выполнена в компании Extreme Markup Languages в 2000 году.

Читать »

Автоматизация вставки отладочной печати

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

Задача

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

Решение

Оливер Беккер (Oliver Becker) разработал полезное преобразование, которое принимает на входе любую таблицу стилей, а на выходе возвращает ту же табли­цу, дополненную трассировкой:

Читать »

Углубление иерархии XML

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

Задача

Имеется плохо спроектированный документ, которому не помешали бы до­полнительные структурные уровни< ![if !supportFootnotes]>[2].

Решение

Эта задача противоположна рассмотренной в рецепте 8.7. Здесь нужно доба­вить в документ структурные уровни, возможно, для того чтобы организовать элементы по какому-нибудь дополнительному критерию.

Читать »