Compartir a través de


Especificar una prueba de nodo en la ruta de acceso de ubicación (SQLXML 4.0)

Se aplica a: SQL ServerAzure SQL Database

Una prueba de nodo especifica el tipo de nodo seleccionado por el paso de ubicación. Cada eje (secundario, primario, atributo o propio) tiene un tipo de nodo principal. Para el eje de atributos, el tipo de nodo principal es< atributo>. Para los ejes primario, secundario y auto , el tipo de nodo principal es <el elemento> .

Nota:

La prueba de nodo de carácter comodín * (por ejemplo, child::*) no se admite.

Prueba de nodo: ejemplo 1

La ruta child::Customer de acceso de ubicación selecciona <Elementos secundarios del elemento Customer> del nodo de contexto.

En este ejemplo, child es el eje y Customer es la prueba de nodo. El tipo de nodo principal para el eje secundario es <el elemento> . Por lo tanto, la prueba de nodo es TRUE si el nodo Customer> es un< nodo de elemento>.< Si el nodo de contexto no tiene elementos <secundarios customer> , se devuelve un conjunto vacío de nodos.

Prueba de nodo: Ejemplo 2

La ruta attribute::CustomerID de acceso de ubicación selecciona el atributo CustomerID del nodo de contexto.

En el ejemplo, attribute es el eje y CustomerID es la prueba de nodo. El tipo de nodo principal del eje de atributos es <attribute>. Por lo tanto, la prueba del nodo es TRUE si CustomerID es un< nodo de atributo>. Si el nodo de contexto no tiene CustomerID, se devuelve un conjunto vacío de nodos.

Nota:

En esta implementación de XPath, si un paso de ubicación hace referencia a un elemento o a un <<tipo de atributo> que no se declara en el esquema, se genera un error.> Este comportamiento es diferente al de la implementación de XPath en MSXML, que devuelve un conjunto de nodos vacío.

Sintaxis abreviada para los ejes

Se admite la sintaxis abreviada siguiente para la ruta de acceso de ubicación:

  • attribute:: se puede abreviar como @.

    La ruta de acceso de ubicación Customer[@CustomerID="ALFKI"] es la misma que child::Customer[attribute::CustomerID="ALFKI"].

  • child:: se puede omitir en un paso de ubicación.

    Por lo tanto, el elemento secundario es el eje predeterminado. La ruta de acceso de ubicación Customer/Order es la misma que child::Customer/child::Order.

  • self::node() se puede abreviar en un punto (.) y parent::node() se puede abreviar en dos puntos (..).