Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.