Funções XPath, XQuery e XSLT

funções de acesso

Nome Descrição
fn:node-name(node) retorna o nome do nó do parâmetro.
fn:nilled(node) retorna um valor booleano indicando se o nó do parâmetro foi negado.
fn:data(item.item,...) aceita uma sequência de itens e retorna uma sequência de valores atômicos.
  • fn:base-uri()
  • fn:base-uri(node)
retorna o valor da propriedade base-uri do nó atual ou do nó especificado.
fn:document-uri(node) retorna o valor da propriedade document-uri do nó especificado.

funções de erro e rastreamento

Nome Descrição
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

exemplo: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Erro: O preço é muito alto')

resultado: retorna ao ambiente de processamento externo http://example.com/test#toohigh e a string "Erro: O preço é muito alto".

fn:trace(value,label) usado para debug de consultas.

funções de valor

Nome Descrição
fn:number(arg)

retorna o valor numérico do parâmetro. O parâmetro pode ser um valor booleano, uma string ou um conjunto de nós.

exemplo: number('100')

resultado: 100

fn:abs(num)

retorna o valor absoluto do parâmetro.

exemplo: abs(3,14)

resultado: 3,14

exemplo: abs(-3,14)

resultado: 3,14

fn:ceiling(num)

retorna o menor inteiro maior que o parâmetro num.

exemplo: ceiling(3,14)

Resultado: 4

fn:floor(num)

Retorna o maior inteiro não superior ao parâmetro num.

Exemplo: floor(3.14)

Resultado: 3

fn:round(num)

Arredonda o parâmetro num para o inteiro mais próximo.

Exemplo: round(3.14)

Resultado: 3

fn:round-half-to-even()

Exemplo: round-half-to-even(0.5)

Resultado: 0

Exemplo: round-half-to-even(1.5)

Resultado: 2

Exemplo: round-half-to-even(2.5)

Resultado: 2

Funções de string

Nome Descrição
fn:string(arg)

Retorna o valor de string do argumento. O argumento pode ser um número, valor lógico ou conjunto de nós.

Exemplo: string(314)

Resultado: "314"

fn:codepoints-to-string(int,int,...)

Retorna uma string com base na sequência de código-pontos.

Exemplo: codepoints-to-string(84, 104, 233, 114, 232, 115, 101)

Resultado: 'Thérèse'

fn:string-to-codepoints(string)

Retorna uma sequência de código-pontos com base na string.

Exemplo: string-to-codepoints("Thérèse")

Resultado: 84, 104, 233, 114, 232, 115, 101

