Udostępnij za pośrednictwem


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.