Gli ultimi tutorial di sviluppo web
 

XSLT XPath e XQuery Funzioni


XSLT 2.0, XPath 2.0 e XQuery 1.0, condividono la stessa libreria funzioni.


funzioni di riferimento

Il prefisso di default per la funzione di namespace è fn:
L'URI della funzione di spazio dei nomi è: http://www.w3.org/2005/xpath-functions

Tip: Le funzioni sono spesso chiamati con il fn: prefisso, ad esempio fn: string() . Tuttavia, dal momento che fn: è il prefisso di default dello spazio dei nomi, i nomi delle funzioni non hanno bisogno di essere prefissato quando viene chiamato.

funzioni di accesso

Nome Descrizione
fn:node- name( node ) Restituisce il nodo-nome del nodo argomento
fn: nilled( node ) Restituisce un valore booleano che indica se il nodo argomento è nilled
fn: data( item.item,... ) Prende una sequenza di oggetti e restituisce una sequenza di valori atomici
fn:base- uri()
fn:base- uri( node )
Restituisce il valore della proprietà base-uri del nodo corrente o specificato
fn:document- uri( node ) Restituisce il valore della proprietà del documento-uri per il nodo specificato

Di errore e di Trace Funzioni

Nome Descrizione
fn: error()
fn: error( error )
fn: error( error,description )
fn: error( error,description,error-object )
Esempio: error(fn:QName('http://example.com/test', 'err:toohigh') , 'Errore: il prezzo è troppo alto')

Risultato: Restituisce http://example.com/test#toohigh e la stringa "Error: Price is too high" per l'ambiente di elaborazione esterna

fn: trace( value,label ) Utilizzato per le query di debug

Funzioni su valori numerici

Nome Descrizione
fn: number( arg ) Restituisce il valore numerico dell'argomento. L'argomento potrebbe essere un valore booleano, una stringa o set di nodi

Esempio: number('100')
Risultato: 100

fn: abs( num ) Restituisce il valore assoluto dell'argomento

Esempio: abs(3.14)
Risultato: 3.14

Esempio: abs(-3.14)
Risultato: 3.14

fn: ceiling( num ) Restituisce il numero intero più piccolo che è maggiore del numero di argomenti

Esempio: ceiling(3.14)
Risultato: 4

fn: floor( num ) Restituisce il più grande intero che non è maggiore il numero di argomenti

Esempio: floor(3.14)
Risultato: 3

fn: round( num ) Arrotonda l'argomento numero al numero intero più vicino

Esempio: round(3.14)
Risultato: 3

fn:round-half-to- even() Esempio: round-half-to- even(0.5)
Risultato: 0

Esempio: round-half-to- even(1.5)
Risultato: 2

Esempio: round-half-to- even(2.5)
Risultato: 2

Funzioni su stringhe

Nome Descrizione
fn: string( arg ) Restituisce il valore stringa dell'argomento. L'argomento potrebbe essere un numero, booleano o set di nodi

Esempio: string(314)
Risultato: "314"

fn:codepoints-to- string(( int,int,... ) ) Crea una stringa da una sequenza di punti di codice Unicode standard

Esempio: codepoints-to string((84, 104, 233, 114, 232, 115, 101) )
Risultato: 'Thrse'

fn:string-to- codepoints( string ) Restituisce la sequenza dei punti di codice standard Unicode da una stringa

Esempio: stringa-to- codepoints("Th r se")
Risultato: (84, 104, 233, 114, 232, 115, 101)

