Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Returnerar namnområdes-URI:n för det QName som anges i $arg som en xs:string.
Syntax
fn:namespace-uri() as xs:string
fn:namespace-uri($arg as node()?) as xs:string
Argument
$arg
Nodnamn vars namnområdes-URI-del hämtas.
Anmärkningar
Om argumentet utelämnas är standardinställningen kontextnoden.
I SQL Server kan fn:namespace-uri() utan argument endast användas i kontexten för ett kontextberoende predikat. Mer specifikt kan den bara användas inom hakparenteser ([ ]).
Om $arg är den tomma sekvensen returneras strängen med noll längd.
Om $arg är ett element eller en attributnod vars expanderade QName inte finns i ett namnområde, returnerar funktionen strängen med noll längd
Exempel
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks-databasen.
A. Hämta namnområdes-URI för en specifik nod
Följande fråga anges mot en otypad XML-instans. Frågeuttrycket, namespace-uri(/ROOT[1]), hämtar namnområdets URI-del av den angivna noden.
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('namespace-uri(/ROOT[1])')
Eftersom det angivna QName inte har namnområdets URI-del utan bara den lokala namndelen blir resultatet en sträng med noll längd.
Följande fråga anges mot kolumnen Instruktioner som skrivits xml-. Uttrycket, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), returnerar namnområdes-URI:n för det första <Location> elementet underordnat <root>-elementet.
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
Det här är resultatet:
https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions
B. Använda namespace-uri() utan argument i ett predikat
Följande fråga anges mot xml-kolumnen CatalogDescription-typ. Uttrycket returnerar alla elementnoder vars namnområdes-URI är https://www.adventure-works.com/schemas/OtherFeatures. Funktionen namespace-uri() anges utan argument och använder kontextnoden.
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
Detta är delvis resultat:
<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>
...
Du kan ändra namnområdes-URI:n i föregående fråga till https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain. Sedan får du alla underordnade elementnoder för det <ProductDescription> element vars namnområdes-URI-del av det expanderade QName är https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain.
Implementeringsbegränsningar
Det här är begränsningarna:
- Funktionen namespace-uri() returnerar instanser av typen xs:string i stället för xs:anyURI.