XPath, XQuery y XSLTFuncionesManual de referencia de funciones
El siguiente manual de referencia define las funciones en XPath 2.0, XQuery 1.0 y XSLT 2.0.
Manual de referencia de funciones
El prefijo predeterminado del espacio de nombres de funciones es fn:
El URI del espacio de nombres de funciones es: http://www.w3.org/2005/xpath-functions
Funciones de acceso
| Nombre | Descripción |
|---|---|
| fn:node-name(node) | Devuelve el nombre del nodo del argumento de nodo. |
| fn:nilled(node) | Devuelve un valor booleano que indica si rechaza el nodo del argumento. |
| fn:data(item.item,...) | Acepta una secuencia de elementos y devuelve una secuencia de valores atómicos. |
|
Devuelve el valor del atributo base-uri del nodo actual o del nodo especificado. |
| fn:document-uri(node) | Devuelve el valor del atributo document-uri del nodo especificado. |
Funciones de errores y seguimiento
| Nombre | Descripción |
|---|---|
|
Ejemplo: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high') Resultado: Devuelve http://example.com/test#toohigh y la cadena "Error: Price is too high" al entorno de procesamiento externo. |
| fn:trace(value,label) | Se utiliza para depurar consultas. |
Funciones relativas a valores numéricos
| Nombre | Descripción |
|---|---|
| fn:number(arg) |
Devuelve el valor numérico del argumento. El argumento puede ser un valor booleano, una cadena o un conjunto de nodos. Ejemplo: number('100') Resultado: 100 |
| fn:abs(num) |
Devuelve el valor absoluto del argumento. Ejemplo: abs(3.14) Resultado: 3.14 Ejemplo: abs(-3.14) Resultado: 3.14 |
| fn:ceiling(num) |
Devuelve el entero más pequeño mayor que el argumento num. Ejemplo: ceiling(3.14) Resultado: 4 |
| fn:floor(num) |
Devuelve el entero más grande no mayor que el argumento num. Ejemplo: floor(3.14) Resultado: 3 |
| fn:round(num) |
Redondea el argumento num al entero más cercano. Ejemplo: round(3.14) Resultado: 3 |
| fn:round-half-to-even() |
Ejemplo: round-half-to-even(0.5) Resultado: 0 Ejemplo: round-half-to-even(1.5) Resultado: 2 Ejemplo: round-half-to-even(2.5) Resultado: 2 |
Funciones relativas a cadenas
| Nombre | Descripción |
|---|---|
| fn:string(arg) |
Devuelve el valor de cadena del argumento. El argumento puede ser un número, un valor lógico o un conjunto de nodos. Ejemplo: string(314) Resultado: "314" |
| fn:codepoints-to-string(int,int,...) |
Devuelve una cadena a partir de una secuencia de puntos de código. Ejemplo: codepoints-to-string(84, 104, 233, 114, 232, 115, 101) Resultado: 'Thérèse' |
| fn:string-to-codepoints(string) |
Devuelve una secuencia de puntos de código a partir de una cadena. Ejemplo: string-to-codepoints("Thérèse") Resultado: 84, 104, 233, 114, 232, 115, 101 |
| fn:codepoint-equal(comp1,comp2) | Según la intercalación de puntos de código Unicode, devuelve true si el valor de comp1 es igual al valor de comp2 (http://www.w3.org/2005/02/xpath-functions/collation/codepoint); de lo contrario, devuelve false. |
|
Si comp1 es menor que comp2, devuelve -1. Si comp1 es igual a comp2, devuelve 0. Si comp1 es mayor que comp2, devuelve 1. (Según las reglas de intercalación utilizadas). Ejemplo: compare('ghi', 'ghi') Resultado: 0 |
| fn:concat(string,string,...) |
Devuelve la concatenación de cadenas. Ejemplo: concat('XPath ','is ','FUN!') Resultado: 'XPath is FUN!' |
| fn:string-join((string,string,...),sep) |
Usando el argumento sep como separador, devuelve la cadena concatenada de los argumentos string. Ejemplo: string-join(('We', 'are', 'having', 'fun!'), ' ') Resultado: ' We are having fun! ' Ejemplo: string-join(('We', 'are', 'having', 'fun!')) Resultado: 'Wearehavingfun!' Ejemplo: string-join((), 'sep') Resultado: '' |
|
Devuelve la subcadena de la longitud especificada que comienza en la posición start. El índice del primer carácter es 1. Si se omite el argumento len, devuelve la subcadena desde la posición start hasta el final de la cadena. Ejemplo: substring('Beatles',1,4) Resultado: 'Beat' Ejemplo: substring('Beatles',2) Resultado: 'eatles' |
|
Devuelve la longitud de la cadena especificada. Si no hay argumento string, devuelve la longitud del valor de cadena del nodo actual. Ejemplo: string-length('Beatles') Resultado: 7 |
|
Elimina los espacios en blanco al principio y al final de la cadena especificada, reemplaza todas las secuencias de espacios en blanco internas por una sola y devuelve el resultado. Si no hay argumento string, procesa el nodo actual. Ejemplo: normalize-space(' The XML ') Resultado: 'The XML' |
| fn:normalize-unicode() | Realiza la normalización Unicode. |
| fn:upper-case(string) |
Convierte el argumento string a mayúsculas. Ejemplo: upper-case('The XML') Resultado: 'THE XML' |
| fn:lower-case(string) |
Convierte el argumento string a minúsculas. Ejemplo: lower-case('The XML') Resultado: 'the xml' |
| fn:translate(string1,string2,string3) |
Reemplaza string2 en string1 por string3. Ejemplo: translate('12:30','30','45') Resultado: '12:45' Ejemplo: translate('12:30','03','54') Resultado: '12:45' Ejemplo: translate('12:30','0123','abcd') Resultado: 'bc:da' |
| fn:escape-uri(stringURI,esc-res) |
Ejemplo: escape-uri("http://example.com/test#car", true()) Resultado: "http%3A%2F%2Fexample.com%2Ftest#car" Ejemplo: escape-uri("http://example.com/test#car", false()) Resultado: "http://example.com/test#car" Ejemplo: escape-uri("http://example.com/~bébé", false()) Resultado: "http://example.com/~b%C3%A9b%C3%A9" |
| fn:contains(string1,string2) |
Si string1 contiene a string2, devuelve true; de lo contrario, devuelve false. Ejemplo: contains('XML','XM') Resultado: true |
| fn:starts-with(string1,string2) |
Si string1 comienza con string2, devuelve true; de lo contrario, devuelve false. Ejemplo: starts-with('XML','X') Resultado: true |
| fn:ends-with(string1,string2) |
Si string1 termina con string2, devuelve true, de lo contrario devuelve false. Ejemplo: ends-with('XML','X') Resultado: false |
| fn:substring-before(string1,string2) |
Devuelve la subcadena anterior a la aparición de string2 en string1. Ejemplo: substring-before('12/10','/') Resultado: '12' |
| fn:substring-after(string1,string2) |
Devuelve la subcadena posterior a la aparición de string2 en string1. Ejemplo: substring-after('12/10','/') Resultado: '10' |
| fn:matches(string,pattern) |
Si el parámetro string coincide con el patrón especificado, devuelve true, de lo contrario devuelve false. Ejemplo: matches("Merano", "ran") Resultado: true |
| fn:replace(string,pattern,replace) |
Reemplaza el patrón especificado con el parámetro replace y devuelve el resultado. Ejemplo: replace("Bella Italia", "l", "*") Resultado: 'Be**a Ita*ia' Ejemplo: replace("Bella Italia", "l", "") Resultado: 'Bea Itaia' |
| fn:tokenize(string,pattern) |
Ejemplo: tokenize("XPath is fun", "\s+") Resultado: ("XPath", "is", "fun") |
Funciones para anyURI
| Nombre | Descripción |
|---|---|
| fn:resolve-uri(relative,base) |
Funciones sobre valores booleanos
| Nombre | Descripción |
|---|---|
| fn:boolean(arg) | Devuelve el valor booleano de un número, cadena o conjunto de nodos. |
| fn:not(arg) |
Primero reduce el argumento a un valor booleano mediante la función boolean(). Si el valor booleano es false, devuelve true; si es true, devuelve false. Ejemplo: not(true()) Resultado: false |
| fn:true() |
Devuelve el valor booleano true. Ejemplo: true() Resultado: true |
| fn:false() |
Devuelve el valor booleano false. Ejemplo: false() Resultado: false |
Funciones sobre duración, fecha y hora
Funciones de extracción de componentes de fecha, hora y duración
| Nombre | Descripción |
|---|---|
| fn:dateTime(date,time) | Convierte el argumento en fecha y hora. |
| fn:years-from-duration(datetimedur) | Devuelve un entero que representa la parte del año del valor del argumento, expresado en notación léxica estándar. |
| fn:months-from-duration(datetimedur) | Devuelve un entero que representa la parte del mes del valor del argumento, expresado en notación léxica estándar. |
| fn:days-from-duration(datetimedur) | Devuelve un entero que representa la parte del día del valor del argumento, expresado en notación léxica estándar. |
| fn:hours-from-duration(datetimedur) | Devuelve un entero que representa la parte de la hora del valor del argumento, expresado en notación léxica estándar. |
| fn:minutes-from-duration(datetimedur) | Devuelve un entero que representa la parte de los minutos del valor del argumento, expresado en notación léxica estándar. |
| fn:seconds-from-duration(datetimedur) | Devuelve un número decimal que representa la parte de los minutos del valor del argumento, expresado en notación léxica estándar. |
| fn:year-from-dateTime(datetime) |
Devuelve un entero que representa la parte del año del valor local del argumento. Ejemplo: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 2005 |
| fn:month-from-dateTime(datetime) |
Devuelve un entero que representa la parte del mes del valor local del argumento. Ejemplo: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 01 |
| fn:day-from-dateTime(datetime) |
Devuelve un entero que representa la parte del día del valor local del argumento. Ejemplo: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 10 |
| fn:hours-from-dateTime(datetime) |
Devuelve un entero que representa la parte de la hora del valor local del argumento. Ejemplo: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 12 |
| fn:minutes-from-dateTime(datetime) |
Devuelve un entero que representa la parte de los minutos del valor local del argumento. Ejemplo: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 30 |
| fn:seconds-from-dateTime(datetime) |
Devuelve un número decimal que representa la parte de los segundos del valor local del argumento. Ejemplo: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10")) Resultado: 0 |
| fn:timezone-from-dateTime(datetime) | Devuelve la parte de la zona horaria del argumento, si existe. |
| fn:year-from-date(date) |
Devuelve un entero que representa el año del valor local del argumento. Ejemplo: year-from-date(xs:date("2005-04-23")) Resultado: 2005 |
| fn:month-from-date(date) |
Devuelve un entero que representa el mes del valor local del argumento. Ejemplo: month-from-date(xs:date("2005-04-23")) Resultado: 4 |
| fn:day-from-date(date) |
Devuelve un entero que representa el día del valor local del argumento. Ejemplo: day-from-date(xs:date("2005-04-23")) Resultado: 23 |
| fn:timezone-from-date(date) | Devuelve la parte de la zona horaria del argumento, si existe. |
| fn:hours-from-time(time) |
Devuelve un entero que representa la parte de la hora del valor local del argumento. Ejemplo: hours-from-time(xs:time("10:22:00")) Resultado: 10 |
| fn:minutes-from-time(time) |
Devuelve un entero que representa la parte de los minutos del valor local del argumento. Ejemplo: minutes-from-time(xs:time("10:22:00")) Resultado: 22 |
| fn:seconds-from-time(time) |
Devuelve un entero que representa la parte de los segundos del valor local del argumento. Ejemplo: seconds-from-time(xs:time("10:22:00")) Resultado: 0 |
| fn:timezone-from-time(time) | Devuelve la parte de la zona horaria del argumento, si existe. |
| fn:adjust-dateTime-to-timezone(datetime,timezone) | Si el argumento timezone está vacío, devuelve un dateTime sin zona horaria. De lo contrario, devuelve un dateTime con zona horaria. |
| fn:adjust-date-to-timezone(date,timezone) | Si el argumento timezone está vacío, devuelve un date sin zona horaria. De lo contrario, devuelve un date con zona horaria. |
| fn:adjust-time-to-timezone(time,timezone) | Si el argumento timezone está vacío, devuelve un time sin zona horaria. De lo contrario, devuelve un time con zona horaria. |
Funciones relacionadas con QNames
| Nombre | Descripción |
|---|---|
| fn:QName() | |
| fn:local-name-from-QName() | |
| fn:namespace-uri-from-QName() | |
| fn:namespace-uri-for-prefix() | |
| fn:in-scope-prefixes() | |
| fn:resolve-QName() |
Funciones sobre nodos
| Nombre | Descripción |
|---|---|
|
Devuelve el nombre del nodo actual o del primer nodo del conjunto de nodos especificado. |
|
Devuelve el nombre del nodo actual o del primer nodo del conjunto de nodos especificado, sin el prefijo del espacio de nombres. |
|
Devuelve el URI del espacio de nombres del nodo actual o del primer nodo del conjunto de nodos especificado. |
| fn:lang(lang) |
Devuelve true si el idioma del nodo actual coincide con el idioma especificado. Ejemplo: Lang("en") es true para <p xml:lang="en">...</p> Ejemplo: Lang("de") es false para <p xml:lang="en">...</p> |
|
Devuelve el nodo raíz del árbol de nodos al que pertenece el nodo actual o el nodo especificado. Normalmente es el nodo de documento. |
Funciones sobre secuencias
Funciones generales
| Nombre | Descripción |
|---|---|
| fn:index-of((item,item,...),searchitem) |
Devuelve las posiciones en la secuencia de elementos que son iguales al argumento searchitem. Ejemplo: index-of ((15, 40, 25, 40, 10), 40) Resultado: (2, 4) Ejemplo: index-of (("a", "dog", "and", "a", "duck"), "a") Result (1, 4) Ejemplo: index-of ((15, 40, 25, 40, 10), 18) Resultado: () |
| fn:remove((item,item,...),position) |
Devuelve una nueva secuencia construida a partir del argumento item, eliminando el elemento especificado por el argumento position. Ejemplo: remove(("ab", "cd", "ef"), 0) Resultado: ("ab", "cd", "ef") Ejemplo: remove(("ab", "cd", "ef"), 1) Resultado: ("cd", "ef") Ejemplo: remove(("ab", "cd", "ef"), 4) Resultado: ("ab", "cd", "ef") |
| fn:empty(item,item,...) |
Si el valor del argumento es una secuencia vacía, devuelve true; de lo contrario, devuelve false. Ejemplo: empty(remove(("ab", "cd"), 1)) Resultado: false |
| fn:exists(item,item,...) |
Si el valor del argumento no es una secuencia vacía, devuelve true; de lo contrario, devuelve false. Ejemplo: exists(remove(("ab"), 1)) Resultado: false |
| fn:distinct-values((item,item,...),collation) |
Devuelve los valores distintos. Ejemplo: distinct-values((1, 2, 3, 1, 2)) Resultado: (1, 2, 3) |
| fn:insert-before((item,item,...),pos,inserts) |
Devuelve una nueva secuencia construida a partir del parámetro item - e inserta los valores del parámetro inserts en la posición especificada por el parámetro pos. Ejemplo: insert-before(("ab", "cd"), 0, "gh") Resultado: ("gh", "ab", "cd") Ejemplo: insert-before(("ab", "cd"), 1, "gh") Resultado: ("gh", "ab", "cd") Ejemplo: insert-before(("ab", "cd"), 2, "gh") Resultado: ("ab", "gh", "cd") Ejemplo: insert-before(("ab", "cd"), 5, "gh") Resultado: ("ab", "cd", "gh") |
| fn:reverse((item,item,...)) |
Devuelve los elementos en orden inverso. Ejemplo: reverse(("ab", "cd", "ef")) Resultado: ("ef", "cd", "ab") Ejemplo: reverse(("ab")) Resultado: ("ab") |
| fn:subsequence((item,item,...),start,len) |
Devuelve la secuencia de elementos a partir de la posición especificada por el parámetro start, con la longitud especificada por el parámetro len. La posición del primer elemento es 1. Ejemplo: subsequence(($item1, $item2, $item3,...), 3) Resultado: ($item3, ...) Ejemplo: subsequence(($item1, $item2, $item3, ...), 2, 2) Resultado: ($item2, $item3) |
| fn:unordered((item,item,...)) | Devuelve los elementos en un orden dependiente de la implementación. |
Funciones para probar la capacidad de secuencias
| Nombre | Descripción |
|---|---|
| fn:zero-or-one(item,item,...) | Si el argumento contiene cero o un elemento, devuelve el argumento; de lo contrario, genera un error. |
| fn:one-or-more(item,item,...) | Si el argumento contiene uno o más elementos, devuelve el argumento; de lo contrario, genera un error. |
| fn:exactly-one(item,item,...) | Si el argumento contiene un elemento, devuelve el argumento; de lo contrario, genera un error. |
Equals, Union, Intersection and Except
| Nombre | Descripción |
|---|---|
| fn:deep-equal(param1,param2,collation) | Devuelve true si param1 y param2 son iguales entre sí (deep-equal); de lo contrario, devuelve false. |
Funciones agregadas
| Nombre | Descripción |
|---|---|
| fn:count((item,item,...)) | Devuelve el número de nodos. |
| fn:avg((arg,arg,...)) | Devuelve el promedio de los valores del argumento. Ejemplo: avg((1,2,3)) Resultado: 2 |
| fn:max((arg,arg,...)) | Devuelve el argumento que es mayor que los demás argumentos. Ejemplo: max((1,2,3)) Resultado: 3 Ejemplo: max(('a', 'k')) Resultado: 'k' |
| fn:min((arg,arg,...)) | Devuelve el argumento que es menor que los demás argumentos. Ejemplo: min((1,2,3)) Resultado: 1 Ejemplo: min(('a', 'k')) Resultado: 'a' |
| fn:sum(arg,arg,...) | Devuelve la suma de los valores de cada nodo en el conjunto de nodos especificado. |
Funciones para generar secuencias
| Nombre | Descripción |
|---|---|
| fn:id((string,string,...),node) | Returns a sequence of element nodes that have an ID value equal to the value of one or more of the values specified in the string argument |
| fn:idref((string,string,...),node) | Returns a sequence of element or attribute nodes that have an IDREF value equal to the value of one or more of the values specified in the string argument |
| fn:doc(URI) | |
| fn:doc-available(URI) | Devuelve true si la función doc() devuelve un nodo de documento; de lo contrario, devuelve false. |
|
Funciones de contexto
| Nombre | Descripción |
|---|---|
| fn:position() |
Devuelve la posición de índice del nodo que se está procesando actualmente. Ejemplo: //book[position()<=3] Resultado: selecciona los primeros tres elementos book |
| fn:last() |
Devuelve el número de elementos en la lista de nodos que se está procesando. Ejemplo: //book[last()] Resultado: selecciona el último elemento book |
| fn:current-dateTime() | Devuelve el dateTime actual (con zona horaria). |
| fn:current-date() | Devuelve la fecha actual (con zona horaria). |
| fn:current-time() | Devuelve la hora actual (con zona horaria). |
| fn:implicit-timezone() | Devuelve el valor de la zona horaria implícita. |
| fn:default-collation() | Devuelve el valor de la collation predeterminada. |
| fn:static-base-uri() | Devuelve el valor de base-uri. |