Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

String pattern = elem.getAttribute("pattern");

// Если атрибут pattern не определен,

// используем образец форматирования, определенный по умолчанию

if (pattern == null)

df = new SimpleDateFormat;

// Если атрибут pattern определен, используем его значение

// в качестве образца форматирования

else

df = new SimpleDateFormat(pattern);

return df.format(new Date);

 }

}

В преобразовании этот элемент мы можем использовать как:

This page was generated at <ext:date pattern="HH:mm"/> on

<ext:date pattern="dd/MM/yyyy"/>.

или:

This page was generated on <ext:date/>.

В первом случае результатом будет:

This page was generated at 12:11 on 08/10/2001.

Во втором:

This page was generated on 08.10.01 12:11.

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

Функция element-available

boolean element-available(string)

Функция

element-available
совершенно аналогична функции
function-available
: она служит для проверки доступности в преобразовании того или иного элемента. Строковый параметр
element-available
задает расширенное имя элемента; функция возвращает
true
, если элемент с таким именем доступен,
false
— если нет.

Пример

Предположим, что преобразование, созданное нами для процессора Xalan с использованием элемента расширения

ext:date
, будет выполняться на каком-либо другом процессоре. В этом случае велика вероятность того, что вследствие несовместимости механизмов расширений это преобразование завершится ошибкой — "чужой" процессор просто не сможет выполнить элемент
ext:date.

Во избежание этого, мы можем использовать функцию

element-available
для проверки доступности элемента
ext:date
до его вызова.

Листинг 10.21. Преобразование, использующее функцию element-available

<xsl:stylesheet

 version="1.0"

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

 xmlns:ext="xalan://de.fzi.xslt.ext"

 extension-element-prefixes="ext">

 <xsl:template match="/">

<result>

<xsl:if test="element-available('ext:date')">

This page was generated at <ext:date pattern="HH:mm"/> on <ext:date pattern="dd/MM/yyyy"/>.

</xsl:if>

</result>

 </xsl:template>

</xsl:stylesheet>

Элемент xsl:fallback

Другим способом обработки исключительных ситуаций, связанных с невозможностью выполнить тот или иной элемент преобразования, является использование элемента

xsl:fallback
. Синтаксическая конструкция этого элемента следующая:

<xsl:fallback>

 <!-- Содержимое: шаблон -->

</xsl:fallback>

Элемент

xsl:fallback
включается в "критическую" инструкцию, то есть в элемент, который может быть неизвестен процессору. В случае, если критическая инструкция отрабатывается нормально, содержимое
xsl:fallback
попросту игнорируется. Иначе, если процессор в силу некоторых причин не может выполнить критическую инструкцию, вместо нее он будет выполнять содержимое дочернего элемента
xsl:fallback
.

  • Читать дальше
  • 1
  • ...
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: