XSLT XML Stylesheets Language for Transformation - PowerPoint PPT Presentation

1 / 46
About This Presentation
Title:

XSLT XML Stylesheets Language for Transformation

Description:

... e interpretados por cualquier procesador de XSLT) ... cualquier nodo * = cualquier cosa. Respecto a nodo actual o. de contexto. Respecto a directorio ... – PowerPoint PPT presentation

Number of Views:102
Avg rating:3.0/5.0
Slides: 47
Provided by: Min142
Category:

less

Transcript and Presenter's Notes

Title: XSLT XML Stylesheets Language for Transformation


1
XSLT (XML Stylesheets Language for Transformation)
  • LENGUAJES PARA INTERNET
  • María Rodríguez Fernández

2
Contenidos de la clase de hoy
  • El problema de presentar un documento XML
  • XSLT un lenguaje para transformaciones
  • Escribiendo documento XSL

3
El problema de presentar un documento XML
  • XML no incorpora ninguna semántica intrínseca de
    presentación
  • XMLCSS
  • XMLXSL (Extensible Stylesheet Language,
    "lenguaje extensible de hojas de estilo").
  • Familia de lenguajes basados en XML
  • Permite describir cómo la información contenida
    en un documento XML debe ser transformada o
    formateada para su presentación en un medio
    específico

4
Por qué XSL?
  • Está diseñado para integrarse en la arquitectura
    XML.
  • Es mucho más potente que CSS.
  • CSS no tiene capacidades de transformación.
  • Cada vez hay más herramientas para XSL.

5
CSS vs. XSL
6
XSL
  • Formado por
  • XSLT (Extensible Stylesheet Language
    Transformations) permite convertir documentos
    XML de una sintaxis a otra (por ejemplo, de un
    XML a otro o a un documento HTML).
  • XSL-FO (lenguaje de hojas extensibles de formateo
    de objetos) permite especificar el formato
    visual con el cual se quiere presentar un
    documento XML, es usado principalmente para
    generar documentos PDF.
  • XPath, o XML Path Language sintaxis (no basada
    en XML) para acceder o referirse a porciones de
    un documento XML.

Estas tres especificaciones son recomendaciones
oficiales del W3C.
7
Contenidos de la clase de hoy
  • El problema de presentar un documento XML
  • XSLT un lenguaje para transformaciones
  • Escribiendo documento XSL

8
Transformación XSLT
  • Transformacion estructural
  • Los datos son convertidos de la estrucutra de
    entrada (xml) a una estructura que refleje la
    salida deseada
  • Formato (pdf, html, etc.)
  • La salida de datos, generados por la nueva
    estructura se entrega en el formato requerido
    (PDF, HTML,coma-delimitado)

9
Por que transformar XML ?
  • Conversión entre modelos de datos
  • Aunque legible, XML está pensado para el
    intercambio de información entre aplicaciones.
  • Es necesaria una capa de presentación para hacer
    amigable el acceso de los humanos a la
    información XML.
  • XML produce separación entre el modelo de datos y
    presentación visual.

10
Cómo funciona?
  • Durante el proceso de transformación, XSLT
    utiliza XPath para definir partes del documento
    fuente que encajan dentro de una o mas plantillas
    predefinidas
  • Por cada coincidencia, XSLT transformará esta
    parte del documento fuente para generar el
    documento resultante
  • La porción del documento fuente que no encaja con
    la plantilla permanecerá sin modificación alguna

11
Proceso de publicación XML-XSL.
Doc. XML original
HTML, PDF, ...
12
Ejemplo
. .
xslstylesheet
match
ltxsltemplate match ROWSET/ROWENAME"gt
ltEmpleado idNX-EMPNOgt ltxslvalue-of
select ENAME"/gt lt/Empleadogt lt/xsltemplategt
ltROWSETgt
. .
ltROWgt
construye
WS
ltEMPNOgt
7839
ltEmpleadogt
idNX-7839
WS
ltENAMEgt
KING
KING
13
Contenidos de la clase de hoy
  • El problema de presentar un documento XML
  • XSLT un lenguaje para transformaciones
  • Escribiendo documento XSL
  • http//petra.euitio.uniovi.es/mariarf/practicaXSL
    T.pdf

14
Ejemplo básico
lt?xml version 1.0?gt lt?xml-stylesheet type
text/xsl href intro.xsl?gt
ltmiCursogt ltcursogt Curso de Lenguajes para
Internet lt/cursogt lt/miCursogt
lt?xml version "1.0"?gt ltxslstylesheet version
"1.0" xmlnsxsl "http//www.w3.org/1999/XSL/Tran
sform"gt ltxsltemplate match "miCurso"gt
lthtmlgt ltbodygtltpgtltxslvalue-of select
"curso"/gtlt/pgtlt/bodygt lt/htmlgt
lt/xsltemplategt lt/xslstylesheetgt
  • Creando

