SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Lenguajes de Marcas y SGI
          UT 6: XML (II).
   Transformación de documentos
          y hojas de estilo.

     CFGS «Administración de Sistemas
          Informáticos en Red»

         CIFP Juan de Colonia (Burgos)

              David H. Martín Alonso

               – Curso 2010/2011 –
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                         Contenidos



                CSS
                XSLT
                XPath




Abril de 2011                                         CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                            Objetivos
■ Introducción            • XML permite estructurar la información.
□ CSS
□ XSLT
                          • Habitualmente pensaremos en algún uso ¿no?
□ XPath                         – Visualizar.
□ XSL-FO                        – Imprimir.

                                – Transferencia entre aplicaciones.

                          • ¿Cómo? Opciones:
                 3/40
                                – Programar aplicaciones particulares para cada uso.
                                – Formatos/lenguajes complementarios para XML.




Abril de 2011                                                                          CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                         XML y CSS
□ Introducción            • ¿Cómo se ve un archivo XML?
■ CSS                           – No es una prioridad la visualización directa de XML.
□ XSLT
                                – No es competitivo con las posibilidades de HTML/XHTML.
□ XPath
                                – ¿Cómo haríamos una tabla?
□ XSL-FO
                          • Los navegadores web proporcionan una visualización
                            básica:
                 4/40
                                – coloreado de sintaxis
                                – árbol de elementos desplegable

                          • CSS permite mejorar la visualización directa
                                –   Reutilización de CSS: HTML, XML, SVG...
                          • Transformaciones limitadas de la estructura.
                                – Efecto camaleónico gracias a la propiedad display
                                – display: none, block, inline, list-item, table…

                          • Enlace a la hoja CSS: instrucción de procesado (PI)
                                    <?xml-stylesheet type="text/css" href="ej0.css"?>



Abril de 2011                                                                         CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                     Ejemplos CSS
□ Introducción          <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
■ CSS                   <?xml-stylesheet type="text/css" href="nombres.css"?>
□ XSLT                  <grupo>
□ XPath                 <nombre>Pedro</nombre><nombre>Juan</nombre>
□ XSL-FO                <nombre>Luis</nombre><nombre>Adolfo</nombre>
                        <nombre>Francisco</nombre><nombre>José</nombre>
                        <nombre>Martín</nombre><nombre>Petra</nombre>
                 5/40
                        <nombre>María</nombre>
                        </grupo>

                        nombre {display:block;}


                        nombre { display:block;
                           text-align:center;
                           padding:20px; margin: 5px;
                           border:solid thin blue;
                           }
                        grupo { display:table;
                           width:10em;
                           margin: 10px auto;}

Abril de 2011                                                            CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                  Actividad I: CSS
                                         Probar    los   ejemplos       anteriores   en   distintos
                                          navegadores:
                                          -Sin la instrucción de procesado
                                          -Con la hoja mínima, aplicando display:block
                                          -Experimentar con otros ejemplos y propiedades, por
                                            ejemplo simulando tablas.


                                          -Explotar el uso de identificadores id para colorear
                                            ciertas celdas. Puede ser necesario crear el DTD.
                                          -Poner en encabezado y un pie a la lista empleando
                                            SOLO CSS, con los pseudo-elementos :before y
                                            :after aplicados a grupo.


Abril de 2011                                                                              CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                XSL
□ Introducción          eXtensible Stylesheet Language: XSL
□ CSS
■ XSLT                  Dos sublenguajes
□ XPath
□ XSL-FO                  • XSL Transformations: XSLT
                                –   Lenguaje de programación
                          • XSL - Formatting Objects: XSL-FO
                 7/40
                                –   Instrucciones de formato

                        El modelo y otros acompañantes
                          • Document Object Model: DOM
                                –   Árbol de elementos
                          • XML Path Language: XPath
                                –   Localización dentro del árbol DOM
                          • XML Linking Language: XLink
                                –   Gestión de hiperenlaces

                        Estándares W3C todos
Abril de 2011                                                           CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                XSLT
□ Introducción          XSL Transformations
□ CSS
■ XSLT                    • Define transformaciones sobre documentos XML
□ XPath                         –   Documento de entrada → documento de salida
□ XSL-FO                            XML → XML, XML → HTML, XML → texto…
                          • Espacio de nombres XSLT 1.0:
                                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 8/40

                          • Prefijo habitual: xsl
                          • Elemento raíz: 2 sinónimos
                                    <xsl:stylesheet … >
                                    <xsl:transform … >
                          • Enlace desde documentos: instrucción de procesado
                                    <?xml-stylesheet type="text/xsl" href="ej0.xsl"?>
                          • Ejecución:
                                – En navegadores: Firefox, Internet Explorer...
                                – Procesadores XSL: xsltproc




Abril de 2011                                                                     CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                Ejemplos XSLT (I): ¡Hola mundo!
□ Introducción           <?xml version="1.0" encoding="UTF-8"?>
□ CSS                    <?xml-stylesheet type="text/xsl" href="nombres.xsl"?>
■ XSLT                   <grupo><nombre>Pedro</nombre> …
□ XPath
□ XSL-FO                 <?xml version="1.0" encoding="utf-8"?>
                         <xsl:stylesheet version="1.0"
                         xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                  9/40   <xsl:output method="text" encoding="iso-8859-1"/>

                             <xsl:template match="nombre">
                                <xsl:text>¡Hola </xsl:text>
                                <xsl:value-of select="."/>
                                <xsl:text>!</xsl:text>
                             </xsl:template>

                         </xsl:stylesheet>

                          • Transformaciones organizadas en «plantillas»
                                – xsl:template
                                – Búsqueda recursiva apoyada por condiciones


Abril de 2011                                                                  CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



       Ejemplos XSLT (II): plantillas básicas
□ Introducción           <?xml version="1.0" encoding="UTF-8"?>
□ CSS                    <?xml-stylesheet type="text/xsl" href="nombres.xsl"?>
■ XSLT                   <grupo><nombre>Pedro</nombre> …
□ XPath
□ XSL-FO                 <?xml version="1.0" encoding="utf-8"?>
                         <xsl:stylesheet version="1.0"
                         xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                 10/40   <xsl:output method="text" encoding="iso-8859-1"/>
                            <xsl:template match="/">
                               <xsl:text>¡Hola a todo el mundo!</xsl:text>
                               <xsl:apply-templates/>
                            </xsl:template>
                            <xsl:template match="nombre">
                               <xsl:text>¡Hola </xsl:text>
                               <xsl:value-of select="."/>
                               <xsl:text>!</xsl:text>
                            </xsl:template>
                         </xsl:stylesheet>

                                –   Forzamos la búsqueda en los hijos:
                                    xsl:apply-templates
Abril de 2011                                                             CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                Actividad II: procesadores XSLT
                                         Probar     los    ejemplos     anteriores   en   distintos
                                          navegadores.
                                          -Solo con la plantilla aplicada a <nombre>
                                          -Añadir la plantilla aplicada al elemento raíz, sin la
                                            instrucción para aplicar plantillas a los hijos. Veréis
                                            que se anula el efecto de recursividad y por tanto el
                                            de la plantilla anterior.

                                         Probar a realizar la transformación con la herramienta
                                          xsltproc en línea de órdenes.




