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

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

Шрифт:

 <xsl:choose>

<xsl:when test="$day-number=1">Mon</xsl:when>

<xsl:when test="$day-number=2">Tue</xsl:when>

<xsl:when test="$day-number=3">Wed</xsl:when>

<xsl:when test="$day-number=4">Thu</xsl:when>

<xsl:when test="$day-number=5">Fri</xsl:when>

<xsl:when test="$day-number=6">Sat</xsl:when>

<xsl:when test="$day-number=7">Sun</xsl:when>

<xsl:otherwise>Hmm...</xsl:otherwise>

 </xsl:choose>

</xsl:template>

Результатом вызова:

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

 <xsl:with-param name="day-number" select="1"/>

</xsl:call-template>

будет текстовый узел "

Mon
". Рассмотрим теперь случай, когда параметра передано не было:

<xsl:call-template name="day-name"/>

Шаблон выведет задумчивое

Hmm...
, поскольку значение параметра
day-number
будет по умолчанию нулем (атрибут
select
имеет вид
select="0"
) и в операторе выбора
xsl:choose
сработает условие
xsl:otherwise
.

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

Пример

Представим себе описание меню в следующем формате:

<menu>

 <menuitem index="1" name="Home" href="#"/>

 <menuitem index="2" name="News" href="#"/>

 <menuitem index="3" name="Profile" href="#"/>

 <menuitem index="4" name="Contact" href="#"/>

</menu>

Для того чтобы при обработке особым образом выделять текущую страницу, определим в шаблоне параметр

current
и будем выводить название страницы в элементе
b
(от англ. bold — полужирный), если значение
current
равно индексу данного пункта меню; если текущая страница и индекс пункта меню не совпадают, то выводиться будет ссылка.

<xsl:template match="menuitem">

 <xsl:param name="current" select="1"/>

 <xsl:choose>

<xsl:when test="$current=@index">

<b>

<xsl:value-of select="@name"/>

</b>

</xsl:when>

<xsl:otherwise>

<a href="#">

<xsl:value-of select="@name"/>

</a>

</xsl:otherwise>

 </xsl:choose>

</xsl:template>

Результатом выполнения шаблона

<xsl:template match="menu">

 <xsl:apply-templates select="menuitem">

<xsl:with-param name="current" select="3"/>

 </xsl:apply-templates>

</xsl:template>

будет фрагмент меню вида

<a href="#">Home</a>

<a href="#">News</a>

<b>Profile</b>

<a href="#">Contact</a>

Попробуем теперь обработать элементы

menuitem
, не указывая значение параметра
current
:

<xsl:template match="menu">

 <xsl:apply-templates select="menuitem"/>

</xsl:template>

Результат будет получен в виде:

<b>Home</b>

<а href="#">News</a>

<а href="#">Profile</a>

<a href="#">Contact</a>

Этот фрагмент выходящего документа легко объяснить. Вследствие определения:

<xsl:param name="current" select="1"/>

значением параметра

current
по умолчанию является
1
, и поэтому в меню был выбран пункт с индексом
1
.

  • Читать дальше
  • 1
  • ...
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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