lthtmlgt ltbodygtltpgtCurso de Lenguajes para
Internetlt/pgtlt/bodygt lt/htmlgt
15
Aplicación de la hoja de estilo al documento XML
  • Type text/css (CSS) o text/xsl (XSL)

lt?xml-stylesheet type text/xsl href
intro.xsl?gt
16
Estructura básica de una hoja XSLT
  • Elementos de XSLT
  • Pertenecen al namespace xsl
  • 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á
  • Ejemplo un elemento ltfechagt
  • 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

17
ltxslstylesheetgt
  • Es el elemento raíz de una hoja XSL
  • version Suele ser 1.0
  • xmlnsxsl 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/Tra
    nsform

ltxslstylesheet version "1.0" xmlnsxsl
"http//www.w3.org/1999/XSL/Transform"gt lt/xslst
ylesheetgt
18
Elementos de nivel superior
  • Son elementos hijos de xslstylesheet
  • Además, son hijos directos (tampoco pueden
    anidarse)
  • Dos excepciones xslvariable y xslparam
  • No son instrucciones sobre cómo procesar
    elementos, sino estructuras contenedoras para
    instrucciones

19
ltxsloutputgt
  • Define qué tipo de salida se va a generar como
    resultado
  • method xml, html o text
  • encoding define la forma de representar
    caracteres que se adoptará en la salida
    (iso-8859-1, UTF-8, UTF-16, windows-1252)
  • omit-xml-declaration yes o no. Indica si se
    genera o no la declaración lt?xml...?gt
  • indent yes o no. Si es yes, el procesador (para
    salidas xml o html) indentará el resultado

20
Otros elementos de nivel superior
  • ltxslincludegt que permite referenciar plantillas
    procedentes de una fuente externa
  • ltxslstrip-spacegt que elimina antes del
    procesamiento todos los modos consistentes en
    espacios en blanco
  • ltxslpreserve-spacegt mantiene los espacios en
    blanco

21
Reglas de transformación XSLTTemplates
  • Es el elemento básico y fundamental del lenguaje
    de transformación XSLT
  • Una regla (o template) consta de dos partes
  • Una etiqueta formada por un patrón de
    localización que selecciona nodos en el árbol XML
    origen sobre los que se aplica la tranformación
  • Expresión XPath.
  • Una acción que indica la transformación a
    realizar sobre los nodos seleccionados.
  • Cada hoja de estilo XSLT debe contener al menos
    una regla si se quiere que ejecute algo

22
Obtención de patrones
  • ltxsltemplate match gt
  • ltxslapply-templates selectgt

23
ltxsltemplategt
  • Cada etiqueta ltxsltemplategt contiene reglas por
    aplicar a ciertos elementos de un nodo
  • match es utilizado para asociar la plantilla con
    un elemento XML. El atributo match también puede
    utilizarse para aplicarse a una rama completa del
    documento XML (Por ejemplo match"/" define a
    todo el documento)
  • name Además de cuando encaja, un template puede
    invocarse explícitamente (en ese caso se necesita
    que tenga un nombre)
  • Ejemplo ltxsltemplate match"/"gt

24
Ejemplo
ltxslTutorial gt ltboldgtHello, world.lt/boldgtlt
redgtI am lt/redgt ltitalicgtfine.lt/italicgt
lt/xslTutorialgt
ltPgt ltBgtHello, world.lt/Bgtlt/Pgt ltP
style"colorred"gtI am lt/Pgt ltPgt ltigtfine.lt/igtlt/Pgt
ltxslstylesheet xmlnsxsl'http//www.w3.org/1999
/XSL/Transform'gt ltxsltemplate match"bold"gt
ltPgtltBgtltxslvalue-of select"."/gtlt/Bgtlt/Pgt
lt/xsltemplategt ltxsltemplate match"red"gt
ltP style"colorred"gtltxslvalue-of
select"."/gtlt/Pgt lt/xsltemplategt ltxsltemplate
match"italic"gt ltPgtltigtltxslvalue-of
select"."/gtlt/igtlt/Pgt lt/xsltemplategt
lt/xslstylesheetgt
Hello, world. I am fine.
25
ltxslapply-templatesgt
  • Se utiliza para indicar al procesador que intente
    emparejar templates con cierto nodo o conjunto de
    nodos (nodeset)
  • 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
  • Permite realizar un tratamiento recursivo de
    todos los elementos del árbol fuente

26
XPath
  • Objetivo Identificar elementos
  • Tienen la forma
  • nodo1/nodo2/.../nodoN
  • Ejemplo persona/apellido/materno
  • Describen un camino (path)
  • Resultado
  • Un conjunto de nodos
  • String, número o boolean

