Funções do XQuery
- Página Anterior Seleção do XQuery
- Próxima Página Resumo do XQuery
O XQuery 1.0, XPath 2.0 e XSLT 2.0 compartilham a mesma biblioteca de funções.
Funções do XQuery
O XQuery contém mais de 100 funções internas. Essas funções podem ser usadas para valores de string, valores numéricos, comparação de datas e tempos, operações de nós e QName, operações de sequência, valores lógicos, etc. Você também pode definir suas próprias funções no XQuery.
Funções internas XQuery
URI do espaço de nomes de funções XQuery:
http://www.w3.org/2005/02/xpath-functions
O prefixo padrão do espaço de nomes de função é fn:.
Dica:As funções são frequentemente chamadas com o prefixo fn:, por exemplo fn:string(). No entanto, como fn: é o prefixo padrão do espaço de nomes, o nome da função não precisa ser usado com o prefixo quando chamado.
Você pode encontrar o manual completo do XPath em nosso tutorial de XPath:Manual de Referência de Funções XQuery》。
Exemplo de chamada de função
Chamadas de função podem ser usadas juntamente com expressões. Veja os seguintes exemplos:
Exemplo 1: Dentro do elemento
<name>{upper-case($booktitle)}</name>
Exemplo 2: Dentro do predicado de expressão de caminho
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'
Exemplo 3: Dentro da instrução let
let $name := (substring($booktitle,1,4))
Função de usuário definida no XQuery
Se não encontrar a função XQuery necessária, você pode escrever sua própria função.
As funções de usuário personalizadas podem ser definidas dentro da consulta ou em uma biblioteca independente.
Sintaxe
declare function prefixo:nome_da_função($parâmetro AS tipo_de_dados)
AS tipo_de_dados_de_retorno
{
(: ...código da função... :)
;
Considerações sobre funções de usuário personalizadas:
- Use a palavra-chave declare function
- O nome da função deve usar prefixo
- O tipo de dados dos parâmetros geralmente coincide com o tipo de dados definido no XML Schema
- O corpo da função deve ser envolto por chaves
Exemplo de função de usuário declarada em consulta:
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?
AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(Exemplos de chamadas de função acima):
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>
- Página Anterior Seleção do XQuery
- Próxima Página Resumo do XQuery