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 quechild::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 quechild::Customer/child::Order
.self::node()
se puede abreviar en un punto (.) yparent::node()
se puede abreviar en dos puntos (..).