Funzioni su nodi - local-name
Si applica a: SQL Server
Restituisce la parte locale del nome di $arg come xs:string che sarà la stringa di lunghezza zero o avrà la forma lessicale di un xs:NCName. Se non si specifica l'argomento, il valore predefinito è il nodo di contesto.
Sintassi
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Argomenti
$arg
Nome del nodo di cui verrà recuperata la parte local-name.
Osservazioni:
In SQL Server fn:local-name() senza un argomento può essere usato solo nel contesto di un predicato dipendente dal contesto. In particolare, può essere utilizzata solo tra parentesi (
[ ]
).Se si specifica l'argomento e questo corrisponde alla sequenza vuota, la funzione restituisce la stringa di lunghezza zero.
Se il nodo di destinazione non dispone di un nome specifico, in quanto è un nodo di documento, un nodo di commento o un nodo di testo, la funzione restituisce la stringa di lunghezza zero.
Esempi
In questo argomento vengono forniti esempi di XQuery su istanze XML archiviate in varie colonne di tipo xml nel database AdventureWorks.
R. Recupero del nome locale di un nodo specifico
La query seguente viene eseguita su un'istanza XML non tipizzata. L'espressione della query, local-name(/ROOT[1])
, recupera la parte del nome locale del nodo specificato.
declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT
La query viene eseguita sulla colonna Instructions, una colonna xml tipizzata della tabella ProductModel. L'espressione local-name(/AWMI:root[1]/AWMI:Location[1])
restituisce il nome locale Location
del nodo specificato.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
local-name(/AWMI:root[1]/AWMI:Location[1])') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
-- result = Location
B. Utilizzo della funzione local-name senza argomento in un predicato
La query seguente viene specificata sulla colonna Instructions, colonna xml tipizzata, della tabella ProductModel. L'espressione restituisce tutti gli elementi figlio dell'elemento <root
> il cui nome locale fa parte di QName è "Location". La funzione local-name() viene specificata nel predicato e non ha argomenti Il nodo di contesto viene usato dalla funzione.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
/AWMI:root//*[local-name() = "Location"]') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
La query restituisce tutti gli <Location
> elementi figlio dell'elemento .<root
>