|
| ||||||||||||
| ||||||||||||
4 Основная библиотека функцийВ данной главе описываются функции, которые при реализации XPath должны быть всегда внесены в библиотеку функций, используемых для обработки выражений. Каждая функция в этой библиотеке описывается с помощью прототипа, в котором указываются тип возвращаемого значения, название функции и тип аргументов. Если за описанием типа аргумента следует знак вопроса, то данный аргумент является необязательным, в противном случае аргумент обязателен. 4.1 Функции обработки набора узловФункция last возвращает число, равное размеру контекста обрабатываемого выражения. Функция position возвращает число, равное положению в контексте обрабатываемого выражения. Функция: number count(node-set) Функция count возвращает количество узлов в наборе, представленном в качестве аргумента. Функция id находит элементы по их уникальному идентификатору (см. [5.2.1 Уникальные ID]). Если аргументом функции id является набор узлов, то ее результатом будет объединение узлов, полученных в результате вызова функции id для строкового значения каждого узла в наборе, указанном в качестве аргумента. Если аргумент функции id относится к какому-либо другому типу, то этот аргумент сперва преобразуется в строку как при вызове функции string. Затем полученная строка разбивается на лексемы, разделенные пробельными символами (пробельный символ - это любая последовательность символов, соответствующих сценарию S). Результатом вызова функции в этом случае является набор узлов, состоящий из элементов, относящихся к тому же документу, где находился узел контекста, и имеющих уникальный идентификатор, равный одной из лексем, представленных в этом списке.
Функция: string local-name(node-set?) Среди набора узлов, указанного в аргументе, функция local-name находит тот узел, который в документе встретится первым, и выделяет локальную часть его расширенного имени. Если в аргументе функции представлен пустой набор узлов или первый обнаруженный узел не имеет расширенного имени, возвращается пустая строка. Если аргумент функции отсутствует, то по умолчанию используется набор, состоящий из единственного члена - узла контекста. Функция: string namespace-uri(node-set?) В наборе, указанном в аргументе, функция namespace-uri находит тот узел, который в документе встретится первым, и в его расширенном имени выделяет URI пространства имен. Если указанный в аргументе набор узлов пуст, первый найденный узел не имеет расширенного имени, или же URI пространства имен в расширенном имени оказался нулевым, то функция возвращает пустую строку. Если аргумент отсутствует, то по умолчанию берется набор, в котором узел контекста является единственным членом. Замечание: Для узлов, которые не соответствуют ни элементам, ни атрибутам, функция namespace-uri возвращает пустую строку. Функция: string name(node-set?) В наборе, указанном в аргументе, функция name находит узел, который в документе встретится первым, и возвращает строку, содержащую QName, которое представляет расширенное имя данного узла. Указанная конструкция QName должна представлять расширенное имя, исходя из деклараций пространств имен, доступная для того узла, чье расширенное имя должно быть представлено. Как правило, это тот самый QName, который был представлен в исходном документе XML. Однако это не обязательно должно быть так в случае, когда декларации, воздействующие на данный узел, с одним и тем же пространством имен связывают несколько префиксов. Тем не менее, реализация может содержать сведения о первоначальном префиксе представляемых узлов, в таком случае может выполняться проверка с тем, чтобы возвращаемая строка была всегда такой же, как QName, используемый в исходном документе XML. Если указанный в аргументе набор узлов пуст или первый узел не имеет расширенного имени, возвращается пустая строка. Если аргумент опущен, то по умолчанию используется набор, содержащий только узел контекста. Замечание: Для узлов, не являющихся ни элементом, ни атрибутом, строка, возвращаемая функцией name, будет той же самой, что и строка, возвращаемая функцией local-name. 4.2 Функции обработки строкФункция: string string(object?) Функция string преобразует объект в строку следующим образом:
Если аргумент опущен, то по умолчанию используется набор узлов, единственным членом которого является узел контекста. Замечание: Функция Функция: string concat(string, string, string*) Функция concat возвращает объединение представленных аргументов. Функция: boolean starts-with(string, string) Функция starts-with возвращает true если строка второго аргумента совпадает с началом строки первого аргумента. В противном случае функция возвращает false. Функция: boolean contains(string, string) Функция contains возвращает true если строка второго аргумента является частью строки первого аргумента. В противном случае функция возвращает false. Функция: string substring-before(string, string)
Функция substring-before возвращает ту часть строки первого аргумента, которая предшествует первому появлению строки второго аргумента. Если строка второго аргумента не содержится в строке первого аргумента, то функция возвращает пустую строку. Например, Функция: string substring-after(string, string) Функция substring-after возвращает ту часть строки первого аргумента, которая следует за первым появлением строки второго аргумента. Если строка второго аргумента не содержится в строке первого аргумента, функция возвращает пустую строку. Например, Функция: string substring(string, number, number?) Функция substring возвращает ту часть строки первого аргумента, которая начинается с позиции, указанной вторым аргументом, и имеет длину, указанную в третьем аргументе. Например, Точнее выражаясь, каждый символ в строке (см. [3.6 Строки]) имеет номер позиции: позиция первого символа - 1, второго символа - 2 и т.д. Замечание: Такой порядок отличается от принятого в Java и ECMAScript, где метод
Возвращаемая подстрока содержит те символы, позиция которых больше или равна округленному значению второго аргумента, а также, если был указан третий аргумент, меньше чем сумма округленных значений второго и третьего аргументов. Использовавшиеся выше операции сравнения и сложения отвечают правилам стандарта IEEE 754, округление осуществляется как при вызове функции round. Приведенные далее примеры иллюстрируют различные нестандартные ситуации:
Функция: number string-length(string?) Функция string-length возвращает число символов в строке (см. [3.6 Строки]). Если аргумент опущен, то по умолчанию берется узел контекста и преобразуется в строку, иными словами, берется строковое значение текущего узла контекста. Функция: string normalize-space(string?) Функция normalize-space возвращает строку аргумента с нормализацией пробельных символов. Сюда входит удаление начальных и завершающих пробельных символов, а также замена оставшихся последовательностей пробельных символов одиночными пробелами. Пробельными считаются символы, являющиеся таковыми согласно сценарию S в языке XML. Если аргумент опущен, то по умолчанию в строку преобразуется узел контекста, иными словами, в качестве аргумента берется строковое значение текущего узла контекста. Функция: string translate(string, string, string) Функция translate возвращает строку первого аргумента, в которой символы, указанные в строке второго аргумента, заменены символами строки третьего аргумента в соответствующей позиции. Например, Замена: Функция translate не может обеспечить преобразование регистра для всех языков. Для преобразования регистра в будущих версии XPath могут появиться дополнительные функции. 4.3 Функции обработки булевых значенийФункция: boolean boolean(object) Функция boolean преобразует аргумент в булево значение следующим образом:
Функция not возвращает true тогда и только тогда, когда ее аргументом является false, и false в противном случае. Функция true возвращает true. Функция false возвращает false. Функция lang возвращает true или false в зависимости от того, является ли язык узла контекста, указываемый в атрибутах <para xml:lang="en"/> <div xml:lang="en"><para/></div> <para xml:lang="EN"/> <para xml:lang="en-us"/> 4.4 Функции обработки чиселФункция: number number(object?) Функция number преобразует свой аргумент в число следующим образом:
Если аргумент отсутствует, то по умолчанию берется набор, содержащий только узел контекста. Замечание: Функция number не должна использоваться для преобразования числовых данных, встреченных в каком-либо элементе XML документа, если не известно, что элемент данного типа представляет числовые данные в независимом от языка формате (обычно перед показом пользователю такой элемент переводятся в формат, соответствующий языку). Кроме того, функция number не может использоваться, если независимый от языка формат элемента не соответствует синтаксису XPath для Number. Функция sum возвращает сумму всех узлов из набора, указанного в аргументе. Перед суммированием строковые значения узлов преобразуются в числа. Функция floor возвращает наибольшее число (ближайшее к положительной бесконечности), которое не превышает значение представленного аргумента и является целым. Функция: number ceiling(number) Функция ceiling возвращает наименьшее число (ближайшее в отрицательной бесконечности), которое не меньше значения представленного аргумента и является целым. Функция round возвращает целое число, ближайшее к значению аргумента. Если таких чисел два, то возвращается то из них, которое ближе к положительной бесконечности. Если аргументом является NaN, функция возвращает NaN. Если аргументом является положительная бесконечность, возвращается положительная бесконечность. Если аргументом является отрицательная бесконечность, возвращается отрицательная бесконечность. Если аргументом является положительный нуль, функция возвращает положительный нуль. Если аргументом является отрицательный нуль, функция возвращает отрицательный нуль. Если аргумент меньше нуля, но больше или равен -0.5, возвращается отрицательный нуль. Замечание: В последних двух случаях вызов функции round имеет иной результат, чем добавление 0.5 и последующий вызов функции floor. Назад | Содержание | Вперед
|
|
CITForum © 1997–2025