LM-UT6: Transformaciones XML

  • 1,776 views
Uploaded on

Lenguajes de Marcas y SGI (CFGS Administrador de Sistemas Informáticos en Red)

Lenguajes de Marcas y SGI (CFGS Administrador de Sistemas Informáticos en Red)

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,776
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
44
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 XPathAbril 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 todosAbril 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: xsltprocAbril 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 condicionesAbril 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-templatesAbril 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 whats 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.htmlAbril 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 hijosAbril 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-eachAbril 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 $variable1Abril 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.xmlAbril 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-propertyAbril 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ónAbril 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 otrosAbril 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 AFTERAbril 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/40Abril 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-ASIRAbril 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