Funzioni su nodi - namespace-uri

Si applica a: sìSQL Server (tutte le versioni supportate)

Restituisce l'URI dello spazio dei nomi del QName specificato in $arg come xs: String.

Sintassi

fn:namespace-uri() as xs:string  
fn:namespace-uri($arg as node()?) as xs:string  

Argomenti

$arg
Nome del nodo di cui verrà recuperata la parte relativa all'URI dello spazio dei nomi.

Commenti

  • Se l'argomento viene omesso, l'impostazione predefinita è il nodo di contesto.

  • In SQL Server, FN: namespace-URI () senza un argomento può essere usato solo nel contesto di un predicato dipendente dal contesto. In particolare, può essere utilizzata solo tra parentesi ([ ]).

  • Se $arg è la sequenza vuota, viene restituita la stringa di lunghezza zero.

  • Se $arg è un nodo elemento o attributo il cui expanded-QName non è in uno spazio dei nomi, la funzione restituisce la stringa di lunghezza zero

Esempio

In questo argomento vengono forniti esempi di XQuery sulle istanze XML archiviate in diverse colonne di tipo XML nel database AdventureWorks.

R. Recupero dell'URI dello spazio dei nomi di un nodo specifico

La query seguente viene eseguita su un'istanza XML non tipizzata. L'espressione di query namespace-uri(/ROOT[1]) recupera la parte relativa all'URI dello spazio dei nomi del nodo specificato.

set @x='<ROOT><a>111</a></ROOT>'  
SELECT @x.query('namespace-uri(/ROOT[1])')  

Poiché l'elemento QName specificato non contiene l'URI dello spazio dei nomi, ma solo il nome locale, il risultato è una stringa di lunghezza zero.

La query seguente viene specificata sulla colonna XML instructions tipizzata. L'espressione namespace-uri(/AWMI:root[1]/AWMI:Location[1]) restituisce l'URI dello spazio dei nomi del primo <Location elemento figlio> dell'elemento <root>.

SELECT Instructions.query('  
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;  
     namespace-uri(/AWMI:root[1]/AWMI:Location[1])') as Result  
FROM Production.ProductModel  
WHERE ProductModelID=7  

Risultato:

https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions  

B. Utilizzo di namespace-uri() senza argomento in un predicato

La query seguente viene specificata sulla colonna XML tipizzata CatalogDescription. L'espressione restituisce tutti i nodi elemento il cui URI dello spazio dei nomi è https://www.adventure-works.com/schemas/OtherFeatures. La funzione namespace-URI () viene specificata senza un argomento e utilizza il nodo di contesto.

SELECT CatalogDescription.query('  
declare namespace p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
   /p1:ProductDescription//*[namespace-uri() = "https://www.adventure-works.com/schemas/OtherFeatures"]  
') as Result  
FROM Production.ProductModel  
WHERE ProductModelID=19  

Risultato parziale:

<p1:wheel xmlns:p1="https://www.adventure-works.com/schemas/OtherFeatures">High performance wheels.</p1:wheel>  
<p2:saddle xmlns:p2="https://www.adventure-works.com/schemas/OtherFeatures">  
  <p3:i xmlns:p3="http://www.w3.org/1999/xhtml">Anatomic design</p3:i> and made from durable leather for a full-day of riding in comfort.</p2:saddle>  
...  

È possibile modificare l'URI dello spazio dei nomi nella query precedente in https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain. Si riceveranno quindi tutti gli elementi figlio del nodo elemento dell'<ProductDescription elemento> la cui parte URI dello spazio dei nomi del QName espanso è https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain .

Limitazioni di implementazione

Limitazioni:

  • La funzione namespace-URI () restituisce istanze di tipo xs: String anziché XS: anyURI.

Vedere anche

Funzioni sui nodi
Funzione local-name (XQuery)