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

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

Шрифт:
Листинг 6.3. Входящий документ

<list>

 <item>1</item>

 <item>3</item>

 <item>5</item>

</list>

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

<xsl:stylesheet

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

 version="1.0">

 <xsl:template match="list">

<xsl:copy>

<xsl:apply-templates/>

</xsl:copy>

 </xsl:template>

 <xsl:template match="item">

<sum>

<xsl:value-of select="sum(preceding-sibling::item|.)"/>

</sum>

 </xsl:template>

</xsl:stylesheet>

Листинг 6.5. Результат

<list>

 <sum>1</sum>

 <sum>4</sum>

 <sum>9</sum>

 <sum>16</sum>

 <sum>25</sum>

</list>

В этом преобразовании мы заменяем каждый элемент

item
на сумму значений предшествующих ему элементов плюс собственное значение. Предшествующие элементы выбираются путем выборки
preceding-sibling::item
, текущий элемент — сокращенным путем "
.
", затем эти два множества объединяются при помощи оператора
|
, и, наконец, мы вычисляем сумму значений узлов, входящих в них функцией
sum
.

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

number
. Например, если входящий документ будет иметь вид

<list>

 <item>1</item>

 <item>3</item>

 <item>five</item>

 <item>7</item>

 <item>9</item>

</list>

то на выходе мы получим

<list>

 <sum>1</sum>

 <sum>4</sum>

 <sum>NaN</sum>

 <sum>NaN</sum>

 <sum>NaN</sum>

</list>

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

number('five')
, то есть не-число (
NaN
).

Функции floor и ceiling

number floor(number)

number ceiling(number)

Функции

floor
и
ceiling
(англ. пол и потолок соответственно) осуществляют округление численного аргумента до ближайшего не большего и ближайшего не меньшего целого соответственно.

Примеры

floor(2.3)
→
2

ceiling(2.3)
→
3

floor(-2.3)
→
– 3

ceiling(-2.3)
→
– 2

floor(-1 div 0)
→
– Infinity

ceiling(-1 div 0)
→
– Infinity

floor('zero')
→
NaN

ceiling(-1 div (-1 div 0))
→
0

Функция round

number round(number)

Функция

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

□ Если дробная часть числа равна 0.5, то функция вернет ближайшее большее целое.

□ Если аргумент является не-числом (NaN), то результат также будет NaN.

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

  • Читать дальше
  • 1
  • ...
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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