Udostępnij za pośrednictwem


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.

Zobacz także

Odwołanie

Koncepcje