tema iv. xml - wikiesei - home4+-+xml...ejes los ejes (axis) permiten navegar el árbol de nodos a...

69
Tema IV. XML VI. XSL (XPath & XSLT) Desarrollo de Aplicaciones para Internet Curso 12|13

Upload: hoanghanh

Post on 24-May-2018

226 views

Category:

Documents


1 download

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

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

Í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

Í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

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

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

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

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

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

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

Í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

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

Í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

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

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

Í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

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

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

Í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

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

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

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

Í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

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

Í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

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

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

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

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

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

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

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

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

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

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

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

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

Í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

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

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

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

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

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

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

Í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

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

Í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

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

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

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

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

Í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

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

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

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

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

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

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

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

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

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”>

&lt;br/&gt;

</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

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

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 &gt; 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

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 &gt; 18”><!-- Contenido --></xsl:when>

<xsl:when test=”@edad &gt; 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

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

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

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

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

Í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

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