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

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

Шрифт:
Пример

На тот случай, если процессор не сможет выполнить наш элемент расширения

ext:date
, мы можем "подстраховать" его следующим образом:

<ext:date pattern="HH:mm">

 <xsl:fallback>unknown time</xsl:fallback>

</ext:date>

В этом случае шаблон

<xsl:template match="/">

 <!-- ...
– ->

 This page was generated at <ext:date pattern="HH:yy">

<xsl:fallback>unknown time</xsl:fallback>

 </ext:date>.

</xsl:template>

в случае невозможности выполнить

ext:date
выведет

This page was generated at unknown time.

Заметим, что

xsl:fallback
применим не только для обработки исключительных ситуаций, связанных с элементами расширения. Наборы доступных процессору элементов XSLT будут также меняться от версии к версии, и
xsl:fallback
вполне пригодится для обеспечения обратной совместимости. Например, если в версии XSLT 2.0 будет определен элемент
xsl:for-each-group
, то
xsl:fallback
можно использовать при создании альтернативного варианта для процессоров, которые еще не поддерживают новую версию:

<xsl:for-each-group select="item" group-by="@number">

 <!-- ...
– ->

 <xsl:fallback>

<xsl:for-each select="item[generate-id(.)=

generate-id(key('item', @number))]">

<!-- ...
– ->

</xsl:for-each>

 </xsl:fallback>

</xsl:for-each>

Инициатива EXSLT

Функции и элементы расширения с лихвой восполняют ограниченность языков XSLT и XPath, предоставляя возможности обычных императивных языков там, где они необходимы. Между тем, как показывает практика, задачи, которые приходится решать при помощи расширений, как правило, совершенно стандартны — например, разобранная выше функция nodeset, так или иначе реализована почти во всех XSLT-процессорах.

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

Для конечного пользователя EXSLT — это множество библиотек расширений, которые можно загрузить с сайта http://www.exslt.org. Помимо этого, EXSLT-расширения уже являются встроенными для некоторых процессоров. Например, в процессоре Saxon реализовано большинство элементов и функций расширения EXSLT.

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

□ 

Common
— общие функции и элементы расширения. Включает функции
exslt:node-set
и
exslt:object-type
и элемент
exslt:document
.

□ 

Math
— математические функции.

□ 

Sets
— функции для работы с множествами узлов (как-то: пересечение, разность и так далее).

□ 

Functions
— элементы для определения пользовательских функций.

□ 

Dates and Times
— элементы и функции для работы с временными параметрами.

□ 

Strings
— модуль для работы со строками.

□ 

Regular Expressions
— функции для работы с регулярными выражениями.

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

Глава 11

Готовые решения

Группировка

Мы уже рассматривали задачу группировки, когда разбирали устройство и функционирование ключей — это была та самая задача, в которой из документа вида.

Листинг 11.1 Входящий документ

<items>

 <item source="a" name="A"/>

 <item source="b" name="B"/>

 <item source="a" name="C"/>

 <item source="c" name="D"/>

 <item source="b" name="E"/>

 <item source="b" name="F"/>

 <item source="c" name="G"/>

 <item source="a" name="H"/>

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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