PDF de programación - XSLT / XPath

Imágen de pdf XSLT / XPath

XSLT / XPathgráfica de visualizaciones

Publicado el 29 de Mayo del 2018
558 visualizaciones desde el 29 de Mayo del 2018
145,3 KB
21 paginas
Creado hace 18a (13/07/2005)
XSLT / XPath

Agustín Cernuda del Río

Departamento de Informática

Universidad de Oviedo

XSLT – 2005 - Universidad de Oviedo

Justificación de XSLT (I)

• Documentos XML

– Documentos de texto con etiquetas
– Contienen esencialmente información (no se entra en detalles de

presentación)

– La información se organiza jerárquicamente
– Aunque son legibles por un humano, se supone que la información

se procesará

– Así se obtendrán formas de (re)presentación más adecuadas
– Es posible que esas representaciones impliquen también seleccionar

información

• Necesidad de algún medio para expresar la transformación de un

documento XML
– En otro documento XML (seleccionando, reordenando, calculando...)
– En un documento que una persona pueda utilizar de manera directa

(leer, imprimir...)

XSLT – 2005 - Universidad de Oviedo

1

2

1

Justificación de XSLT (II)

• Pensemos en nuestra propia solución
• Fichero XML de ejemplo:

<?xml version="1.0"?>
<curriculum>

Instrucciones de
procesamiento

Elemento raíz o

documento

<nombre>Juan Cabrera Cotarelo</nombre>
<fechanac>

<dia>1</dia>
<mes>7</mes>
<anio>1973</anio>

</fechanac>
<lugarnac>Palencia</lugarnac>
<estudios>Licenciado en Historia</estudios>

</curriculum>

XSLT – 2005 - Universidad de Oviedo

Justificación de XSLT (III)

• Supongamos que necesitamos extraer sólo la información de nombre y

fecha de nacimiento

• Supongamos que, dependiendo del caso, necesitamos que la fecha

aparezca en español, o en inglés, o con el año de dos dígitos, o sólo el
año, o...

• Del mismo documento pueden extraerse otros muy diversos:

<?xml version="1.0"?>
<curriculum>

<?xml version="1.0"?>
<curriculum>

<nombre>Juan Cabrera Cotarelo</nombre>
<fechanac>

<nombre>Juan Cabrera Cotarelo</nombre>
<fechanac>1-7-1973</fechanac>

<dia>1</dia>
<mes>7</mes>
<anio>1973</anio>

</curriculum>

</fechanac>
<lugarnac>Palencia</lugarnac>
<estudios>Licenciado en Historia</estudios>

</curriculum>

XSLT – 2005 - Universidad de Oviedo

Juan
Juan
Cabrera
Cabrera
Cotarelo,
Cotarelo,
nacido el
nacido el
1/7/1973
1/7/1973

3

4

2

Nomenclatura de las tecnologías

• XSLT: eXtensible Stylesheet Language for Transformations. Permite

definir cómo se transforma un documento XML en otro documento XML

• Además de XML, se puede generar como salida HTML y texto
• XSL-FO: eXtensible Stylesheet Language – Formatting Objects.
Conversión del XML en un formato “imprimible” y legible por una
persona (ej.: PDF). Inicialmente, este era el propósito del XSL

• XPath: Una sintaxis para aludir a diversas partes de un documento XML


La parte de transformaciones ganó en importancia, y se llega a la
terminología actual:

XSL

XSLT

XPath

XSL-FO

XSLT – 2005 - Universidad de Oviedo

Estructura básica de una
hoja XSLT (I)

• Una hoja XSLT transforma un documento XML en:

– Otro documento XML
– Un documento HTML
– Texto
La hoja XSLT consta de una serie de reglas


• Una hoja XSLT es también un documento XML (!)

XSLT – 2005 - Universidad de Oviedo

5

6

3

<?xml version="1.0"?>
<fecha>

<dia>1</dia>
<mes>7</mes>
<anio>1973</anio>

</fecha>

Estructura básica de una
hoja XSLT (II)

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="iso-8859-1"/>
<xsl:template match="fecha">
<xsl:template match="fecha">

<cuando>

<xsl:value-of select="anio"/>
<xsl:value-of select="anio"/>

</cuando>

</xsl:template>
</xsl:template>
</xsl:stylesheet>

Procesador XSLT

<?xml version="1.0" encoding="iso-8859-1"?>
<cuando>1973</cuando>

XSLT – 2005 - Universidad de Oviedo

Procesadores XSLT

• Existen varias formas de realizar la transformación

– Procesador XSLTPROC
– Procesador MSXML

• Un ejecutable que se limita a llamar a la biblioteca de

transformación de Internet Explorer

– Se puede invocar a la biblioteca de transformación desde un

programa

– Enlace entre el fichero XML y la hoja XSLT

• El fichero se puede ver directamente en Internet Explorer o en

otro navegador que soporte XSLT

• Desventaja: el fichero queda "ligado" a esa vista, por lo menos si

se abre directamente

• Bajo la etiqueta <?xml...?> del fichero XML, se añade

<?xml-stylesheet type="text/xsl" href="hoja.xsl"?>

XSLT – 2005 - Universidad de Oviedo

7

8

4

Estructura básica de una
hoja XSLT (III)



La hoja XSLT contiene básicamente tres tipos de elementos:

– Elementos de XSLT. Pertenecen al namespace xsl, y por tanto sus

etiquetas llevan el prefijo xsl: . Son el equivalente a las palabras
clave del lenguaje de programación (definidos por el estándar e
interpretados por cualquier procesador de XSLT)

– Elementos LRE (Literal Result Elements). Son elementos que no

