Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 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 Customer[3] ubicación devuelve el tercer cliente. Estos predicados numéricos no se admiten. 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 y childattribute 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, porque <el atributo> es el tipo de nodo principal del attribute eje).
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 de los ejes.
Customer, Ordery 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 del 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 eje).<child
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 cualquiera Order para el OrderDate que sea igual al ShipDate de cualquier Order.
Véase también
Introducción a esquemas XSD anotados (SQLXML 4.0)
Formato XML del lado cliente (SQLXML 4.0)