Bagikan melalui


Fungsi pada Simpul - namespace-uri

Berlaku untuk:SQL Server

Mengembalikan URI namespace QName yang ditentukan dalam $arg sebagai xs:string.

Sintaks

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

Argumen

$arg
Nama node yang bagian URI namespacenya akan diambil.

Keterangan

  • Jika argumen dihilangkan, defaultnya adalah simpul konteks.

  • Di SQL Server, fn:namespace-uri() tanpa argumen hanya dapat digunakan dalam konteks predikat tergantung konteks. Secara khusus, ini hanya dapat digunakan di dalam tanda kurung siku ([ ]).

  • Jika $arg adalah urutan kosong, string panjang nol dikembalikan.

  • Jika $arg adalah elemen atau node atribut yang expanded-QName-nya tidak berada di namespace, fungsi mengembalikan string dengan panjang nol

Contoh

Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.

J. Mengambil URI namespace layanan dari simpul tertentu

Kueri berikut ditentukan terhadap instans XML yang tidak dititip. Ekspresi kueri, namespace-uri(/ROOT[1]), mengambil bagian URI namespace dari simpul yang ditentukan.

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

Karena QName yang ditentukan tidak memiliki bagian URI namespace tetapi hanya bagian nama lokal, hasilnya adalah string panjang nol.

Kueri berikut ditentukan terhadap kolom Xml yang dititik Instruksi. Ekspresi, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), mengembalikan URI namespace dari turunan elemen pertamaLocation><dari <root> elemen .

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  

Ini adalah hasilnya:

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

B. Menggunakan namespace-uri() tanpa argumen dalam predikat

Kueri berikut ditentukan terhadap kolom xml yang di ketik CatalogDescription. Ekspresi mengembalikan semua simpul elemen yang URI namespacenya adalah https://www.adventure-works.com/schemas/OtherFeatures. Fungsi namespace-uri() ditentukan tanpa argumen dan menggunakan simpul konteks.

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  

Ini adalah hasil parsial:

<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>  
...  

Anda dapat mengubah URI namespace layanan di kueri sebelumnya menjadi https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain. Anda kemudian akan menerima semua turunan simpul elemen dari <ProductDescription> elemen yang bagian URI namespace dari QName yang diperluas adalah .https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain

Batasan Implementasi

Ini adalah batasannya:

  • Fungsi namespace-uri() mengembalikan instans jenis xs:string alih-alih xs:anyURI.

Lihat Juga

Fungsi pada Simpul
Fungsi nama lokal (XQuery)