fn:codepoint-equal(comp1,comp2) Segundo a comparação de código-ponto Unicode, se o valor de comp1 for igual ao valor de comp2, retorna true. (http://www.w3.org/2005/02/xpath-functions/collation/codepoint), caso contrário, retorna false.
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

Se comp1 for menor que comp2, retorna -1. Se comp1 for igual a comp2, retorna 0. Se comp1 for maior que comp2, retorna 1. (Conforme o conjunto de regras de comparação utilizado).

Exemplo: compare('ghi', 'ghi')

Resultado: 0

fn:concat(string,string,...)

Retorna a concatenação de strings.

Exemplo: concat('XPath ','é ','DIVERTIDO!')

Resultado: 'XPath é DIVERTIDO!'

fn:join((string,string,...),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 there is no string parameter, 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 there is no string parameter, then process the current node.

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)

Substitui string2 por string3 dentro de string1.

Exemplo: translate('12:30','30','45')

Resultado: '12:45'

Exemplo: translate('12:30','03','54')

Resultado: '12:45'

Exemplo: translate('12:30','0123','abcd')

Resultado: 'bc:da'

fn:escape-uri(stringURI,esc-res)

Exemplo: escape-uri("http://example.com/test#car", true())

Resultado: "http%3A%2F%2Fexample.com%2Ftest#car"

Exemplo: escape-uri("http://example.com/test#car", false())

Resultado: "http://example.com/test#car"

Exemplo: escape-uri ("http://example.com/~bébé", false())

Resultado: "http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2)

Se string1 contiver string2, retorna true, caso contrário, retorna false.

Exemplo: contains('XML','XM')

Resultado: true

fn:starts-with(string1,string2)

Se string1 começar com string2, retorna true, caso contrário, retorna false.

Exemplo: starts-with('XML','X')

Resultado: true

fn:ends-with(string1,string2)

Se string1 terminar com string2, retorna true, caso contrário, retorna false.

Exemplo: ends-with('XML','X')

resultado: false

fn:substring-before(string1,string2)

Retorna a substring que surge antes da ocorrência de string2 dentro de string1.

Exemplo: substring-before('12/10','/')

Resultado: '12'

fn:substring-after(string1,string2)

Retorna a substring que surge após a ocorrência de string2 dentro de string1.

Exemplo: substring-after('12/10','/')

Resultado: '10'

fn:matches(string,pattern)

Se o parâmetro string correspondente ao padrão especificado, retorna true; caso contrário, retorna false.

Exemplo: matches("Merano", "ran")

Resultado: true

fn:replace(string,pattern,replace)

Substitui o padrão especificado pelo parâmetro replace e retorna o resultado.

Exemplo: replace("Bella Italia", "l", "*")

Resultado: 'Be**a Ita*ia'

Exemplo: replace("Bella Italia", "l", "")

Resultado: 'Bea Itaia'

fn:tokenize(string,pattern)

Exemplo: tokenize("XPath is fun", "\s+")

Resultado: ("XPath", "is", "fun")

Função para anyURI

Nome Descrição
fn:resolve-uri(relative,base)  

Funções sobre valores booleanos

Nome Descrição
fn:boolean(arg) Retorna o valor booleano de um número, string ou conjunto de nós.
fn:not(arg)

Primeiro, a função boolean() recupera o valor booleano do parâmetro. Se o valor booleano for false, retorna true; caso contrário, retorna true.

Exemplo: not(true())

resultado: false

fn:true()

Retorna o valor booleano true.

Exemplo: true()

Resultado: true

fn:false()

Retorna o valor booleano false.

Exemplo: false()

resultado: false

Funções sobre duração, data e hora

Função de extração de componentes de data, hora e duração

Nome Descrição
fn:dateTime(date,time) Converte o parâmetro em data e hora.
fn:years-from-duration(datetimedur) Retorna o valor inteiro do ano do parâmetro, representado pela notação lexical padrão.
fn:months-from-duration(datetimedur) Retorna o valor inteiro do mês do parâmetro, representado pela notação lexical padrão.
fn:days-from-duration(datetimedur) Retorna o valor inteiro do dia do parâmetro, representado pela notação lexical padrão.
fn:hours-from-duration(datetimedur) Retorna o valor inteiro da parte local das horas, representado pela convenção de vocabulário padrão.
fn:minutes-from-duration(datetimedur) Retorna o valor inteiro da parte local dos minutos, representado pela convenção de vocabulário padrão.
fn:seconds-from-duration(datetimedur) Retorna o valor decimal da parte local dos minutos, representado pela convenção de vocabulário padrão.
fn:year-from-dateTime(datetime)

Retorna o valor inteiro da parte local dos anos do parâmetro.

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

Resultado: 2005

fn:month-from-dateTime(datetime)

Retorna o valor inteiro da parte local dos meses do parâmetro.

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

Resultado: 01

fn:day-from-dateTime(datetime)

Retorna o valor inteiro da parte local dos dias do parâmetro.

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

Resultado: 10

fn:hours-from-dateTime(datetime)

Retorna o valor inteiro da parte local das horas do parâmetro.

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

Resultado: 12

fn:minutes-from-dateTime(datetime)

Retorna o valor inteiro da parte local dos minutos do parâmetro.

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

Resultado: 30

fn:seconds-from-dateTime(datetime)

Retorna o valor decimal de segundos da parte local do parâmetro.

Exemplo: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))

Resultado: 0

fn:timezone-from-dateTime(datetime) Retorna a parte de fuso horário do parâmetro, se existir.
fn:year-from-date(date)

Retorna o valor inteiro local do parâmetro.

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

Resultado: 2005

fn:month-from-date(date)

Retorna o inteiro representando o mês do valor local do parâmetro.

Exemplo: month-from-date(xs:date("2005-04-23"))

