XPath es un lenguaje que nos permite navegar por la información de los documentos XML, permite acceder a los elementos y a los atributos del documento usando una sintaxis similar a la que utilizamos cuando navegamos por los datos de un sistema de archivos.
XPath se convirtió en una recomendación del W3C el 16 de Noviembre de 1999.
A continuación, redacto-traduzco una introducción al lenguaje:
Documento de ejemplo:
El siguiente texto servirá como base para los ejemplos posteriores:Terminología
Nodos
En XPath hay siete tipos distintos de nodos:
- Elementos
- Atributos
- Texto
- Espacios de nombres (namespaces)
- Instrucciones de procesamiento
- Comentarios
- Elementos raíz del documento
Valores atómicos
Los valores atómicos son nodos sin elementos padres o hijos.Ejemplos:
J K. Rowling
"en"
Relación entre nodos
Padres
En el código de ejemplo, el elemento book es padre de los elementos title, author, year y price.Hijos
En el código de ejemplo, los elementos title, author, year y price son hijos del nodo book.Hermanos
Los elementos title, author, year y price son nodos hermanos porque su elemento padre es el mismo.Ancestros
Los ancestros de un nodo son su elemento padre, el padre de su elemento padre, etc.Descendientes
Los descendientes de un nodo son sus nodos hijos, los hijos de sus nodos hijos, etc.Selección de nodos
Selecciona nodos en un documento sin importar en que parte de encuentren.Expresión | Descripción
|
---|---|
Nombre del nodo | Selecciona todos los nodos hijos del nodo especificado.
|
/ | Selecciona del nodo raíz.
|
// | .
|
. | Selecciona el nodo actual.
|
.. | Selecciona al padre del nodo actual.
|
@ | Selecciona los atributos.
|
Ejemplos
El siguiente código selecciona todos los nodos hijos del elemento book:bookEl siguiente código selecciona al elemento raíz bookstore. Si la expresión comienza con una barra (/), se refiere a una dirección absoluta:
/bookstoreSelecciona todos los elementos hijos llamados book del elemento bookstore.
bookstore/bookSelecciona a todos los elementos llamados book, sin importar en que parte del documento se encuentren:
//bookSelecciona a todos los elementos llamados book que tienen como padre a un elemento llamado bookstore, sin importar en que parte del documento se encuentren:
bookstore//bookSeleeciona todos los atributos llamados lang:
//@lang
Predicados
Los predicados son usados para buscar un nodo específico o para encontrar un nodo que contiene cierto valor. Los predicados se expresan entre corchetes.Ejemplos
Seleccionar nodos desconocidos
Existen algunas expresiones que nos ayudan a seleccionar elementos aunque no conozcamos sus nombres o alguna otra información, éstas expresiones son:Expresión | Descripción |
---|---|
* | Selecciona cualquier elemento de cierto nodo |
@* | Selecciona cualquier atributo de un nodo. |
nodo() | Selecciona cualquier nodo de cierto tipo. |
Ejemplos
Selecciona el primer elemento llamado book que sea hijo del elemento raíz blockstore:
/bookstore/book[1]
Selecciona al último elemento llamado book que es hijo del elemento raí< bookstore:
/bookstore/book[last()]
Selects the last but one book element that is the child of the bookstore element
/bookstore/book[last()-1]
Selects the first two book elements that are children of the bookstore element
/bookstore/book[position()<3]
Selects all the book elements of the bookstore element that have a price element with a value greater than 35.00
/bookstore/book[price>35.00]
Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 35.00
/bookstore/book[price>35.00]/title
Selects all the title elements that have an attribute named lang
//title[@lang]
Selects all the title elements that have an attribute named lang with a value of 'eng'
//title[@lang='eng']
No hay comentarios:
Publicar un comentario