Tip:
Highlight text to annotate it
X
Hola, soy Estela Saquete, profesora de informática en la Universidad de Alicante, y en este vídeo
te voy a explicar qué es XPATH, para que se usa y el modelo de datos que usa este lenguaje.
Antes de empezar, me gustaría recordarte algunos de los sitios web en los que puedes
encontrar más información sobre mí y sobre mi trabajo, y dos formas de contactar conmigo,
a través de mi correo electrónico stela@dlsi.ua.es y a través de mi cuenta en Twitter @estelasaquete.
Lo primero que vamos a hacer es definir XPATH. Xpath o XML Path Language es un lenguaje que
permite construir expresiones que recorren y procesan un documento XML. Xpath permite
mediante expresiones de ruta buscar y seleccionar los distintos nodos del documento XML, teniendo
en cuenta su estructura jerárquica. Imaginemos que en un documento XML tenemos un nodo libro
del que depende un nodo titulo de ese libro. Para acceder a ese nodo titulo escribiríamos
en XPATH la ruta en este caso absoluta /libro/titulo. Además, XPATH contiene una librería de 100
funciones estandar que van a permitir realizar operaciones para manejo de cadenas, operaciones
numéricas, comparaciones de fechas, etc. Xpath no es un lenguaje independiente sino
que se usa en combinación con XSLT.
Veamos a continuación en este código XSLT las partes que serían XPATH. Hemos marcado
en rojo dentro del código lo que se corresponde con XPATH.
Veamos cada caso concreto.
Esta expresión de ruta me esta llevando al nodo raíz del documento. Es importante no
confundir con el elemento raíz. Todos los documentos XML empiezan en un nodo raíz.
Este tipo de expresiones en XPATH se denominan en ingles Axes o Ejes o Hachas en castellano.
Esta expresión esta usando la doble barra que en XPATH significa seleccionar descendientes.
Por tanto, esta expresión nos indica que deseamos acceder a todos los descencientes
de ese nodo raiz que sean nodos BBB. El resto de nodos descencientes serán descartados
en esta búsqueda. Al hablar de descencientes estamos indicando los nodos BBB que esten
en cualquier parte de arbol, por debajo del nodo en el que nos encontramos, en este caso
el nodo raíz.
En este caso estamos indicando que el nodo al que queremos aplicar la plantilla o template
es el nodo BBB.
Position es una función que nos devuelve la posición del nodo BBB en la jerarquía.
En XPATH, el punto nos indica que queremos seleccionar el nodo actual.
XPATH es un recomendación de W3C desde noviembre de 1999, puedes encontrar toda la información
relativa a este lenguaje en la URL que te indico.
Existen varias especificaciones del lenguaje, la primera versión se llamo XPATH 1.0 y la
más actual XPATH 2.0. Las diferencias podrás encontrarlas en la url de la W3C.
El modelo de datos que utiliza XPATH define dos partes, por un lado lo que representa
que son distintos tipos de nodos y por otro las posibles relaciones que existen entre
estos nodos. A continuación vamos a detallar cada parte del modelo de datos.
Comenzaremos detallando los tipos de nodos existentes en XPATH.
Existen varios tipos de nodos con los que se trabaja en XPATH pero en este video, al
tratarse de una introducción nos centraremos en los más básicos. Estos nodos son: el
nodo Elemento, el nodo Atributo, el nodoTexto, el nodo raíz y el elemento raíz y los valores
atómicos.
Cualquier elemento del documento XML se convierte en un nodo elemento dentro del árbol.
Cada elemento tiene su nodo padre. El nodo padre de cualquier elemento es a su vez un
elemento, excepto el elemento raíz que tiene como padre el nodo raíz.
Los nodos elementos tienen a su vez hijos.
Los nodos elementos tienen también propiedades como su nombre, sus atributos e información
sobre los espacios de nombre que tienen activos.
Los nodos elementos pueden tener identificadores únicos, permite referenciarlos más directamente.
Un ejemplo de un nodo elemento sería el nodo “author” que mostramos en la imagen, que
formaría parte de un documento XML.
Los nodos atributo no se consideran hijos del nodo elemento que los contiene sino etiquetas
añadidas a dicho nodo elemento.
Cada nodo atributo tiene un nombre y un valor (siempre una cadena).
Pueden tener un valor por defecto asignado en el DTD. En el ejemplo que mostramos tenemos
el atributo lang y su valor asociado es inglés, representado como “en”.
Por texto hacemos referencia a todos los caracteres del documento que no están marcados con alguna
etiqueta.
Un nodo texto no tiene hijos, los distintos caracteres que lo forman no se consideran
hijos suyos.
El nodo raíz del árbol contiene al elemento raíz del documento. Todos los documentos
XML tienen un nodo raíz que indica el inicio del documento, de donde dependen todos los
demás nodos del documento. Se identifica por /.
No se debe confundir con el elemento raíz del documento.
En el ejemplo mostrado, el elemento raíz del documento sería bookstore y el padre
de este nodo sería el nodo raíz.
Los valores atómicos se trata de nodos que no tienen ni hijos ni padres, por ejemplo
en contenido de un determinado nodo o el valor de un determinado atributo. Por ejemplo, en
el caso del atributo del lenguaje el valor atómico es “en”
Una vez especificados los tipos de nodos posibles, necesitamos especificar las posibles relaciones
que existen entre estos nodos.
Dado un nodo contexto, en la jerarquía de nodos se puede determinar el padre de un nodo:
todos los nodos tienen un padre excepto el nodo raíz.
Podemos tener nodos con cero, uno o más hijos.
Se consideraran hermanos aquellos nodos que tengan el mismo padre.
Tambien es posible determinar los antecesores y descendientes de un nodo. Además, cuando
seleccionamos los antecesores de un nodo, el padre también formará parte de la lista
de nodos seleccionados.
De la misma forma, cuando seleccionamos los descendientes, los hijos directos del nodo
tambien forman parte de esta selección.
En esta transparencia te recomiendo dos libros para profundizar más en el tema: XSLT 2.0
and XPath 2.0 Programmer's Reference (Programmer to Programmer) de Michael Kay (1 marzo 2011).
XPath de Jesse Russell (4 junio 2012) mas económico.
En este apartado te recomiendo una serie de enlaces que pueden ser de tu interés para
profundizar más en el tema de XPATH. Te los he dividido según el idioma por si no dominas
mucho el inglés.
Recuerda que este vídeo forma parte del curso “Introducción a XML” que está disponible
en la dirección ixml.es.
Muchas gracias por tu atención.