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. |
|
Realiza la división de punto de flotación de acuerdo con IEEE 754. |
|
Realiza la multiplicación. |
|
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 |
|
Agrupar |
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 |
---|---|
|
Todos los elementos |
|
Todos los elementos |
|
Todos los elementos |
|
Todos los elementos |
|
Todos los elementos |
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 |
---|---|
|
Todos los elementos secundarios de elementos |
|
Todos los elementos |
|
Todos los elementos secundarios del contexto actual. |
|
El elemento |
|
Todos los elementos a partir del espacio de nombres |
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 |
---|---|
|
El atributo |
|
El atributo |
|
El atributo |
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. |
|
Todos los elementos a partir del espacio de nombres |
Tenga en cuenta que el modelo @*:title
no es compatible.
Vea también
Referencia
Conceptos
Operaciones fijas
Archivo de muestra XML para sintaxis XPath (inventory.xml)