XPath
-
Upload
aurora-gomez -
Category
Documents
-
view
235 -
download
0
description
Transcript of XPath
![Page 1: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/1.jpg)
● Un documento XML crea una estructura de datos que puede estar sujeta o no a unas reglas
(DTD o XSD).
● Esa estructura de datos será tratada por otros lenguajes con el fin de obtener un nuevo archivo
XML o un archivo con formato (HTML, PDF, Excel, etc.). Para ello utilizaremos básicamente una
tecnología: XSL (hojas de estilo de XSL).
● XSL (eXtensible Style Language) es el “estilista” del XML, el lenguaje que le va a dar formato al
XML proporcionando un estilo de presentación de los datos almacenados en XML.
● Se obtine una gran versatilidad al tener separados los datos de la presentación. Los mismos
datos XML serán presentados de tantas formas diferentes como archivos XSL le hayamos
asociado.
![Page 2: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/2.jpg)
XSL es un conjunto de tecnologías orientadas a dar formato a documentos XML. Esta compuesto,
entre otras, por:
● XPath: Lenguaje que permite escribir expresiones (caminos) para la búsqueda de nodos dentro
del árbol XML
● XSLT: Reglas o patrones para la transformación del contenido de los nodos XML sobre los
cuales se consigue una correspondencia gracias a XPath. Si lo que queremos es generar
páginas XHTML a partir de documentos XML, podemos complementar/sustituir XSL por CSS.
● XSL-FO: Reglas o Patrones que permiten transformar un documento XML en un documento
PDF.
![Page 3: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/3.jpg)
XPath
❏ Nos permite acceder a los diferentes elementos (nodos o atributos) de un archivo XML y
seleccionar aquel al que le aplicaremos el formato con XSLT o seleccionar otros elementos
(nodos o atributos) en función del valor de un nodo o atributo concreto.
❏ También lo podremos aplicar a otra tecnología XML de recuperación de información llamada
XQuery. De hecho se puede decir que XPath 2.0 es la intersección entre XSLT 2.0 y XQuery, es
la parte común de ambas tecnologías.
![Page 4: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/4.jpg)
XPath
❏ Debido a la estructura jerárquica de los documentos XML, al igual que la de los archivos y
carpetas en el disco, podría decirse que XPath es la versión para XML de los paths que
escribimos para identificar archivos en una estructura de directorios. Tiene como fin el
que podamos definir un subconjunto de nodos de un documento XML para su posterior
procesamiento. Nos sirve para poder identificar partes específicas de un documento XML.
![Page 5: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/5.jpg)
Elementos básicos
ExpresionesEl bloque básico de construcción del lenguaje son las expresiones, son construidas a través de
palabras claves, símbolos y operadores.
Las expresiones pueden retornar valores booleanos, numéricos, cadenas (en XPath 2.0 pueden ser
de cualquier tipo definido en el XML Schema) o un conjunto de nodos (node-set)
XPath es un lenguaje que distingue entre mayúsculas y minúsculas de la misma forma que XML.
![Page 6: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/6.jpg)
ContextosEl contexto de una expresión es toda aquella información que puede incidir en el resultado de la
evaluación de la misma.
Se divide en estático (información antes de la ejecución de la expresión) y dinámico (información
disponible cuando se esta evaluando la expresión)
Puede hacerse una analogía entre el contexto estático y dinámico con cualquier lenguaje de
programación y la información que está disponible en tiempo de compilación y en tiempo de
ejecución.
![Page 7: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/7.jpg)
Expresiones primariasSon las construcciones más simples del lenguaje, incluyen:
● literales,
● variables,
● expresiones de contexto
● Llamadas a funciones.
Pueden utilizarse paréntesis para forzar la ejecución de una serie de operadores en un orden
específico.
Se puede hacer referencia al contexto del ítem actual con la expresión “.”
![Page 8: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/8.jpg)
Expresiones primarias. LiteralesRepresentan valores atómicos de tipo numérico o de cadena:
"Hola mundo", representa un literal de cadena
100, representa el valor entero cien
100.13, representa un valor decimal
Para representar valores de otros tipos deben utilizarse funciones:
fn:true() o fn:false(), representan valores del tipo xs:boolean
xs:date("2015-06-20"), representa el 20 de Junio del año 2015
![Page 9: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/9.jpg)
Expresiones primarias. Variables
El concepto de variable es análogo al de cualquier lenguaje de programación. En XPath las variables
están precedidas por el símbolo $.
Si existen dos variables con el mismo nombre que tienen alcance en el contexto se opta por la más
cercana.
![Page 10: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/10.jpg)
Expresiones primarias. Llamadas a funcionesSimilar a las funciones definidas en cualquier lenguaje.
Las funciones tienen un nombre seguido de la lista de parámetros entre paréntesis.
Funciones numéricas
round() redondeoabs() valor absolutofloor() valor entero más bajoceiling() valor entero más alto
![Page 11: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/11.jpg)
Funciones de cadena
substring() subcadena substring(“paralelogramo”, 1, 8) = paralelo
stars-with() cadena comienza por …. starts-with(“paralelogramo”, “p”) = true
contains() cadena contiene… contains(“paralelogramo”, “gramo”) = true
normalize-space() espacios normalizados normalize-space(“ La casa blanca”) =”La casa blanca”
translate() cambia caracteres en una cadenastring-length() longitud de una cadena string-length(“paralelogramo”) = 13
Funciones que devuelven elementos por su posición
position()=n Elemento que se encuentra en la enésima posiciónelemento[n]last() El último elemento de un conjuntolast()-i El último elemento - i
![Page 12: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/12.jpg)
Funciones que devuelven nodos
name() nombre del nodo actualroot() elemento raíznode() nodos descendientes del actualcomment() comentariosprocessing-instruction() Instrucciones de procesamiento
![Page 13: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/13.jpg)
Expresiones primarias. Operadores
XPath provee operadores aritméticos para las principales operaciones matemáticas
● suma (+), resta (-), multiplicación (*), división (div), división entera (idiv) y módulo (mod)
También dispone de operadores lógicos
● conjunción (and), disyunción (or)
● Para la negación lógica se puede utilizar el operador not o la función unitaria fn:not()
![Page 14: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/14.jpg)
Expresiones primarias. Comparaciones
Operadores de comparación de propósito general, pueden utilizarse con cualquier tipo de datos
=, !=, <, <=, >, >=,
Tienen equivalentes que sirven sólo para comparar valores simples, en este caso, si los operandos
no son comparables (comparar un nodo con un número) se produce un error.
eq, ne, lt, le, gt, ge
![Page 15: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/15.jpg)
Expresiones primarias. Comparaciones
Otros operadores de comparación especiales para utilizar con nodos.
Operador is devuelve verdadero si dos expresiones devuelven exactamente el mismo nodo.
Operadores << y >> comparan el orden de los nodos en el documento.
<< retorna verdadero si un nodo ocurre antes que otro en el documento
>> devuelve verdadero si ocurre después.
![Page 16: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/16.jpg)
Expresiones de rutaUna expresión de ruta (path expression) sirve para localizar nodos dentro de la estructura jerárquica
propia de Xml.
Cada expresión de ruta consta de varios pasos separados por un símbolo “/” o “//”.
/ indica que el siguiente paso se encuentra adyacente en la jerarquía de nodos (referencia a un
hijo)
// puede localizar cualquier nodo que sea descendiente sin importar el nivel (es una abreviatura
de: descendant-or-self::node()).
Las rutas pueden ser absolutas o relativas. Si comienzan con el símbolo “/” son absolutas. / hace
referencia al nodo raíz. Si no comienzan por / hacen referencia al nodo actual.
![Page 17: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/17.jpg)
Sintaxis
paso1/paso2/paso3/…/…
Cada paso en una ruta puede ser:
● Un nodo
● Un eje con filtro
○ eje::filtro[predicado 1][predicado 2][…]
● Nodo con cero o más predicados (se evalúa con respecto al conjunto de nodos producidos por
el paso anterior)
![Page 18: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/18.jpg)
Expresiones de ruta.
EjesEl eje de un paso especifica la dirección en la
que se va a evaluar la ruta, es decir, si nos
vamos a mover hacia arriba en la jerarquía o
hacia abajo, si se va a incluir el nodo actual o
no, etc.
![Page 19: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/19.jpg)
Expresiones de ruta.
FiltrosLos filtros son utilizados para incluir o excluir
nodos dentro de un eje, ya sea por nombre o
por tipo. El resultado son todos los nodos que
cumplen con el filtro especificado. En el caso
de filtros por nombre se utiliza un QName
(nombre del nodo)
![Page 20: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/20.jpg)
Expresiones de ruta. PredicadosLos predicados son expresiones que permiten filtrar un conjunto de nodos utilizando un criterio
determinado.
Filtra los nodos que se obtienen como resultado de la expresión de ruta que se ejecutó hasta el
momento, dejando sólo aquellos para los cuales se cumple el criterio.
Los predicados se escriben entre corchetes.
![Page 21: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/21.jpg)
Expresiones de ruta. PredicadosSi el predicado consta de una expresión que se evalúa como entero entonces como resultado se
obtiene el nodo que se encuentra en esa posición (análogo a los índices de un Array comenzando en
1).
Cuando el resultado de la expresión de predicado no es un entero, el resultado de aplicar el
predicado, es el conjunto de nodos para los cuales la expresión es verdadera.
![Page 22: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/22.jpg)
Expresiones de ruta. Predicados notación reducida
![Page 23: XPath](https://reader033.fdocumento.com/reader033/viewer/2022042514/568c35e71a28ab0235960638/html5/thumbnails/23.jpg)
elemento elemento de nombre elemento
/elemento elemento de nombre elemento ubicado en la raíz del documento
e1/e2 elemento e2 hijo directo de elemento e1
e1//e2 elemento e2 descendiente (hijo, nieto, …) del elemento e1
//elemento elemento de nombre elemento ubicado en cualquier nivel por debajo de la raíz del
documento
@atributo atributo de nombre atributo
* cualquier elemento (todos los elementos)
@* cualquier atributo (todos los atributos)
. nodo actual
.. nodo padre