Compartir a través de


Filtros y patrones de filtros

Se pueden aplicar restricciones y bifurcaciones a cualquier colección añadiendo una cláusula de filtro, [pattern], a la colección. El filtro es análogo a la cláusula SQL WHERE. El filtro contiene un modelo dentro de él llamado el modelo de filtro. El modelo de filtro evalúa el valor Booleano y se somete a prueba para cada elemento en la colección. Cualquier elemento en la colección que no se someta a la prueba del modelo de filtro se omite de la colección de resultados.

Por comodidad, si una colección se coloca dentro de un filtro, se genera un TRUE booleano si la colección contiene algún miembro y se genera un FALSE si la colección está vacía. Una expresión como author/degree implica una función de conversión collection-to-Boolean que evalúa a TRUE si existe un elemento <author> con un elemento secundario llamado <degree>.

Tenga en cuenta que cualquier número de filtros puede aparecer en un nivel dado de expresión. Los filtros vacíos no están permitidos.

Los filtros siempre se evalúan con respecto al contexto. En otras palabras, la expresión book[author] significa que por cada elemento <book> que se encuentra, compruebe si tiene un elemento secundario <author>. Así mismo, book[author = 'Bob'] significa que por cada elemento <book> encontrado, compruebe si tiene un elemento secundario <author> con el valor Bob. También se puede examinar el valor del contexto utilizando el carácter de punto (.). Por ejemplo, book[. = 'Trenton'] significa que por cada libro encontrado en el contexto actual, compruebe si su valor es Trenton.

Ejemplos

Expresión Hace referencia a

book[excerpt]

Todos los elementos <book> que contienen al menos un elemento <excerpt>.

book[excerpt]/title

Todos los elementos <title> dentro de los elementos <book> que contienen al menos un elemento <excerpt>.

book[excerpt]/author[degree]

Todos los elementos <author> que contienen al menos un elemento <degree>, y están dentro de los elementos <book> que contienen al menos un elemento <excerpt>.

book[author/degree]

Todos los elementos <book> que contienen al menos un elemento <author> con al menos un elemento secundario <degree>.

book[excerpt][title]

Todos los elementos <book> que contienen al menos un elemento <excerpt> y al menos un elemento <title>.

Vea también

Referencia

Ejemplo de XPath

Conceptos

Archivo de muestra XML para sintaxis XPath (inventory.xml)