viernes, 6 de marzo de 2009

Aprendiendo XPath (en construcción)

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ónDescripción
Nombre del nodoSelecciona 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:
book
El siguiente código selecciona al elemento raíz bookstore. Si la expresión comienza con una barra (/), se refiere a una dirección absoluta:
/bookstore
Selecciona todos los elementos hijos llamados book del elemento bookstore.
bookstore/book
Selecciona a todos los elementos llamados book, sin importar en que parte del documento se encuentren:
//book
Selecciona 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//book
Seleeciona 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ónDescripció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']

Seleccionar varios nodos

Ejemplos

Ejes

Ejemplos

Operadores

Ejemplos

Referencia principal:

XPath Introduction

No hay comentarios: