Чтение онлайн

на главную - закладки

Жанры

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

Шрифт:

element-available

Функция

element-available
используются для определения доступности определенного элемента расширения. Ее применяют следующим образом:

boolean element-available(element-name)

Функция принимает имя искомого элемента и, если элемент доступен, возвращает истину, если недоступен — ложь.

Мы уже встречались с этой функцией в главе 5. В примере

element-available
той главы я проверял наличие элемента
<starpowder:calculate>
таким образом:

<xsl:choose xmlns:starpowder="http://www.starpowder.com">

 <xsl:when test="element-available('starpowder:calculate')">

<starpowder:calculate xsl:extension-element-prefixes="starpowder"/>

 </xsl:when>

 <xsl:otherwise>

<xsl:text>Sorry, can't do math today.</xsl:text>

 </xsl:otherwise>

</xsl:choose>

format-number

Как

можно догадаться по имени, функция
format-number
служит для форматирования чисел с преобразованием их в строки. Она применяется так:

string format-number(number, format, name?)

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

number
, которое нужно отформатировать, строка форматирования
format
и необязательный параметр-строка
name
. Строка name — это имя
QName
, задающее формат так, как он создается элементом
<xsl:decimal-format>
(который будет рассмотрен в конце этой главы).

Форматирующая строка

format
должна соответствовать соглашениям класса Java
DecimalFormat
.

КЛАСС JAVA DECIMALFORMAT

На момент написания книги документация для класса Java DecimalFormat находится в Интернете по адресу: http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat.html.

Форматирующая строка (format string) состоит из следующих частей:

• 

format-string:= subpattern (;subpattern)?

• 

subpattern:= prefix? integer (.fraction)?suffix?

• 

prefix:= [#x0..#xFFFD] - specialCharacters

• 

suffix:= [#x0..#xFFFD] - specialCharacters

• 

integer:= '#'* '0'* '0'

• 

fraction:= '0'* '#'*

Далее показаны специальные символы (

specialCharacters
), которые можно использовать в подчиненных образцах,
subpattern
(эти символы можно изменить при помощи элемента
<xsl:decimal-format>
, который будет рассмотрен в конце этой главы):

• 

0
— на этом месте всегда должна стоять цифра;

• 

#
— цифра, если только это не избыточный лидирующий или завершающий
ноль;

• 

.
— разделитель десятичной части;

• 

,
— разделитель групп разрядов;

• 

;
— разделяет форматы;

• 

— знак минуса;

• 

%
— умножить на 100 и показать как проценты;

• 

— умножить на 1000 и показать в тысячных частях;

• 

Е
— разделяет мантиссу и экспоненциальную часть;

• 

¤
— символ валюты (#xA4);

• 

'
— заключает в кавычки специальные символы.

Следующий пример (листинг 8.5) демонстрирует работу функции. Я форматирую значения из

planets.xml
, отображаемые в таблице HTML.

Листинг 8.5. Форматирование чисел

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:template match="/PLANETS">

.

.

.

 </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="format-number(., '#.###')"/>

<xsl:text> </xsl:text>

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

 </xsl:template>

 <xsl:template match="RADIUS">

<xsl:value-of select="format-number(., '#.###')"/>

<xsl:text> </xsl:text>

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

 </xsl:template>

 <xsl:template match="DAY">

<xsl:value-of select="format-number(., '###.#')"/>

<xsl:text> </xsl:text>

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

 </xsl:template>

</xsl:stylesheet>

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

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Пипец Котенку! 4

Майерс Александр
4. РОС: Пипец Котенку!
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Пипец Котенку! 4

Маленькая хозяйка большого герцогства

Вера Виктория
2. Герцогиня
Любовные романы:
любовно-фантастические романы
7.80
рейтинг книги
Маленькая хозяйка большого герцогства

Новый Рал 8

Северный Лис
8. Рал!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Новый Рал 8

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Делегат

Астахов Евгений Евгеньевич
6. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Делегат

Целительница моей души

Чекменёва Оксана
Любовные романы:
любовно-фантастические романы
7.29
рейтинг книги
Целительница моей души

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Мастер Разума II

Кронос Александр
2. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.75
рейтинг книги
Мастер Разума II

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Релокант. Вестник

Ascold Flow
2. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. Вестник