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.