Abril de 2011                                                                              CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                xsltproc
□ Introducción              Utilidad de texto para aplicar transformaciones.
□ CSS
■ XSLT                        • Soporta XSLT 1.0
□ XPath
□ XSL-FO



                    12/40




                $> xsltproc
                Usage: xsltproc [options] stylesheet file [file ...]
                   Options:
                        --version or -V: show the version of libxml and libxslt
                        --verbose or -v: show logs of what's happening
                        --output file or -o file: save to a given file
                        --noout: do not dump the result
                        --encoding: the input document character encoding
                        …
                Project libxslt home page: http://xmlsoft.org/XSLT/
                To report bugs and get help: http://xmlsoft.org/XSLT/bugs.html

Abril de 2011                                                             CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                      n! ≡ n × (n-1)!
□ Introducción
□ CSS
                         XSLT es un lenguaje declarativo.
■ XSLT                          – Definimos un conjunto de reglas a aplicar.
□ XPath                         – Se aplican a todo el documento: el árbol DOM

□ XSL-FO                        – No hay que especificar la secuencia para aplicarlas.


                         Modelo recursivo:
                 13/40
                           • Dos partes en cada plantilla
                                – Atributos, match: patrón de selección de los elementos
                                – Contenido: resultado a producir

                           • A cada elemento se aplica una plantilla
                                –   Encadenando plantillas se procesa todo el documento
                           • Inicialmente se procesa solo el elemento raíz
                                – Se aplica la regla apropiada
                                – Si no hay regla apropiada se aplica la regla por defecto:

                                  apply-templates
                                – Cualquier regla puede también forzar apply-templates

                                  para transformar los hijos
Abril de 2011                                                                        CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



       Actividad III: transformaciones varias
                                         Combinando       adecuadamente        texto    podemos
                                          transformar el contenido a formatos variados.

                                         - Generar sentencias INSERT de SQL que permitan
                                          incorporar los nombres a una hipotética tabla
                                          Alumnos.

                                         - Transformar la lista de nombres en una página web
                                          con la tabla correspondiente. Conseguir la estructura
                                          básica y luego tratar de pulir para que valide.

                                         Esto puede ayudar...:
                <xsl:output method="xml" encoding="utf-8"
                   doctype-public="-//W3C//DTD XHTML 1.1//EN"
                   doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
                   indent="yes"/>


Abril de 2011                                                                               CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                              xsl:apply-templates
                ●   Al aplicar una plantilla se detiene la recursividad
                    en toda la rama, queda «ensombrecida».
                ●   apply-templates permite volver a «ver» toda la
                    rama en el sitio de la plantilla que nos interese.

                ●   Podemos restringir apply-templates
                    solo a algunos hijos incorporándole el
                    atributo select con la ruta XPath
                    adecuada.
                ●   ¿Nos sirve todavía xmllint?
Abril de 2011                                                      CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                    n! ≡ n × (n-1) × (n-2) … × 2 × 1
□ Introducción                 Modelo iterativo:
□ CSS
■ XSLT                           • XSLT también incluye elementos iterativos.
□ XPath                              – Programación bajo el paradigma procedimental.
□ XSL-FO                             – Podemos diseñar recorridos por el árbol desde una única

                                       plantilla central.
                                     – Basado en bucles que recorren un conjunto de nodos:
                       16/40
                                       for-each en vez de apply-templates
                                 • Ventajas/inconvenientes
                                     – Se pueden construir transformaciones análogas con ambos
                                        estilos de programación.
                                     – El anidamiento de bucles incrementa la complejidad

                                       Complejidad ≈ tamaño - robustez + coste
                                     – Los    programadores tradicionales prefieren el modelo
                                        iterativo. Los programadores XML prefieren el declarativo.
                                     – Se pueden combinar unos y otros en una misma aplicación.



                Paradigma: Teoría cuyo núcleo central se acepta sin cuestionar y que suministra la base
                Paradigma: Teoría cuyo núcleo central se acepta sin cuestionar y que suministra la base
                y modelo para resolver problemas y avanzar en el conocimiento.
                y modelo para resolver problemas y avanzar en el conocimiento.
Abril de 2011                                                                                       CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



  Ejemplos: for-each vs. apply-templates
□ Introducción                  <xsl:template match="/">
□ CSS
                                   <xsl:text>¡Hola a todo el mundo!</xsl:text>
■ XSLT
                                   <xsl:apply-templates select="grupo/nombre"/>
□ XPath
                                </xsl:template>
□ XSL-FO                                                        Recursivo
                                <xsl:template match="nombre">
                                   --&gt; <xsl:value-of select="."/>
                                </xsl:template>
                        17/40



                                <xsl:template match="/">
                                   <xsl:text>¡Hola a todo el mundo!</xsl:text>
                                   <xsl:for-each select="grupo/nombre">
            Iterativo                 --&gt; <xsl:value-of select="."/>
                                   </xsl:for-each>
                                </xsl:template>

                                         Los efectos de espaciado se evitarían con xsl:text


                                     – 2 estilos de programación: recursivo / iterativo
                                     – Recorremos las ramas: xsl:for-each
Abril de 2011                                                                             CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                         Condiciones y alternativas
□ Introducción             • Elementos para producir salidas condicionadas o
□ CSS                        alternativas
■ XSLT
□ XPath
                                –   Elementos con sesgo «procedimental»
□ XSL-FO


                           • Condiciones simples: if
                 18/40
                                –   Atributo test: expresión XPath, la condición
                     <xsl:if test="text()='Juan'">, amigo</xsl:if>


                           • Condiciones múltiples: choose / when / otherwise
                                –   Varias opciones y, además un valor por defecto
                     <xsl:choose>
                      <xsl:when test="text()='Juan'">, amigo!</xsl:when>
                      <xsl:when test="text()='María'">, amiga!</xsl:when>
                      <xsl:otherwise>!</xsl:otherwise>
                     </xsl:choose>

Abril de 2011                                                                        CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                            Variables
□ Introducción            • Valores etiquetados para facilitar su reutilización.
□ CSS                           –   Texto plano o también marcado XML o HTML.
■ XSLT
□ XPath                   • Finalidades
□ XSL-FO                        – Reutilización en diversas partes del código.
                                – Fácil localización para facilitar eventuales cambios.

                                – Mejor legibilidad del código.
                 19/40
                          • NO podemos modificar su valor posteriormente.
                          • Locales a una plantilla o globales compartidas.
                           <xsl:variable name="v0">¡Hola</xsl:variable>
                           <xsl:variable name="v1" select="mundo!"/>
                           …
                           <xsl:value-of select="concat($v0,' ',$v1)">

                          • Definición: 2 alternativas
                                – Atributo select: recomendable para XPATH o texto corto.
                                – Contenido del elemento: texto largo o con marcado.

                          • Acceso: operador $
Abril de 2011                                                                             CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                            Paso de parámetros
□ Introducción            • Valores con nombre que transferimos a otra plantilla
□ CSS                           – apply-templates o llamadas directas call-template
■ XSLT
                                – call-template exige plantillas con nombre
□ XPath
□ XSL-FO                  • Declaración doble
                                – En la llamada: with-param
                                – En la plantilla: param
                 20/40
                          • Definición
                                – En la llamada, con with-param
                                – En atributo select o en contenido, igual que las variables

                          • Acceso también con el operador $

                           <xsl:call-template name="plantillaN">
                              <xsl:with-param name="p0" select="¡Hola!"/>
                           </xsl:call-template> …

                           <xsl:template name="plantillaN">
                           <xsl:param name="p0"/> …
