Функция round округляет переданное ей значение. Функция применяется следующим образом:

number round(number)

Например, round(3.1415926535) возвращает 3, round(4.5) возвращает 5 и round(-1.5) возвращает -1.

sum()

Функция sum суммирует численные значения набора узлов и возвращает результат. Функция применяется следующим образом:

number sum(node-set)

Взгляните на следующий пример из главы 4, который находит средние массы планет в planets.xml:

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:output method='xml'/>

 <xsl:template match='PLANETS'>

  <HTML>

   <BODY>

    The average planetary mass is

    <xsl:value-of select='sum(child::PLANET/child::MASS) div count (child::PLANET/child::MASS)'/>

   </BODY>

  </HTML>

 </xsl:template>

</xsl:stylesheet>

Логические функции XPath

XPath также поддерживает следующий набор логических функций:

• boolean(). Приводит аргумент к логическому значению;

• false(). Возвращает false (ложь);

• lang(). Проверяет, совпадает ли язык, установленный в атрибуте xml:lang, с языком, переданным в функцию;

• not(). Инвертирует значение truefalse аргумента;

• true(). Возвращает true (истина).

boolean()

Функция boolean преобразует аргумент в логическое значение. Функция применяется следующим образом:

boolean boolean(object)

Ниже показано, как функция работает с различными типами XPath:

• number. Если число равно нулю, результатом будет ложь; иначе результат — истина. NaN всегда возвращает ложь;

• string. Если строка не пуста, результат — истина, иначе — ложь;

• boolean. Значение не изменяется;

• nodeset. Пустой набор узлов дает ложь, не пустой — истину;

• Фрагмент результирующего дерева в XSLT 1.0 всегда дает истину.

false()

Функция false возвращает ложь. Она применяется следующим образом:

boolean false()

В XPath не определены логические константы, поэтому для того чтобы присвоить переменной значение false, нужно прибегнуть к функции false. (С переменными вы познакомитесь в главе 9.)

lang() 

Функция lang проверяет, совпадает ли язык контекстного узла (определенный в атрибуте xml:lang) с переданным ей языком. Функция применяется следующим образом:

boolean lang(string)

Функции нужно передать строку, определяющую язык в спецификации XML, как, например, «en» для английского, «de» для немецкого и «jp» для японского.

В следующем примере я проверяю, написан ли исходный документ на английском. Сначала я устанавливаю атрибут xml:lang в planets.xml в значение, соответствующее английскому языку:

<?xml version='1.0'?>

<?xml=stylesheet type='text/xml' href='planets.xsl'?>

<PLANETS xml:lang='en'>

 <PLANET>

  <NAME>Mercury</NAME>

  <MASS UNITS='(Earth = 1)'>.0553</MASS>

  <DAY UNITS='days'>58.65</DAY>

  <RADIUS UNITS='miles'>1516</RADIUS>

  <DENSITY UNITS='(Earth = 1)'>.983</DENSITY>

  <DISTANCE UNITS='million miles'>43.4</DISTANCE><!--B перигелии-- >

 </PLANET>

 .

 .

 .

Теперь я удостоверяюсь, что исходный документ на самом деле написан на английском, перед тем как применять к нему шаблоны:

Вы читаете XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату