<?xml version="1.0" encoding="UTF-8"?>
<biblioteca>
<libro>
<titulo>Aizkora eta arkatza</titulo>
<autor>Irati Jimenez</autor>
<edicion año="2013"/>
</libro>
<libro>
<titulo>Zintzoen saldoan</titulo>
<autor añonacimiento="1958">Jon Alonso</autor>
<edicion año="2012"/>
</libro>
<libro>
<titulo>Aldjezairia askatuta</titulo>
<autor añonacimiento="1932">Txomin Peien</autor>
<edicion año="1982"/>
</libro>
</biblioteca>
Los atributos y los nodos de tipo de texto no son como elementos. Por ejemplo, los nodos de texto y los atributos de nodo no tienen ninguno posterior. Para ser honesto, el atributo de nodo no se considera un semen, sino una etiqueta adjunta a un elemento. Por otro lado, consideraremos el texto de una etiqueta como elemento semestral, sin embargo, usaremos la notación apropiada para los textos y atributos de referencia en XPaht.
Una declaración XPATH es una expresión textual para cruzar el árbol del documento. Estas declaraciones son similares a las que usamos para navegar por los archivos y directorios de los sistemas operativos.
La evaluación de una declaración XPATH es encontrar los nodos que se ajustan en el árbol de documentos.
Las expresiones se pueden escribir de dos maneras:
resumen sintaxis: corto y fácil de leer
Tomaremos el documento anterior como referencia.
Ejes
/: En el frente de la instrucción, indica el nodo raíz; de lo contrario, indicará "hijo-hija". Demuestre los siguientes ejemplos
/biblioteca/libro/autor
/autor
/biblioteca/autor
//: Indica "descendientes" (hijos, sobrinos, cónyuges ...).
/biblioteca/autor
//autor
//autor // libro
@atributo: para seleccionar atributos
/biblioteca/libro/autor/@añonacimiento
/biblioteca/libro/@añonacimiento
..: para seleccionar un nodo anterior
/biblioteca/libro/autor/@añonacimiento/..
|: para especificar más de una ruta
//autor | //titulo
Todos los nodos
node(): para seleccionar todos los parches (texto y elementos).
//libro/node()
//autor/node()
//libro//node()
text(): para seleccionar contenido de texto (texto).
//autor/text()
//libro/text()
//libro//text()
*: para seleccionar todos los elementos
/libreria/*
//autor/ *
/biblioteca//*
@*: seleccionar todos los atributos
//@*
//libro/@*
//autor/@*
Especificar ramas por predicados
[@atributo]: Solo se seleccionarán los elementos con el atributo
//autor[@añonacimiento]
[numero]: Si hay más de un resultado, uno elegirá uno según su orden. last() para seleccionar el último
//libro[1]
//libro[last ()]
//libro[last() - 1]
[Condiciones]: Seleccionará nodos que cumplan con los requisitos. Para usar los valores de los atributos, el símbolo "@" debe colocarse antes del contenido del texto que contiene los elementos "."
//edicion[@año <1990]
//edicion [@año <1990] / ..
//libro[autor = 'Jon Alonso']
//autor[.="Jon Alonso "] / ..
Se pueden hacer comparaciones, parches, atributos o números. En el caso de los textos, debemos poner entre comillas simples o dobles ("por ejemplo"). Las citas numéricas son opcionales.
Podemos realizar operaciones con valores de predicación a través de predicadores. Pon los términos ...
Condiciones de funcionamiento condicionales:
(OR logiko): |
logicos: and, or, not()
aritmenticos: +, -, *, div, mod
comparativos: =, !=, <, >, <=, >=
Se puede utilizar más de una condición. Debemos tener en cuenta que cada uno será una reducción en el resultado obtenido antes y como si estuviera vinculado al agente.
//libro[autor = 'Jon Alonso'] [edicion/@año = "2012"]
Añadiremos otro libro para estos ejercicios a la biblioteca
<libro> <titulo>Atsekabe Zaitut</titulo> <autor>Irati Jimenez</autor> <publicacion año="2010"/> </libro>
Podemos definir expresiones más complejas con expresiones XPATH. Por ejemplo:
Por ejemplo, obtenga otros libros publicados en el mismo año como "Hacha y lápiz". Esta información no está directamente en el documento, pero podemos obtener la respuesta en dos pasos:
Obtenga el primer año en el que se publicó el libro "Hacha y lápiz":
año="2013"
//titulo[.="Hacha y lápiz"]/../publicacion/@año
y luego los libros que se publicaron en el mismo año:
//edicion[@año=2013]/../titulo
Pueden elaborarse en dos declaraciones de la siguiente manera
//edicion[@año=//titulo[.="Hacha y lápiz"]/../edicion/@año]/../titulo
Otra expresión sabia, por ejemplo, es la lista de otros libros escritos por el autor "Aizkorri y lápiz". Como en el ejemplo anterior, el resultado se logrará en dos pasos:
En el primer paso obtendremos el autor del autor "Axe y Lápiz":
//libro[titulo="Aizkorri y lápiz"]/autor/text()
Luego ingresaremos el nombre de la lista de libros del autor, es decir, Irati Jiménez:
//libro[aytor="Aizkorri y lápiz"]/titulo
Ambos juntos:
//libro[autor=//libro[titulo="Aizkorri y lápiz"]/autor/text()]/titulo
text () se puede eliminar de la segunda expresión y la expresión XPath se mantendrá de la siguiente manera:
//libro[autor=//libro[titulo="Aizkorri y lápiz"]/autor]/titulo