Fungsi pada Simpul - nama lokal
Berlaku untuk:SQL Server
Mengembalikan bagian lokal dari nama $arg sebagai xs:string yang akan menjadi string panjang nol atau akan memiliki bentuk leksikal dari xs:NCName. Jika argumen tidak disediakan, defaultnya adalah simpul konteks.
Sintaks
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Argumen
$arg
Nama node yang bagian nama lokalnya akan diambil.
Keterangan
Di SQL Server, fn:local-name() tanpa argumen hanya dapat digunakan dalam konteks predikat tergantung konteks. Secara khusus, itu hanya dapat digunakan di dalam tanda kurung (
[ ]
).Jika argumen disediakan dan merupakan urutan kosong, fungsi mengembalikan string panjang nol.
Jika simpul target tidak memiliki nama, karena merupakan node dokumen, komentar, atau simpul teks, fungsi mengembalikan string panjang nol.
Contoh
Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.
J. Mengambil nama lokal simpul tertentu
Kueri berikut ditentukan terhadap instans XML yang tidak dititip. Ekspresi kueri, local-name(/ROOT[1])
, mengambil bagian nama lokal dari simpul yang ditentukan.
declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT
Kueri berikut ditentukan terhadap kolom Instruksi, kolom xml yang ditik, dari tabel ProductModel. Ekspresi, local-name(/AWMI:root[1]/AWMI:Location[1])
, mengembalikan nama lokal, Location
, dari simpul yang ditentukan.
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. Menggunakan nama lokal tanpa argumen dalam predikat
Kueri berikut ditentukan terhadap kolom Instruksi, kolom xml yang ditik, dari tabel ProductModel. Ekspresi mengembalikan semua turunan elemen elemen <root
> yang bagian nama lokalnya dari QName adalah "Location". Fungsi local-name() ditentukan dalam predikat dan tidak memiliki argumen Simpul konteks digunakan oleh fungsi.
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
Kueri mengembalikan semua <Location
> turunan elemen elemen.<root
>