27
XPath vs. Sistema de archivos
28
Resumen de sintaxis abreviada
  • X hijo elemento X
  • - todos los hijos elemento
  • text() - todos los hijos texto
  • _at_Y atributo Y
  • X1 primer hijo X
  • Xlast() - último hijo X
  • /X nietos X
  • X//Y descendientes Y de hijo X
  • //Y descendientes Y de la RAIZ
  • //Y/X - descendientes Y de HIJO X
  • .. - padre
  • //X1_at_YZ - primeros hijos X con atributo
    YZ

29
ltxslvalue-ofgt
  • La etiqueta ltxslvalue-ofgt se utiliza para
    seleccionar el valor de una etiqueta XML y
    agregarlo al archivo de salida de la
    transformación
  • El valor del atributo select contiene una
    expresión XPath. Esta trabaja como la navegación
    de un sistema de ficheros donde una diagonal
    vertical delantera (/) selecciona subdirectorios
  • Ejemplo
  • ltxslvalue-of select"catalog/cd/title"/ gt

30
Ordenar nodos ltxslsortgt
  • Permite aplicar un template a un conjunto de
    nodos ordenándolos alfabética o numéricamente
  • Sintaxis
  • ltxslapply-templates selectXPATHgt
  • ltxslsort selectXPATH
  • data-typetextnumber
  • orderascendingdescending/gt
  • ltxslsort /gt
  • lt/xslapply-templatesgt

31
Ejemplo
ltTABLEgt  ltTRgt     ltTHgtAlicialt/THgt  lt/TRgt  ltTRgt
     ltTHgtCarloslt/THgt  lt/TRgt  ltTRgt     ltTHgtJaim
elt/THgt  lt/TRgt  ltTRgt     ltTHgtJuanlt/THgt  lt/TRgt 
 ltTRgt     ltTHgtMartalt/THgt  lt/TRgtlt/TABLEgt
ltsourcegtltnamegtJuanlt/namegt ltnamegtJaimelt/namegt
ltnamegtCarloslt/namegt ltnamegtAlicialt/namegt
ltnamegtMartalt/namegt lt/sourcegt
ltxslstylesheet version '1.0'
  xmlnsxsl'http//www.w3.org/1999/XSL/Transform
'gtltxsltemplate match"/"gt   ltTABLEgt
    ltxslfor-each select"//name"gt
        ltxslsort order"ascending" select"."/gt
           ltTRgt              ltTHgtltxslvalue-of
select"."/gtlt/THgt            lt/TRgt
        lt/xslfor-eachgt   lt/TABLEgt
lt/xsltemplategtlt/xslstylesheetgt
Alicia Carlos Jaime Juan Marta
32
Sentencias iterativas ltxslfor-eachgt
  • La etiqueta XSL ltxslfor-eachgt se utiliza para
    seleccionar todos los elementos XML del nodo
    especificado.
  • El valor del atributo select contiene una
    expresión XPath. Esta trabaja como la navegación
    de un sistema de ficheros donde una diagonal
    vertical delantera (/) selecciona subdirectorios.
  • Sintaxis
  • ltxslfor-each selectXPATHgt
  • lt/xslfor-eachgt

33
Ejemplo
ltxslTutorial gt ltlistgt ltentry name"A"/gt 
ltentry name"B"/gt ltentry name"C"/gt ltentry nam
e"D"/gt lt/listgt lt/xslTutorialgt
ltHTMLgt ltHEADgt lt/HEADgt ltBODYgt A, B, C, D,
lt/BODYgt lt/HTMLgt
ltxslstylesheet xmlnsxsl'http//www.w3.org/1999
/XSL/Transform' gt ltxsltemplate match"list"gt
ltxslfor-each select"entry"gt ltxslvalue-of
select"_at_name"/gt ltxsltextgt , lt/xsltextgt
lt/xslfor-eachgt lt/xsltemplategt
lt/xslstylesheetgt
A, B, C, D,
34
Sentencias selectivas ltxslifgt
  • Permite decidir si se va a procesar o no una
    parte de la hoja XSL en función de una condición.
  • Sintaxis
  • ltxslif testcondicióngt
  • lt/xslifgt
  • No contiene parte else.
  • Podemos usar , !, gt, gt y not( )

35
Ejemplo
ltxslstylesheet xmlnsxsl'http//www.w3.org/1999
/XSL/Transform' gt ltxsltemplate match"list"gt
ltxslfor-each select"entry"gt ltxslvalue-of
select"_at_name"/gt ltxslif test"not(position()l
ast())"gt ltxsltextgt , lt/xsltextgt
lt/xslifgt lt/xslfor-eachgt lt/xsltemplategt
lt/xslstylesheetgt
A, B, C, D
36
Sentencias selectivas ltxslchoosegt
  • Permite decidir qué parte de una hoja XSL se debe
    procesar en función de varias condiciones
  • Contiene elementos xslwhen
  • Atributo test (similar al de xslif)
  • Son los diferentes casos de una sentencia CASE
  • Caso por defecto xslotherwise (sin atributos)
  • Sintaxis ltxslchoosegt
  • ltxslwhen testcondicióngt
  • lt/xslwhengt
  • ltxslwhen testcondicióngt
  • lt/xslwhengt
  • ltxslotherwisegt
  • lt/xslotherwisegt
  • lt/xslchoosegt

