tema iv. xml - wikiesei - home4+-+xml...ejes los ejes (axis) permiten navegar el árbol de nodos a...
TRANSCRIPT
![Page 1: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/1.jpg)
Tema IV. XMLVI. XSL (XPath & XSLT)
Desarrollo de Aplicaciones para InternetCurso 12|13
![Page 2: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/2.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 3: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/3.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 4: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/4.jpg)
XSL
● Extensible Stylesheet Language (XSL)● Familia de recomendaciones W3C:
http://www.w3.org/Style/XSL/ ● Lenguajes XSL
– XSL Transformations (XSLT)● Lenguaje para transformar XML
– XML Path Language (XPath)● Lenguaje de expresiones para acceder a distintas partes
de un documento XML
– XSL Formatting Objects (XSL-FO)● Vocabulario XML para especificar semánticas de formato
![Page 5: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/5.jpg)
Workflow XSL
Workflow con XSL-FO Workflow sin XSL-FO
*Imágenes adaptadas de: http://upload.wikimedia.org/wikipedia/commons/e/e6/XSLT_en.svg
![Page 6: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/6.jpg)
Ejemplo DTD
![Page 7: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/7.jpg)
Ejemplo XML
![Page 8: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/8.jpg)
Ejemplo XSLT
![Page 9: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/9.jpg)
Ejemplo HTML
![Page 10: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/10.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 11: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/11.jpg)
XPath
● El objetivo de XPath es seleccionar partes de un documento XML
● Es una recomendación del W3C:– http://www.w3.org/TR/xpath
– http://www.w3.org/TR/xpath20
● Aunque la versión actual es la 2.0, la versión 1.0 está mucho más extendida (es la soportada por Java)*
● Está relacionado con otras tecnologías XML: XSLT, XQuery, XML Pointer, XForms, etc.
*En este tema veremos XPath 1.0
![Page 12: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/12.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii.Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 13: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/13.jpg)
Rutas
● XPath se basa en la definición de rutas de acceso a los elementos a seleccionar
● Tipos de rutas– Absolutas
● Indican la posición del elemento o elementos a seleccionar desde la raíz del documento
– /Libro/Capitulo[@numero=1] Desde la raíz
– //Capitulo Desde cualquier nivel
– Relativas● Indican la posición del elemento o elementos a
seleccionar desde el contexto actual– Capitulo[@numero=2]
![Page 14: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/14.jpg)
Expresiones
● Una expresión es una ruta mediante la cual se seleccionan conjuntos de nodos XPath
● Una expresión está compuesta de varios pasos de ubicación separados por /
● Estructura paso de ubicación (ejemplo)child::Capitulo[position()=2]
● Ejemplos:– http://www.w3.org/TR/xpath/#location-paths
– http://www.w3.org/TR/xpath/#path-abbrev
Eje(Axis)
Nodo Predicado
![Page 15: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/15.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii.Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 16: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/16.jpg)
Nodos
● XPath identifica cada parte del XML con un tipo de nodo
● Existen siete tipos de nodo– Raíz (/)– Elemento (nombre)
– Atributo (@atributo)
– Texto (text())– Namespace (namespace::)
– Comentario (comment())– Instrucción de procesado (processing-instruction(...))
![Page 17: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/17.jpg)
Nodos
● Existen una serie de elementos comodín para seleccionar nodos:– * Coincide con cualquier nodo elemento
– @* Coincide con cualquier nodo atributo
– node() Coincide con cualquier nodo de cualquier tipo
![Page 18: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/18.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii.Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 19: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/19.jpg)
Ejes
● Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual
● Existen trece ejes en XPath– child: Selecciona hijos del nodo actual. Es el eje
por defecto
– attribute: Selecciona atributos del nodo actual si es un elemento. Es equivalente a “@”
– ancestor: Selecciona los nodos que se encuentren entre el nodo actual y el nodo raíz
– ancestor-or-self: Selecciona el nodo actual y los nodos que se encuentren él y el nodo raíz
![Page 20: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/20.jpg)
Ejes
● Ejes (continuación)– descendant: Selecciona los nodos hijo del nodo
actual recursivamente
– descendant-or-self: Selecciona el nodo actual y sus nodos hijo recursivamente. Es equivalente a “//”
– following: Selecciona nodos del documento siguientes al actual, excluyendo nodos descendientes, atributos y namespaces
– following-sibling: Selecciona nodos siguientes (igual que following) al actual que compartan el mismo padre
![Page 21: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/21.jpg)
Ejes
● Ejes (continuación)– namespace: Selecciona declaraciones de
namespace (atributo xmlns)
– parent: Selecciona el nodo padre del nodo actual. Equivalente a “..”
– predecing: Selecciona nodos del documento previos al actual, excluyendo los nodos padre, atributos y namespaces
– predecing-sibling: Selecciona nodos previos (igual que preceding) al actual que compartan el mismo padre
– self: Representa al nodo actual. Equivalente a “.”
![Page 22: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/22.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii.Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 23: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/23.jpg)
Predicados
● Filtran los elementos seleccionados en base a:– Índices: Se indica la posición numérica del
elemento que queremos seleccionar. El primer elemento será el 1 y el último last()
/libros/libro/capitulo[1]
– Expresiones lógicas: Pueden incluir funciones y suelen hacer uso de operadores
//libro/capitulo[position()=1]
//capitulo[@numero>1]
![Page 24: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/24.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 25: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/25.jpg)
Funciones
● Existen una serie de funciones que pueden ser utilizadas en las expresiones de XPath
● Normalmente, están asociadas a un tipo de dato determinado
● La lista completa de funciones se encuentra en http://www.w3.org/TR/xpath/#corelib
● A continuación veremos los tipos de dato existentes en XPath y algunas de las más funciones más importantes
![Page 26: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/26.jpg)
Tipos
● Existen cuatro tipos– Boolean
– Node-set
– Number
– String
![Page 27: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/27.jpg)
Tipos
● Boolean– Pueden tomar el valor true() o false()
– Los valores booleanos son funciones para evitar la ambigüedad con el nombre de etiquetas (p.ej. <true>verdadero</true>)
● Node-Sets– Representan un conjunto de nodos XPath
– Aunque la especificación de XPath no lo requiere, normalmente los nodos están en el mismo orden que en el documento XML
![Page 28: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/28.jpg)
Tipos
● Numbers– Representa a números de coma flotante (no
existen enteros)
● Strings– Representan una secuencia de caracteres
Unicode
![Page 29: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/29.jpg)
Funciones
● Funciones Booleanas– boolean(object): Convierte object en un valor
booleano, según los siguientes criterios:● Number: Falso si es 0 o NaN. Verdadero en otro caso● Node-Set: Falso si es vacío. Verdadero en otro caso● String: Falso si es vacío. Verdadero en otro caso
– false(): Devuelve el valor falso
– not(boolean): Devuelve la negación de boolean
– true(): Devuelve el valor verdadero
![Page 30: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/30.jpg)
Funciones
● Funciones Node-Set– count(node-set): Devuelve el número de
nodos en el node-set
– id(string): Devuelve un node-set con los nodos que tengan el id o ids pasados como argumento (útil con IDREF e IDREFS)
– last(): Devuelve el tamaño del nodo actual
– local-name([node-set]): Devuelve el nombre local (sin prefijo) del nodo actual o del nodo pasado como argumento
![Page 31: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/31.jpg)
Funciones
● Funciones Node-Set (continuación)– name([node-set]): Devuelve el nombre del
nodo actual o del nodo pasado como argumento
– namespace-uri([node-set]): Devuelve el URI de namespace actual o del nodo pasado como argumento
– position(): Devuelve el valor de la posición del nodo actual
![Page 32: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/32.jpg)
Funciones
● Funciones Numéricas– ceiling(number): Redondea number al entero
más próximo mayor que él
– floor(number): Redondea number al entero más próximo menor que él
– number(object): Convierte object en un number siguiento los siguientes criterios
● String: Si contiene un número, devuelve el número. Si no, devuelve NaN
● Boolean: Si es verdadero, devuelve 1. Si no, devuelve 0● Node-Set: Es equivalente a hacer
number(string(node-set))
![Page 33: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/33.jpg)
Funciones
● Funciones Numéricas (continuación)– round(number): Redondea numbe al entero
más próximo
– sum(node-set): Suma el valor de los nodos contenidos en node-set convirtiéndolos, previamente, a un number (si es posible). Si algún nodo no se puede convertir, el resultado será NaN
![Page 34: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/34.jpg)
Funciones
● Funciones String– concat(string1, string2[, string3...]):
Concatena las cadenas de texto pasadas como parámetros
– contains(string, search): Devuelve verdadero si string contiene search. Falso en caso contrario
– normalize-space(string): Elimina los espacios al inicio y fin de string, y convierte en espacios simples los espacios múltiples
– stats-with(string, start): Devuelve verdadero si string comienza por start
![Page 35: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/35.jpg)
Funciones
● Funciones String (continuación)– string(object): Convierte object en una
cadena de texto
– string-length(string): Devuelve la longitud de una cadena de texto
– substring(string, number1[, number2]): Devuelve una subcadena de string comenzando en la posición number1 y finalizando en number2. Si number2 no se indica, entonces será la última posición
![Page 36: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/36.jpg)
Operadores
● Operadores
| Unión de dos node-sets (//libro | //cd)
+ Suma
- Resta
* Multiplicación
div División
= Igual
!= Distinto
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
or Disyunción
and Conjunción
mod Módulo
![Page 37: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/37.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 38: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/38.jpg)
XPath en Java
● Java incorpora una pequeña API para realizar consultas con XPath sobre un XML
● Las clases relacionadas se encuentran en el paquete javax.xml.xpath
● En esta API se ha establecido el siguiente mapeo de tipos (Tipo XPath <=> Tipo Java)– Number <=> java.lang.Double
– String <=> java.lang.String
– Boolean <=> java.lang.Boolean
– Node-Set <=> org.w3c.dom.NodeList
![Page 39: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/39.jpg)
XPath en Java
● Clases principales– XPathFactory: Factoría que permite la creación
de objetos XPath
– XPathConstants: Contiene seis constantes, cinco de las cuales son utilizadas para definir el tipo de retorno esperado de una consulta. Estas son:
● BOOLEAN● NODE● NODESET● NUMBER● STRING
![Page 40: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/40.jpg)
XPath en Java
● Interfaces principales– XPath: Los objetos XPath permiten hacer
consultas mediante el método “evalulate”. Además, permiten crear expresiones XPath precompiladas (XpathExpression), mediante el método “compile”
– XPathExpression: Representa una expresión XPath precompilada. También permite hacer consultas mediante el método “evaluate”. Se suele utilizar cuando una consulta se va a repetir varias veces
![Page 41: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/41.jpg)
Ejemplo API XPath
![Page 42: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/42.jpg)
Ejemplo API XPath
![Page 43: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/43.jpg)
Ejemplo API XPath
![Page 44: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/44.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 45: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/45.jpg)
XSTL
● XSLT: Extensible Stylesheet Language Transformations
● Permite modificar la presentación de la información contenida en los XML
● Es un lenguaje declarativo escrito en XML para la transformación de XML en otro formato
● Es una recomendación W3C:– http://www.w3.org/TR/xslt
– http://www.w3.org/TR/xslt20
● Igual que con XPath, aunque la versión estable es la 2.0, Java solo soporta la versión 1.0
![Page 46: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/46.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii.Uso de XSLT
iii.Elementos
4.Referencias
![Page 47: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/47.jpg)
Transformación de XML con XSLT
● Existen dos métodos para transformar un XML con XSLT– Incluyendo el XSLT en el XML
● Mediante una instrucción se asocia el XSLT al XML● Los navegadores Web utilizan esta información para
transformar el documento antes de mostrarlo● Ejemplo de instrucción (debe ir en la cabecera del
XML):
<?xml-stylesheet
href=”ejemplo.xsl”
type=”text/xsl”?>
![Page 48: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/48.jpg)
Transformación de XML con XSLT
● Existen dos métodos para transformar un XML con XSLT (continuación)– Utilizando un Transformer (Java)
● La transformación puede hacerse programáticamente● Ejemplo
![Page 49: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/49.jpg)
Definición de XSLT
● Un XSLT tiene un elemento raíz: stylesheet o transform (son sinónimos)
● Es más habitual el uso de stylesheet● En documentos sencillos puede llegar a omitirse este
elemento raíz, pero no es lo habitual● Los elementos de XSLT pertenecen al namespace
http://www.w3.org/1999/XSL/Transform ● La declaración de este elemento es la siguiente: <xsl:stylesheet
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”
Version=”1.0”>
</xsl:stylesheet>
![Page 50: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/50.jpg)
Ejemplo XSLT
![Page 51: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/51.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 52: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/52.jpg)
Elemento output
● Permite seleccionar el tipo de salida que se va a producir: XML, HTML o texto
● Facilita el trabajo al procesador de XML/XSLT● Posee varios atributos para modificar la salida● Ejemplos <xsl:output method=”xml”/>
<xsl:output method=”html”/>
<xsl:output method=”text”/>
![Page 53: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/53.jpg)
Ejemplo XSLT
![Page 54: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/54.jpg)
Elemento template
● Define una plantilla de transformación asociada a un elemento
● Tiene un atributo “match” que indica con qué elemento se asocia la plantilla
● Es habitual que exista una plantilla asociada al elemento raíz “/”.
● Declaración <xsl:template match=”/”>
<!-- Contenido de la plantilla -->
</xsl:template>
![Page 55: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/55.jpg)
Ejemplo XSLT
![Page 56: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/56.jpg)
Elemento apply-templates
● Indica que deben aplicarse las plantillas disponibles a los nodos hijo del nodo actual
● El atributo “select” permite seleccionar los nodos hijos a los que se deben aplicar las plantillas
● Si se omite “select” se evaluarán todos los nodos hijo
● Ejemplos <xsl:apply-templates/>
<xsl:apply-templates select=”Capitulo”/>
![Page 57: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/57.jpg)
Ejemplo XSLT
![Page 58: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/58.jpg)
Elemento value-of
● Recupera el valor de una selección XPath● Posee el atributo obligatorio “select”, donde
se indica la consulta XPath● Ejemplos <xsl:value-of select=”Capitulo/text()”/>
<xsl:value-of select=”count(Capitulo)”/>
![Page 59: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/59.jpg)
Ejemplo XSLT
![Page 60: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/60.jpg)
Elemento text
● Añade un texto a la salida● Suele utilizarse cuando el texto que se quiere escribir
puede ser conflictivo con el parser XSLT● El atributo “disable-output-escaping” permite
indicar si se desea que en la salida se escapen los caracteres conflictivos (p.ej. <, >, &, etc.)
● Este atributo también está presente en value-of● Ejemplo <xsl:text disable-output-escaping=”yes”>
<br/>
</xsl:text>
![Page 61: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/61.jpg)
Ejemplo XSLT
![Page 62: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/62.jpg)
Elemento if
● Comprueba una condición booleana y, en caso de que sea cierta, se instancia su contenido
● La condición se indica mediante el atributo “test”, que contendrá una expresión XPath
● No existe el elemento “else”
● Ejemplos <xsl:if test=”@edad > 18”>
<!-- Contenido a instanciar -->
</xsl:if>
![Page 63: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/63.jpg)
Elemento choose
● Comprueba una serie de condiciones booleanas y, en caso de que una sea cierta, se instancia su contenido
● Se usa en combinación con los elementos– when: Funciona del mismo modo que un if
– otherwise: Su contenido se instanciará si no se entra por ningún when previo
● En un choose se entrará, únicamente, por el primer when cuya condición sea verdadera. Si no, por el otherwise
● Ejemplo <xsl:choose>
<xsl:when test=”@edad > 18”><!-- Contenido --></xsl:when>
<xsl:when test=”@edad > 30”><!-- Contenido --></xsl:when>
<xsl:otherwise><!-- Contenido --></xsl:otherwise>
</xsl:choose>
![Page 64: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/64.jpg)
Elemento for-each
● Permite recorrer los nodos de un node-set y generar contenido para ellos
● En el atributo “select” se debe indicar el XPath de selección del node-set
● Puede combinarse con el elemento “sort” para ordenar los nodos
● Ejemplo <xsl:for-each select=”//Capitulo”>
<xsl:sort select=”.” order=”ascending”/>
<li><xsl:value-of select=”.”/></li>
</xsl:for-each>
![Page 65: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/65.jpg)
Ejemplo XSLT
![Page 66: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/66.jpg)
Elemento variable
● Una variable en XSLT es el equivalente a las constantes en otros lenguajes (su valor no se puede modificar)
● Las variables deben tener un nombre asignado mediante el atributo “name”
● Las variables se referencian con $nombreVariable
● El valor de una variable se puede establecer mediante:
– Selección: En el atributo “select” se define una expresión cuyo valor será asignado a la variable
– Contenido: El contenido de la etiqueta “variable” es su valor
● Ejemplos <xsl:variable name=”capitulos” select=”//capitulo”/>
<xsl:variable name=”descripción”>
Este será el contenido de la variable
</xsl:variable>
![Page 67: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/67.jpg)
Elemento call-template
● Los elementos template pueden tener un nombre asignado (atributo name)
● Mediante call-template se puede invocar un template por su nombre (atributo name)
● Mediante la etiqueta with-param se pueden pasar parámetros. Su funcionamiento es igual que el de variable
● Ejemplos <xsl:call-template name=”listaCapitulos”>
<xsl:with-param name=”numerosCapitulo”>
1 2 3
</xsl:with-param>
</xsl:call-template>
![Page 68: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/68.jpg)
Índice
1.Introducción
2.XPath
i. Introducción
ii. Rutas y Expresiones1.Nodos
2.Ejes
3.Predicados
iii.Tipos de dato, Funciones y Operadores
iv.XPath en Java
3.XSLT
i. Introducción
ii. Uso de XSLT
iii.Elementos
4.Referencias
![Page 69: Tema IV. XML - WikiESEI - home4+-+XML...Ejes Los ejes (axis) permiten navegar el árbol de nodos a partir de la posición actual Existen trece ejes en XPath – child: Selecciona hijos](https://reader033.vdocumento.com/reader033/viewer/2022051115/5b05ac4d7f8b9ac33f8ba592/html5/thumbnails/69.jpg)
Bibliografía
● Beginning XML, 4th Edition – D. Hunter et al.
● Professional XML – B. Evjen et al.
● World Wide Web Consortium (W3C)– http://www.w3.org/ - última visita 31/08/2012
● Lesson: Extensible Stylesheet Language Transfomations– http://docs.oracle.com/javase/tutorial/jaxp/xslt/intro.html - última visita
23/10/2012
● W3Schools:Tutoriales de XPath y de XSLT– http://www.w3schools.com/xsl/default.asp
– http://www.w3schools.com/xpath/default.asp