Dela via


Sökvägsuttryck (XQuery)

gäller för:SQL Server

XQuery-sökvägsuttryck letar upp noder, till exempel element, attribut och textnoder, i ett dokument. Resultatet av ett sökvägsuttryck sker alltid i dokumentordning utan dubblettnoder i resultatsekvensen. När du anger en sökväg kan du använda antingen oförkortad eller förkortad syntax. Följande information fokuserar på den icke-förkortade syntaxen. Förkortad syntax beskrivs senare i det här avsnittet.

Not

Eftersom exempelfrågorna i det här avsnittet anges mot kolumnerna xml- typ, CatalogDescription och Instruktioneri tabellen ProductModel bör du bekanta dig med innehållet och strukturen i XML-dokumenten som lagras i dessa kolumner.

Ett sökvägsuttryck kan vara relativt eller absolut. Följande är en beskrivning av båda dessa:

  • Ett relativt sökvägsuttryck består av ett eller flera steg avgränsade med ett eller två snedstreck (/ eller //). Till exempel är child::Features ett relativt sökvägsuttryck, där Child endast refererar till underordnade noder i kontextnoden. Det här är den nod som bearbetas för närvarande. Uttrycket hämtar <Funktioner> elementnodens underordnade elementnod till kontextnoden.

  • Ett absolut sökvägsuttryck börjar med ett eller två snedstreck (/ eller //), följt av en valfri, relativ sökväg. Den första snedstrecksmarkeringen i uttrycket, /child::ProductDescription, anger till exempel att det är ett absolut sökvägsuttryck. Eftersom ett snedstreck i början av ett uttryck returnerar dokumentrotnoden i kontextnoden returnerar uttrycket alla <ProductDescription> elementnodens underordnade elementnod i dokumentroten.

    Om en absolut sökväg börjar med ett enda snedstreck kan det bero på att den följs av en relativ sökväg. Om du bara anger ett enda snedstreck returnerar uttrycket kontextnodens rotnod. För en XML-datatyp är detta dess dokumentnod.

Ett typiskt sökvägsuttryck består av steg. Det absoluta sökvägsuttrycket /child::ProductDescription/child::Summaryinnehåller till exempel två steg avgränsade med ett snedstreck.

  • Det första steget hämtar <ProductDescription> elementnodens underordnade element i dokumentroten.

  • Det andra steget hämtar <Sammanfattning> elementnod underordnade för varje hämtad <ProductDescription> elementnod, som i sin tur blir kontextnoden.

Ett steg i ett sökvägsuttryck kan vara ett axelsteg eller ett allmänt steg.

Axelsteg

Ett axelsteg i ett sökvägsuttryck har följande delar.

axel
Definierar rörelseriktningen. Ett axelsteg i ett sökvägsuttryck som börjar vid kontextnoden och navigerar till de noder som kan nås i den riktning som anges av axeln.

nodtest
Anger vilken nodtyp eller nodnamn som ska väljas.

Noll eller fler valfria predikat
Filtrerar noderna genom att välja vissa och ta bort andra.

I följande exempel används ett axelsteg i sökvägsuttrycken:

  • Det absoluta sökvägsuttrycket, /child::ProductDescription, innehåller bara ett steg. Den anger en axel (child) och ett nodtest (ProductDescription).

  • Det relativa sökvägsuttrycket child::ProductDescription/child::Featuresinnehåller två steg avgränsade med ett snedstreck. Båda stegen anger en underordnad axel. ProductDescription och Funktioner är nodtester.

  • Det relativa sökvägsuttrycket child::root/child::Location[attribute::LocationID=10]innehåller två steg avgränsade med ett snedstreck. Det första steget anger en axel (child) och ett nodtest (root). Det andra steget anger alla tre komponenterna i ett axelsteg: en axel (underordnad), ett nodtest (Location) och ett predikat ([attribute::LocationID=10]).

Mer information om komponenterna i ett axelsteg finns i Ange axel i ett steg för sökvägsuttryck, Ange nodtest i ett steg för sökvägsuttryckoch Ange predikat i ett steg för sökvägsuttryck.

Allmänt steg

Ett allmänt steg är bara ett uttryck som måste utvärderas till en sekvens med noder.

XQuery-implementeringen i SQL Server stöder ett allmänt steg som det första steget i ett sökvägsuttryck. Här följer exempel på sökvägsuttryck som använder allmänna steg.

(/a, /b)/c  
id(/a/b)  

Mer information om ID-funktionen finns i ID-funktion (XQuery).

I det här avsnittet

Ange axel i ett steg för sökvägsuttryck
Beskriver hur du arbetar med axelsteget i ett sökvägsuttryck.

Ange nodtest i ett steg för sökvägsuttryck
Beskriver hur du arbetar med nodtester i ett sökvägsuttryck.

Ange predikat i ett steg för sökvägsuttryck
Beskriver hur du arbetar med predikat i ett sökvägsuttryck.

Använda förkortad syntax i ett sökvägsuttryck
Beskriver hur du arbetar med förkortad syntax i ett sökvägsuttryck.