Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vrátí identifikátor URI oboru názvů QName zadaný v $arg jako xs:string.
Syntax
fn:namespace-uri() as xs:string
fn:namespace-uri($arg as node()?) as xs:string
Argumenty
$arg
Název uzlu, jehož část URI oboru názvů se načte.
Poznámky
Pokud argument vynecháte, výchozí hodnota je kontextový uzel.
V SQL Serveru fn:namespace-uri() bez argumentu lze použít pouze v kontextu predikátu závislého na kontextu. Konkrétně lze použít pouze vnitřní závorky ([ ]).
Pokud $arg je prázdná sekvence, vrátí se řetězec nulové délky.
Pokud $arg je uzel elementu nebo atributu, jehož rozbalený název QName není v oboru názvů, vrátí funkce řetězec nulové délky.
Příklady
Toto téma obsahuje příklady XQuery pro instance XML uložené v různých xml sloupce typu v databázi AdventureWorks.
A. Načtení identifikátoru URI oboru názvů konkrétního uzlu
Následující dotaz je určen pro netypovou instanci XML. Výraz dotazu namespace-uri(/ROOT[1])
načte část identifikátoru URI oboru názvů zadaného uzlu.
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('namespace-uri(/ROOT[1])')
Vzhledem k tomu, že zadaný název QName nemá část identifikátoru URI oboru názvů, ale pouze část místního názvu, je výsledkem řetězec nulové délky.
Následující dotaz se zadává pro sloupec xml Typu Instrukce. Výraz, namespace-uri(/AWMI:root[1]/AWMI:Location[1])
, vrátí identifikátor URI oboru názvů prvního elementu <Location
> podřízený prvek <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
Toto je výsledek:
https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions
B. Použití oboru názvů-uri() bez argumentu v predikátu
Následující dotaz je určen pro sloupec Xml typu CatalogDescription. Výraz vrátí všechny uzly prvků, jejichž identifikátor URI oboru názvů je https://www.adventure-works.com/schemas/OtherFeatures
. Obor názvůuri() funkce je zadán bez argumentu a používá kontextový uzel.
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
Jedná se o částečný výsledek:
<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>
...
Identifikátor URI oboru názvů v předchozím dotazu můžete změnit na https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain
. Pak obdržíte všechny podřízené prvky uzlu elementu <ProductDescription
> element, jehož URI oboru názvů část rozšířeného QName je https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain
.
Omezení implementace
Toto jsou omezení:
- Funkce namespace-uri() vrátí instance typu xs:string místo xs:anyURI.