Udostępnij za pośrednictwem


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.