Identyfikator uri obszaru nazw funkcja (XQuery)
Zwraca obszar nazw URI QName, określone w $arg jak 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, w których część identyfikatora URI obszaru nazw zostanie pobrany.
Uwagi
Jeśli argument jest pominięty, domyślnie jest węzeł kontekstu.
W programie SQL Server FN:namespace-URI() bez argumentu można używać tylko w kontekście predykat zależne od kontekstu.W szczególności go może być używana tylko wewnątrz nawiasów kwadratowych ([]).
Jeśli $arg jest sekwencją puste, zwracany jest ciąg znaków o zerowej długości.
Jeśli $arg to element lub atrybut węzła, którego rozszerzone QName nie jest w obszarze nazw, funkcja zwraca ciąg znaków o zerowej długości
Przykłady
W tym temacie przedstawiono przykłady XQuery przed przechowywane w różnych wystąpień XML XML typu kolumny bazy danych AdventureWorks.Aby uzyskać ogólne informacje o każdej z tych kolumn zobacz xml Data Type Representation in the AdventureWorks Database.
A.Pobieranie identyfikatora URI z określonego węzła obszaru nazw
W następującej kwerendzie określono przed wystąpienie bez typu XML.Wyrażenie kwerendy namespace-uri(/ROOT[1]), pobiera część identyfikatora URI obszaru nazw 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 identyfikatora URI obszaru nazw, ale tylko część nazwy lokalne, wynikiem jest ciąg znaków o zerowej długości.
Następująca kwerenda zostanie określona przed instrukcjami wpisany XML kolumna.Wyrażenie, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), zwraca obszar nazw identyfikatora URI pierwszego <Location> element podrzędność elementu <root> element.
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 predykatu
W następującej kwerendzie określono wobec kolumna CatalogDescription wpisywanych xml.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 i używa 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=19
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. Następnie otrzymasz wszystkich podrzędnych węzłów elementu z <ProductDescription> element, którego część identyfikatora URI obszaru nazw rozwinięta nazwa QName jest https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain.
defaultButton
Ograniczenia są następujące:
- The namespace-uri() funkcja returns instances of type xs:ciąg instead of xs:anyURI.