Abril de 2011                                                                          CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                   Más XSLT: generando XML
□ Introducción            • <xsl:output type="xml"…
□ CSS
                                – Introduce prologo, instrucciones de procesado, espacios de
■ XSLT
                                   nombres…
□ XPath
                                – Podemos incrustar los elementos a generar entre los
□ XSL-FO
                                   elementos XSLT o generarlos desde el propio XSLT.
                                – Se conserva el emparejamiento de etiquetas para que la

                 21/40
                                   propia hoja XSLT sea XML bien formado.
                                – Se debe restringir el uso de <xsl:text>: saltos y formato.

                          • Elementos XSLT para generar componentes XML:
                                    <xsl:processing-instruction name= …
                                    <xsl:element name= … / <xsl:attribute name= …
                                    <xsl:comment> …
                          • Trasladando contenido:
                                    <xsl:copy … / <xsl:copy-of …
                          • Mensajes informativos
                                –   Generalmente van a la salida de «error estándar»
                                    <xsl:message> …
Abril de 2011                                                                          CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                XPath (I)
□ Introducción            • Estamos empleando ya expresiones XPath sencillas
□ CSS                       en distintas instrucciones XSLT.
□ XSLT
■ XPath                           <xsl:template match= … >
□ XSL-FO                        – Raíz DOM: “/”

                                – Nodo actual y nodo padre: “.” y “..”

                                – Nodos hijo, todos: “*”

                 22/40          – Nodos hijo con determinado nombre: “nombre” o “./nombre”

                                – Descendientes con determinado nombre: “.//nombre”

                          • Nodos del árbol, casi todo:
                                – Elementos, atributos, texto
                                – Espacios de nombres, instrucciones de procesado

                                – Comentarios, documentos externos

                          • Habitualmente el resultado es plural, habrá múltiples
                            concordancias.
                          • También da acceso a operadores y funciones:
                                  <xsl:value-of select= … >
                                – En atributos no valen “<…>” y se puede sustituir por {…}


Abril de 2011                                                                        CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                            XPath (II)
□ Introducción            • Las expresiones XPath producen respuestas varias
□ CSS                           – Listas de nodos
□ XSLT
                                – Valores lógicos: true/false
■ XPath
                                – Números
□ XSL-FO
                                – Cadenas de texto

                          • Operadores
                 23/40
                                    Aritméticos: + - * div mod
                                    Comparación: = != > >= < <=
                                    Lógicos: and or
                          • Comodín
                                    *
                          • Predicados, filtros
                                    nombre[1] nombre[last()] nombre[position() > 1]
                          • Atributos:
                                    @atributo1
                          • Variables
                                    $variable1
Abril de 2011                                                                         CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                           XPath (III)
□ Introducción            • Las expresiones de ruta XPath tienen la sintaxis:
□ CSS                               nombreeje::localizaciónnodo[predicado]
□ XSLT
■ XPath                   • Ejes: relación con el nodo actual
□ XSL-FO                        – Por árbol: child, parent, self, descendant, ancestor
                                – Por orden: preceding, following

                                – Por orden de hermanos: preceding-sibling, following-sibling
                 24/40
                                – attribute, namespace

                                – Algunos son prescindibles, simplificables: // . .. @ *

                          • Localización - componentes de ruta: /
                                    + Selectores por tipo de nodo: text() node() comment()
                                    + Selector por identificador: id()
                          • Predicados: filtros, condiciones
                                – Posiciones: [1] [last()] [position()>1]
                                – Presencia o valor de un atributo: [@a0] [@a0='…']

                                – Cualquier condición lógica: [a>b]

                          • Podemos combinar varias rutas separadas con |
                          • Ej: descendant::nombre[@baja='sí']
Abril de 2011                                                                         CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                 Actividad IV: XPath y xmllint
                                         La utilidad xmllint nos permite probar expresiones
                                          XPath en modo interactivo

                                                 xmllint --shell archivo.xml




Abril de 2011                                                                       CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                  Funciones XPath / XSLT 1.0
□ Introducción           – boolean              – local-name             – text

□ CSS                    – ceiling              – name                   – translate
□ XSLT                   – comment              – namespace-uri          – true
■ XPath                  – concat               – node                   – unparsed-entity-uri
□ XSL-FO
                         – contains             – normalize-space

                         – count                – not

                         – current              – number
                 26/40
                         – document             – position

                         – element-available    – processing-instruction

                         – false                – round

                         – floor                – starts-with

                         – format-number        – string

                         – function-available   – string-length

                         – generate-id          – substring

                         – id                   – substring-after

                         – key                  – substring-before

                         – lang                 – sum

                         – last                 – system-property


Abril de 2011                                                                         CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                 Ejemplos: lectura de atributos
□ Introducción           <xsl:strip-space elements="*"/><!-- Evitar espacios -->
□ CSS                    <xsl:template match="text()"/><!-- Anular textos -->
□ XSLT
■ XPath                  <xsl:template match="*"><!-- Elementos -->
□ XSL-FO                    Elemento <xsl:value-of select="position()"/>:
                            <xsl:value-of select="name()"/>
                            <xsl:if test="text()">
                 27/40
                                Texto: <xsl:value-of select="text()"/>
                            </xsl:if>
                            <xsl:if test="@*">
                                Atributos: <xsl:apply-templates select="@*"/>
                            </xsl:if>
                            <xsl:if test="*">
                                Hijos: <xsl:apply-templates select="*"/>
                            </xsl:if>
                         </xsl:template>

                         <xsl:template match="@*"><!-- Atributos -->
                            Atributo <xsl:value-of select="position()"/>:
                            <xsl:value-of select="name()"/>
                            Texto: <xsl:value-of select="."/>
                         </xsl:template>
Abril de 2011                                                               CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                Actividad V: rastreo de atributos
                                         Rastrear un documento XHTML y obtener un listado
                                          de hipervínculos con el URI correspondiente.



                                         En un archivo de configuración de máquina virtual de
                                          VirtualBox extraer las direcciones MAC o cualquier
                                          otro valor de configuración




Abril de 2011                                                                            CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                     Ejemplos: generando XML
□ Introducción
□ CSS                    <xsl:template match="/"> <!-- Raíz -->
□ XSLT                      <xsl:message>--&gt; Procesando comentarios
■ XPath                         y contenido...</xsl:message>
□ XSL-FO                    <censo>
                                <xsl:apply-templates
                                   select="grupo/nombre|//comment()"/>
                            </censo>
                 29/40
                         </xsl:template>

                         <xsl:template match="nombre"> <!-- Elementos -->
                            <habitante id="{@id}" nombre="{.}">
                                <sexo><xsl:value-of select="@sexo"/></sexo>
                            </habitante>
                         </xsl:template>

                         <xsl:template match="comment()"> <!-- Comentarios -->
                            <xsl:copy-of select="."/>
                            <xsl:comment>
                                <xsl:value-of select="."/> (duplicado)
                            </xsl:comment>
                         </xsl:template>

