Post on 17-Dec-2014
description
Lenguajes de Marcas y SGILenguajes de Marcas y SGI
UT 6: XML (II).Transformación de documentos
y hojas de estilo.
CFGS «Administración de SistemasInformáticos en Red»
CIFP Juan de Colonia (Burgos)
David H. Martín Alonso
– Curso 2010/2011 –
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
ContenidosContenidos
CSS
XSLT
XPath
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
3/40
ObjetivosObjetivos• XML permite estructurar la información.• Habitualmente pensaremos en algún uso ¿no?
– Visualizar.– Imprimir.– Transferencia entre aplicaciones.
• ¿Cómo? Opciones:– Programar aplicaciones particulares para cada uso.– Formatos/lenguajes complementarios para XML.
■ Introducción□CSS□XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
4/40
XML y CSSXML y CSS• ¿Cómo se ve un archivo XML?
– No es una prioridad la visualización directa de XML.– No es competitivo con las posibilidades de HTML/XHTML.– ¿Cómo haríamos una tabla?
• Los navegadores web proporcionan una visualización básica:
– 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"?>
□Introducción■CSS□XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
5/40
Ejemplos CSSEjemplos CSS<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml-stylesheet type="text/css" href="nombres.css"?><grupo><nombre>Pedro</nombre><nombre>Juan</nombre><nombre>Luis</nombre><nombre>Adolfo</nombre><nombre>Francisco</nombre><nombre>José</nombre><nombre>Martín</nombre><nombre>Petra</nombre><nombre>María</nombre></grupo>
nombre {display:block;}
□Introducción■CSS□XSLT□XPath□XSL-FO
nombre { display:block;text-align:center;padding:20px; margin: 5px;border:solid thin blue;}
grupo { display:table;width:10em;margin: 10px auto;}
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
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.
Actividad I: CSSActividad I: CSS
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
7/40
XSLXSLeXtensible Stylesheet Language: XSLDos sublenguajes
• XSL Transformations: XSLT– Lenguaje de programación
• XSL - Formatting Objects: XSL-FO– 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
□Introducción□CSS■XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
8/40
XSLTXSLTXSL Transformations
• Define transformaciones sobre documentos XML– Documento de entrada → documento de salida
XML → XML, XML → HTML, XML → texto…• Espacio de nombres XSLT 1.0:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"• 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
□Introducción□CSS■XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
9/40
Ejemplos XSLT (I): ¡Hola mundo!Ejemplos XSLT (I): ¡Hola mundo!<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="nombres.xsl"?><grupo><nombre>Pedro</nombre> … <?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><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
□Introducción□CSS■XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
10/40
Ejemplos XSLT (II): plantillas básicasEjemplos XSLT (II): plantillas básicas<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="nombres.xsl"?><grupo><nombre>Pedro</nombre> …
<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><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
□Introducción□CSS■XSLT□XPath□XSL-FO
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
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.
Actividad II: procesadores XSLTActividad II: procesadores XSLT
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
12/40
xsltprocxsltprocUtilidad de texto para aplicar transformaciones.
• Soporta XSLT 1.0
$> xsltprocUsage: 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
□Introducción□CSS■XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
13/40
n! ≡ n × (n-1)!n! ≡ n × (n-1)!XSLT es un lenguaje declarativo.
– Definimos un conjunto de reglas a aplicar.– Se aplican a todo el documento: el árbol DOM– No hay que especificar la secuencia para aplicarlas.
Modelo recursivo:• 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
□Introducción□CSS■XSLT□XPath□XSL-FO
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
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...:
Actividad III: transformaciones variasActividad III: transformaciones varias
<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-templatesxsl: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.
16/40
n! ≡ n × (n-1) × (n-2) … × 2 × 1n! ≡ n × (n-1) × (n-2) … × 2 × 1Modelo iterativo:
• XSLT también incluye elementos iterativos.– Programación bajo el paradigma procedimental. – Podemos diseñar recorridos por el árbol desde una única
plantilla central.– Basado en bucles que recorren un conjunto de nodos: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.
□Introducción□CSS■XSLT□XPath□XSL-FO
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.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.
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
17/40
Ejemplos: for-each vs. apply-templatesEjemplos: for-each vs. apply-templates<xsl:template match="/">
<xsl:text>¡Hola a todo el mundo!</xsl:text><xsl:apply-templates select="grupo/nombre"/>
</xsl:template><xsl:template match="nombre">
--> <xsl:value-of select="."/></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
□Introducción□CSS■XSLT□XPath□XSL-FO
<xsl:template match="/"><xsl:text>¡Hola a todo el mundo!</xsl:text><xsl:for-each select="grupo/nombre">
--> <xsl:value-of select="."/></xsl:for-each>
</xsl:template>
Recursivo
Iterativo
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
18/40
Condiciones y alternativasCondiciones y alternativas• Elementos para producir salidas condicionadas o
alternativas– Elementos con sesgo «procedimental»
• Condiciones simples: if– Atributo test: expresión XPath, la condición
• Condiciones múltiples: choose / when / otherwise– Varias opciones y, además un valor por defecto
□Introducción□CSS■XSLT□XPath□XSL-FO
<xsl:if test="text()='Juan'">, amigo</xsl:if>
<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.
19/40
VariablesVariables• Valores etiquetados para facilitar su reutilización.
– Texto plano o también marcado XML o HTML.• Finalidades
– Reutilización en diversas partes del código.– Fácil localización para facilitar eventuales cambios.– Mejor legibilidad del código.
• NO podemos modificar su valor posteriormente.• Locales a una plantilla o globales compartidas.
• Definición: 2 alternativas– Atributo select: recomendable para XPATH o texto corto.– Contenido del elemento: texto largo o con marcado.
• Acceso: operador $
□Introducción□CSS■XSLT□XPath□XSL-FO
<xsl:variable name="v0">¡Hola</xsl:variable><xsl:variable name="v1" select="mundo!"/>…<xsl:value-of select="concat($v0,' ',$v1)">
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
20/40
Paso de parámetrosPaso de parámetros• Valores con nombre que transferimos a otra plantilla
– apply-templates o llamadas directas call-template– call-template exige plantillas con nombre
• Declaración doble– En la llamada: with-param – En la plantilla: param
• Definición– En la llamada, con with-param – En atributo select o en contenido, igual que las variables
• Acceso también con el operador $
□Introducción□CSS■XSLT□XPath□XSL-FO
<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.
21/40
Más XSLT: generando XMLMás XSLT: generando XML• <xsl:output type="xml"…
– Introduce prologo, instrucciones de procesado, espacios de nombres…
– Podemos incrustar los elementos a generar entre los elementos XSLT o generarlos desde el propio XSLT.
– Se conserva el emparejamiento de etiquetas para que la 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> …
□Introducción□CSS■XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
22/40
XPath (I)XPath (I)□Introducción□CSS□XSLT■XPath□XSL-FO
• Estamos empleando ya expresiones XPath sencillas en distintas instrucciones XSLT.
<xsl:template match= … > – Raíz DOM: “/”– Nodo actual y nodo padre: “.” y “..”– Nodos hijo, todos: “*”– 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.
23/40
XPath (II)XPath (II)□Introducción□CSS□XSLT■XPath□XSL-FO
• Las expresiones XPath producen respuestas varias– Listas de nodos– Valores lógicos: true/false– Números– Cadenas de texto
• OperadoresAritméticos: + - * div modComparación: = != > >= < <=Lógicos: and or
• Comodín*
• Predicados, filtrosnombre[1] nombre[last()] nombre[position() > 1]
• Atributos:@atributo1
• Variables$variable1
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
24/40
XPath (III)XPath (III)□Introducción□CSS□XSLT■XPath□XSL-FO
• Las expresiones de ruta XPath tienen la sintaxis:nombreeje::localizaciónnodo[predicado]
• Ejes: relación con el nodo actual– Por árbol: child, parent, self, descendant, ancestor– Por orden: preceding, following– Por orden de hermanos: preceding-sibling, following-sibling– 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í']
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
La utilidad xmllint nos permite probar expresiones
XPath en modo interactivo
xmllint --shell archivo.xml
Actividad IV: XPath y xmllintActividad IV: XPath y xmllint
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
26/40
Funciones XPath / XSLT 1.0Funciones XPath / XSLT 1.0□Introducción□CSS□XSLT■XPath□XSL-FO
– boolean– ceiling– comment– concat– contains– count– current– document– element-available– false– floor– format-number– function-available– generate-id– id– key– lang– last
– local-name– name– namespace-uri– node– normalize-space– not– number– position– processing-instruction– round– starts-with– string– string-length– substring– substring-after– substring-before– sum– system-property
– text– translate– true– unparsed-entity-uri
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
27/40
Ejemplos: lectura de atributosEjemplos: lectura de atributos<xsl:strip-space elements="*"/><!-- Evitar espacios --><xsl:template match="text()"/><!-- Anular textos --><xsl:template match="*"><!-- Elementos -->
Elemento <xsl:value-of select="position()"/>:<xsl:value-of select="name()"/><xsl:if test="text()">
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>
□Introducción□CSS□XSLT■XPath□XSL-FO
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
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
Actividad V: rastreo de atributosActividad V: rastreo de atributos
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
29/40
Ejemplos: generando XMLEjemplos: generando XML<xsl:template match="/"> <!-- Raíz -->
<xsl:message>--> Procesando comentariosy contenido...</xsl:message>
<censo><xsl:apply-templates
select="grupo/nombre|//comment()"/></censo>
</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>
□Introducción□CSS□XSLT■XPath□XSL-FO
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
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.
Actividad VI: transformación avanzadaActividad VI: transformación avanzada
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
31/40
XSL / XSL-FOXSL / XSL-FO□Introducción□CSS□XSLT□XPath■XSL-FO
XSL Formatting Objects• Escisión del XSL original, para dar formato.
– Recomendación W3C, basado en XML– Funcionalidad comparable a CSS– Designado como XSL a secas
• 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.
32/40
XSL / XSL-FO: EstructuraXSL / XSL-FO: Estructuraroot
• layout-master-set– simple-page-master
region…• page-sequence
– flowblock…
Raíz• Disposición
– Páginasregiones…
• Contenido– Flujos
bloques…
BODYSTART END
BEFORE
AFTER
□Introducción□CSS□XSLT□XPath■XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
33/40
Ejemplos: XSL-FOEjemplos: XSL-FO<?xml version="1.0" encoding="utf-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:layout-master-set><fo:simple-page-master master-name="A4"
page-width="297mm" page-height="210mm"margin-top="1cm" margin-bottom="1cm"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"/></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>
</fo:flow></fo:page-sequence></fo:root>
Página
Contenido
□Introducción□CSS□XSLT□XPath■XSL-FO
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
Abril de 2011 CIFP Juan de Colonia
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.
Actividad VII: FOPActividad VII: FOP
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
35/40
XLinkXLinkXML Linking Language
• Vocabulario para asociar enlaces a cualquier elemento XML.
– Incorpora el atributo href y otros– Enlaces simples como en HTML y complejos o extendidos
• 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>
□Introducción□CSS□XSLT□XPath■XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
36/40
...y más...y másQuedan bastantes lenguajes que aportan funcionalidades a XML:
• XLL, XLink, XBase, XPointer• XInclude• XQuery
□Introducción□CSS□XSLT□XPath■XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
37/40
DocumentaciónDocumentaciónTodo código fuente debe documentarse
+ comprensión → - errores, - tiempo, - coste– En cualquier lenguaje de programación/datos: XML– Siguiendo modelos de la organización, lenguaje o propios
Documentación del código en varios aspectos• 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.
□Introducción□CSS□XSLT□XPath□XSL-FO
Abril de 2011 CIFP Juan de Colonia
XML (II): TRANSFORMACIONES Y HOJAS DE ESTILO.
ReferenciasReferenciasClark, J. (1999, W3C Recommendation) XSL Transformationshttp://www.w3.org/TR/xslt
W3Schools (WWW) XSLT Tutorialhttp://www.w3schools.com/xsl/
Rossi, F. (2003, APIACOA.org). Transformations XSLThttp://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.
LicenciaLicencia
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?¿Dudas o cuestiones?