XSLT - Стивен Холзнер
0/0

XSLT - Стивен Холзнер

Уважаемые читатели!
Тут можно читать бесплатно XSLT - Стивен Холзнер. Жанр: Интернет. Так же Вы можете читать полную версию (весь текст) онлайн книги без регистрации и SMS на сайте Knigi-online.info (книги онлайн) или прочесть краткое содержание, описание, предисловие (аннотацию) от автора и ознакомиться с отзывами (комментариями) о произведении.
Описание онлайн-книги XSLT - Стивен Холзнер:
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
Читем онлайн XSLT - Стивен Холзнер

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 70 71 72 73 74 75 76 77 78 ... 115

• number(). Приводит переданный ей параметр к числу;

• round(). Округляет переданное функции число до ближайшего целого;

• sum(). Возвращает сумму переданных функции чисел.

В следующих разделах мы рассмотрим примеры применения каждой из этих функций.

ceiling()

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

number ceiling(number)

Например, выражение

ceiling(3.1415926535)

возвращает 4.

floor()

Функция floor — парная к функции ceiling. Она возвращает наибольшее целое, которое все еще меньше переданного ей числа. Другими словами, функция возвращает предыдущее целое. Функция применяется следующим образом:

number floor(number)

В этом примере я при помощи floor преобразую длительность дней планет в целые числа:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/PLANETS">

  <HTML>

   .

   .

   .

  </HTML>

 </xsl:template>

 <xsl:template match="PLANET">

  <TR>

   <TD><xsl:value-of select="NAME"/></TD>

   <TD><xsl:apply-templates select="MASS"/></TD>

   <TD><xsl:apply-templates select="RADIUS"/></TD>

   <TD><xsl:apply-templates select="DAY"/></TD>

  </TR>

 </xsl:template>

 <xsl:template match="MASS">

  <xsl:value-of select="."/>

  <xsl:text> </xsl:text>

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

 </xsl:template>

 <xsl:template match="RADIUS">

  <xsl:value-of select="."/>

  <xsl:text> </xsl:text>

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

 </xsl:template>

 <xsl:template match="DAY">

  <xsl:value-of select="floor(.)"/>

  <xsl:text> </xsl:text>

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

 </xsl:template>

</xsl:stylesheet>

А вот результирующий документ:

<HTML>

 <HEAD>

  <TITLE>

   The Planets Table

  </TITLE>

 </HEAD>

 <BODY>

  <H1>

   The Planets Table

  </H1>

  <TABLE BORDER="2">

   <TR>

    <TD>Name</TD>

    <TD>Mass</TD>

    <TD>Radius</TD>

    <TD>Day</TD>

   </TR>

   <TR>

    <TD>Mercury</TD>

    <TD>.0553 (Earth = 1)</TD>

    <TD>1516 miles</TD>

    <TD>58 days</TD>

   </TR>

   <TR>

    <TD>Venus</TD>

    <TD>.815 (Earth = 1)</TD>

    <TD>3716 miles</TD>

    <TD>116 days</TD>

   </TR>

   <TR>

    <TD>Earth</TD>

    <TD>1 (Earth = 1)</TD>

    <TD>2107 miles</TD>

    <TD>1 days</TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

number()

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

number number(object?)

В этом примере я передаю number строку:

number("456.7")

Это выражение возвращает число 456.7. Если вы попытаетесь преобразовать что-то, что number не сможет перевести в число, функция вернет значение XPath NaN (Not a Number, не число). NaN — корректное значение, которое можно проверять в выражениях Xpath.

round()

Функция 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>

 .

 .

 .

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

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/PLANETS">

  <xsl:if test="lang('en')">

   <HTML>

    <HEAD>

     <TITLE>

      The Planets Table

     </TITLE>

    </HEAD>

    <BODY>

     <H1>

      The Planets Table

     </H1>

     <TABLE BORDER="2">

      <TR>

       <TD>Name</TD>

       <TD>Mass</TD>

       <TD>Radius</TD>

       <TD>Day</TD>

      </TR>

      <xsl:apply-templates/>

     </TABLE>

    </BODY>

   </HTML>

  </xsl:if>

 </xsl:template>

 <xsl:template match="PLANET">

  <TR>

   <TD><xsl:value-of select="NAME"/></TD>

   <TD><xsl:apply-templates select="MASS"/></TD>

   <TD><xsl:apply-templates select="RADIUS"/></TD>

   <TD><xsl:apply-templates select="DAY"/></TD>

  </TR>

 </xsl:template>

</xsl:stylesheet>

not()

Функция not инвертирует логическое значение аргумента. При передаче аргумента с логическим значением true она возвращает false; при передаче аргумента со значением false функция возвращает true. Функция применяется следующим образом:

1 ... 70 71 72 73 74 75 76 77 78 ... 115
На этой странице вы можете бесплатно читать книгу XSLT - Стивен Холзнер бесплатно.
Похожие на XSLT - Стивен Холзнер книги

Оставить комментарий

Рейтинговые книги