37
ltxslTutorial gt ltSECTIONgt ltDATAgtI need a pen.lt
/DATAgt ltDATAgtI need some paper.lt/DATAgt
ltSUMMARYgt I need a pen and some paper
lt/SUMMARYgt lt/SECTIONgt ltSECTIONgt
ltDATAgtI need bread.lt/DATAgt ltDATAgtI need butter.
lt/DATAgt lt/SECTIONgt lt/xslTutorialgt
ltHTMLgt ltHEADgt lt/HEADgt ltBODYgt ltPgtSUMMARY I need
a pen and some paperlt/Pgt ltPgtDATA I need
bread.lt/Pgt ltPgtDATA I need butter.lt/Pgt lt/BODYgt
lt/HTMLgt
SUMMARY I need a pen and some paper DATA I
need bread. DATA I need butter.
ltxslstylesheet xmlnsxsl'http//www.w3.org/1999/
XSL/Transform' gt ltxsltemplate
match"//SECTION"gt ltxslchoosegt ltxslwhen
test'SUMMARY'gt ltPgtltxsltextgtSUMMARYlt/xslte
xtgtltxslvalue-of select"SUMMARY"/gtlt/Pgt
lt/xslwhengt ltxslotherwisegt
ltxslfor-each select"DATA"gt
ltPgtltxsltextgt DATA lt/xsltextgt ltxslvalue-of
select"."/gtlt/Pgt lt/xslfor-eachgt
lt/xslotherwisegt lt/xslchoosegt
lt/xsltemplategt lt/xslstylesheetgt
38
Construcción de elementos en el árbol resultado
  • Cómo generar un elemento con cierta etiqueta y
    construir sus atributos?
  • A veces la sintaxis no nos lo permite
    directamente
  • Ej. ltBODY BGCOLORltxslvalue-of
    selectcolor-elegido/gtgt
  • Se pueden utilizar los llamados AVT (Attribute
    Value Template) las expresiones entre llaves se
    evalúan como si hubiera un value-of
  • Para poner llaves "de verdad", poner cada una dos
    veces
  • Se pueden necesitar instrucciones para
    construir dichos elementos
  • xslelement Construye un elemento en el árbol
    resultado
  • Atributos name
  • xslattribute añade un atributo al elemento
  • Atributos name
  • El valor está encerrado como texto libre dentro
    de xslattribute

39
Ejemplo
ltBODY BGCOLOR00FFFFgt ltPgtEsto es una
pruebalt/Pgt lt/BODYgt
ltxslelement nameBODYgt ltxslattribute
nameBGCOLORgt 00FFFF lt/xslattributegt ltxsl
element namePgt Esto es una
prueba lt/xslelementgt lt/xslelementgt
40
Definición de variables
  • Permiten asignar valores a etiquetas para usarlos
    cómodamente
  • Sintaxis
  • ltxslvariable namenombre selectXPATHgt
  • No existe el concepto de variable global. La
    acumulación de valores debe hacerse mediante
    llamadas recursivas a funciones.
  • Se definen dentro de ltxsltemplategt y NO
    conservan el valor de una llamada a otra del
    template.

41
Llamada a funciones
  • La etiqueta ltxslparamgt permite definir
    parámetros con los que posteriormente se llamará
    a la función.
  • La llamada a la función se hará según
  • ltxslcall-template namenombre-funcióngt
  • ltxslwith-param namepar1 selectvalor/gt
  • ltxslwith-param namepar2 selectvalor/gt
  • lt/xslcall-templategt
  • Como ya se ha indicado, se permite hacer llamadas
    recursivas a funciones

42
(No Transcript)
43
(No Transcript)
44
Procesadores XSLT
  • Aplicación de una hoja de estilo a una fuente XML
    para producir una salida
  • MSXML3 SP4 (Internet Explorer) http//www.microsof
    t.com/xml
  • Saxonhttp//users.iclway.co.uk/mhkay/saxon/
  • Xalanhttp//xml.apache.org/xalan/overview.html

45
Referencias
  • W3Schools http//www.w3schools.com
  • El sitio de XSLT http//www.xslt.com
  • Especificación XSL. http//www.w3.org/Style/XSL
  • Especificación XSLT. http//www.w3.org/TR/xslt

46
Alguna pregunta?
Write a Comment
User Comments (0)
About PowerShow.com