Язык XML

       

Функции обработки строк


Функция: string string(object?)

Функция преобразует объект в строку следующим образом:

  • Набор узлов преобразуется в строку, соответствующую того узла в этом наборе, который . Если представленный набор узлов пуст, возвращается пустая строка.

  • Число преобразуется в строку следующим образом

    • NaN преобразуется в строку NaN

    • положительный нуль преобразуется в строку 0

    • отрицательный нуль преобразуется в строку 0

    • положительная бесконечность преобразуется в строку Infinity

    • отрицательная бесконечность преобразуется в строку -Infinity

    • Если число целое, то оно представляется в десятичной форме без десятичной точки и ведущих нулей. Если число отрицательное, то его представлению предшествует знак минус (-).

    • В противном случае число представляется в десятичной форме , включающей десятичную точку, по крайней мере одну цифру до десятичной точки и, по крайней мере, одну после. Если число отрицательное, то его представлению предшествует знак минус (-). Десятичной точке не должны предшествовать ведущие нули, за исключением одной обязательной цифры перед десятичной точкой. После десятичной точки должна следовать хотя бы одна цифра, вообще же количество цифр после точки должно быть ровно таким, сколько необходимо, чтобы отличить это число от других чисел в формате IEEE 754, но не большим.

    • Булево значение false преобразуется в строку false. Булево значение true преобразуется в строку true.

    • Способ преобразования в строку объекта, не относящегося к четырем основным типам, зависит от этого типа.

      Если аргумент опущен, то по умолчанию используется набор узлов, единственным членом которого является узел контекста.

      Замечание: Функция string не предназначена для преобразования чисел в строки для показа пользователю. Для этой цели предназначены функция format-number и элемент xsl:number из .

      Функция: string concat(string, string, string*)

      Функция возвращает объединение представленных аргументов.

      Функция: boolean starts-with(string, string)

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

      Функция: boolean contains(string, string)

      Функция возвращает true если строка второго аргумента является частью строки первого аргумента. В противном случае функция возвращает false.

      Функция: string substring-before(string, string)


      Функция возвращает ту часть строки первого аргумента, которая предшествует первому появлению строки второго аргумента. Если строка второго аргумента не содержится в строке первого аргумента, то функция возвращает пустую строку. Например, substring-before("1999/04/01","/") возвратит 1999.

      Функция: string substring-after(string, string)

      Функция возвращает ту часть строки первого аргумента, которая следует за первым появлением строки второго аргумента. Если строка второго аргумента не содержится в строке первого аргумента, функция возвращает пустую строку. Например, substring-after("1999/04/01","/") возвращает 04/01, а substring-after("1999/04/01","19") возвращает 99/04/01.

      Функция: string substring(string, number, number?)

      Функция возвращает ту часть строки первого аргумента, которая начинается с позиции, указанной вторым аргументом, и имеет длину, указанную в третьем аргументе. Например, substring("12345",2,3) возвращает "234". Если третий аргумент не был представлен, функция возвращает подстроку, начинающуюся с позиции, указанной во втором аргументе, и продолжащуюся до конца строки. Например, substring("12345",2) возвращает "2345".

      Точнее выражаясь, каждый символ в строке (см. ) имеет номер позиции: позиция первого символа - 1, второго символа - 2 и т.д. Замечание: Такой порядок отличается от принятого в Java и ECMAScript, где метод String.substring считает позицию первого символа нулевой.

      Возвращаемая подстрока содержит те символы, позиция которых больше или равна округленному значению второго аргумента, а также, если был указан третий аргумент, меньше чем сумма округленных значений второго и третьего аргументов. Использовавшиеся выше операции сравнения и сложения отвечают правилам стандарта IEEE 754, округление осуществляется как при вызове функции . Приведенные далее примеры иллюстрируют различные нестандартные ситуации:




      • substring("12345", 1.5, 2.6) возвращает "234"





      • substring("12345", 0, 3) возвращает "12"



      • substring("12345", 0 div 0, 3) возвращает ""



      • substring("12345", 1, 0 div 0) возвращает ""



      • substring("12345", -42, 1 div 0) возвращает "12345"



      • substring("12345", -1 div 0, 1 div 0) возвращает ""

        Функция: number string-length(string?)

        Функция возвращает число символов в строке (см. [3.6 Строки]). Если аргумент опущен, то по умолчанию берется узел контекста и преобразуется в строку, иными словами, берется текущего узла контекста.

        Функция: string normalize-space(string?)

        Функция возвращает строку аргумента с нормализацией пробельных символов. Сюда входит удаление начальных и завершающих пробельных символов, а также замена оставшихся последовательностей пробельных символов одиночными пробелами. Пробельными считаются символы, являющиеся таковыми согласно сценарию в языке XML. Если аргумент опущен, то по умолчанию в строку преобразуется узел контекста, иными словами, в качестве аргумента берется текущего узла контекста.

        Функция: string translate(string, string, string)

        Функция возвращает строку первого аргумента, в которой символы, указанные в строке второго аргумента, заменены символами строки третьего аргумента в соответствующей позиции. Например, translate("bar","abc","ABC") возвращает строку BAr. Если в строке второго аргумента имеется символ, для которого нет парного символа в соответствующей позиции третьей строки (поскольку строка второго аргумента длиннее строки третьего аргумента), то все экземпляры этого символа изымаются из первой строки. Например, translate("--aaa--","abc-","ABC") возвращает "AAA". Если какой-либо символ встретился во второй строке несколько раз, то правило замены определяется первым встреченным экземпляром. Если строка третьего аргумента длиннее, чем строка второго, лишние символы игнорируются. Замена: Функция не может обеспечить преобразование регистра для всех языков. Для преобразования регистра в будущих версии XPath могут появиться дополнительные функции.


        Содержание раздела