Specificering av ett nodtest i platssökvägen (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Ett nodtest specificerar nodtypen som valts av platssteget. Varje axel (barn, förälder, attribut eller själv) har en huvudnodtyp. För attributaxeln är huvudnodtypen attribut<.> För förälder-, barn- och självaxlar är <huvudnodtypen element>.

Anmärkning

Jokernod-testet * (till exempel child::*) stöds inte.

Nodtest: Exempel 1

Platsvägen child::Customer<väljer kundelementbarn> till kontextnoden.

I detta exempel child är axeln och Customer är nodtestet. Den huvudsakliga nodtypen för barnaxeln är <element>. Därför är nodtestet SANT om <Kundnoden> är en <elementnod> . Om kontextnoden inte har några <kundbarn> returneras en tom uppsättning noder.

Nodtest: Exempel 2

Platsvägen attribute::CustomerID väljer CustomerID-attributet för kontextnoden.

I exemplet attribute är axeln och CustomerID är nodtestet. Den huvudsakliga nodtypen för attributaxeln är <attribut.> Därför är nodtestet SANT om CustomerID är en <attributnod> . Om kontextnoden inte har något CustomerID returneras en tom uppsättning noder.

Anmärkning

I denna implementation av XPath, om ett platssteg refererar till ett <element> eller en< attributtyp> som inte är deklarerad i schemat, genereras ett fel. Detta skiljer sig från implementeringen av XPath i MSXML, som returnerar en tom noduppsättning.

Förkortad syntax för axlarna

Följande förkortade syntax för platsstigen stöds:

  • attribute:: kan förkortas till @.

    Platsvägen Customer[@CustomerID="ALFKI"] är densamma som child::Customer[attribute::CustomerID="ALFKI"].

  • child:: kan utelämnas från ett platssteg.

    Således är child standardaxeln. Platsvägen Customer/Order är densamma som child::Customer/child::Order.

  • self::node() kan förkortas till en punkt (.), och parent::node() kan förkortas till två perioder (..).