Funciones de XPath, XQuery y XSLT

funciones de acceso

Nombre Descripción
fn:node-name(node) devuelve el nombre 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.
  • fn:base-uri()
  • fn:base-uri(node)
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
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

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 numéricas

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 parámetro.

ejemplo: abs(3.14)

resultado: 3.14

ejemplo: abs(-3.14)

resultado: 3.14

fn:techo(num)

devuelve el entero más pequeño mayor que el parámetro num.

ejemplo: techo(3.14)

Resultado: 4

fn:floor(num)

Devuelve el entero máximo 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. 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(cadena)

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 comparación de 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.
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

Si comp1 es menor que comp2, devuelve -1. Si comp1 es igual que comp2, devuelve 0. Si comp1 es mayor que comp2, devuelve 1. (según el esquema de comparación utilizado).

Ejemplo: compare('ghi', 'ghi')

Resultado: 0

fn:concat(cadena,cadena,...)

Devuelve la concatenación de cadenas.

Ejemplo: concat('XPath ','es ','DIVERTIDO!')

Resultado: 'XPath es DIVERTIDO!'

fn:unir((cadena,cadena,...),sep)

Use the sep parameter as a separator to return the concatenated string of the string parameter.

example: string-join(('We', 'are', 'having', 'fun!'), ' ')

result: ' We are having fun! '

example: string-join(('We', 'are', 'having', 'fun!'))

result: 'Wearehavingfun!'

example: string-join((), 'sep')

result: ''

  • fn:substring(string,start,len)
  • fn:substring(string,start)

Return a substring of the specified length starting from the start position. The index of the first character is 1. If the len parameter is omitted, return the substring from position start to the end of the string.

example: substring('Beatles',1,4)

result: 'Beat'

example: substring('Beatles',2)

result: 'eatles'

  • fn:string-length(string)
  • fn:string-length()

Return the length of the specified string. If no string parameter is provided, return the length of the string value of the current node.

example: string-length('Beatles')

result: 7

  • fn:normalize-space(string)
  • fn:normalize-space()

Remove the leading and trailing spaces of the specified string, replace all internal white space sequences with one, and then return the result. If no string parameter is provided, the current node is processed.

example: normalize-space(' The   XML ')

result: 'The XML'

fn:normalize-unicode() Execute Unicode normalization.
fn:upper-case(string)

Convert the string parameter to uppercase.

example: upper-case('The XML')

result: 'THE XML'

fn:lower-case(string)

Convert the string parameter to lowercase.

example: lower-case('The XML')

result: '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#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 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 comienza después de 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 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, restablece el parámetro a un valor booleano utilizando 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 del año del parámetro, representado en notación de vocabulario estándar.
fn:months-from-duration(datetimedur) Devuelve el valor entero del mes del parámetro, representado en notación de vocabulario estándar.
fn:days-from-duration(datetimedur) Devuelve el valor entero del día del parámetro, representado en notación de vocabulario estándar.
fn:hours-from-duration(datetimedur) Devuelve el valor entero de la parte de horas del valor, representado en notación léxica estándar.
fn:minutes-from-duration(datetimedur) Devuelve el valor entero de la parte de minutos del valor, representado en notación léxica estándar.
fn:seconds-from-duration(datetimedur) Devuelve el valor decimal de la parte de minutos del valor, representado en notación léxica estándar.
fn:year-from-dateTime(datetime)

Devuelve el valor entero de la parte de años del valor local de la entrada.

Ejemplo: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Resultado: 2005

fn:month-from-dateTime(datetime)

Devuelve el valor entero de la parte de meses del valor local de la entrada.

Ejemplo: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Resultado: 01

fn:day-from-dateTime(datetime)

Devuelve el valor entero de la parte de días del valor local de la entrada.

Ejemplo: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Resultado: 10

fn:hours-from-dateTime(datetime)

Devuelve el valor entero de la parte de horas del valor local de la entrada.

Ejemplo: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Resultado: 12

fn:minutes-from-dateTime(datetime)

Devuelve el valor entero de la parte de minutos del valor local de la entrada.

Ejemplo: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Resultado: 30

fn:seconds-from-dateTime(datetime)

Devuelve el valor decimal de la parte de segundos del valor local de la entrada.

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 parámetro, si existe.
fn:year-from-date(date)

Devuelve el valor local de la entrada como entero que representa el año.

Ejemplo: year-from-date(xs:date("2005-04-23"))

Resultado: 2005

fn:month-from-date(date)

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)

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) Devuelve la parte de la zona horaria del parámetro, si existe.
fn:hours-from-time(time)

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)

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)

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) 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, devuelve dateTime sin zona horaria. De lo contrario, devuelve dateTime con zona horaria.
fn:adjust-date-to-timezone(date,timezone) Si el parámetro timezone está vacío, devuelve date sin zona horaria. De lo contrario, devuelve date con zona horaria.
fn:adjust-time-to-timezone(time,timezone) Si el parámetro timezone está vacío, devuelve time sin zona horaria. De lo contrario, devuelve 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 relacionadas con los nodos

Nombre Descripción
  • fn:name()
  • fn:name(nodeset)
Devuelve el nombre del nodo actual o del primer nodo del conjunto de nodos especificado.
  • fn:local-name()
  • fn:local-name(nodeset)
Devuelve el nombre del nodo actual o del primer nodo del conjunto de nodos especificado sin prefijo de espacio de nombres.
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
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>

  • fn:root()
  • fn:root(node)
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 relacionadas con las secuencias

Función general

Nombre Descripción
fn:index-of((item,item,...),searchitem)

Devuelve la posición en la secuencia de elementos donde el elemento 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 al mismo tiempo 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,...)

Si el valor del parámetro es una secuencia vacía, devuelve true, 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 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 una secuencia de elementos desde la posición 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 elementos en el orden determinado por la implementación.

función 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.

Igual, Unión, Intersección y Diferencia

Nombre Descripción
fn:deep-equal(param1,param2,collation) Si param1 y param2 son iguales entre sí (deep-equal), devuelve true, de lo contrario devuelve false.

Función de totalizació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 argumentos.

Ejemplo: avg((1,2,3))

Resultado: 2

fn:max((arg,arg,...))

Devuelve el argumento que es mayor que otros 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 otros argumentos.

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.

Función generadora de secuencia

Nombre Descripción
fn:id((cadena,cadena,...),nodo) Devuelve una secuencia de nodos de elemento que tienen un valor ID igual al valor de uno o más de los valores especificados en el argumento de cadena
fn:idref((cadena,cadena,...),nodo) Devuelve una secuencia de nodos de elemento o atributo que tienen un valor IDREF igual al valor de uno o más de los valores especificados en el argumento 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.
  • fn:collection()
  • fn:collection(string)
 

Funciones de contexto

Nombre Descripción
fn:position()

Devuelve la posición del nodo actual que se está procesando.

Ejemplo: //book[position()<=3]

Resultados: Selecciona los tres primeros elementos book

fn:last()

Devuelve el número de elementos en la lista de nodos procesados.

Ejemplo: //book[last()]

Resultados: Selecciona 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.