Condividi tramite


Funzioni nei nodi - local-name

Si applica a:SQL Server

Restituisce la parte locale del nome di $arg come oggetto xs:string che corrisponde alla stringa di lunghezza zero oppure ha la forma lessicale di un oggetto xs:NCName. Se l'argomento non viene specificato, 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 viene 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 ha alcun nome, perché si tratta di un nodo del documento, di un commento o di un nodo di testo, la funzione restituisce la stringa di lunghezza zero.

Esempi

Questo articolo fornisce 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 AS 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. Usare 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 <>rootil cui nome locale fa parte di QName è "Location". La local-name() funzione 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> .