Identyfikator uri obszaru nazw funkcji (XQuery)
Zwraca nazw URI QName określone w $arg jako xs:ciąg.
Składnia
fn:namespace-uri() as xs:string
fn:namespace-uri($arg as node()?) as xs:string
Argumenty
- $arg
Nazwa węzła, której część identyfikatora URI obszaru nazw zostanie pobrany.
Uwagi
Jeśli argument zostanie pominięty, domyślnie jest węzeł kontekstu.
W programie SQL Server fn:namespace-uri() bez argumentu mogą być używane tylko w kontekście predykat zależne od kontekstu.W szczególności go należy używać tylko wewnątrz nawiasów kwadratowych ([]).
Jeśli $arg jest puste, zostanie zwrócony ciąg o zerowej długości.
Jeśli $arg to element lub atrybut węzła, którego QName rozwinięte jest nie w obszarze nazw, funkcja zwraca ciąg o zerowej długości
Przykłady
W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML przechowywanych w różnych xml Wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.
A.Pobieranie identyfikatora URI określonego węzła obszaru nazw
Określono następujące kwerendy przeciwko XML bez wystąpienie.Wyrażenie kwerendy namespace-uri(/ROOT[1]), pobiera część obszaru nazw URI określonego węzła.
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('namespace-uri(/ROOT[1])')
Ponieważ określony QName nie ma części obszaru nazw URI, ale tylko część nazwy lokalne, wynik jest ciąg znaków o zerowej długości.
Określono następujące kwerendy przeciwko instrukcje wpisane xml kolumna.Wyrażenie, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), zwraca nazw URI pierwszego <Location> element podrzędność <root> elementu.
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;
Jest to wynikiem:
https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions
B.Za pomocą namespace-uri() bez argumentu w predykacie
Określono następujące kwerendy wobec kolumna maszynowy xml CatalogDescription.Wyrażenie zwraca wszystkie węzły elementu, którego identyfikator URI obszaru nazw jest https://www.adventure-works.com/schemas/OtherFeatures.Obszar nazw -uri() funkcja jest określona bez argumentu używająca węzeł kontekstu.
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=19l
Jest to wynik częściowy:
<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>
…
Można zmienić identyfikatora URI obszaru nazw w poprzedniej kwerendy do https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain.Użytkownik otrzyma wszystkie dzieci węzeł elementu z <ProductDescription> elementu namespace którego URI część rozwiniętej QName jest https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain.
Ograniczenia wdrażania
Są następujące ograniczenia:
- Namespace-uri() funkcja zwraca wystąpienia typu xs:ciąg zamiast xs:anyURI.