Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Geeft de naamruimte-URI van de QName die in $arg is gespecificeerd terug als een xs:string.
Syntax
fn:namespace-uri() as xs:string
fn:namespace-uri($arg as node()?) as xs:string
Arguments
$arg
Knoopnaam waarvan het URI-deel in de naamruimte wordt opgehaald.
Remarks
Als het argument wordt weggelaten, is de standaard de contextknoop.
In SQL Server kan fn:namespace-uri() zonder argument alleen worden gebruikt in de context van een contextafhankelijk predicaat. Specifiek kan het alleen binnen haakjes worden gebruikt ([ ]).
Als $arg de lege reeks is, wordt de tekenreeks met lengte nul geretourneerd.
Als $arg een element of attribuutknoop is waarvan de expanded-QName zich niet in een naamruimte bevindt, geeft de functie de string van nullengte terug
Examples
Dit onderwerp bevat XQuery-voorbeelden voor XML-exemplaren die zijn opgeslagen in verschillende xml- typekolommen in de AdventureWorks-database.
Eén. Haal naamruimte-URI van een specifieke knoop op
De volgende query wordt opgegeven voor een niet-getypt XML-exemplaar. De queryexpressie, namespace-uri(/ROOT[1]), haalt het namespace-URI-gedeelte van de gespecificeerde knoop op.
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('namespace-uri(/ROOT[1])')
Omdat de gespecificeerde QName niet het naamruimte-URI-gedeelte heeft, maar alleen het lokale naamgedeelte, is het resultaat een string van nullengte.
De volgende query is gespecificeerd tegen de kolom xml getypeerd door instructies. De expressie, namespace-uri(/AWMI:root[1]/AWMI:Location[1]), geeft de naamruimte-URI terug van het eerste <Location> elementkind van het <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
Dit is het resultaat:
https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions
B. Namespace-uri() zonder argument gebruiken in een predicaat
De volgende query is gespecificeerd op basis van de door CatalogDescription getypeerde xml-kolom. De expressie geeft alle elementknooppunten terug waarvan de naamruimte-URI is https://www.adventure-works.com/schemas/OtherFeatures. De namespace-uri() -functie wordt zonder argument gespecificeerd en gebruikt de contextknoop.
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
Dit is een gedeeltelijk resultaat:
<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>
...
Je kunt de naamruimte-URI in de vorige query veranderen naar https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain. Je ontvangt dan alle elementknoop-kinderen van het <ProductDescription> element waarvan het namespace-URI-deel van de uitgebreide QName is.https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain
Implementatiebeperkingen
Dit zijn de beperkingen:
- De namespace-uri() -functie geeft instanties van type xs:string terug in plaats van xs:anyURI.