Abril de 2011                                                             CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



   Actividad VI: transformación avanzada
                                         Recuperando    el   modelo   utilizado   en   unidades
                                          anteriores para horarios de grupo, completar el
                                          horario semanal y diseñar exportaciones.
                                          -Obtener listados de profesores y listados de
                                            módulos en formato de texto, CSV y XHTML.
                                          -Obtener un horario general del grupo en HTML 4.01
                                            estricto.




Abril de 2011                                                                           CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                      XSL / XSL-FO
□ Introducción           XSL Formatting Objects
□ CSS
□ XSLT                     • Escisión del XSL original, para dar formato.
□ XPath                         – Recomendación W3C, basado en XML
■ XSL-FO                        – Funcionalidad comparable a CSS

                                – Designado como XSL a secas


                 31/40
                           • Espacio de nombres XSL 1.1:
                                    xmlns:fo="http://www.w3.org/1999/XSL/Format"
                           • Prefijo habitual: fo
                           • Elemento raíz: <fo:root … >
                                – Archivos con extensión fo o fob
                                – Archivos de salida generables con transformaciones XSLT.

                           • Estructura:
                                – modelo de páginas, con zonas y márgenes
                                – contenido organizado en bloques

                           • Herramientas
                                –   FOP de la Fundación Apache: convierte a PDF y otros
Abril de 2011                                                                       CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                         XSL / XSL-FO: Estructura
□ Introducción           root                                 Raíz
□ CSS
□ XSLT                      • layout-master-set                   • Disposición
□ XPath                          –   simple-page-master              –   Páginas
■ XSL-FO                             region…                             regiones…
                            • page-sequence                       • Contenido
                 32/40
                                 –   flow                            –   Flujos
                                     block…                              bloques…


                                                      BEFORE




                         START                        BODY                           END




                                                          AFTER
Abril de 2011                                                                        CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                Ejemplos: XSL-FO
□ Introducción              <?xml version="1.0" encoding="utf-8"?>
□ CSS                       <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
□ XSLT
□ XPath                     <fo:layout-master-set>
■ XSL-FO                    <fo:simple-page-master master-name="A4"
                               page-width="297mm" page-height="210mm"
                               margin-top="1cm" margin-bottom="1cm"
                    33/40
                               margin-left="1cm" margin-right="1cm">
                              <fo:region-body margin="3cm"/>
                              <fo:region-before extent="2cm"/>
                              <fo:region-after extent="2cm"/>
                              <fo:region-start extent="2cm"/>
                              <fo:region-end extent="2cm"/>
          Página
                            </fo:simple-page-master>
                            </fo:layout-master-set>

                            <fo:page-sequence master-reference="A4">
                               <fo:flow flow-name="xsl-region-body">
                                   <fo:block>¡Hola mundo!</fo:block>
        Contenido              </fo:flow>
                            </fo:page-sequence>
                            </fo:root>
Abril de 2011                                                                CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                               Actividad VII: FOP
                                         FOP es una utilidad de software libre producida por la
                                          Fundación Apache para realizar transformaciones
                                          XSL (XSL-FO). Es una aplicación Java, por tanto
                                          multiplataforma, pero requiere tener instalada una
                                          máquina virtual Java (por ejemplo el JRE de Oracle).

                                         Descomprimirla en el equipo y tratar de obtener el
                                          documento del ejemplo.

                                         Adaptar también algún ejemplo previo de XSLT para
                                          que   nos    produzca    una   salida   XSL-FO           y
                                          transformarla.




Abril de 2011                                                                          CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                XLink
□ Introducción           XML Linking Language
□ CSS
□ XSLT                     • Vocabulario para          asociar     enlaces      a    cualquier
□ XPath                      elemento XML.
■ XSL-FO                        – Incorpora el atributo href y otros
                                – Enlaces simples como en HTML y complejos o extendidos


                 35/40
                           • Espacio de nombres XLink 1.1:
                                    xmlns:xlink="http://www.w3.org/1999/xlink"
                           • Atributos con el prefijo habitual: xlink
                                – A definir en el DTD o esquema creado por el autor.
                                – Definidos global, no localmente: siempre se exige el prefijo.

                                – Luego en XHTML: <a href= … no se ajusta a XLink.



                         <grupo xmlns:xlink="http://www.w3.org/1999/xlink">
                            <nombre xlink:type="simple"
                               xlink:href="http://www.mio.es/alumnos/"
                               xlink:show="new">
                                  Juan
                            </nombre>
Abril de 2011                                                                          CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                ...y más
□ Introducción           Quedan bastantes lenguajes        que   aportan
□ CSS
□ XSLT                   funcionalidades a XML:
□ XPath                   • XLL, XLink, XBase, XPointer
■ XSL-FO
                          • XInclude
                          • XQuery
                 36/40




Abril de 2011                                                     CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                    Documentación
□ Introducción           Todo código fuente debe documentarse
□ CSS
□ XSLT                       + comprensión → - errores, - tiempo, - coste
□ XPath                         – En cualquier lenguaje de programación/datos: XML
□ XSL-FO                        – Siguiendo modelos de la organización, lenguaje o propios


                         Documentación del código en varios aspectos
                 37/40
                           • Autodocumentación: uso de nombres descriptivos
                           • Autodocumentación: estructura sencillas, legibles
                           • Comentarios internos del código:
                                – aspectos no evidentes
                                – ¡NUNCA PARA MAQUILLAR CÓDIGO ILEGIBLE!

                           • Comentarios de módulos:
                                – función, entradas y salidas
                                – comportamiento ante situaciones límite o atípicas

                           • Documentos externos: diseño, API...
                                –   A veces es autogenerado a partir de los anteriores.

Abril de 2011                                                                             CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                        Referencias
                Clark, J. (1999, W3C Recommendation) XSL Transformations
                http://www.w3.org/TR/xslt
                W3Schools (WWW) XSLT Tutorial
                http://www.w3schools.com/xsl/
                Rossi, F. (2003, APIACOA.org). Transformations XSLT
                http://apiacoa.org/publications/teaching/xml/exercices/xslt.pdf
                Boulanger, T. y Lecomte, S. (2009, ENI). XML práctico: bases esenciales,
                conceptos y casos prácticos. ISBN: 978-2-7460-4958-1.
                Dankert, E. (2005, edankert...) XML Grammars
                http://www.edankert.com/transforms/
                Webucator (2009) XSLT Tutorial.
                http://www.learn-xslt-tutorial.com/
                Nogales, J. T. (2010, Univ. Carlos III de Madrid) Introducción a XSLT
                http://www.bib.uc3m.es/~nogales/cursos/xslt.html
                Merelo, J. J. (GeNeura, Univ. Granada) Generación de páginas Web usando
                XSLT y XML.
                http://geneura.ugr.es/~jmerelo/XSLT/



                                      Bibliografía actualizada en delicious:
                                    http://www.delicious.com/dhmartin/LM-ASIR
Abril de 2011                                                                           CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                                                Licencia




                Este material está disponible bajo una Licencia Creative Commons,
                           http://creativecommons.org/licenses/by-nc-sa/3.0/es/




Abril de 2011                                                                     CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.



                         ¿Dudas o cuestiones?




Abril de 2011                                   CIFP Juan de Colonia

Más contenido relacionado

Similar a LM-UT6: Transformaciones XML (20)

LM-UT5: DTD, XML Schema
LM-UT5: DTD, XML Schema LM-UT5: DTD, XML Schema
LM-UT5: DTD, XML Schema
 