Resultado: 4

fn:day-from-date(date)

Retorna o inteiro representando o dia do valor local do parâmetro.

Exemplo: day-from-date(xs:date("2005-04-23"))

Resultado: 23

fn:timezone-from-date(date) Retorna a parte de fuso horário do parâmetro, se existir.
fn:hours-from-time(time)

Retorna o inteiro representando a parte de horas do valor local do parâmetro.

Exemplo: hours-from-time(xs:time("10:22:00"))

Resultado: 10

fn:minutes-from-time(time)

Retorna o inteiro representando a parte de minutos do valor local do parâmetro.

Exemplo: minutes-from-time(xs:time("10:22:00"))

Resultado: 22

fn:seconds-from-time(time)

Retorna o inteiro representando a parte de segundos do valor local do parâmetro.

Exemplo: seconds-from-time(xs:time("10:22:00"))

Resultado: 0

fn:timezone-from-time(time) Retorna a parte de fuso horário do parâmetro, se existir.
fn:adjust-dateTime-to-timezone(datetime,timezone) Se o parâmetro timezone estiver vazio, retorna o dateTime sem fuso horário. Caso contrário, retorna o dateTime com fuso horário.
fn:adjust-date-to-timezone(date,timezone) Se o parâmetro timezone estiver vazio, retorna a data sem fuso horário. Caso contrário, retorna a data com fuso horário.
fn:adjust-time-to-timezone(time,timezone) Se o parâmetro timezone estiver vazio, retorna o tempo sem fuso horário. Caso contrário, retorna o tempo com fuso horário.

Funções relacionadas a QNames

Nome Descrição
fn:QName()  
fn:local-name-from-QName()  
fn:namespace-uri-from-QName()  
fn:namespace-uri-for-prefix()  
fn:in-scope-prefixes()  
fn:resolve-QName()  

Funções de nó

Nome Descrição
  • fn:name()
  • fn:name(nodeset)
Retorna o nome do nó atual ou do primeiro nó do conjunto de nós especificado.
  • fn:local-name()
  • fn:local-name(nodeset)
Retorna o nome do nó atual ou do primeiro nó do conjunto de nós especificado, sem o prefixo de espaço de nomes.
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
Retorna o URI do espaço de nomes do nó atual ou do primeiro nó do conjunto de nós especificado.
fn:lang(lang)

Se o idioma do nó atual correspondente ao idioma especificado, retorna true.

Exemplo: Lang("en") é verdadeiro para <p xml:lang="en">...</p>

Exemplo: Lang("de") é falso para <p xml:lang="en">...</p>

  • fn:root()
  • fn:root(node)
Retorna o nó raiz da árvore de nós do nó atual ou do nó especificado. Geralmente é o nó de documento.

Funções de sequência

Função geral

Nome Descrição
fn:index-of((item,item,...),searchitem)

Retorna a posição do item na sequência de itens igual ao parâmetro searchitem.

Exemplo: index-of ((15, 40, 25, 40, 10), 40)

Result: (2, 4)

Exemplo: index-of (("a", "dog", "and", "a", "duck"), "a")

Result (1, 4)

Exemplo: index-of ((15, 40, 25, 40, 10), 18)

Result: ()

fn:remove((item,item,...),position)

Retorna uma nova sequência construída pelo parâmetro item, removendo o item especificado pela posição.

Exemplo: remove(("ab", "cd", "ef"), 0)

Result: ("ab", "cd", "ef")

Exemplo: remove(("ab", "cd", "ef"), 1)

Result: ("cd", "ef")

Exemplo: remove(("ab", "cd", "ef"), 4)

Result: ("ab", "cd", "ef")

fn:empty(item,item,...)

Se o valor do parâmetro for uma sequência vazia, retorna true, caso contrário, retorna false.

Exemplo: empty(remove(("ab", "cd"), 1))

resultado: false

fn:exists(item,item,...)

se o valor do parâmetro não for uma sequência vazia, retorna true, caso contrário, retorna false.

exemplo: exists(remove(("ab"), 1))

resultado: false

fn:distinct-values((item,item,...),collation)

retorna os valores únicos diferentes.

