Specificering av urvalspredikat i platsvägen (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Ett predikat filtrerar en nodmängd med avseende på en axel (liknande en WHERE-klausul i ett SELECT-sats). Predikatet anges inom parenteser. För varje nod i nodmängden som ska filtreras utvärderas predikatuttrycket med den noden som kontextnod, med antalet noder i nodmängden som kontextstorlek. Om predikatuttrycket utvärderas till SANT för den noden, inkluderas noden i den resulterande noduppsättningen.

XPath tillåter också positionsbaserad filtrering. Ett predikatuttryck som utvärderar till ett tal väljer den ordinala noden. Till exempel returnerar platsvägen Customer[3] den tredje kunden. Sådana numeriska predikat stöds inte. Endast predikatuttryck som returnerar ett booleskt resultat stöds.

Anmärkning

För information om begränsningarna i denna XPath-implementation av XPath och skillnaderna mellan den och W3C-specifikationen, se Introduktion till användning av XPath-frågor (SQLXML 4.0).

Urvalspredikat: Exempel 1

Följande XPath-uttryck (platsväg) väljer från den aktuella kontextnoden alla <Customer-elementbarn> som har CustomerID-attributet med värdet ALFKI:

/child::Customer[attribute::CustomerID="ALFKI"]  

I denna XPath-fråga child är och attribute axelnamn. Customer är nodtestet (SANT om Customer är en <elementnod>, eftersom <elementet> är huvudnodtypen för axeln child ). attribute::CustomerID="ALFKI" är predikatet. I predikatet attribute är axeln och CustomerID är nodtestet (SANT om CustomerID är ett attribut för kontextnoden, eftersom <attributet> är huvudnodtypen av attributaxel ).

Med hjälp av den förkortade syntaxen kan XPath-frågan också specificeras som:

/Customer[@CustomerID="ALFKI"]  

Urvalspredikat: Exempel 2

Följande XPath-uttryck (platsväg) väljer från den aktuella kontextnoden alla <Order-barnbarn> som har attributet SalesOrderID med värdet 1:

/child::Customer/child::Order[attribute::SalesOrderID="1"]  

I detta XPath-uttryck child är och attribute axelnamnen. Customer, Order, och SalesOrderID är nodtesterna. attribute::OrderID="1" är predikatet.

Med hjälp av den förkortade syntaxen kan XPath-frågan också specificeras som:

/Customer/Order[@SalesOrderID="1"]  

Urvalspredikat: Exempel 3

Följande XPath-uttryck (platsväg) väljer från den aktuella kontextnoden alla <kundbarn> som har ett eller flera <ContactName-barn> :

child::Customer[child::ContactName]  

Detta exempel antar att <ContactName är ett barnelement till Customer-elementet><> i XML-dokumentet, vilket kallas elementcentrerad mappning i ett annoterat XSD-schema.

I detta XPath-uttryck child är axelns namn. Customer är nodtestet (SANT om Customer är en <elementnod> , eftersom <element> är huvudnodtypen för child axeln). child::ContactName är predikatet. I predikatet child är axeln och ContactName är nodtestet (SANT om ContactName är en <elementnod> ).

Detta uttryck returnerar endast <de Kund-elementbarn> till kontextnoden som har <ContactName-elementbarn> .

Med hjälp av den förkortade syntaxen kan XPath-frågan också specificeras som:

Customer[ContactName]  

Urvalspredikat: Exempel 4

Följande XPath-uttryck väljer <Kund-elementbarn> till kontextnoden som inte har <ContactName-elementbarn> :

child::Customer[not(child::ContactName)]  

Detta exempel antar att <ContactName> är ett barnelement till Kund-elementet <> i XML-dokumentet, och att ContactName-fältet inte krävs i databasen.

I detta exempel child är axeln. Customer är nodtestet (SANT om Customer är en <elementnod> ). not(child::ContactName) är predikatet. I predikatet child är axeln och ContactName är nodtestet (SANT om ContactName är en <elementnod> ).

Med hjälp av den förkortade syntaxen kan XPath-frågan också specificeras som:

Customer[not(ContactName)]  

Urvalspredikat: Exempel 5

Följande XPath-uttryck väljer från den aktuella kontextnoden alla <Kundbarn> som har attributet CustomerID :

child::Customer[attribute::CustomerID]  

I detta exempel child är axeln och Customer är nodtestet (SANT om Customer är en <elementnod> ). attribute::CustomerID är predikatet. I predikatet attribute är axeln och CustomerID predikatet (SANT om CustomerID är en< attributnod>).

Med hjälp av den förkortade syntaxen kan XPath-frågan också specificeras som:

Customer[@CustomerID]  

Urvalspredikat: Exempel 6

Microsoft SQLXML 4.0 inkluderar stöd för XPath-frågor som innehåller en korsprodukt i predikatet, som visas i följande exempel:

Customer[Order/@OrderDate=Order/@ShipDate]  

Denna fråga väljer alla kunder med ett för vilket Order som är OrderDate lika med av ShipDate varje Order.

Se även

Introduktion till annoterade XSD-scheman (SQLXML 4.0)
Klientsida XML-formatering (SQLXML 4.0)