Sdílet prostřednictvím


Specifikace testu uzlu v cestě k umístění (SQLXML 4.0)

platí pro:SQL Serverazure SQL Database

Test uzlu specifikuje typ uzlu vybraný krokem polohy. Každá osa (potomek, rodič,atribut nebo ) má hlavní typ uzlu. Pro atributovou osu je <hlavním typem uzlu atribut.> Pro osu rodiče, potomka a vlastní je hlavním typem <uzlu element>.

Poznámka:

Test divokého uzlu * (například child::*) není podporován.

Test uzlů: Příklad 1

Cesta child::Customer k umístění vybírá <potomky prvků zákazníka> kontextového uzlu.

V tomto příkladu child je osa a Customer je test uzlu. Hlavním typem uzlu pro podosuje< element>. Proto je test uzlu PRAVDIVÝ, pokud je zákaznický <>uzel elementem<>. Pokud kontextový uzel nemá <žádné děti zákazníků> , vrátí se prázdná sada uzlů.

Test uzlů: Příklad 2

Cesta attribute::CustomerID k umístění vybírá atribut CustomerID kontextového uzlu.

V příkladu attribute je osa a CustomerID je test uzlu. Hlavním typem uzlu osy atributuje< atribut.> Proto je test uzlu PRAVDIVÝ, pokud je CustomerIDatributovým> uzlem<. Pokud kontextový uzel nemá CustomerID, vrátí se prázdná sada uzlů.

Poznámka:

V této implementaci XPath, pokud krok umístění odkazuje na prvek<> nebo <typ atributu>, který není ve schématu deklarován, vznikne chyba. To se liší od implementace XPath v MSXML, která vrací prázdnou sadu uzlů.

Zkrácená syntax pro osy

Podporuje se následující zkrácená syntaxe pro cestu k lokalizaci:

  • attribute:: lze zkrátit na @.

    Cesta Customer[@CustomerID="ALFKI"] k umístění je stejná jako .child::Customer[attribute::CustomerID="ALFKI"]

  • child:: lze vynechat z kroku umístění.

    Tedy výchozí osa je potomek . Cesta Customer/Order k umístění je stejná jako .child::Customer/child::Order

  • self::node() lze zkrátit na jednu tečku (.), a parent::node() lze zkrátit na dvě tečky (..).