exemplo: distinct-values((1, 2, 3, 1, 2))

resultado: (1, 2, 3)

fn:insert-before((item,item,...),pos,inserts)

retorna uma nova sequência construída pelo parâmetro item, inserindo o valor do parâmetro inserts na posição especificada pelo parâmetro pos.

exemplo: insert-before(("ab", "cd"), 0, "gh")

resultado: ("gh", "ab", "cd")

exemplo: insert-before(("ab", "cd"), 1, "gh")

resultado: ("gh", "ab", "cd")

exemplo: insert-before(("ab", "cd"), 2, "gh")

resultado: ("ab", "gh", "cd")

exemplo: insert-before(("ab", "cd"), 5, "gh")

resultado: ("ab", "cd", "gh")

fn:reverse((item,item,...))

retorna a inversão da ordem dos itens especificados.

exemplo: reverse(("ab", "cd", "ef"))

resultado: ("ef", "cd", "ab")

exemplo: reverse(("ab"))

resultado: ("ab")

fn:subsequence((item,item,...),start,len)

retorna a sequência de itens especificada pelo parâmetro start, cujo comprimento é especificado pelo parâmetro len. A posição do primeiro item é 1.

exemplo: subsequence(($item1, $item2, $item3,...), 3)

resultado: ($item3, ...)

exemplo: subsequence(($item1, $item2, $item3, ...), 2, 2)

resultado: ($item2, $item3)

fn:unordered((item,item,...)) retorna os itens de acordo com a ordem determinada pela implementação.

função de teste da capacidade da sequência

Nome Descrição
fn:zero-or-one(item,item,...) Se o parâmetro contiver zero ou um item, retorna o parâmetro, caso contrário, gera um erro.
fn:one-or-more(item,item,...) Se o parâmetro contiver um ou mais itens, retorna o parâmetro, caso contrário, gera um erro.
fn:exactly-one(item,item,...) Se o parâmetro contiver um item, retorna o parâmetro, caso contrário, gera um erro.

Igual, União, Interseção e Exceto

Nome Descrição
fn:deep-equal(param1,param2,collation) Se param1 e param2 forem iguais entre si (deep-equal), retorna true, caso contrário, retorna false.

Função de total

Nome Descrição
fn:count((item,item,...)) Retorna o número de nós.
fn:avg((arg,arg,...))

Retorna a média dos valores dos argumentos.

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

Resultado: 2

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

Retorna o argumento que é maior que os outros parâmetros.

Exemplo: max((1,2,3))

Resultado: 3

Exemplo: max(('a', 'k'))

Resultado: 'k'

fn:min((arg,arg,...))

Retorna o argumento que é menor que os outros parâmetros.

Exemplo: min((1,2,3))

Resultado: 1

Exemplo: min(('a', 'k'))

Resultado: 'a'

fn:sum(arg,arg,...) Retorna a soma dos valores de cada nó no conjunto de nós especificado.

Função que gera sequência

Nome Descrição
fn:id((string,string,...),node) Retorna uma sequência de nós de elemento que têm um valor ID igual ao valor de um ou mais dos valores especificados na string argumento
fn:idref((string,string,...),node) Retorna uma sequência de nós de elemento ou atributo que têm um valor IDREF igual ao valor de um ou mais dos valores especificados na string argumento
fn:doc(URI)  
fn:doc-available(URI) Se a função doc() retornar um nó de documento, retorna true, caso contrário, retorna false.
  • fn:collection()
  • fn:collection(string)
 

Função de contexto

Nome Descrição
fn:position()

Retorna a posição do nó atualmente processado.

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

Resultado: Escolhe os três primeiros elementos book

fn:last()

Retorna o número de itens na lista de nós processados.

Exemplo: //book[last()]

Resultado: Escolhe o último elemento book

fn:current-dateTime() Retorna o dateTime atual (com fuso horário).
fn:current-date() Retorna a data atual (com fuso horário).
fn:current-time() Retorna o tempo atual (com fuso horário).
fn:implicit-timezone() Retorna o valor da zona horária implícita.
fn:default-collation() Retorna o valor da comparação padrão.
fn:static-base-uri() Retorna o valor de base-uri.