Compartir a través de


Especificar predicados de selección en la ruta de acceso de ubicación (SQLXML 4.0)

Se aplica a: SQL ServerAzure SQL Database

Un predicado filtra un conjunto de nodos con respecto a un eje (similar a una cláusula WHERE en una instrucción SELECT). El predicado se especifica entre corchetes. Para cada nodo del conjunto de nodos que se va a filtrar, la expresión de predicado se evalúa con ese nodo como el nodo de contexto, con el número de nodos del conjunto de nodos como tamaño de contexto. Si la expresión de predicado se evalúa como TRUE para ese nodo, el nodo se incluye en el conjunto de nodos resultante.

XPath también permite el filtrado basado en posición. Una expresión de predicado que se evalúa como un número selecciona ese nodo ordinal. Por ejemplo, la ruta de acceso de la ubicación Customer[3] devuelve el tercer cliente. No se admiten tales predicados numéricos. Solo se admiten expresiones de predicado que devuelven un resultado Booleano.

Nota:

Para obtener información sobre las limitaciones de esta implementación de XPath de XPath y las diferencias entre ella y la especificación W3C, vea Introduction to Using XPath Queries (SQLXML 4.0).

Predicado de selección: ejemplo 1

La siguiente expresión XPath (ruta de acceso de ubicación) selecciona en el nodo de contexto actual todos los <elementos secundarios del elemento Customer> que tienen el atributo CustomerID con el valor de ALFKI:

/child::Customer[attribute::CustomerID="ALFKI"]  

En esta consulta XPath, child y attribute son nombres de eje. Customeres la prueba de nodo (TRUE si Customer es un <nodo> de elemento, porque< el elemento> es el tipo de nodo principal para el child eje). attribute::CustomerID="ALFKI" es el predicado. En el predicado, attribute es el eje y CustomerID es la prueba de nodo (TRUE si CustomerID es un atributo del nodo de contexto, ya que< el atributo> es el tipo de nodo principal del eje de atributos).

Con la sintaxis abreviada, la consulta XPath también se puede especificar como:

/Customer[@CustomerID="ALFKI"]  

Predicado de selección: ejemplo 2

La siguiente expresión XPath (ruta de acceso de ubicación) selecciona en el nodo de contexto actual todos los <nietos Order> que tienen el atributo SalesOrderID con el valor 1:

/child::Customer/child::Order[attribute::SalesOrderID="1"]  

En esta expresión XPath, child y attribute son los nombres del eje. Customer, Order y SalesOrderID son las pruebas de nodo. attribute::OrderID="1" es el predicado.

Con la sintaxis abreviada, la consulta XPath también se puede especificar como:

/Customer/Order[@SalesOrderID="1"]  

Predicado de selección: ejemplo 3

La siguiente expresión XPath (ruta de acceso de ubicación) selecciona en el nodo de contexto actual todos los elementos secundarios Customer> que tienen uno o varios< elementos secundarios ContactName>:<

child::Customer[child::ContactName]  

En este ejemplo se supone que ContactName >< es un elemento secundario del <elemento Customer> del documento XML, que se conoce como asignación centrada en elementos en un esquema XSD anotado.

En esta expresión XPath, child es el nombre de eje. Customeres la prueba de nodo (TRUE si Customer es un <nodo de elemento, porque< el elemento>> es el tipo de nodo principal para child el eje). child::ContactName es el predicado. En el predicado, child es el eje y ContactName es la prueba de nodo (TRUE si ContactName es un <nodo de elemento> ).

Esta expresión devuelve solo los elementos secundarios del elemento Customer> del nodo de contexto que tienen< elementos secundarios del elemento ContactName>.<

Con la sintaxis abreviada, la consulta XPath también se puede especificar como:

Customer[ContactName]  

Predicado de selección: ejemplo 4

La siguiente expresión XPath selecciona elementos secundarios del elemento Customer> del nodo de contexto que no tienen< elementos secundarios del elemento ContactName>:<

child::Customer[not(child::ContactName)]  

En este ejemplo se supone que <ContactName> es un elemento secundario del <elemento Customer> del documento XML y el campo ContactName no es necesario en la base de datos.

En este ejemplo, child es el eje. Customer es la prueba de nodo (TRUE si Customer es un <nodo de elemento> ). not(child::ContactName) es el predicado. En el predicado, child es el eje y ContactName es la prueba de nodo (TRUE si ContactName es un <nodo de elemento> ).

Con la sintaxis abreviada, la consulta XPath también se puede especificar como:

Customer[not(ContactName)]  

Predicado de selección: ejemplo 5

La siguiente expresión XPath selecciona en el nodo de contexto actual todos los elementos secundarios Customer> que tienen el atributo CustomerID:<

child::Customer[attribute::CustomerID]  

En este ejemplo, child es el eje y Customer es la prueba de nodo (TRUE si Customer es un <nodo de elemento> ). attribute::CustomerID es el predicado. En el predicado, attribute es el eje y CustomerID es el predicado (TRUE si CustomerID es un <nodo de atributo> ).

Con la sintaxis abreviada, la consulta XPath también se puede especificar como:

Customer[@CustomerID]  

Predicado de selección: Ejemplo 6

Microsoft SQLXML 4.0 incluye compatibilidad con consultas XPath que contienen un producto cruzado en el predicado, como se muestra en el ejemplo siguiente:

Customer[Order/@OrderDate=Order/@ShipDate]  

Esta consulta selecciona todos los clientes con algún elemento Order para el que OrderDate sea igual a ShipDate de cualquier Order.

Consulte también

Introducción a los esquemas XSD anotados (SQLXML 4.0)
Aplicación de formato XML en el cliente (SQLXML 4.0)