Delen via


Het specificeren van een knooptest in het locatiepad (SQLXML 4.0)

Van toepassing op:SQL ServerAzure SQL Database

Een knooppunttest specificeert het knooppunttype dat door de locatiestap wordt gekozen. Elke as (kind, ouder, attribuut of zelf) heeft een hoofdknooptype. Voor de attribuutas is <het hoofdknooptype attribuut>. Voor de ouder-, kind- en zelfassen is <het hoofdknooptype element>.

Opmerking

De wildcard-nodetest * (bijvoorbeeld child::*) wordt niet ondersteund.

Knooptest: Voorbeeld 1

Het locatiepad child::Customer selecteert <de kinderen van het klantelement> van de contextknoop.

In dit voorbeeld child is de as en Customer is de knooppunttest. Het hoofdknooptype voor de kindas is <element>. Daarom is de knooppunttest WAAR als de <Customer-knoop> een <elementknoop> is. Als de contextknoop geen <Klantkinderen> heeft, wordt een lege set knopen teruggegeven.

Knooptest: Voorbeeld 2

Het locatiepad attribute::CustomerID selecteert het CustomerID-attribuut van de contextknoop.

In het voorbeeld attribute is de as en CustomerID is de knooptest. Het hoofdknooptype van de attribuutas is <attribuut>. Daarom is de node-test WAAR als CustomerID een <attribuutknoop> is. Als de contextknoop geen CustomerID heeft, wordt een lege set knopen teruggegeven.

Opmerking

In deze implementatie van XPath wordt een foutmelding gegenereerd als een locatiestap verwijst naar een <element> of een <attribuuttype> dat niet in het schema is gedeclareerd. Dit verschilt van de implementatie van XPath in MSXML, die een lege node-set teruggeeft.

Afgekorte syntaxis voor de assen

De volgende afgekorte syntaxis voor het locatiepad wordt ondersteund:

  • attribute:: kan worden afgekort tot @.

    Het locatiepad Customer[@CustomerID="ALFKI"] is hetzelfde als child::Customer[attribute::CustomerID="ALFKI"].

  • child:: kan worden weggelaten in een locatiestap.

    Dus kind is de standaardas. Het locatiepad Customer/Order is hetzelfde als child::Customer/child::Order.

  • self::node() kan worden afgekort tot één periode (.), en parent::node() kan worden afgekort tot twee periodes (..).