fn:codepoint- equal( comp1,comp2 ) Restituisce true se il valore di comp1 è uguale al valore di comp2, a seconda del punto di collazione di codici Unicode (http://www.w3.org/2005/02/xpath-functions/collation/codepoint) , altrimenti restituisce falso
fn: compare( comp1,comp2 )
fn: compare( comp1,comp2,collation )
Restituisce -1 se comp1 è minore di comp2, 0 se comp1 è uguale comp2, o 1 se comp1 è maggiore di comp2 (secondo le regole del confronto che viene utilizzato)

Esempio: compare('ghi', 'ghi')
Risultato: 0

fn: concat( string,string,... ) Restituisce la concatenazione delle stringhe

Esempio: concat('XPath ','is ','FUN!')
Risultato: 'XPath è DIVERTIMENTO!'

fn:string- join( (string,string,...) ,sep) Restituisce una stringa creata concatenando gli argomenti stringa e utilizzando l'argomento settembre come separatore

Esempio: String join(('We', 'are', 'having', 'fun!') , ' ')
Risultato: 'Stiamo avendo divertimento! '

Esempio: String join(('We', 'are', 'having', 'fun!') )
Risultato: 'Wearehavingfun!'

Esempio: String join(() , 'settembre')
Risultato: ''

fn: substring( string,start,len )
fn: substring( string,start )
Restituisce la sottostringa dalla posizione di partenza fino alla lunghezza specificata. Indice del primo carattere è 1. Se la lunghezza è omesso restituisce la sottostringa dalla posizione di partenza fino alla fine

Esempio: substring('Beatles',1,4)
Risultato: 'Beat'

Esempio: substring('Beatles',2)
Risultato: '' eatles

fn:string- length( string )
fn:string- length()
Restituisce la lunghezza della stringa specificata. Se non v'è alcun argomento stringa restituisce la lunghezza del valore di stringa del nodo corrente

Esempio: String length('Beatles')
Risultato: 7

fn:normalize- space( string )
fn:normalize- space()
Rimuove spazi iniziali e finali della stringa specificata, e sostituisce tutte le sequenze interne di spazio bianco con uno e restituisce il risultato. Se non v'è alcun argomento stringa fa lo stesso sul nodo corrente

Esempio: standardizzano space(' The XML ')
Risultato: 'The XML'

fn:normalize- unicode()
fn:upper- case( string ) Converte l'argomento stringa maiuscole

Esempio: in alto a case('The XML')
Risultato: 'L'XML'

fn:lower- case( string ) Converte l'argomento stringa minuscole

Esempio: in basso a case('The XML')
Risultato: 'xml'

fn: translate( string1,string2,string3 ) Converte string1 sostituendo i caratteri in string2 con i personaggi string3

Esempio: translate('12:30','30','45')
Risultato: '12: 45'

Esempio: translate('12:30','03','54')
Risultato: '12: 45'

Esempio: translate('12:30','0123','abcd')
Risultato: 'bc: da'

fn:escape- uri( stringURI,esc-res ) Esempio: escape- uri("http://example.com/test#car", true() )
Risultato: "http%3A%2F%2Fexample.com%2Ftest#car"

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

Esempio: fuga-uri ("http://example.com/~b b ", false() )
Risultato: "http://example.com/~b%C3%A9b%C3%A9"

fn: contains( string1,string2 ) Restituisce vero se stringa1 stringa2 contiene, altrimenti restituisce falso

Esempio: contains('XML','XM')
Risultato: true

fn:starts- with( string1,string2 ) Restituisce vero se stringa1 inizia con stringa2, altrimenti restituisce falso

Esempio: starts- with('XML','X')
Risultato: true

fn:ends- with( string1,string2 ) Restituisce vero se stringa1 termina con stringa2, altrimenti restituisce falso

Esempio: ends- with('XML','X')
Risultato: false

fn:substring- before( string1,string2 ) Restituisce l'inizio di stringa1 stringa2 prima che si verifichi in esso

Esempio: substring- before('12/10','/')
Risultato: '12'

fn:substring- after( string1,string2 ) Restituisce il resto di stringa1 stringa2 dopo si verifica in essa

Esempio: substring- after('12/10','/')
Risultato: '10'

fn: matches( string,pattern ) Restituisce vero se l'argomento stringa corrisponde al modello, in caso contrario, restituisce false

Esempio: matches("Merano", "ran")
Risultato: true

fn: replace( string,pattern,replace ) Restituisce una stringa che viene creato sostituendo al pattern specificato con l'argomento sostituire

Esempio: replace("Bella Italia", "l" , "*")
Risultato: 'Be ** un'Ita * ia'

Esempio: replace("Bella Italia", "l" , "")
Risultato: 'Bea Itaia'

fn: tokenize( string,pattern ) Esempio: tokenize("XPath is fun", "\s+")
Risultato: ("XPath", "is" , "fun")

Funzioni per anyURI

Nome Descrizione
fn:resolve- uri( relative,base )

Funzioni su valori booleani

Nome Descrizione
fn: boolean( arg ) Restituisce un valore booleano per un numero, una stringa, o il nodo-set
fn: not( arg ) L'argomento viene dapprima ridotto ad un valore booleano applicando la boolean() funzione. Restituisce true se il valore booleano è falso, e falso se il valore booleano è vero

Esempio: not(true() )
Risultato: false

fn: true() Restituisce il valore booleano vero

Esempio: true()
Risultato: true

fn: false() Restituisce il valore booleano falso

Esempio: false()
Risultato: false

Funzioni su durate, date e orari

Funzioni di estrazione dei componenti su durate, date e orari

Nome Descrizione
fn: dateTime( date,time ) Converte gli argomenti per una data e un tempo
fn:years-from- duration( datetimedur ) Restituisce un numero intero che rappresenta la componente anni nella rappresentazione lessicale canonica del valore dell'argomento
fn:months-from- duration( datetimedur ) Restituisce un numero intero che rappresenta la componente mesi nella rappresentazione lessicale canonica del valore dell'argomento
fn:days-from- duration( datetimedur ) Restituisce un numero intero che rappresenta la componente giorni nella rappresentazione lessicale canonica del valore dell'argomento
fn:hours-from- duration( datetimedur ) Restituisce un numero intero che rappresenta il componente ore nella rappresentazione lessicale canonica del valore dell'argomento
fn:minutes-from- duration( datetimedur ) Restituisce un numero intero che rappresenta il componente minuti nella rappresentazione lessicale canonica del valore dell'argomento
fn:seconds-from- duration( datetimedur ) Restituisce un numero decimale che rappresenta il componente secondi nella rappresentazione lessicale canonica del valore dell'argomento
fn:year-from- dateTime( datetime ) Restituisce un numero intero che rappresenta la componente anno nel valore localizzato dell'argomento

Esempio: anni da- dateTime(xs:dateTime("2005-01-10T12:30-04:10") )
Risultato: 2005

fn:month-from- dateTime( datetime ) Restituisce un numero intero che rappresenta la componente mese nel valore localizzato dell'argomento

Esempio: mese-da- dateTime(xs:dateTime("2005-01-10T12:30-04:10") )
Risultato: 01

fn:day-from- dateTime( datetime ) Restituisce un numero intero che rappresenta la componente giorno nel valore localizzato dell'argomento

Esempio: day-da- dateTime(xs:dateTime("2005-01-10T12:30-04:10") )
Risultato: 10

fn:hours-from- dateTime( datetime ) Restituisce un numero intero che rappresenta il componente ore in valore localizzato dell'argomento

Esempio: ore-da- dateTime(xs:dateTime("2005-01-10T12:30-04:10") )
Risultato: 12

fn:minutes-from- dateTime( datetime ) Restituisce un numero intero che rappresenta il componente minuti nel valore localizzato dell'argomento

Esempio: minuti-da- dateTime(xs:dateTime("2005-01-10T12:30-04:10") )
Risultato: 30

fn:seconds-from- dateTime( datetime ) Restituisce un numero decimale che rappresenta il componente secondi nel valore localizzato dell'argomento

Esempio: secondi-da- dateTime(xs:dateTime("2005-01-10T12:30:00-04:10") )
Risultato: 0

fn:timezone-from- dateTime( datetime ) Restituisce il componente del fuso orario dell'argomento se del caso
fn:year-from- date( date ) Restituisce un numero intero che rappresenta l'anno del valore localizzato dell'argomento

Esempio: anno-da- date(xs:date("2005-04-23") )
Risultato: 2005

fn:month-from- date( date ) Restituisce un numero intero che rappresenta il mese nel valore localizzato dell'argomento

Esempio: il mese-da- date(xs:date("2005-04-23") )
Risultato: 4

fn:day-from- date( date ) Restituisce un numero intero che rappresenta il giorno del valore localizzato dell'argomento

Esempio: day-da- date(xs:date("2005-04-23") )
Risultato: 23

fn:timezone-from- date( date ) Restituisce il componente del fuso orario dell'argomento se del caso
fn:hours-from- time( time ) Restituisce un numero intero che rappresenta il componente ore in valore localizzato dell'argomento

Esempio: ore-da- time(xs:time("10:22:00") )
Risultato: 10

fn:minutes-from- time( time ) Restituisce un numero intero che rappresenta il componente minuti nel valore localizzato dell'argomento

Esempio: minuti-da- time(xs:time("10:22:00") )
Risultato: 22

fn:seconds-from- time( time ) Restituisce un numero intero che rappresenta il componente secondi nel valore localizzato dell'argomento

Esempio: secondi-da- time(xs:time("10:22:00") )
Risultato: 0

fn:timezone-from- time( time ) Restituisce il componente del fuso orario dell'argomento se del caso
fn:adjust-dateTime-to- timezone( datetime,timezone ) Se l'argomento fuso orario è vuota, restituisce un dateTime senza un fuso orario. In caso contrario, restituisce un dateTime con un fuso orario
fn:adjust-date-to- timezone( date ,timezone ) Se l'argomento fuso orario è vuota, restituisce una data senza un fuso orario. In caso contrario, restituisce un appuntamento con un fuso orario
fn:adjust-time-to- timezone( time ,timezone ) Se l'argomento fuso orario è vuota, restituisce un tempo senza un fuso orario. In caso contrario, restituisce un tempo con un fuso orario

Funzioni correlate a QNames

Nome Descrizione
fn: QName()
fn:local-name-from- QName()
fn:namespace-uri-from- QName()
fn:namespace-uri-for- prefix()
fn:in-scope- prefixes()
fn:resolve- QName()

Funzioni su nodi

Nome Descrizione
fn: name()
fn: name( nodeset )
Restituisce il nome del nodo corrente o il primo nodo nel set nodo specificato
fn:local- name()
fn:local- name( nodeset )
Restituisce il nome del nodo corrente o il primo nodo nel set nodo specificato - senza il prefisso dello spazio dei nomi
fn:namespace- uri()
fn:namespace- uri( nodeset )
Restituisce l'URI del namespace del nodo corrente o il primo nodo del gruppo nodo specificato
fn: lang( lang ) Restituisce vero se la lingua del nodo corrente corrisponde alla lingua della lingua specificata

Esempio: Lang("en") è vero per
<P xml: lang = "it"> ... </ p>

Esempio: Lang("de") è falsa per
<P xml: lang = "it"> ... </ p>

fn: root()
fn: root( node )
Restituisce la radice dell'albero a cui il nodo corrente o specificata frazione. Questo di solito è un nodo di documenti

Funzioni su sequenze

Funzioni generali sulle sequenze

Nome Descrizione
fn:index- of( (item,item,...) ,searchitem) Restituisce le posizioni all'interno della sequenza di elementi che sono uguale all'argomento searchitem

Esempio: indice di ((15, 40, 25, 40, 10) , 40)
Risultato: (2, 4)

Esempio: index-di (("a", "dog" , "and" , "a" , "duck") , "a")
Risultato (1, 4)

Esempio: indice di ((15, 40, 25, 40, 10) , 18)
Risultato: ()

fn: remove( (item,item,...) ,position) Restituisce una nuova sequenza costruito dal valore degli argomenti dell'elemento - con l'elemento specificato dall'argomento posizione allontanata

Esempio: remove(("ab", "cd" , "ef") , 0)
Risultato: ("ab", "cd" , "ef")

Esempio: remove(("ab", "cd" , "ef") , 1)
Risultato: ("cd", "ef")

Esempio: remove(("ab", "cd" , "ef") , 4)
Risultato: ("ab", "cd" , "ef")

fn: empty( item,item,... ) Restituisce true se il valore degli argomenti è una sequenza vuota, altrimenti restituisce falso

Esempio: empty(remove(("ab", "cd") , 1))
Risultato: false

fn: exists( item,item,... ) Restituisce true se il valore degli argomenti non è una sequenza vuota, altrimenti restituisce falso

Esempio: exists(remove(("ab") , 1))
Risultato: false

fn:distinct- values( (item,item,...) ,collation) Restituisce solo distinte (different) valori

Esempio: distinct- values((1, 2, 3, 1, 2) )
Risultato: (1, 2, 3)

fn:insert- before( (item,item,...) ,pos,inserts) Restituisce una nuova sequenza costruito dal valore degli argomenti dell'elemento - con il valore dell'argomento inserti inserito nella posizione specificata dall'argomento pos

Esempio: inserire: before(("ab", "cd") , 0, "gh")
Risultato: ("gh", "ab" , "cd")

Esempio: inserire: before(("ab", "cd") , 1, "gh")
Risultato: ("gh", "ab" , "cd")

Esempio: inserire: before(("ab", "cd") , 2, "gh")
Risultato: ("ab", "gh" , "cd")

Esempio: inserire: before(("ab", "cd") , 5, "gh")
Risultato: ("ab", "cd" , "gh")

fn: reverse( (item,item,...) ) Restituisce l'ordine inverso degli elementi specificati

Esempio: reverse(("ab", "cd" , "ef") )
Risultato: ("ef", "cd" , "ab")

Esempio: reverse(("ab") )
Risultato: ("ab")

fn: subsequence( (item,item,...) ,start,len) Restituisce una sequenza di elementi dalla posizione specificata dall'argomento iniziale e continua per il numero di elementi specificati dall'argomento len. Il primo elemento si trova nella posizione 1

Esempio: subsequence(($item1, $item2, $item3,...) , 3)
Risultato: ($item3, ...)

Esempio: subsequence(($item1, $item2, $item3, ...) , 2, 2)
Risultato: ($item2, $item3)

fn: unordered( (item,item,...) ) Restituisce gli elementi in un ordine dipendente implementazione

Funzioni che mettono alla prova la cardinalità di Sequenze

Nome Descrizione
fn:zero-or- one( item,item,... ) Restituisce l'argomento se contiene zero o gli articoli uno, altrimenti si genera un errore
fn:one-or- more( item,item,... ) Restituisce l'argomento se contiene uno o più elementi, altrimenti si genera un errore
fn:exactly- one( item,item,... ) Restituisce l'argomento se contiene esattamente un elemento, altrimenti si genera un errore

Uguale, unione, intersezione e Salvo

Nome Descrizione
fn:deep- equal( param1,param2,collation ) Restituisce true se param1 e param2 sono profondamente uguali tra loro, altrimenti restituisce falso

Funzioni di aggregazione

Nome Descrizione
fn: count( (item,item,...) ) Restituisce il conteggio dei nodi
fn: avg( (arg,arg,...) ) Restituisce la media dei valori degli argomenti

Esempio: avg((1,2,3) )
Risultato: 2

fn: max( (arg,arg,...) ) Restituisce l'argomento che è maggiore rispetto agli altri

Esempio: max((1,2,3) )
Risultato: 3

Esempio: max(('a', 'k') )
Risultato: 'k'

fn: min( (arg,arg,...) ) Restituisce l'argomento che è meno degli altri

Esempio: min((1,2,3) )
Risultato: 1

Esempio: min(('a', 'k') )
Risultato: 'a'

fn: sum( arg,arg,... ) Restituisce la somma del valore numerico di ogni nodo nel nodo-set specificato

Le funzioni che generano sequenze

Nome Descrizione
fn: id( (string,string,...) ,node) Restituisce una sequenza di nodi di elementi che hanno un valore ID uguale al valore di uno o più dei valori specificati nell'argomento stringa
fn: idref( (string,string,...) ,node) Restituisce una sequenza di elemento o attributo nodi che hanno un valore IDREF uguale al valore di uno o più dei valori specificati nell'argomento stringa
fn: doc( URI )
fn:doc- available( URI ) Restituisce true se il doc() restituisce un nodo del documento, altrimenti restituisce falso
fn: collection()
fn: collection( string )

Funzioni di contesto

Nome Descrizione
fn: position() Restituisce la posizione di indice del nodo che è attualmente in fase di elaborazione

Esempio: // book [ position() <= 3]
Risultato: consente di selezionare i primi tre elementi del libro

fn: last() Restituisce il numero di elementi nell'elenco dei nodi elaborati

Esempio: // book [ last() ]
Risultato: consente di selezionare l'ultimo elemento del libro

fn:current- dateTime() Restituisce il dateTime corrente (with timezone)
fn:current- date() Restituisce la data corrente (with timezone)
fn:current- time() Restituisce l'ora attuale (with timezone)
fn:implicit- timezone() Restituisce il valore del fuso orario implicito
fn:default- collation() Restituisce il valore del confronto predefinite
fn:static-base- uri() Restituisce il valore della base-uri

Funzioni XSLT

In aggiunta, ci sono le seguenti funzioni built-in XSLT:

Nome Descrizione
current() Restituisce il nodo corrente
document() Utilizzato per accedere ai nodi in un documento XML esterno
element- available() Verifica se l'elemento specificato è supportato dal processore XSLT
format- number() Converte un numero in una stringa
function- available() Verifica se la funzione specificata è supportata dal processore XSLT
generate- id() Restituisce un valore di stringa che identifica univocamente il nodo indicato
key() Restituisce un set di nodi utilizzando l'indice specificato da un <xsl:key> elemento
system- property() Restituisce il valore delle proprietà di sistema
unparsed-entity- uri() Restituisce l'URI di un'entità non analizzata