pertenecen a XSLT, sino que se repiten en la salida sin más
(ejemplo: un elemento <fecha>)

– Elementos de extensión. Son elementos no-estándar (al igual que
los LRE), que son manejados por implementaciones concretas del
procesador. Normalmente, no los utilizaremos

XSLT – 2005 - Universidad de Oviedo

xsl:stylesheet

• Es el elemento raíz de una hoja XSL
• Se puede utilizar también xsl:transform (son prácticamente equivalentes)
• Atributos principales:

– version: Suele ser 1.0
– xmlns:xsl: Asigna el namespace xsl (las etiquetas de XSL empiezan por

el prefijo xsl:). El valor para XSLT suele ser
http://www.w3.org/1999/XSL/Transform

• Otros atributos:

– extension-element-prefixes: Sirve para declarar los prefijos de

elementos que deben considerarse elementos de extensión y no LRE
(se incluyen separados por espacios)

– exclude-result-prefixes: Sirve para hacer que los elementos de ciertos

namespaces (prefijos) no se reproduzcan en la salida

XSLT – 2005 - Universidad de Oviedo

9

10

5

Elementos del nivel superior

• Son elementos hijos de xsl:stylesheet
• Además, son hijos directos (tampoco pueden anidarse)
• Dos excepciones: xsl:variable y xsl:param
• No son instrucciones sobre cómo procesar elementos, sino estructuras

contenedoras para instrucciones

• Son los siguientes:

xsl:include
xsl:import
xsl:strip-space
xsl:preserve-space

xsl:output
xsl:output
xsl:key
xsl:decimal-format
xsl:namespace-alias

xsl:attribute-set
xsl:variable
xsl:param
xsl:template
xsl:template

XSLT – 2005 - Universidad de Oviedo

xsl:output

• Define qué tipo de salida se va a generar como resultado
• Atributos:

– method: puede tomar los valores xml, html y text (y también un valor de

extensión, con el prefijo correspondiente)

– encoding: define la forma de representar caracteres que se adoptará en

la salida. Ejemplos:

• iso-8859-1, UTF-8, UTF-16...
• windows-1252 (genera los caracteres acentuados con la

codificación de Windows)

– omit-xml-declaration: valores yes o no. Indica si se genera o no la

declaración <?xml...?>

– indent: valores yes o no. Si es yes, el procesador (para salidas xml o

html) indentará el resultado

XSLT – 2005 - Universidad de Oviedo

11

12

6

xsl:template (I)

• El bloque fundamental de una hoja XSLT
• Un template tiene dos elementos principales:

– Una expresión de emparejamiento
– Las instrucciones de procesamiento que contiene

• Si la expresión de emparejamiento coincide con un elemento del fichero

XML, el template entra en acción y se ejecutan las instrucciones de
procesamiento
Las instrucciones de procesamiento pueden ser instrucciones de XSLT
propiamente dichas o bien LREs



• Al procesar un template, se va construyendo el árbol resultado, en el

que se incorpora el resultado de ejecutar instrucciones o bien los LREs
(directamente)

XSLT – 2005 - Universidad de Oviedo

xsl:template(II)

• Atributos:

– match: Su valor es una expresión que se usa para seleccionar nodos

del árbol de entrada (cuando encaja, el template entra en acción)
– name: Además de cuando encaja, un template puede invocarse

explícitamente (en ese caso se necesita que tenga un nombre)

• Ejemplo:

<?xml version="1.0"?>
<fecha>

RAIZ

<dia>1</dia>
<mes>7</mes>
<anio>1973</anio>

</fecha>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="iso-8859-1“

indent=“yes”/>
<xsl:template match=“/”>

<raiz>He encontrado un nodo raiz</raiz>

</xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="iso-8859-1"?>
<raiz>He encontrado un nodo raiz</raiz>

XSLT – 2005 - Universidad de Oviedo

13

14

7

Ejercicio

• Copiar los ficheros del ejemplo anterior, y probar el procesador

XSLTPROC

XSLTPROC –o salida.html hoja.xsl fichero.xml

• Probar también a enlazar directamente el XML con su hoja

<?xml-stylesheet type="text/xsl" href="hoja.xsl"?>

XSLT – 2005 - Universidad de Oviedo

Recapitulando...

• Elemento fundamental: xsl:stylesheet, en el que incluimos versión (1.0) y

el namespace xsl

• Dentro de él, los elementos del nivel superior
• Utilizamos xsl:output para decir si la salida es XML, HTML o texto

normal, y algunos detalles más de cómo se genera

• Utilizamos xsl:template como bloque básico
• Problemas (en este punto):

– No hemos visto cómo escribir expresiones match para los templates
– No hemos visto qué instrucciones podemos utilizar para generar la

salida

– Con lo visto hasta ahora, prácticamente sólo podemos procesar el

nodo raíz y generar una salida constante (LRE)

• Primer problema: cómo procesar más allá del nodo raíz

XSLT – 2005 - Universidad de Oviedo

15

16

8

xsl:apply-templates

• El procesador empareja con sus reglas por defecto (recorre todo)
• Si encuentra una regla concreta, aplica esa (no sigue procesando los



hijos de ese nodo, salvo que se lo indiquemos)
xsl:apply-templates se utiliza para indicar al procesador que intente
emparejar templates con cierto nodo o conjunto de nodos (nodeset)

• Atributos:

– select: Su valor es una expresión XPath de conjunto de nodos. El

procesador intentará emparejar ese conjunto de nodos con sus
templates respectivos
• Ejemplo: apply-templates1


xsl:apply-templates permite realizar un tratamiento recursivo de todos
los elemen
  • Links de descarga
http://lwp-l.com/pdf11400

Comentarios de: XSLT / XPath (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad