Funciones XSLT, XPath y XQuery
- Página anterior Elementos XSLT
- Página siguiente Tutoriales XML
XSLT 2.0, XPath 2.0 y XQuery 1.0 comparten la misma biblioteca de funciones.
Manual de referencias 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
Consejo:Generalmente se usa fn:
usar prefijos para llamar a funciones, por ejemplo fn:string()
Sin embargo, debido a fn:
Es el prefijo predeterminado del espacio de nombres, por lo tanto, al llamar a la función no se necesita agregar el prefijo.
Funciones de acceso
Nombre | Descripción |
---|---|
fn:node-name(node) | Devuelve el nombre del nodo del nodo del parámetro. |
fn:nilled(node) | Devuelve un valor booleano que indica si se rechaza el nodo del parámetro. |
fn:data(item.item,...) | Acepta una secuencia de elementos y devuelve una secuencia de valores atómicos. |
|
Devuelve el valor de la propiedad base-uri del nodo actual o del nodo especificado. |
fn:document-uri(node) | Devuelve el valor de la propiedad document-uri del nodo especificado. |
Funciones de error y seguimiento
Nombre | Descripción |
---|---|
|
Ejemplo: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: El precio es demasiado alto') Resultado: devuelve al entorno de procesamiento externo http://example.com/test#toohigh y la cadena "Error: El precio es demasiado alto". |
fn:trace(value,label) | Usado para debug de consultas. |
Funciones relacionadas con números
Nombre | Descripción |
---|---|
fn:number(arg) |
Devuelve el valor numérico del parámetro. El parámetro 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 parámetro num. Ejemplo: ceiling(3.14) Resultado: 4 |
fn:floor(num) |
Devuelve el entero más grande no mayor que el parámetro num. Ejemplo: floor(3.14) Resultado: 3 |
fn:round(num) |
Redondea el parámetro num a su 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 de cadena
Nombre | Descripción |
---|---|
fn:string(arg) |
Devuelve el valor de cadena del argumento. Los argumentos pueden ser números, valores lógicos o conjuntos de nodos. Ejemplo: string(314) Resultado: "314" |
fn:codepoints-to-string(int,int,...) |
Devuelve una cadena de acuerdo con la 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 de acuerdo con la cadena. Ejemplo: string-to-codepoints("Thérèse") Resultado: 84, 104, 233, 114, 232, 115, 101 |
fn:codepoint-equal(comp1,comp2) | De acuerdo con la correspondencia de los puntos de código Unicode, si el valor de comp1 es igual al valor de comp2, devuelve true. (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. (De acuerdo con las reglas de correspondencia 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) |
Usa el parámetro sep como separador para devolver la cadena concatenada de los parámetros 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 especificada de longitud determinada comenzando en la posición start. El índice del primer carácter es 1. Si se omite el parámetro len, se 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 se proporciona el parámetro 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, y reemplaza todas las secuencias de espacios en blanco internos con uno, luego devuelve el resultado. Si no se proporciona el parámetro string, se procesa el nodo actual. Ejemplo: normalize-space(' The XML ') Resultado: 'The XML' |
fn:normalize-unicode() | Ejecuta la normalización Unicode. |
fn:upper-case(string) |
Convierte el parámetro string a mayúsculas. Ejemplo: upper-case('The XML') Resultado: 'THE XML' |
fn:lower-case(string) |
Convierte el parámetro string a minúsculas. Ejemplo: lower-case('The XML') Resultado: 'the xml' |
fn:translate(string1,string2,string3) |
Reemplaza string2 en string1 con 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%23car" 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 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 que precede a la aparición de string2 en string1. Ejemplo: substring-before('12/10','/') Resultado: '12' |
fn:substring-after(string1,string2) |
Devuelve la subcadena que aparece después 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 es fun", "\s+") Resultado: ("XPath", "es", "fun") |
Funciones relacionadas con anyURI.
Nombre | Descripción |
---|---|
fn:resolve-uri(relative,base) |
Funciones relacionadas con los valores booleanos.
Nombre | Descripción |
---|---|
fn:boolean(arg) | Devuelve el valor booleano de un número, una cadena o un conjunto de nodos. |
fn:not(arg) |
Primero, restaura el parámetro a un valor booleano mediante la función boolean(). Si el valor booleano es false, devuelve true; de lo contrario, devuelve true. 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 relacionadas con la duración, la fecha y la hora.
Función de extracción de componentes de fecha, hora y duración.
Nombre | Descripción |
---|---|
fn:dateTime(date,time) | Convierte el parámetro en una fecha y hora. |
fn:years-from-duration(datetimedur) | Devuelve el valor entero de la parte del año del parámetro, representado en notación de vocabulario estándar. |
fn:months-from-duration(datetimedur) | Devuelve el valor entero de la parte del mes del parámetro, representado en notación de vocabulario estándar. |
fn:days-from-duration(datetimedur) | Devuelve el número entero de días del valor del parámetro, representado en notación léxica estándar. |
fn:hours-from-duration(datetimedur) | Devuelve el número entero de horas del valor del parámetro, representado en notación léxica estándar. |
fn:minutes-from-duration(datetimedur) | Devuelve el número entero de minutos del valor del parámetro, representado en notación léxica estándar. |
fn:seconds-from-duration(datetimedur) | Devuelve el número decimal de minutos del valor del parámetro, representado en notación léxica estándar. |
fn:year-from-dateTime(datetime) |
Devuelve el número entero de años de la parte local del parámetro. Ejemplo: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 2005 |
fn:month-from-dateTime(datetime) |
Devuelve el número entero de meses de la parte local del parámetro. Ejemplo: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 01 |
fn:day-from-dateTime(datetime) |
Devuelve el número entero de días de la parte local del parámetro. Ejemplo: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 10 |
fn:hours-from-dateTime(datetime) |
Devuelve el número entero de horas de la parte local del parámetro. Ejemplo: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 12 |
fn:minutes-from-dateTime(datetime) |
Devuelve el número entero de minutos de la parte local del parámetro. Ejemplo: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Resultado: 30 |
fn:seconds-from-dateTime(datetime) |
Devuelve el número decimal de segundos de la parte local del parámetro. Ejemplo: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10")) Resultado: 0 |
fn:timezone-from-dateTime(datetime) | Se devuelve la parte de la zona horaria del parámetro, si existe. |
fn:year-from-date(date) |
Se devuelve el entero que representa la parte de años del valor local del parámetro. Ejemplo: year-from-date(xs:date("2005-04-23")) Resultado: 2005 |
fn:month-from-date(date) |
Se devuelve el entero que representa la parte de meses del valor local del parámetro. Ejemplo: month-from-date(xs:date("2005-04-23")) Resultado: 4 |
fn:day-from-date(date) |
Se devuelve el entero que representa la parte de días del valor local del parámetro. Ejemplo: day-from-date(xs:date("2005-04-23")) Resultado: 23 |
fn:timezone-from-date(date) | Se devuelve la parte de la zona horaria del parámetro, si existe. |
fn:hours-from-time(time) |
Se devuelve el entero que representa la parte de horas del valor local del parámetro. Ejemplo: hours-from-time(xs:time("10:22:00")) Resultado: 10 |
fn:minutes-from-time(time) |
Se devuelve el entero que representa la parte de minutos del valor local del parámetro. Ejemplo: minutes-from-time(xs:time("10:22:00")) Resultado: 22 |
fn:seconds-from-time(time) |
Se devuelve el entero que representa la parte de segundos del valor local del parámetro. Ejemplo: seconds-from-time(xs:time("10:22:00")) Resultado: 0 |
fn:timezone-from-time(time) | Se devuelve la parte de la zona horaria del parámetro, si existe. |
fn:adjust-dateTime-to-timezone(datetime,timezone) |
Si el parámetro timezone está vacío, se devuelve el dateTime sin zona horaria. En caso contrario, se devuelve el dateTime con la zona horaria. |
fn:adjust-date-to-timezone(date,timezone) |
Si el parámetro timezone está vacío, se devuelve la date sin zona horaria. En caso contrario, se devuelve la date con la zona horaria. |
fn:adjust-time-to-timezone(time,timezone) |
Si el parámetro timezone está vacío, se devuelve el time sin zona horaria. De lo contrario, devuelve el tiempo con la 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 de nodo
Nombre | Descripción |
---|---|
|
Devuelve el nombre del nodo actual o el primer nodo del conjunto de nodos especificado. |
|
Devuelve el nombre del nodo actual o el primer nodo del conjunto de nodos especificado - sin prefijo de 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. Generalmente es el nodo de documento. |
Funciones de secuencia
Función general
Nombre | Descripción |
---|---|
fn:index-of((item,item,...),searchitem) |
Devuelve la posición del elemento en la secuencia de elementos que es igual al parámetro searchitem. Ejemplo: index-of ((15, 40, 25, 40, 10), 40) Resultado: (2, 4) Ejemplo: index-of (("a", "dog", "and", "a", "duck"), "a") Resultado (1, 4) Ejemplo: index-of ((15, 40, 25, 40, 10), 18) Resultado: () |
fn:remove((item,item,...),position) |
Devuelve una nueva secuencia construida por el parámetro item - eliminando el elemento especificado por el parámetro 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,...) |
Devuelve true si el valor del parámetro es una secuencia vacía, de lo contrario devuelve false. Ejemplo: empty(remove(("ab", "cd"), 1)) Resultado: false |
fn:exists(item,item,...) |
Devuelve true si el valor del parámetro no es una secuencia vacía, de lo contrario devuelve false. Ejemplo: exists(remove(("ab"), 1)) Resultado: false |
fn:distinct-values((item,item,...),collation) |
Devuelve los valores únicos. Ejemplo: distinct-values((1, 2, 3, 1, 2)) Resultado: (1, 2, 3) |
fn:insert-before((item,item,...),pos,inserts) |
Devuelve una nueva secuencia construida por el parámetro item, insertando el valor 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 el orden inverso de los elementos especificados. 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 especificada por el parámetro start, con una 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 proyectos en el orden determinado por la implementación. |
Funciones de prueba de capacidad de secuencia
Nombre | Descripción |
---|---|
fn:zero-or-one(item,item,...) | Si los parámetros contienen cero o un proyecto, devuelve los parámetros, de lo contrario genera un error. |
fn:one-or-more(item,item,...) | Si los parámetros contienen uno o más proyectos, devuelve los parámetros, de lo contrario genera un error. |
fn:exactly-one(item,item,...) | Si los parámetros contienen un proyecto, devuelve los parámetros, de lo contrario genera un error. |
Igualdad, Unión, Intersección y Diferencia
Nombre | Descripción |
---|---|
fn:deep-equal(param1,param2,collation) | Devuelve true si param1 y param2 son iguales (deep-equal), de lo contrario devuelve false. |
Funciones de agregación
Nombre | Descripción |
---|---|
fn:count((elemento,elemento,...)) | Devuelve el número de nodos. |
fn:avg((arg,arg,...)) |
Devuelve el promedio de los valores de los parámetros. Ejemplo: avg((1,2,3)) Resultado: 2 |
fn:max((arg,arg,...)) |
Devuelve el parámetro que es mayor que otros parámetros. Ejemplo: max((1,2,3)) Resultado: 3 Ejemplo: max(('a', 'k')) Resultado: 'k' |
fn:min((arg,arg,...)) |
Devuelve el parámetro que es menor que otros parámetros. Ejemplo: min((1,2,3)) Resultado: 1 Ejemplo: min(('a', 'k')) Resultado: 'a' |
fn:sum(arg,arg,...) | Devuelve la suma de los valores numéricos de cada nodo en el conjunto de nodos especificado. |
Funciones que generan secuencias
Nombre | Descripción |
---|---|
fn:id((cadena,cadena,...),nodo) | Devuelve una secuencia de nodos de elementos, cuyos valores de ID son iguales a uno o varios valores especificados en el parámetro de cadena. |
fn:idref((cadena,cadena,...),nodo) | Devuelve una secuencia de nodos de elementos o atributos, cuyos valores de IDREF son iguales a uno o varios valores especificados en el parámetro de cadena. |
fn:doc(URI) | |
fn:doc-available(URI) | Si la función doc() devuelve un nodo de documento, devuelve true, de lo contrario devuelve false. |
|
Funciones de contexto
Nombre | Descripción |
---|---|
fn:position() |
Devuelve la posición del nodo actual que se está procesando. Ejemplo: //book[position()<=3] Resultado: seleccionar los tres primeros elementos book |
fn:last() |
Devuelve el número de elementos en la lista de nodos procesados. Ejemplo: //book[last()] Resultado: seleccionar el último elemento book |
fn:current-dateTime() | Devuelve el dateTime actual (con la zona horaria). |
fn:current-date() | Devuelve la fecha actual (con la zona horaria). |
fn:current-time() | Devuelve la hora actual (con la zona horaria). |
fn:implicit-timezone() | Devuelve el valor de la zona horaria implícita. |
fn:default-collation() | Devuelve el valor de la colación predeterminada. |
fn:static-base-uri() | Devuelve el valor de base-uri. |
Funciones XSLT
Además, hay las siguientes funciones integradas de XSLT:
Nombre | Descripción |
---|---|
current() | Devuelve un conjunto de nodos que contiene como único miembro al nodo actual. |
document() | Usado para acceder a nodos en documentos XML externos. |
element-available() | Detecta si el procesador XSLT admite el elemento especificado. |
format-number() | Convierte el número en una cadena. |
function-available() | Detecta si el procesador XSLT admite la función especificada. |
generate-id() | Devuelve el valor de la cadena que identifica de manera única al nodo especificado. |
key() | Recupera los elementos marcados anteriormente con la declaración <xsl:key>. |
node-set | Convierte el árbol en un conjunto de nodos. El conjunto de nodos producido siempre contiene un solo nodo y es el nodo raíz del árbol. |
system-property() | Devuelve el valor de la propiedad del sistema. |
unparsed-entity-uri() | Volver a la URI del ente no procesado. |
- Página anterior Elementos XSLT
- Página siguiente Tutoriales XML