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
Dotaz XQuery se skládá z prologu a těla. XQuery prolog je série deklarací a definic, které společně vytvářejí potřebné prostředí pro zpracování dotazů. V SQL Server může prolog XQuery obsahovat deklarace jmenného prostoru. Tělo XQuery se skládá ze sekvence výrazů, které určují zamýšlený výsledek dotazu.
Například následující XQuery je specifikován ve sloupci Instructions v xml type, který ukládá výrobní instrukce jako XML. Dotaz získává výrobní instrukce pro umístění 10pracovního centra. Metoda query()xml datového typu se používá ke specifikaci XQuery.
SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
/AWMI:root/AWMI:Location[@LocationID=10]
') AS Result
FROM Production.ProductModel
WHERE ProductModelID=7
Všimněte si následujících věcí z předchozího dotazu:
Prolog XQuery obsahuje deklaraci prefixu jmenného prostoru (AWMI),
(namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";.Klíčové
declare namespaceslovo definuje prefix jmenného prostoru, který se používá později v těle dotazu./AWMI:root/AWMI:Location[@LocationID="10"]je tělo dotazu.
Deklarace jmenného prostoru
Deklarace jmenného prostoru definuje prefix a přiřazuje jej k URI jmenného prostoru, jak je ukázáno v následujícím dotazu. V dotazu je CatalogDescription sloupec typu xml .
Při zadávání XQuery vůči tomuto sloupci dotazovací prolog specifikuje declare namespace deklaraci, která přiřadí prefix PD, product description, k URI jmenného prostoru. Tato předpona se pak používá v těle dotazu místo URI jmenného prostoru. Uzly ve výsledném XML jsou v jmenném prostoru spojeném s URI jmenného prostoru.
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/PD:ProductDescription/PD:Summary
') as Result
FROM Production.ProductModel
where ProductModelID=19
Pro zlepšení čitelnosti dotazů můžete deklarovat jmenné prostory pomocí WITH XMLNAMESPACES místo deklarace prefixů a vazeb jmenného prostoru v prologu dotazu pomocí .declare namespace
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS PD)
SELECT CatalogDescription.query('
/PD:ProductDescription/PD:Summary
') as Result
FROM Production.ProductModel
where ProductModelID=19
Pro více informací viz Přidat jmenné prostory do dotazů pomocí S XMLNAMESPACES.
Deklarace výchozího jmenného prostoru
Místo deklarace prefixu jmenného prostoru pomocí declare namespace deklarace můžete tuto deklaraci declare default element namespace použít k navázání výchozího jmenného prostoru pro názvy prvků. V tomto případě nespecifikujete žádnou předponu.
V následujícím příkladu výraz cesty v těle dotazu nespecifikuje prefix jmenného prostoru. Ve výchozím nastavení všechny názvy prvků patří do výchozího jmenného prostoru určeného v prologu.
SELECT CatalogDescription.query('
declare default element namespace "https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/ProductDescription/Summary
') as Result
FROM Production.ProductModel
WHERE ProductModelID=19
Výchozí jmenný prostor můžete deklarovat pomocí WITH XMLNAMESPACES:
WITH XMLNAMESPACES (DEFAULT 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription')
SELECT CatalogDescription.query('
/ProductDescription/Summary
') as Result
FROM Production.ProductModel
WHERE ProductModelID=19