В XPath строки формируются из символов Unicode, как можно было предположить. Ряд функций специально предназначен для работы со строками:
string(object object1)
Преобразует объект в строку;
starts-with(string string1, string string2)
Возвращает истину, если первая строка начинается (starts with) со второй строки;
contains(string string1, string string2)
Возвращает истину, если первая строка содержит (contains) вторую строку;
substring(string string1, number offset number length)
Возвращает
length
символов из строки, начиная со смещения
offset
substring-before(string string1, string string2)
Возвращает часть строки
string1
до первого вхождения строки
string2
substring-after(string string1, string string2)
Возвращает часть строки
string1
после первого вхождения
string2
string-length(string string1)
Возвращает количество символов в строке
string1
normalize-space(string string1)
Возвращает строку
string1
после отбрасывания лидирующих и завершающих символов-разделителей и замены нескольких последовательных разделителей на один пробел;
translate(string string1, string string2, string string3)
Возвращает строку
string1
в которой все вхождения символов в строке
string2
заменены на соответствующие символы в строке
string3
concat(string string1, string string2, ...)
Возвращает конкатенацию (объединение) всех строк.
Есть еще одна строковая функция, о которой вам следует знать, входящая не в XPath, а в XSLT:
format-number(number number1, string string2, string string3)
Возвращает строку, содержащую число
number1
в виде форматированной строки, используя
string2
в качестве форматирующей строки (форматирующие строки создаются так же, как для метода Java java.text.DecimalFormat) и
string3
как возможную строку локализации.
В листинге 4.9 я выбираю текстовые узлы, в которых текст начинается с 'Е', чтобы выбрать Earth (Земля), и добавляю текст '(the World)' (мир), получая 'Earth (the World)'. Для этого я применяю предикат "
text()[starts-with(., 'Е')]