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

ЖАНРЫ

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

Шрифт:

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

</TR>

 </xsl:template>

 .

 .

 .

 <xsl:template match="DAY">

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

<xsl:text> </xsl:text>

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

 </xsl:template>

</xsl:stylesheet>

Эта

таблица стилей обрабатывает данные в
planets1.xml
и также считывает и обрабатывает
planets2.xml
; вот полный результат — как видите, данные для
planets2.xml
добавились нужным образом:

<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.65 days</TD>

</TR>

</TABLE>

 </BODY>

</HTML>

Функция

document
удобна, поскольку позволяет считывать на этапе выполнения такие дополнительные документы, как справка о правах владения или отказе от них, фирменный бланк и т.п.

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">

Поделиться с друзьями: