Compartir a través de


Operadores y caracteres especiales

Las expresiones XPath se construyen mediante operadores y caracteres especiales que se muestran en la siguiente tabla.

/

El operador secundario: selecciona secundarios inmediatos de la colección del lado izquierdo.Cuando aparece este operador de ruta al comienzo del modelo, indica que los secundarios deberán seleccionarse desde el nodo raíz.

//

Descenso recursivo: busca el elemento especificado a cualquier profundidad.Cuando aparece este operador de ruta al comienzo del modelo, indica descenso recursivo desde el nodo raíz.

.

Indica el contexto actual

..

El primario del nodo de contexto actual.

*

Carácter comodín: selecciona todos los elemento sin importar el nombre del elemento.

@

Atributo: prefijo para un nombre de atributo.

@*

Carácter comodín de atributo: selecciona todos los atributos sin importar el nombre.

:

Separador de espacio de nombres: separa el prefijo de espacio de nombres a partir del nombre de elemento o atributo.

( )

Operaciones de grupo para establecer la prioridad explícitamente.

[ ]

Aplica un modelo de filtro.

[ ]

Operador de subíndice: utilizado para hacer un índice dentro de una colección.

+

Realiza la adición.

-

Realiza la resta.

div

Realiza la división de punto de flotación de acuerdo con IEEE 754.

*

Realiza la multiplicación.

mod

Devuelve el resto de una división truncada.

Esta tabla no incluye operadores booleanos y de conjunto, que se enumeran en expresiones booleanas, de comparación y de conjunto u operaciones de conjunto.

El orden de prioridad (desde la prioridad más alta a la prioridad más baja) se define tal como se indica en la siguiente tabla.

Prioridad

Carácter

Propósito

1

( )

Grupo

2

[ ]

Filtros

3

/ //

Operaciones de ruta

El operador de grupo, (), solo es aplicable en la expresión de ruta de nivel superior.Por ejemplo, (//author/degree | //author/name) es una operación de grupo válida, pero //author/(degree | name) no lo es.

Los operadores de modelo de filtro ([]) tienen una prioridad más alta que los operadores de ruta (/ y //).Por ejemplo, la expresión //comment()[3] selecciona todos los comentarios con un índice igual a 3 en relación con el primario del comentario en cualquier lugar del documento.Esto difiere de una expresión (//comment())[3], que selecciona el tercer comentario a partir del grupo de todos los comentarios en relación con el primario.La primera expresión puede devolver más de un comentario, mientras que la última puede devolver solo un comentario.

Estos operadores y caracteres especiales se describen en detalle a lo largo de esta referencia.

Operadores de ruta

La colección de elementos de un cierto tipo puede determinarse utilizando los operadores de ruta (/ y //).Estos operadores toman como argumentos una colección "del lado izquierdo" en la que realizar la selección y una colección "del lado derecho" indicando qué elementos seleccionar.El operador secundario (/) selecciona a partir de secundarios inmediatos de la colección del lado izquierdo, mientras que el operador descendiente (//) selecciona a partir de descendientes arbitrarios de la colección del lado izquierdo.En la práctica, // puede considerarse como un sustituto para uno o más niveles de jerarquía.

Tenga en cuenta que los operadores de ruta cambian el contexto mientras se realiza la consulta.Encadenando operadores de ruta, los usuarios pueden recorrer el árbol del documento.

Ejemplos

Expresión

Hace referencia a

author/first-name

Todos los elementos <first-name> dentro de un elemento <author> del nodo de contexto actual.

bookstore//title

Todos los elementos <title> uno o más niveles dentro del elemento <bookstore> (descendientes arbitrarios).Tenga en cuenta que es diferente del siguiente modelo, bookstore/*/title.

bookstore/*/title

Todos los elementos <title> que son secundarios de los elementos <bookstore>.

bookstore//book/excerpt//emph

Todos los elementos <emph> en cualquier lugar dentro de <excerpt> secundarios de elementos<book>, en cualquier lugar dentro del elemento <bookstore>:

.//title

Todos los elementos <title> uno o más niveles dentro del contexto actual.Tenga en cuenta que esta situación es esencialmente la única en la que se requiere la notación de período.

Carácter comodín

Se puede hacer referencia a un elemento sin utilizar su nombre sustituyendo la colección (*) comodín.La colección * se refiere a todos los elementos que son secundarios del contexto actual, sin importar el nombre de etiqueta.

Ejemplos

Expresión

Hace referencia a

author/*

Todos los elementos secundarios de elementos <author>.

book/*/last-name

Todos los elementos <last–name> que son secundarios de los elementos <book>.

*/*

Todos los elementos secundarios de éstos del contexto actual.

my:book

El elemento <book> a partir del espacio de nombres my.

my:*

Todos los elementos a partir del espacio de nombres my.

Tenga en cuenta que el modelo *:book no es compatible.

Atributos

XPath denota nombres de atributo con el símbolo @.Los atributos y los elementos secundarios son tratados imparcialmente y las funciones son equivalentes entre los dos tipos siempre que sea posible.

Nota

Los atributos no pueden contener elementos secundarios, de ahí que tengan lugar errores de sintaxis cuando se aplican operadores de ruta a los atributos.Además, no puede aplicar un índice a los atributos porque, por definición, no existe ningún orden definido para los atributos.

Ejemplos

Expresión

Hace referencia a

@style

El atributo style del contexto de elemento actual.

price/@exchange

El atributo exchange de los elementos <price> dentro del contexto actual.

book/@style

El atributo style de todos los elementos <book> .

Tenga en cuenta que el siguiente ejemplo no es válido, porque un atributo no puede tener ningún secundario.

price/@exchange/total

Búsqueda de atributos múltiples

Todos los atributos de un elemento pueden devolverse mediante @*.Esto es potencialmente útil para aplicaciones que traten a los atributos como campos en un registro.

Ejemplos

Expresión

Hace referencia a

@*

Todos los atributos del nodo de contexto actual.

@my:*

Todos los elementos a partir del espacio de nombres my.Esto no incluye atributos sin cualificar en elemento del espacio de nombres my.

Tenga en cuenta que el modelo @*:title no es compatible.

Vea también

Referencia

Ejemplo de XPath

Conceptos

Operaciones Set

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