Przy użyciu skróconej składni w wyrażeniu Path
W przykładach zawartych w Opis wyrażeń ścieżka w XQuery wyrażeń ścieżka za pomocą składni nieskróconą.Składnia nieskróconą oś krok ścieżka wyrażenie zawiera oś nazwę i węzeł badania, oddzielone podwójny dwukropek i następuje zero lub więcej kwalifikatory kroku.
Na przykład:
child::ProductDescription[attribute::ProductModelID=19]
XQuery dla użycia w wyrażeniach ścieżka obsługuje następujące skróty:
podrzędność oś jest osią domyślne.Dlatego podrzędność:: oś można pominąć krok w wyrażenie.Na przykład /child::ProductDescription/child::Summary mogą być zapisywane jako /ProductDescription/Summary.
atrybut oś może zostać skrócona jak @.Na przykład /child::ProductDescription[attribute::ProductModelID=10] mogą być zapisywane jako /ProudctDescription[@ProductModelID=10].
A /descendant-or-self::node()/ może zostać skrócona jako / /.Na przykład /descendant-or-self::node()/child::act:telephoneNumber mogą być zapisywane jako //act:telephoneNumber.
Poprzednie kwerenda pobiera wszystkie numery telefonów, przechowywane kolumna AdditionalContactInfo w tabela Kontakt.Schemat dla AdditionalContactInfo jest zdefiniowany w sposób, który <telephoneNumber> elementu mogą występować w dowolnym miejscu dokumentu.Dlatego aby pobrać wszystkie numery telefonów, każdy węzeł musi przeszukiwać w dokumencie.Wyszukiwanie rozpoczyna się od dokumentu głównego i kontynuuje przez wszystkie węzły podrzędne.
Następująca kwerenda pobiera wszystkie numery telefonów dla określonego odbiorcy kontaktu:
SELECT AdditionalContactInfo.query(' declare namespace act="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes"; declare namespace crm="http://schemas.adventure-works.com/Contact/Record"; declare namespace ci="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo"; /descendant-or-self::node()/child::act:telephoneNumber ') as result FROM Person.Person WHERE BusinessEntityID = 291;Jeśli wyrażenie ścieżka zastąpić skróconej składni //act:telephoneNumber, pojawi się te same wyniki.
Self::node() się w kroku można jako pojedyncza kropka (.).Kropka nie jest jednak równoważne lub wymienne z self::node().
Na przykład w następującej kwerendzie użycia kropka reprezentuje wartość, a nie w węźle:
("abc", "cde")[. > "b"]Parent::node() w kroku może zostać skrócona do dwie kropki (.).