Określanie zaznaczenia predykaty w ścieżce lokalizacji (SQLXML 4.0)
Predykatu filtruje zestaw węzłów w odniesieniu do oś (podobna do klauzula WHERE w instrukcja SELECT).Orzeczenie jest określona w nawiasach kwadratowych.Dla każdego węzła w węźle -zestaw do filtrowania, predykatu wyrażenie jest sprawdzane z węzeł jako węzeł kontekstu z liczby węzłów w węźle -zestaw jako rozmiar kontekstu.Predykatu wyrażenie ma wartość TRUE dla tego węzła, węzeł jest uwzględniane w wynikowym węzeł -zestaw.
Wyrażenie XPath umożliwia filtrowanie na podstawie pozycji.Wyrażenie predykatu oceny na liczbę wybiera węzeł porządkowych.Na przykład ścieżka lokalizacji Customer[3] zwraca trzeciego nabywcy.Takie predykaty liczbowe nie są obsługiwane.Tylko predykatu wyrażeń, które zwracają wartość logiczna wynik są obsługiwane.
Ostrzeżenie
Informacje o ograniczeniach ta implementacja XPath XPath i różnice między nim a specyfikacji W3C, zobacz Wprowadzenie do korzystania z kwerend XPath (SQLXML 4.0).
Predykat zaznaczenia: Przykład 1
Następujące wyrażenie XPath (ścieżka lokalizacji) powoduje zaznaczenie bieżącego węzła kontekstowego wszystkie <klienta> elementy podrzędne elementu, które mają IDklienta atrybut na wartość ALFKI:
/child::Customer[attribute::CustomerID="ALFKI"]
In this XPath query, child and attribute are axis names.Customer is the node test (TRUE if Customer is an <element node>, because <element> is the principal node type for the child axis).attribute::CustomerID="ALFKI" is the predicate.W predykacie attribute jest osią i CustomerID jest test węzłów (PRAWDA, jeśli IDklienta jest atrybut węzeł kontekstu, ponieważ <atrybut> jest typem węzła głównego attribute oś).
Używając składni skróconej, kwerenda XPath można również określić jako:
/Customer[@CustomerID="ALFKI"]
Predykat zaznaczenia: Przykład 2
Następujące wyrażenie XPath (ścieżka lokalizacji) powoduje zaznaczenie bieżącego węzła kontekstowego wszystkie <zamówienia> grandchildren, które mają SalesOrderID atrybut na wartość 1:
/child::Customer/child::Order[attribute::SalesOrderID="1"]
W tym XPath wyrażenie, child i attribute są nazwy oś.Customer, Order, and SalesOrderID are the node tests.attribute::OrderID="1" is the predicate.
Używając składni skróconej, kwerenda XPath można również określić jako:
/Customer/Order[@SalesOrderID="1"]
Predykat zaznaczenia: Przykład 3
Następujące wyrażenie XPath (ścieżka lokalizacji) powoduje zaznaczenie bieżącego węzła kontekstowego wszystkie <klienta> dzieci, które mają jeden lub więcej <przedstawiciel> dzieci:
child::Customer[child::ContactName]
W tym przykładzie założono, że <przedstawiciel> jest podrzędność element <klienta> element dokumentu XML, który jest nazywany Mapowanie elementu wyśrodkowany na w adnotacjami schematu XSD.
In this XPath expression, child is the axis name.Customer is the node test (TRUE if Customer is an <element> node, because <element> is the principal node type for child axis).child::ContactName is the predicate.W predykacie child jest oś i ContactName jest test węzłów (PRAWDA, jeśli ContactName jest <elementu> węzła).
To wyrażenie zwraca tylko <klienta> Węzeł kontekstu, który ma elementy podrzędne elementu <przedstawiciel> elementy podrzędne elementu.
Używając składni skróconej, kwerenda XPath można również określić jako:
Customer[ContactName]
Predykat zaznaczenia: Przykład 4
Następujące wyrażenie XPath wybiera <klienta> elementy podrzędne elementu węzła kontekstowego, które nie mają <przedstawiciel> elementy podrzędne elementu:
child::Customer[not(child::ContactName)]
W tym przykładzie założono, że <przedstawiciel> jest podrzędność element <klienta> element dokumentu XML, a pole przedstawiciel nie jest wymagany w bazie danych.
In this example, child is the axis.Customer is the node test (TRUE if Customer is an <element> node).not(child::ContactName) is the predicate.W predykacie child jest oś i ContactName jest test węzłów (PRAWDA, jeśli ContactName jest <elementu> węzła).
Używając składni skróconej, kwerenda XPath można również określić jako:
Customer[not(ContactName)]
Predykat zaznaczenia: Przykład 5
Następujące wyrażenie XPath wybiera z bieżącego węzła kontekstowego wszystkie <klienta> dzieci, które mają IDklienta atrybut:
child::Customer[attribute::CustomerID]
In this example, child is the axis and Customer is node test (TRUE if Customer is an <element> node).attribute::CustomerID is the predicate.W predykacie attribute jest oś i CustomerID jest orzeczenie (PRAWDA, jeśli CustomerID jest <atrybut> węzła).
Używając składni skróconej, kwerenda XPath można również określić jako:
Customer[@CustomerID]
Predykat zaznaczenia: Przykład 6
Microsoft SQLXML 4.0 obsługuje kwerendy XPath, zawierające iloczyn krzyżowy w predykacie, jak pokazano w następującym przykładzie:
Customer[Order/@OrderDate=Order/@ShipDate]
Ta kwerenda wybiera wszystkich klientów z dowolnym Order dla którego OrderDate jest równe ShipDate wszelkich Order.