LM-UT1: Lenguajes de marcas
LM-UT1: Lenguajes de marcas LM-UT1: Lenguajes de marcas
LM-UT1: Lenguajes de marcas
 
Dhtml manual 2 desconocido
Dhtml manual 2   desconocidoDhtml manual 2   desconocido
Dhtml manual 2 desconocido
 
XSLT y XPATH
XSLT y XPATHXSLT y XPATH
XSLT y XPATH
 
XML Y RDF En Web SemáNtica
XML Y RDF En Web SemáNticaXML Y RDF En Web SemáNtica
XML Y RDF En Web SemáNtica
 
XML y RDF en Web Semántica
XML y RDF en Web SemánticaXML y RDF en Web Semántica
XML y RDF en Web Semántica
 
U7 1 xslt-curso2018-19
U7 1 xslt-curso2018-19U7 1 xslt-curso2018-19
U7 1 xslt-curso2018-19
 
Lenguaje XML
Lenguaje XMLLenguaje XML
Lenguaje XML
 
U7 1 xslt-curso2017-18
U7 1 xslt-curso2017-18U7 1 xslt-curso2017-18
U7 1 xslt-curso2017-18
 
Visualizacion
VisualizacionVisualizacion
Visualizacion
 
Universidad de La Habana - SharePoint, Listas y XSLT
Universidad de La Habana  - SharePoint, Listas y XSLTUniversidad de La Habana  - SharePoint, Listas y XSLT
Universidad de La Habana - SharePoint, Listas y XSLT
 
XML: Introducción
XML: IntroducciónXML: Introducción
XML: Introducción
 
Datos En La Web - Clase 2
Datos En La Web - Clase 2Datos En La Web - Clase 2
Datos En La Web - Clase 2
 
Xml presentacin
Xml presentacinXml presentacin
Xml presentacin
 
FORMATO XML
FORMATO XMLFORMATO XML
FORMATO XML
 
Tecnologia Aplicaciones Web
Tecnologia Aplicaciones WebTecnologia Aplicaciones Web
Tecnologia Aplicaciones Web
 
Colima2000
Colima2000Colima2000
Colima2000
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
Curso xml
Curso xmlCurso xml
Curso xml
 
LM-UT3: CSS
LM-UT3: CSS LM-UT3: CSS
LM-UT3: CSS
 

Más de David Martin

Más de David Martin (15)

PLE UT10
PLE UT10PLE UT10
PLE UT10
 
Taller: «Gráficos en el Aula»
Taller: «Gráficos en el Aula»Taller: «Gráficos en el Aula»
Taller: «Gráficos en el Aula»
 
IW-UTXX: Programación web en PHP con bases de datos
IW-UTXX: Programación web en PHP con bases de datosIW-UTXX: Programación web en PHP con bases de datos
IW-UTXX: Programación web en PHP con bases de datos
 
LM-UT8: Sistemas de Gestión empresarial
LM-UT8: Sistemas de Gestión empresarialLM-UT8: Sistemas de Gestión empresarial
LM-UT8: Sistemas de Gestión empresarial
 
LM-UT2: HTML
LM-UT2: HTML LM-UT2: HTML
LM-UT2: HTML
 
LM-UT4: Sindicación de contenidos
LM-UT4: Sindicación de contenidosLM-UT4: Sindicación de contenidos
LM-UT4: Sindicación de contenidos
 
Inkscape
InkscapeInkscape
Inkscape
 
La Aldea Global
La Aldea GlobalLa Aldea Global
La Aldea Global
 
Plataformas web
Plataformas webPlataformas web
Plataformas web
 
Ple Ut8
Ple Ut8Ple Ut8
Ple Ut8
 
Burgo Red
Burgo RedBurgo Red
Burgo Red
 
Ethnet
EthnetEthnet
Ethnet
 
Ociburgo
OciburgoOciburgo
Ociburgo
 
Fundicar
FundicarFundicar
Fundicar
 
Eth100
Eth100Eth100
Eth100
 

Último

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 

Último (20)

Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 

