Шрифт:
</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>
Вот результат, в котором выведены отформатированные числа:
<HTML>
<HEAD>
<TITLE>
The Formatted Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Formatted 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>0.055 (Earth = 1)</TD>
<TD>1.516 miles</TD>
<TD>58.65 days</TD>
</TR>
<TR>
<TD>Venus</TD>
<TD>0.815 (Earth = 1)</TD>
<TD>3.716 miles</TD>
<TD>116.75 days</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1 (Earth = 1)</TD>
<TD>2.107 miles</TD>
<TD>1 days</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Этот результирующий документ показан на рис. 8.1. (MSXML3 и Saxon отбрасывают лидирующие нули, поэтому 0.055 выводится как .055 и т.д.)
Рис. 8.1. Форматирование чисел при помощи XSLT
Следующие примеры демонстрируют способы применения форматирующих строк. Заметьте, что при помощи точки с запятой (;) можно отделять образцы для положительных и отрицательных чисел.
| Число | Форматирующая строка | Результат |
|---|---|---|
| 4567 | #,### | 4,567 |
| 4567.8 | ####.# | 4567.8 |
| 4567.8 | #,##0.00 | 4,567.80 |
| 456.789 | #,##0.00 | 456.79 |
| 4567890 | #,##0.00 | 4,567,890.00 |
| 4567 | ###0.0### | 4567.0 |
| .00045 | ##0.0### | 0.0005 |
| .45 | #00% | 45% |
| – 4.56 | #.00;(#.00) | (4.56) |
| – 45 | #,##0.00 | – 45 |
function-available
При помощи функции XSLT 1.0
function-available
можно проверить наличие функции расширения: boolean function-available(function-name)
Функция принимает в качестве параметра имя искомой функции и, если функция доступна, возвращает истину, если нет — ложь.
Следующий пример мы уже рассматривали в главе 5. В этом случае я хочу выполнить ряд математических операций при помощи функции расширения
starpowder:calculate
, и если она отсутствует, вывести в результирующий документ текст «Sorry, can't do math today.» (Извините, сегодня математические вычисления не работают.). Можно, конечно, также прекратить обработку и вывести сообщение об ошибке при помощи элемента <xsl:message>
: