Düğümlerde İşlevler - ad alanı URI'si

Şunlar için geçerlidir: SQL Server

$arg'de belirtilen QName'nin isim alanı URI'sini xs:string olarak döndürür.

Syntax

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

Arguments

$arg
Ad alanı URI kısmı alınacak düğüm adı.

Remarks

  • Argüman atlanırsa, varsayılan nokta bağlam düğümüdür.

  • SQL Server'da, fn:namespace-uri() argümansız yalnızca bağlama bağlı bir önlem bağlamında kullanılabilir. Özellikle, yalnızca parantez içinde kullanılabilir ([ ]).

  • $arg boş bir diziyse, sıfır uzunluklu dize döndürülür.

  • Eğer $arg, genişletilmiş QName bir isim alanında olmayan bir eleman veya öznitelik düğümü ise, fonksiyon sıfır uzunluklu diziyi döndürür

Examples

Bu konu, AdventureWorks veritabanındaki çeşitli xml tipi sütunlarda depolanan XML örneklerine karşı XQuery örnekleri sunmaktadır.

A. Belirli bir düğümün isim alanı URI'sini alın

Aşağıdaki sorgu, yazılmamış bir XML örneğinde belirtilir. Sorgu ifadesi, namespace-uri(/ROOT[1]), belirtilen düğümün isim alanı URI bölümünü alır.

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

Belirtilen QName'de isim alanı URI kısmı değil, sadece yerel isim kısmı olduğu için sonuç sıfır uzunlukta bir dizidir.

Aşağıdaki sorgu, Komutlar tipli xml sütununa karşı belirtilmiştir. İfade, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), elemanın ilkLocation<> eleman çocuğunun <root> isim alanı URI'sini döndürür.

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  

Sonuç şu şekildedir:

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

B. Bir önlemde argüman olmadan namespace-uri() kullanımı

Aşağıdaki sorgu, CatalogDescription tipli xml sütununa karşı belirtilmiştir. İfade, isim alanı URI'si https://www.adventure-works.com/schemas/OtherFeaturesolan tüm eleman düğümlerini döndürür. Namespace-uri() fonksiyonu argüman olmadan belirtilir ve bağlam düğümünü kullanır.

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  

Bu kısmi sonuç:

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

Önceki sorguda isim alanı URI'sini değiştirebilirsiniz.https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain Daha sonra, genişletilmiş QName'nin https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMainisim alanı URI'si olan elemanın tüm eleman düğüm çocuklarını><ProductDescriptionalacaksınız.

Uygulama Sınırlamaları

Sınırlamalar şunlardır:

  • Namespace-uri() fonksiyonu, xs:anyURI yerine xs:string tipinde örnekler döndürür.