Udostępnij przez


Przy użyciu skróconej składni w wyrażeniu ścieżka

Wszystkie przykłady w Opis wyrażenia ścieżka w XQuery używać nieskróconą składni wyrażenia ścieżka.Składnia nieskróconą oś krok w ścieżce wyrażenie zawiera oś nazwy i węzeł badania, oddzielając podwójny dwukropek i następuje zero lub więcej kwalifikatory kroku.

Na przykład:

child::ProductDescription[attribute::ProductModelID=19]

XQuery obsługuje następujące skróty do użycia w wyrażeniach ścieżka:

  • The podrzędność oś is the default oś.Dlatego też podrzędność:: w kroku w wyrażeniu można pominąć oś. Na przykład /child::ProductDescription/child::Summary mogą być zapisywane jako /ProductDescription/Summary.

  • An atrybut oś can be abbreviated as @.Na przykład /child::ProductDescription[attribute::ProductModelID=10] mogą być zapisywane jako /ProudctDescription[@ProductModelID=10].

  • A / descendant-or-self::node() / może być podana 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 zdefiniowana w sposób, <telephoneNumber> element może pojawiać się w dowolnym miejscu w dokumencie. W związku z tym aby pobrać wszystkie numery telefonów, użytkownik musi przeszukiwać każdy węzeł w dokumencie.Wyszukiwanie rozpoczyna się w katalogu głównym dokumentu 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.Contact           
     WHERE ContactID=1           
    

    Jeśli wyrażenie ścieżka zastąpić skróconej składni //act:telephoneNumber, zostanie wyświetlony ten sam rezultat.

  • The self::node() in a step can be abbreviated to a single dot (.).Jednak kropka nie jest równoważne lub zamienne Self::node().

    Na przykład w następującej kwerendzie stosowania kropka reprezentuje wartość, a nie w węźle:

    ("abc", "cde")[. > "b"]
    
  • The parent::node() in a step can be abbreviated to a double dot (..).