Megosztás a következőn keresztül:


Függvények csomópontokon – névtér-uri

A következőkre vonatkozik:SQL Server

A $arg megadott QName névtér URI-ját adja vissza xs:sztringként.

Szintaxis

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

Érvek

$arg
A rendszer lekéri a névtér URI-részét tartalmazó csomópont nevét.

Megjegyzések

  • Ha az argumentum nincs megadva, az alapértelmezett a környezeti csomópont.

  • Az SQL Serverben az fn:namespace-uri() argumentum nélküli csak környezetfüggő predikátum kontextusában használható. Pontosabban csak szögletes zárójelekben ([ ]) használható.

  • Ha $arg az üres sorozat, a nulla hosszúságú sztring lesz visszaadva.

  • Ha $arg olyan elem vagy attribútumcsomópont, amelynek kibontott QName értéke nincs névtérben, a függvény a nulla hosszúságú sztringet adja vissza

Példák

Ez a témakör XQuery-példákat tartalmaz az AdventureWorks-adatbázis különböző XML- típusú oszlopaiban tárolt XML-példányokra.

Egy. Adott csomópont névterének URI-jának lekérése

A következő lekérdezés egy nem beírt XML-példányon van megadva. A lekérdezési kifejezés (namespace-uri(/ROOT[1])) lekéri a megadott csomópont névtér URI részét.

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

Mivel a megadott QName nem rendelkezik a névtér URI-részével, csak a helyi névvel, az eredmény egy nulla hosszúságú sztring.

A következő lekérdezés az utasítások xml oszlopban van megadva. A namespace-uri(/AWMI:root[1]/AWMI:Location[1])kifejezés az <root> elem első <Location> elemének URI-ját adja vissza.

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  

Ez az eredmény:

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

B. Névtér-uri() használata argumentum nélkül egy predikátumban

Az alábbi lekérdezés a CatalogDescription típusú XML-oszlopon van megadva. A kifejezés visszaadja az összes olyan elemcsomópontot, amelynek névterének URI-ja https://www.adventure-works.com/schemas/OtherFeatures. A névtér-uri() függvény argumentum nélkül van megadva, és a környezeti csomópontot használja.

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  

Ez részleges eredmény:

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

Az előző lekérdezésben szereplő névtér URI-jának módosítása https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain. Ezután megkapja a <ProductDescription> elem összes elemcsomópont-gyermekét, amelynek a kibontott QName névtér URI része https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain.

Megvalósítási korlátozások

Ezek a korlátozások:

  • A névtér-uri() függvény xs:sztring típusú példányokat ad vissza xs:anyURI helyett.

Lásd még:

-függvények csomópontokon
helyi név függvény (XQuery)