Листинг 8.9. Применение функций substring-before, substring и substring-after
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Planetary Information
The first planet is
.
Вот результирующий документ, созданный этим преобразованием:
Planetary Information
Planetary Information
The first planet is Mercury.
Функция substring-afterвозвращает подстроку, которая следует за найденной строкой. В эту функцию передается строка, подстрока, которую нужно найти внутри строки, — и функция возвращает подстроку, расположенную после совпадающей части строки, если она была найдена; иначе функция возвращает пустую строку. Функция применяется следующим образом:
string substring-after(string, string-to-match)
В функцию substring-beforeпередается строка, подстрока, которую нужно найти внутри строки, и функция возвращает подстроку, расположенную перед совпадающей частью строки, если она была найдена; иначе функция возвращает пустую строку. Функция применяется следующим образом:
string substring-before(string, string-to-match)
В разделе substring()приведен пример применения функций substring-before, substringи substring-after.
Функция translateслужит для перевода или замены определенных символов. (Эта функция во многом похожа на операцию tr в Perl, если вы знакомы с операциями.) В функцию передаются две строки: одна задает список символов поиска, вторая задает список символов, которыми нужно заменить найденные символы. Функция применяется следующим образом:
string translate(string, from-characters, to-characters)
Например, если третий символ из from-charactersбудет найден в string, то третий символ из to-charactersзаменит его в результирующей строке. В следующем примере такая функция translate
translate("steve-starpowder.com", "-", "@")
возвратит результирующую строку «steve@starpowder.com».
В этом примере я просто привожу строку к нижнему регистру:
translate("XSLT", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")
Функции XPath для работы с числами
В XPath имеются следующие функции для работы с числами:
• ceiling(). Возвращает наименьшее целое, большее переданного функции числа,
• floor(). Возвращает наибольшее целое, меньшее переданного функции числа;
• number(). Приводит переданный ей параметр к числу;
• round(). Округляет переданное функции число до ближайшего целого;
• sum(). Возвращает сумму переданных функции чисел.
В следующих разделах мы рассмотрим примеры применения каждой из этих функций.
Функция ceilingвозвращает наименьшее целое, которое все еще больше переданного функции числа, то есть она возвращает следующее большее целое. Функция применяется следующим образом:
number ceiling(number)
Например, выражение
ceiling(3.1415926535)
возвращает 4.
Функция floor— парная к функции ceiling. Она возвращает наибольшее целое, которое все еще меньше переданного ей числа. Другими словами, функция возвращает предыдущее целое. Функция применяется следующим образом:
number floor(number)
В этом примере я при помощи floorпреобразую длительность дней планет в целые числа:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
|
|
|
|
А вот результирующий документ:
The Planets Table
The Planets Table
| Name |
Mass |
Radius |
Day |
| Mercury |
.0553 (Earth = 1) |
1516 miles |
58 days |
| Venus |
.815 (Earth = 1) |
3716 miles |
116 days |
| Earth |
1 (Earth = 1) |
2107 miles |
1 days |
Функция numberприводит свой аргумент к числу. Функция применяется следующим образом:
number number(object?)
В этом примере я передаю numberстроку:
number("456.7")
Это выражение возвращает число 456.7. Если вы попытаетесь преобразовать что-то, что numberне сможет перевести в число, функция вернет значение XPath NaN(Not a Number, не число). NaN— корректное значение, которое можно проверять в выражениях Xpath.
Функция roundокругляет переданное ей значение. Функция применяется следующим образом:
number round(number)
Например, round(3.1415926535)возвращает 3, round(4.5)возвращает 5 и round(-1.5)возвращает -1.
Читать дальше