Udostępnij przez


Określanie Zaznaczanie predykaty w ścieżce lokalizacji (SQLXML 4.0)

Predykatu filtruje zestaw węzłów w odniesieniu do oś wykresu (podobna do klauzula WHERE w instrukcja SELECT).Predykat jest określona w nawiasie.Dla każdego węzła zestaw węzłów do filtrowania predykatu wyrażenie jest oceniane z tym węzłem jako węzeł kontekstu z liczby węzłów zestaw węzłów jako rozmiar kontekstu.W przypadku predykatu wyrażenie ma wartość TRUE dla tego węzła, węzeł będzie uwzględniany w wynikowym zestawie węzłów.

Wyrażenie XPath umożliwia filtrowanie oparte na pozycji.Wyrażenie predykatu oceny liczbę wybiera węzeł porządkowa.Na przykład ścieżka lokalizacji Customer[3] Zwraca wartość trzeciego odbiorcy. Takie predykaty liczbowe nie są obsługiwane.Obsługiwane są tylko predykatu wyrażeń, które zwracać wynik będący wartością logiczną.

Uwaga

Informacje o ograniczeniach ta implementacja XPath XPath i różnice między nim a Specyfikacja konsorcjum W3C zobacz Wprowadzanie za pomocą kwerendy XPath (SQLXML 4.0).

Wybór predykatu: Przykład 1

Następujące wyrażenie XPath (ścieżka lokalizacji) powoduje zaznaczenie wszystkich bieżący węzeł kontekstu <Odbiorcy> elementy podrzędne elementu ma Identyfikator klienta atrybut z wartością 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 na osi i CustomerID test węzła (PRAWDA, jeśli jest Identyfikator klienta jest atrybutem węzeł kontekstu, ponieważ <atrybut> jest to typ węzła głównego attribute oś).

Przy użyciu skróconej składni, XPath kwerendy można również określić jako:

/Customer[@CustomerID="ALFKI"]

Wybór predykatu: Przykład 2

Następujące wyrażenie XPath (ścieżka lokalizacji) powoduje zaznaczenie wszystkich bieżący węzeł kontekstu <Zamówienia> grandchildren, które mają SalesOrderID atrybut wartość 1:

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

W tym języku XPath wyrażenie, child i attribute są nazwy oś. Customer, Order, and SalesOrderID are the node tests.attribute::OrderID="1" is the predicate.

Przy użyciu skróconej składni, XPath kwerendy można również określić jako:

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

Wybór predykatu: Przykład 3

Następujące wyrażenie XPath (ścieżka lokalizacji) powoduje zaznaczenie wszystkich bieżący węzeł kontekstu <Odbiorcy> dzieci, zawierających jeden lub więcej <Nazwa kontaktu> dzieci:

child::Customer[child::ContactName]

W tym przykładzie założono, że <Nazwa kontaktu> jest podrzędność elementu <Odbiorcy> element dokumentu XML, która jest określana jako Mapowanie zorientowane na element 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 na oś i ContactName test węzła (PRAWDA, jeśli jest ContactName to <element> węzeł).

To wyrażenie zwraca tylko <Odbiorcy> element dzieci węzeł kontekstu, które mają <Nazwa kontaktu> elementy podrzędne elementu.

Przy użyciu skróconej składni, XPath kwerendy można również określić jako:

Customer[ContactName]

Wybór predykatu: Przykład 4

Wybiera następujące wyrażenie XPath <Odbiorcy> element dzieci węzeł kontekstu, które nie mają <Nazwa kontaktu> elementy podrzędne elementu:

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

W tym przykładzie założono, że <Nazwa kontaktu> jest elementem podrzędnym <Odbiorcy> element dokumentu XML oraz pole Nazwa kontaktu nie jest wymagana 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 na oś i ContactName test węzła (PRAWDA, jeśli jest ContactName to <element> węzeł).

Przy użyciu skróconej składni, XPath kwerendy można również określić jako:

Customer[not(ContactName)]

Wybór predykatu: Przykład 5

Następujące wyrażenie XPath powoduje zaznaczenie wszystkich bieżący węzeł kontekstu <Odbiorcy> elementy podrzędne, które mają Identyfikator klienta 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 na oś i CustomerID predykat (PRAWDA, jeśli jest CustomerID to <atrybut> węzeł).

Przy użyciu skróconej składni, XPath kwerendy można również określić jako:

Customer[@CustomerID]

Wybór predykatu: Przykład 6

Microsoft SQLXML 4.0 obsługuje kwerendy XPath, zawierające iloczyn krzyżowy w predykacie, jak pokazano w poniższym przykładzie:

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

Ta kwerenda powoduje zaznaczenie wszystkich nabywców z dowolnym Order dla których OrderDate jest równe ShipDate wszelkich Order.