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

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

Шрифт:

'шщъы',

'ьэюя')"/>

 <xsl:template name="lower">

<xsl:param name="str"/>

<xsl:value-of select="translate($str, $uppercase, $lowercase)"/>

 </xsl:template>

 <xsl:template name="upper">

<xsl:param name="str"/>

<xsl:value-of select="translate($str, $lowercase, $uppercase)"/>

 </xsl:template>

</xsl:stylesheet>

Использовать этот модуль можно, включив или импортировав его в основное преобразование элементами

xsl:include
или
xsl:import
. После этого в основном преобразовании будут доступны переменные
lowercase
и
uppercase
, которые можно будет использовать в функции
translate
и шаблоны с именами
lower
и
upper
.

Использовать функцию

translate
с переменными
lowercase
и
uppercase
можно следующим образом:

translate('Дом', $uppercase, $lowercase)
→
'дом'

translate('Дом', $lowercase, $uppercase)
→
'ДОМ'

Именованные шаблоны можно вызывать элементом

xsl:call-template
, передавая параметр при помощи
xsl:with-param
. Например, следующий фрагмент шаблона

...

<xsl:call-template name="lower">

 <xsl:with-param name="str" select="'Дом'"/>

</xsl:call-template
>

...

создаст в выходящем дереве текстовый узел со значением "

дом
".

Функции множеств узлов

Функции last и position

number last

number position

Функция

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

Функция

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

Пример

В этом примере мы будем заменять все элементы элементами вида

<element name="..." position="...">

 ...

</element>

где атрибут

name
будет содержать имя, a
position
— через дробь позицию элемента в контексте и размер контекста.

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

<а>

 <b/>

 <c/>

 <d>

<e/>

<f/>

 </d>

</a>

Листинг 6.8. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:output indent="yes"/>

 <xsl:strip-space elements="*"/>

 <xsl:template match="*">

<element name="{name}" pos="{position}/{last}">

<xsl:apply-templates/>

</element>

 </xsl:template>

</xsl:stylesheet>

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

<element name="a" pos="1/1">

 <element name="b" pos="1/3"/>

 <element name="c" pos="2/3"/>

 <element name="d" pos="3/3">

<element name="e" pos="1/2"/>

<element name="f" pos="2/2"/>

  • Читать дальше
  • 1
  • ...
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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