LM-UT6: Transformaciones XML

  • 1. Lenguajes de Marcas y SGI UT 6: XML (II). Transformación de documentos y hojas de estilo. CFGS «Administración de Sistemas Informáticos en Red» CIFP Juan de Colonia (Burgos) David H. Martín Alonso – Curso 2010/2011 –
  • 2. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Contenidos CSS XSLT XPath Abril de 2011 CIFP Juan de Colonia
  • 3. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Objetivos ■ Introducción • XML permite estructurar la información. □ CSS □ XSLT • Habitualmente pensaremos en algún uso ¿no? □ XPath – Visualizar. □ XSL-FO – Imprimir. – Transferencia entre aplicaciones. • ¿Cómo? Opciones: 3/40 – Programar aplicaciones particulares para cada uso. – Formatos/lenguajes complementarios para XML. Abril de 2011 CIFP Juan de Colonia
  • 4. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XML y CSS □ Introducción • ¿Cómo se ve un archivo XML? ■ CSS – No es una prioridad la visualización directa de XML. □ XSLT – No es competitivo con las posibilidades de HTML/XHTML. □ XPath – ¿Cómo haríamos una tabla? □ XSL-FO • Los navegadores web proporcionan una visualización básica: 4/40 – coloreado de sintaxis – árbol de elementos desplegable • CSS permite mejorar la visualización directa – Reutilización de CSS: HTML, XML, SVG... • Transformaciones limitadas de la estructura. – Efecto camaleónico gracias a la propiedad display – display: none, block, inline, list-item, table… • Enlace a la hoja CSS: instrucción de procesado (PI) <?xml-stylesheet type="text/css" href="ej0.css"?> Abril de 2011 CIFP Juan de Colonia
  • 5. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos CSS □ Introducción <?xml version="1.0" encoding="UTF-8" standalone="yes"?> ■ CSS <?xml-stylesheet type="text/css" href="nombres.css"?> □ XSLT <grupo> □ XPath <nombre>Pedro</nombre><nombre>Juan</nombre> □ XSL-FO <nombre>Luis</nombre><nombre>Adolfo</nombre> <nombre>Francisco</nombre><nombre>José</nombre> <nombre>Martín</nombre><nombre>Petra</nombre> 5/40 <nombre>María</nombre> </grupo> nombre {display:block;} nombre { display:block; text-align:center; padding:20px; margin: 5px; border:solid thin blue; } grupo { display:table; width:10em; margin: 10px auto;} Abril de 2011 CIFP Juan de Colonia
  • 6. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad I: CSS Probar los ejemplos anteriores en distintos navegadores: -Sin la instrucción de procesado -Con la hoja mínima, aplicando display:block -Experimentar con otros ejemplos y propiedades, por ejemplo simulando tablas. -Explotar el uso de identificadores id para colorear ciertas celdas. Puede ser necesario crear el DTD. -Poner en encabezado y un pie a la lista empleando SOLO CSS, con los pseudo-elementos :before y :after aplicados a grupo. Abril de 2011 CIFP Juan de Colonia
  • 7. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XSL □ Introducción eXtensible Stylesheet Language: XSL □ CSS ■ XSLT Dos sublenguajes □ XPath □ XSL-FO • XSL Transformations: XSLT – Lenguaje de programación • XSL - Formatting Objects: XSL-FO 7/40 – Instrucciones de formato El modelo y otros acompañantes • Document Object Model: DOM – Árbol de elementos • XML Path Language: XPath – Localización dentro del árbol DOM • XML Linking Language: XLink – Gestión de hiperenlaces Estándares W3C todos Abril de 2011 CIFP Juan de Colonia
  • 8. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XSLT □ Introducción XSL Transformations □ CSS ■ XSLT • Define transformaciones sobre documentos XML □ XPath – Documento de entrada → documento de salida □ XSL-FO XML → XML, XML → HTML, XML → texto… • Espacio de nombres XSLT 1.0: xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 8/40 • Prefijo habitual: xsl • Elemento raíz: 2 sinónimos <xsl:stylesheet … > <xsl:transform … > • Enlace desde documentos: instrucción de procesado <?xml-stylesheet type="text/xsl" href="ej0.xsl"?> • Ejecución: – En navegadores: Firefox, Internet Explorer... – Procesadores XSL: xsltproc Abril de 2011 CIFP Juan de Colonia
  • 9. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos XSLT (I): ¡Hola mundo! □ Introducción <?xml version="1.0" encoding="UTF-8"?> □ CSS <?xml-stylesheet type="text/xsl" href="nombres.xsl"?> ■ XSLT <grupo><nombre>Pedro</nombre> … □ XPath □ XSL-FO <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 9/40 <xsl:output method="text" encoding="iso-8859-1"/> <xsl:template match="nombre"> <xsl:text>¡Hola </xsl:text> <xsl:value-of select="."/> <xsl:text>!</xsl:text> </xsl:template> </xsl:stylesheet> • Transformaciones organizadas en «plantillas» – xsl:template – Búsqueda recursiva apoyada por condiciones Abril de 2011 CIFP Juan de Colonia
  • 10. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos XSLT (II): plantillas básicas □ Introducción <?xml version="1.0" encoding="UTF-8"?> □ CSS <?xml-stylesheet type="text/xsl" href="nombres.xsl"?> ■ XSLT <grupo><nombre>Pedro</nombre> … □ XPath □ XSL-FO <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 10/40 <xsl:output method="text" encoding="iso-8859-1"/> <xsl:template match="/"> <xsl:text>¡Hola a todo el mundo!</xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template match="nombre"> <xsl:text>¡Hola </xsl:text> <xsl:value-of select="."/> <xsl:text>!</xsl:text> </xsl:template> </xsl:stylesheet> – Forzamos la búsqueda en los hijos: xsl:apply-templates Abril de 2011 CIFP Juan de Colonia
  • 11. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad II: procesadores XSLT Probar los ejemplos anteriores en distintos navegadores. -Solo con la plantilla aplicada a <nombre> -Añadir la plantilla aplicada al elemento raíz, sin la instrucción para aplicar plantillas a los hijos. Veréis que se anula el efecto de recursividad y por tanto el de la plantilla anterior. Probar a realizar la transformación con la herramienta xsltproc en línea de órdenes. Abril de 2011 CIFP Juan de Colonia
  • 12. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. xsltproc □ Introducción Utilidad de texto para aplicar transformaciones. □ CSS ■ XSLT • Soporta XSLT 1.0 □ XPath □ XSL-FO 12/40 $> xsltproc Usage: xsltproc [options] stylesheet file [file ...] Options: --version or -V: show the version of libxml and libxslt --verbose or -v: show logs of what's happening --output file or -o file: save to a given file --noout: do not dump the result --encoding: the input document character encoding … Project libxslt home page: http://xmlsoft.org/XSLT/ To report bugs and get help: http://xmlsoft.org/XSLT/bugs.html Abril de 2011 CIFP Juan de Colonia
  • 13. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. n! ≡ n × (n-1)! □ Introducción □ CSS XSLT es un lenguaje declarativo. ■ XSLT – Definimos un conjunto de reglas a aplicar. □ XPath – Se aplican a todo el documento: el árbol DOM □ XSL-FO – No hay que especificar la secuencia para aplicarlas. Modelo recursivo: 13/40 • Dos partes en cada plantilla – Atributos, match: patrón de selección de los elementos – Contenido: resultado a producir • A cada elemento se aplica una plantilla – Encadenando plantillas se procesa todo el documento • Inicialmente se procesa solo el elemento raíz – Se aplica la regla apropiada – Si no hay regla apropiada se aplica la regla por defecto: apply-templates – Cualquier regla puede también forzar apply-templates para transformar los hijos Abril de 2011 CIFP Juan de Colonia
  • 14. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad III: transformaciones varias Combinando adecuadamente texto podemos transformar el contenido a formatos variados. - Generar sentencias INSERT de SQL que permitan incorporar los nombres a una hipotética tabla Alumnos. - Transformar la lista de nombres en una página web con la tabla correspondiente. Conseguir la estructura básica y luego tratar de pulir para que valide. Esto puede ayudar...: <xsl:output method="xml" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" indent="yes"/> Abril de 2011 CIFP Juan de Colonia
  • 15. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. xsl:apply-templates ● Al aplicar una plantilla se detiene la recursividad en toda la rama, queda «ensombrecida». ● apply-templates permite volver a «ver» toda la rama en el sitio de la plantilla que nos interese. ● Podemos restringir apply-templates solo a algunos hijos incorporándole el atributo select con la ruta XPath adecuada. ● ¿Nos sirve todavía xmllint? Abril de 2011 CIFP Juan de Colonia
  • 16. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. n! ≡ n × (n-1) × (n-2) … × 2 × 1 □ Introducción Modelo iterativo: □ CSS ■ XSLT • XSLT también incluye elementos iterativos. □ XPath – Programación bajo el paradigma procedimental. □ XSL-FO – Podemos diseñar recorridos por el árbol desde una única plantilla central. – Basado en bucles que recorren un conjunto de nodos: 16/40 for-each en vez de apply-templates • Ventajas/inconvenientes – Se pueden construir transformaciones análogas con ambos estilos de programación. – El anidamiento de bucles incrementa la complejidad Complejidad ≈ tamaño - robustez + coste – Los programadores tradicionales prefieren el modelo iterativo. Los programadores XML prefieren el declarativo. – Se pueden combinar unos y otros en una misma aplicación. Paradigma: Teoría cuyo núcleo central se acepta sin cuestionar y que suministra la base Paradigma: Teoría cuyo núcleo central se acepta sin cuestionar y que suministra la base y modelo para resolver problemas y avanzar en el conocimiento. y modelo para resolver problemas y avanzar en el conocimiento. Abril de 2011 CIFP Juan de Colonia
  • 17. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos: for-each vs. apply-templates □ Introducción <xsl:template match="/"> □ CSS <xsl:text>¡Hola a todo el mundo!</xsl:text> ■ XSLT <xsl:apply-templates select="grupo/nombre"/> □ XPath </xsl:template> □ XSL-FO Recursivo <xsl:template match="nombre"> --&gt; <xsl:value-of select="."/> </xsl:template> 17/40 <xsl:template match="/"> <xsl:text>¡Hola a todo el mundo!</xsl:text> <xsl:for-each select="grupo/nombre"> Iterativo --&gt; <xsl:value-of select="."/> </xsl:for-each> </xsl:template> Los efectos de espaciado se evitarían con xsl:text – 2 estilos de programación: recursivo / iterativo – Recorremos las ramas: xsl:for-each Abril de 2011 CIFP Juan de Colonia
  • 18. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Condiciones y alternativas □ Introducción • Elementos para producir salidas condicionadas o □ CSS alternativas ■ XSLT □ XPath – Elementos con sesgo «procedimental» □ XSL-FO • Condiciones simples: if 18/40 – Atributo test: expresión XPath, la condición <xsl:if test="text()='Juan'">, amigo</xsl:if> • Condiciones múltiples: choose / when / otherwise – Varias opciones y, además un valor por defecto <xsl:choose> <xsl:when test="text()='Juan'">, amigo!</xsl:when> <xsl:when test="text()='María'">, amiga!</xsl:when> <xsl:otherwise>!</xsl:otherwise> </xsl:choose> Abril de 2011 CIFP Juan de Colonia
  • 19. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Variables □ Introducción • Valores etiquetados para facilitar su reutilización. □ CSS – Texto plano o también marcado XML o HTML. ■ XSLT □ XPath • Finalidades □ XSL-FO – Reutilización en diversas partes del código. – Fácil localización para facilitar eventuales cambios. – Mejor legibilidad del código. 19/40 • NO podemos modificar su valor posteriormente. • Locales a una plantilla o globales compartidas. <xsl:variable name="v0">¡Hola</xsl:variable> <xsl:variable name="v1" select="mundo!"/> … <xsl:value-of select="concat($v0,' ',$v1)"> • Definición: 2 alternativas – Atributo select: recomendable para XPATH o texto corto. – Contenido del elemento: texto largo o con marcado. • Acceso: operador $ Abril de 2011 CIFP Juan de Colonia
  • 20. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Paso de parámetros □ Introducción • Valores con nombre que transferimos a otra plantilla □ CSS – apply-templates o llamadas directas call-template ■ XSLT – call-template exige plantillas con nombre □ XPath □ XSL-FO • Declaración doble – En la llamada: with-param – En la plantilla: param 20/40 • Definición – En la llamada, con with-param – En atributo select o en contenido, igual que las variables • Acceso también con el operador $ <xsl:call-template name="plantillaN"> <xsl:with-param name="p0" select="¡Hola!"/> </xsl:call-template> … <xsl:template name="plantillaN"> <xsl:param name="p0"/> … Abril de 2011 CIFP Juan de Colonia
  • 21. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Más XSLT: generando XML □ Introducción • <xsl:output type="xml"… □ CSS – Introduce prologo, instrucciones de procesado, espacios de ■ XSLT nombres… □ XPath – Podemos incrustar los elementos a generar entre los □ XSL-FO elementos XSLT o generarlos desde el propio XSLT. – Se conserva el emparejamiento de etiquetas para que la 21/40 propia hoja XSLT sea XML bien formado. – Se debe restringir el uso de <xsl:text>: saltos y formato. • Elementos XSLT para generar componentes XML: <xsl:processing-instruction name= … <xsl:element name= … / <xsl:attribute name= … <xsl:comment> … • Trasladando contenido: <xsl:copy … / <xsl:copy-of … • Mensajes informativos – Generalmente van a la salida de «error estándar» <xsl:message> … Abril de 2011 CIFP Juan de Colonia
  • 22. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XPath (I) □ Introducción • Estamos empleando ya expresiones XPath sencillas □ CSS en distintas instrucciones XSLT. □ XSLT ■ XPath <xsl:template match= … > □ XSL-FO – Raíz DOM: “/” – Nodo actual y nodo padre: “.” y “..” – Nodos hijo, todos: “*” 22/40 – Nodos hijo con determinado nombre: “nombre” o “./nombre” – Descendientes con determinado nombre: “.//nombre” • Nodos del árbol, casi todo: – Elementos, atributos, texto – Espacios de nombres, instrucciones de procesado – Comentarios, documentos externos • Habitualmente el resultado es plural, habrá múltiples concordancias. • También da acceso a operadores y funciones: <xsl:value-of select= … > – En atributos no valen “<…>” y se puede sustituir por {…} Abril de 2011 CIFP Juan de Colonia
  • 23. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XPath (II) □ Introducción • Las expresiones XPath producen respuestas varias □ CSS – Listas de nodos □ XSLT – Valores lógicos: true/false ■ XPath – Números □ XSL-FO – Cadenas de texto • Operadores 23/40 Aritméticos: + - * div mod Comparación: = != > >= < <= Lógicos: and or • Comodín * • Predicados, filtros nombre[1] nombre[last()] nombre[position() > 1] • Atributos: @atributo1 • Variables $variable1 Abril de 2011 CIFP Juan de Colonia
  • 24. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XPath (III) □ Introducción • Las expresiones de ruta XPath tienen la sintaxis: □ CSS nombreeje::localizaciónnodo[predicado] □ XSLT ■ XPath • Ejes: relación con el nodo actual □ XSL-FO – Por árbol: child, parent, self, descendant, ancestor – Por orden: preceding, following – Por orden de hermanos: preceding-sibling, following-sibling 24/40 – attribute, namespace – Algunos son prescindibles, simplificables: // . .. @ * • Localización - componentes de ruta: / + Selectores por tipo de nodo: text() node() comment() + Selector por identificador: id() • Predicados: filtros, condiciones – Posiciones: [1] [last()] [position()>1] – Presencia o valor de un atributo: [@a0] [@a0='…'] – Cualquier condición lógica: [a>b] • Podemos combinar varias rutas separadas con | • Ej: descendant::nombre[@baja='sí'] Abril de 2011 CIFP Juan de Colonia
  • 25. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad IV: XPath y xmllint La utilidad xmllint nos permite probar expresiones XPath en modo interactivo xmllint --shell archivo.xml Abril de 2011 CIFP Juan de Colonia
  • 26. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Funciones XPath / XSLT 1.0 □ Introducción – boolean – local-name – text □ CSS – ceiling – name – translate □ XSLT – comment – namespace-uri – true ■ XPath – concat – node – unparsed-entity-uri □ XSL-FO – contains – normalize-space – count – not – current – number 26/40 – document – position – element-available – processing-instruction – false – round – floor – starts-with – format-number – string – function-available – string-length – generate-id – substring – id – substring-after – key – substring-before – lang – sum – last – system-property Abril de 2011 CIFP Juan de Colonia
  • 27. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos: lectura de atributos □ Introducción <xsl:strip-space elements="*"/><!-- Evitar espacios --> □ CSS <xsl:template match="text()"/><!-- Anular textos --> □ XSLT ■ XPath <xsl:template match="*"><!-- Elementos --> □ XSL-FO Elemento <xsl:value-of select="position()"/>: <xsl:value-of select="name()"/> <xsl:if test="text()"> 27/40 Texto: <xsl:value-of select="text()"/> </xsl:if> <xsl:if test="@*"> Atributos: <xsl:apply-templates select="@*"/> </xsl:if> <xsl:if test="*"> Hijos: <xsl:apply-templates select="*"/> </xsl:if> </xsl:template> <xsl:template match="@*"><!-- Atributos --> Atributo <xsl:value-of select="position()"/>: <xsl:value-of select="name()"/> Texto: <xsl:value-of select="."/> </xsl:template> Abril de 2011 CIFP Juan de Colonia
  • 28. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad V: rastreo de atributos Rastrear un documento XHTML y obtener un listado de hipervínculos con el URI correspondiente. En un archivo de configuración de máquina virtual de VirtualBox extraer las direcciones MAC o cualquier otro valor de configuración Abril de 2011 CIFP Juan de Colonia
  • 29. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos: generando XML □ Introducción □ CSS <xsl:template match="/"> <!-- Raíz --> □ XSLT <xsl:message>--&gt; Procesando comentarios ■ XPath y contenido...</xsl:message> □ XSL-FO <censo> <xsl:apply-templates select="grupo/nombre|//comment()"/> </censo> 29/40 </xsl:template> <xsl:template match="nombre"> <!-- Elementos --> <habitante id="{@id}" nombre="{.}"> <sexo><xsl:value-of select="@sexo"/></sexo> </habitante> </xsl:template> <xsl:template match="comment()"> <!-- Comentarios --> <xsl:copy-of select="."/> <xsl:comment> <xsl:value-of select="."/> (duplicado) </xsl:comment> </xsl:template> Abril de 2011 CIFP Juan de Colonia
  • 30. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad VI: transformación avanzada Recuperando el modelo utilizado en unidades anteriores para horarios de grupo, completar el horario semanal y diseñar exportaciones. -Obtener listados de profesores y listados de módulos en formato de texto, CSV y XHTML. -Obtener un horario general del grupo en HTML 4.01 estricto. Abril de 2011 CIFP Juan de Colonia
  • 31. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XSL / XSL-FO □ Introducción XSL Formatting Objects □ CSS □ XSLT • Escisión del XSL original, para dar formato. □ XPath – Recomendación W3C, basado en XML ■ XSL-FO – Funcionalidad comparable a CSS – Designado como XSL a secas 31/40 • Espacio de nombres XSL 1.1: xmlns:fo="http://www.w3.org/1999/XSL/Format" • Prefijo habitual: fo • Elemento raíz: <fo:root … > – Archivos con extensión fo o fob – Archivos de salida generables con transformaciones XSLT. • Estructura: – modelo de páginas, con zonas y márgenes – contenido organizado en bloques • Herramientas – FOP de la Fundación Apache: convierte a PDF y otros Abril de 2011 CIFP Juan de Colonia
  • 32. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XSL / XSL-FO: Estructura □ Introducción root Raíz □ CSS □ XSLT • layout-master-set • Disposición □ XPath – simple-page-master – Páginas ■ XSL-FO region… regiones… • page-sequence • Contenido 32/40 – flow – Flujos block… bloques… BEFORE START BODY END AFTER Abril de 2011 CIFP Juan de Colonia
  • 33. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Ejemplos: XSL-FO □ Introducción <?xml version="1.0" encoding="utf-8"?> □ CSS <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> □ XSLT □ XPath <fo:layout-master-set> ■ XSL-FO <fo:simple-page-master master-name="A4" page-width="297mm" page-height="210mm" margin-top="1cm" margin-bottom="1cm" 33/40 margin-left="1cm" margin-right="1cm"> <fo:region-body margin="3cm"/> <fo:region-before extent="2cm"/> <fo:region-after extent="2cm"/> <fo:region-start extent="2cm"/> <fo:region-end extent="2cm"/> Página </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <fo:flow flow-name="xsl-region-body"> <fo:block>¡Hola mundo!</fo:block> Contenido </fo:flow> </fo:page-sequence> </fo:root> Abril de 2011 CIFP Juan de Colonia
  • 34. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Actividad VII: FOP FOP es una utilidad de software libre producida por la Fundación Apache para realizar transformaciones XSL (XSL-FO). Es una aplicación Java, por tanto multiplataforma, pero requiere tener instalada una máquina virtual Java (por ejemplo el JRE de Oracle). Descomprimirla en el equipo y tratar de obtener el documento del ejemplo. Adaptar también algún ejemplo previo de XSLT para que nos produzca una salida XSL-FO y transformarla. Abril de 2011 CIFP Juan de Colonia
  • 35. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. XLink □ Introducción XML Linking Language □ CSS □ XSLT • Vocabulario para asociar enlaces a cualquier □ XPath elemento XML. ■ XSL-FO – Incorpora el atributo href y otros – Enlaces simples como en HTML y complejos o extendidos 35/40 • Espacio de nombres XLink 1.1: xmlns:xlink="http://www.w3.org/1999/xlink" • Atributos con el prefijo habitual: xlink – A definir en el DTD o esquema creado por el autor. – Definidos global, no localmente: siempre se exige el prefijo. – Luego en XHTML: <a href= … no se ajusta a XLink. <grupo xmlns:xlink="http://www.w3.org/1999/xlink"> <nombre xlink:type="simple" xlink:href="http://www.mio.es/alumnos/" xlink:show="new"> Juan </nombre> Abril de 2011 CIFP Juan de Colonia
  • 36. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. ...y más □ Introducción Quedan bastantes lenguajes que aportan □ CSS □ XSLT funcionalidades a XML: □ XPath • XLL, XLink, XBase, XPointer ■ XSL-FO • XInclude • XQuery 36/40 Abril de 2011 CIFP Juan de Colonia
  • 37. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Documentación □ Introducción Todo código fuente debe documentarse □ CSS □ XSLT + comprensión → - errores, - tiempo, - coste □ XPath – En cualquier lenguaje de programación/datos: XML □ XSL-FO – Siguiendo modelos de la organización, lenguaje o propios Documentación del código en varios aspectos 37/40 • Autodocumentación: uso de nombres descriptivos • Autodocumentación: estructura sencillas, legibles • Comentarios internos del código: – aspectos no evidentes – ¡NUNCA PARA MAQUILLAR CÓDIGO ILEGIBLE! • Comentarios de módulos: – función, entradas y salidas – comportamiento ante situaciones límite o atípicas • Documentos externos: diseño, API... – A veces es autogenerado a partir de los anteriores. Abril de 2011 CIFP Juan de Colonia
  • 38. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Referencias Clark, J. (1999, W3C Recommendation) XSL Transformations http://www.w3.org/TR/xslt W3Schools (WWW) XSLT Tutorial http://www.w3schools.com/xsl/ Rossi, F. (2003, APIACOA.org). Transformations XSLT http://apiacoa.org/publications/teaching/xml/exercices/xslt.pdf Boulanger, T. y Lecomte, S. (2009, ENI). XML práctico: bases esenciales, conceptos y casos prácticos. ISBN: 978-2-7460-4958-1. Dankert, E. (2005, edankert...) XML Grammars http://www.edankert.com/transforms/ Webucator (2009) XSLT Tutorial. http://www.learn-xslt-tutorial.com/ Nogales, J. T. (2010, Univ. Carlos III de Madrid) Introducción a XSLT http://www.bib.uc3m.es/~nogales/cursos/xslt.html Merelo, J. J. (GeNeura, Univ. Granada) Generación de páginas Web usando XSLT y XML. http://geneura.ugr.es/~jmerelo/XSLT/ Bibliografía actualizada en delicious: http://www.delicious.com/dhmartin/LM-ASIR Abril de 2011 CIFP Juan de Colonia
  • 39. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. Licencia Este material está disponible bajo una Licencia Creative Commons, http://creativecommons.org/licenses/by-nc-sa/3.0/es/ Abril de 2011 CIFP Juan de Colonia
  • 40. XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO. ¿Dudas o cuestiones? Abril de 2011 CIFP Juan de Colonia