XQuery prologu
Kwerenda XQuery składa się z prologu i treści.XQuery prolog to seria deklaracji i definicje, które razem utworzyć środowisko wymagane dla przetwarzania kwerend.W programie SQL Server prologu XQuery może zawierać deklaracje obszaru nazw.Treść XQuery składa się z sekwencji wyrażeń określających wynik kwerendy zamierzone.
Na przykład podano następujące XQuery przeciwko instrukcje kolumna z xml typ, który przechowuje instrukcje produkcji jako XML.Kwerenda pobiera instrukcje produkcji dla lokalizacji pracy Centrum 10.query() metoda xml typ danych jest używany do określenia 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
Poniższe z poprzedniej kwerendy:
XQuery prolog obejmuje deklaracja obszaru nazw prefiksu (AWMI), (namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";.
declare namespace Słowa kluczowego definiuje prefiks obszaru nazw, który jest używany w dalszej części ciała kwerendy.
/AWMI:root/AWMI:Location[@LocationID="10"] jest organem kwerendy.
Deklaracje obszaru nazw
Deklaracja obszaru nazw definiuje prefiks i kojarzy ją z obszaru nazw URI, jak pokazano w następującej kwerendzie.W kwerendzie CatalogDescription jest xml typu kolumna.
Określając XQuery przeciwko tej kolumna, określa prologu kwerendy declare namespace deklaracja skojarzyć prefiks PD, opis produktu, z obszarem nazw URI.Ten prefiks jest następnie używana w treści kwerendy zamiast identyfikatora URI obszaru nazw.Węzły w wynikowym pliku XML są w obszarze nazw, skojarzone z identyfikatorem URI obszaru nazw.
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
Aby poprawić czytelność kwerendy, można zadeklarować obszarów nazw przy użyciu zamiast deklarowania prefiksu i obszaru nazw Z XMLNAMESPACES powiązanie w prologu kwerendy za 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
Aby uzyskać więcej informacji zobacz temat, Dodawanie nazw przy użyciu XMLNAMESPACES.
Deklaracja obszaru nazw domyślnych
Zamiast deklarowania prefiks obszaru nazw przy użyciu declare namespace deklaracja, można użyć declare default element namespace deklaracja powiązać domyślny obszar nazw dla nazwy elementu.W tym przypadek nie należy określać żadnych prefiks.
W poniższym przykładzie wyrażenie ścieżka w treści kwerendy nie określać prefiks obszaru nazw.Domyślnie wszystkie nazwy elementów należą do określonej w prologu domyślny obszar nazw.
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
Domyślny obszar nazw można zadeklarować, korzystając Z 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