Inicio Tarea: XSL
Artículo
Cancelar

Tarea: XSL

Entrega y presentación

La entrega será en formato ZIP. Leer Entrega y presentación de tareas.

Ejemplo de entrega
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
mruizg_t12.zip
├───mruizg_a01/
|       ciclosFormativos1.xml
|       01_entrada.xsl
|       01_salida.xml
|       02_entrada.xsl
|       02_salida.xml
|       03_entrada.xsl
|       03_salida.xml
|       04_entrada.xsl
|       04_salida.xml
├───mruizg_a02/
|       ciclosFormativos2.xml
|       01_entrada.xsl
|       01_salida.xml
|       02_entrada.xsl
|       02_salida.xml
|       03_entrada.xsl
|       03_salida.xml
├───mruizg_a03/
|       ciclosFormativos3.xml
|       01_entrada.xsl
|       01_salida.xml
|       02_entrada.xsl
|       02_salida.xml
|       03_entrada.xsl
|       03_salida.xml
├───mruizg_a04/
|       museos1.xml
|       01_entrada.xsl
|       01_salida.xml
|       02_entrada.xsl
|       02_salida.xml
|       03_entrada.xsl
|       03_salida.xml
|       04_entrada.xsl
|       04_salida.xml
|       05_entrada.xsl
|       05_salida.xml
├───mruizg_a05/
|       museos2.xml
|       01_entrada.xsl
|       01_salida.xml
|       02_entrada.xsl
|       02_salida.xml
|       03_entrada.xsl
|       03_salida.xml
|       04_entrada.xsl
|       04_salida.xml
|       05_entrada.xsl
|       05_salida.xml
├───mruizg_a06/
|       artistasej.xml
|       entrada.xsl
|       salida_artistasej.html
└───mruizg_a07/
        01_markdown.md
        02_html.html
        03_xslt.xsl
        04_xslfo.xsl
        05_pdf.pdf

El ejemplo de entrega solo es una referencia de entrega, si se necesita eliminar o crear algún fichero o carpeta siéntete libre de hacerlo.

Calificación y duración

La tarea se calificará con una nota de 0 a 10.

Duración

Actividades

Realiza las siguientes actividades.

(Voluntaria) XSLT: Ciclos formativos I

Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<ies nombre="Campus Digital" web="https://campusdigitalfp.com/">
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAM">
      <nombre>Desarrollo de Aplicaciones Multiplataforma</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>

No es importante si en el resultado se generan líneas en blanco a lo largo del documento.

Actividad 1-1

Sin etiquetas:

1
2
3
4
<?xml version="1.0" encoding="UTF-8"?> 
Administración de Sistemas Informáticos en Red 
Desarrollo de Aplicaciones Web 
Sistemas Microinformáticos y Redes

Actividad 1-2

Párrafos:

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <p>Administración de Sistemas Informáticos en Red</p>
  <p>Desarrollo de Aplicaciones Multiplataforma</p>
  <p>Sistemas Microinformáticos y Redes</p>
</html>

Actividad 1-3

Lista:

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <ul>
    <li>Administración de Sistemas Informáticos en Red</li>
    <li>Desarrollo de Aplicaciones Multiplataforma</li>
    <li>Sistemas Microinformáticos y Redes</li>
  </ul>
</html>

Actividad 1-4

Tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <table border="1">
    <tr>
      <td>Administración de Sistemas Informáticos en Red</td>
    </tr>
    <tr>
      <td>Desarrollo de Aplicaciones Multiplataforma</td>
    </tr>
    <tr>
      <td>Sistemas Microinformáticos y Redes</td>
    </tr>
  </table>
</html>

(Voluntaria) XSLT: Ciclos formativos II

Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<ies nombre="Campus Digital" web="https://campusdigitalfp.com/">
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAM">
      <nombre>Desarrollo de Aplicaciones Multiplataforma</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>

Actividad 2-1

Párrafos:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>Campus Digital</h1>
  <p>Administración de Sistemas Informáticos en Red</p>
  <p>Desarrollo de Aplicaciones Multiplataforma</p>
  <p>Sistemas Microinformáticos y Redes</p>
</html>

Actividad 2-2

Lista:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>Campus Digital</h1>
  <p>Página web: <a href="https://campusdigitalfp.com/">https://campusdigitalfp.com/</a></p>
  <ul>
    <li>Administración de Sistemas Informáticos en Red</li>
    <li>Desarrollo de Aplicaciones Multiplataforma</li>
    <li>Sistemas Microinformáticos y Redes</li>
  </ul>
</html>

Actividad 2-3

Tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>Campus Digital</h1>
  <p>Página web: <a href="https://campusdigitalfp.com/">https://campusdigitalfp.com/</a></p>
  <table border="1">
    <tr>
      <th>Nombre del ciclo</th>
      <th>Grado</th>
      <th>Año del título</th>
    </tr>
    <tr>
      <td>Administración de Sistemas Informáticos en Red</td>
      <td>Superior</td>
      <td>2009</td>
    </tr>
    <tr>
      <td>Desarrollo de Aplicaciones Multiplataforma</td>
      <td>Superior</td>
      <td>2010</td>
    </tr>
    <tr>
      <td>Sistemas Microinformáticos y Redes</td>
      <td>Medio</td>
      <td>2008</td>
    </tr>
  </table>
</html>

XSLT: Ciclos formativos III

Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<ies>
  <nombre>Campus Digital</nombre>
  <web>http://www.iesabastos.org</web>
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAM">
      <nombre>Desarrollo de Aplicaciones Multiplataforma</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>

Actividad 3-1

Párrafos:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>Campus Digital</h1>
  <p>Administración de Sistemas Informáticos en Red</p>
  <p>Desarrollo de Aplicaciones Multiplataforma</p>
  <p>Sistemas Microinformáticos y Redes</p>
</html>

Actividad 3-2

Lista:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>Ciclos formativos del Campus Digital</h1>
  <ul>
    <li>ASIR<br />Administración de Sistemas Informáticos en Red, Ciclo Formativo de Grado Superior
      creado en 2009</li>
    <li>DAM<br />Desarrollo de Aplicaciones Multiplataforma, Ciclo Formativo de Grado Superior creado en 2010</li>
    <li>SMR<br />Sistemas Microinformáticos y Redes, Ciclo Formativo de Grado Medio creado en 2008</li>
  </ul>
</html>

Actividad 3-3

Tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8"?>
<html>
  <h1>Campus Digital</h1>
  <table border="1">
    <tr>
      <th>Nombre del ciclo</th>
      <th>Grado</th>
      <th>Año del título</th>
    </tr>
    <tr>
      <td>Administración de Sistemas Informáticos en Red</td>
      <td>Superior</td>
      <td>2009</td>
    </tr>
    <tr>
      <td>Desarrollo de Aplicaciones Multiplataforma</td>
      <td>Superior</td>
      <td>2010</td>
    </tr>
    <tr>
      <td>Sistemas Microinformáticos y Redes</td>
      <td>Medio</td>
      <td>2008</td>
    </tr>
  </table>
</html>

(Voluntaria) XSLT: Museos I

Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<museos>
  <museo>
    <nombre>Museo del Prado</nombre>
    <ciudad>Madrid</ciudad>
    <pais>España</pais>
  </museo>
  <museo>
    <nombre>British Museum</nombre>
    <ciudad>Londres</ciudad>
    <pais>Reino Unido</pais>
  </museo>
  <museo>
    <nombre>Victoria and Albert Museum</nombre>
    <ciudad>Londres</ciudad>
    <pais>Reino Unido</pais>
  </museo>
</museos>

Actividad 4-1

Convertir las etiquetas en atributos:

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<museos>
  <museo nombre="Museo del Prado" ciudad="Madrid" pais="España" />
  <museo nombre="British Museum" ciudad="Londres" pais="Reino Unido" />
  <museo nombre="Victoria and Albert Museum" ciudad="Londres" pais="Reino Unido" />
</museos>

Actividad 4-2

Convertir alguna etiquetas en atributos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<museos>
  <museo>
    <nombre>Museo del Prado</nombre>
    <ubicacion ciudad="Madrid" pais="España" />
  </museo>
  <museo>
    <nombre>British Museum</nombre>
    <ubicacion ciudad="Londres" pais="Reino Unido" />
  </museo>
  <museo>
    <nombre>Victoria and Albert Museum</nombre>
    <ubicacion ciudad="Londres" pais="Reino Unido" />
  </museo>
</museos>

Actividad 4-3

Cambiar la estructura del documento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<ciudades>
  <ciudad>
    <nombre>Madrid</nombre>
    <pais>España</pais>
    <museo>Museo del Prado</museo>
  </ciudad>
  <ciudad>
    <nombre>Londres</nombre>
    <pais>Reino Unido</pais>
    <museo>British Museum</museo>
  </ciudad>
  <ciudad>
    <nombre>Londres</nombre>
    <pais>Reino Unido</pais>
    <museo>Victoria and Albert Museum</museo>
  </ciudad>
</ciudades>

Actividad 4-4

Cambiar la estructura del documento y algunas etiquetas en atributos:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<ciudades>
  <ciudad nombre="Madrid" pais="España">
    <museo>Museo del Prado</museo>
  </ciudad>
  <ciudad nombre="Londres" pais="Reino Unido">
    <museo>British Museum</museo>
  </ciudad>
  <ciudad nombre="Londres" pais="Reino Unido">
    <museo>Victoria and Albert Museum</museo>
  </ciudad>
</ciudades>

Actividad 4-5

Cambiar la estructura del documento y algunas etiquetas en atributos:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<paises>
  <pais nombre="España">
    <museo museo="Museo del Prado" ciudad="Madrid" />
  </pais>
  <pais nombre="Reino Unido">
    <museo museo="British Museum" ciudad="Londres" />
  </pais>
  <pais nombre="Reino Unido">
    <museo museo="Victoria and Albert Museum" ciudad="Londres" />
  </pais>
</paises>

XSLT: Museos II

Dado el siguiente documento XML, escriba las hojas de estilo XSLT que devuelvan la respuesta deseada.

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<museos>
  <museo nombre="Museo del Prado" ciudad="Madrid" pais="España" />
  <museo nombre="British Museum" ciudad="Londres" pais="Reino Unido" />
  <museo nombre="Victoria and Albert Museum" ciudad="Londres" pais="Reino Unido" />
</museos>

Actividad 5-1

Convertir los atributos en etiquetas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<museos>
  <museo>
    <nombre>Museo del Prado</nombre>
    <ciudad>Madrid</ciudad>
    <pais>España</pais>
  </museo>
  <museo>
    <nombre>British Museum</nombre>
    <ciudad>Londres</ciudad>
    <pais>Reino Unido</pais>
  </museo>
  <museo>
    <nombre>Victoria and Albert Museum</nombre>
    <ciudad>Londres</ciudad>
    <pais>Reino Unido</pais>
  </museo>
</museos>

Actividad 5-2

Convertir algunos atributos en etiquetas:

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<museos>
  <museo ubicacion="Madrid (España)">Museo del Prado</museo>
  <museo ubicacion="Londres (Reino Unido)">British Museum</museo>
  <museo ubicacion="Londres (Reino Unido)">Victoria and Albert Museum</museo>
</museos>

Actividad 5-3

Cambiar la estructura del documento y convertir algunos atributos en etiquetas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<ciudades>
  <ciudad nombre="Madrid">
    <pais>España</pais>
    <museo>Museo del Prado</museo>
  </ciudad>
  <ciudad nombre="Londres">
    <pais>Reino Unido</pais>
    <museo>British Museum</museo>
  </ciudad>
  <ciudad nombre="Londres">
    <pais>Reino Unido</pais>
    <museo>Victoria and Albert Museum</museo>
  </ciudad>
</ciudades>

Actividad 5-4

Cambiar la estructura del documento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<paises>
  <pais nombre="España">
    <ciudad nombre="Madrid">
      <museo nombre="Museo del Prado" />
    </ciudad>
  </pais>
  <pais nombre="Reino Unido">
    <ciudad nombre="Londres">
      <museo nombre="British Museum" />
    </ciudad>
  </pais>
  <pais nombre="Reino Unido">
    <ciudad nombre="Londres">
      <museo nombre="Victoria and Albert Museum" />
    </ciudad>
  </pais>
</paises>

Actividad 5-5

Cambiar la estructura del documento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<lugares>
  <lugar tipo="museo">
    <ubicacion nombre="ciudad">Madrid</ubicacion>
    <ubicacion nombre="pais">España</ubicacion>
    <nombre>Museo del Prado</nombre>
  </lugar>
  <lugar tipo="museo">
    <ubicacion nombre="ciudad">Londres</ubicacion>
    <ubicacion nombre="pais">Reino Unido</ubicacion>
    <nombre>British Museum</nombre>
  </lugar>
  <lugar tipo="museo">
    <ubicacion nombre="ciudad">Londres</ubicacion>
    <ubicacion nombre="pais">Reino Unido</ubicacion>
    <nombre>Victoria and Albert Museum</nombre>
  </lugar>
</lugares>

(Voluntaria) XSLT: Artistas

Escribe una transformación XSLT que a partir de un fichero XML con datos de artistas genere una página web con una tabla con los datos de los artistas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8"?>
<artistas>
  <artista cod="a101">
    <nombreCompleto>Diego Velázquez</nombreCompleto>
    <nacimiento>1599</nacimiento>
    <fallecimiento>1660</fallecimiento>
    <pais>España</pais>
    <fichaCompleta>https://es.wikipedia.org/wiki/Diego_Vel%C3%A1zquez</fichaCompleta>
  </artista>
  <artista cod="a102">
    <nombreCompleto>Michelangelo Caravaggio</nombreCompleto>
    <nacimiento>1571</nacimiento>
    <pais>Italia</pais>
    <fichaCompleta>https://es.wikipedia.org/wiki/Caravaggio</fichaCompleta>
  </artista>
  <artista cod="a103">
    <nombreCompleto>Herrada de Landsberg</nombreCompleto>
    <nacimiento>1125</nacimiento>
    <fallecimiento>1195</fallecimiento>
    <pais>Alsacia</pais>
    <fichaCompleta>  https://es.wikipedia.org/wiki/Herrada_de_Landsberg</fichaCompleta>
  </artista>
  <artista cod="a104">
    <nombreCompleto>Francisco de Goya</nombreCompleto>
    <nacimiento>1746</nacimiento>
    <fallecimiento>1828</fallecimiento>
    <pais>España</pais>
    <fichaCompleta>https://es.wikipedia.org/wiki/Francisco_de_Goya</fichaCompleta>
  </artista>
</artistas>

Al aplicar la transformación, el resultado debe ser una página web válida. Es decir, tiene que tener todos los elementos básicos de una página web: título, codificación de caracteres, elementos, html, body y head.

Dentro del cuerpo de la página habrá una tabla, obtenida a partir de los datos del fichero artistas.xml.

  • La tabla tendrá una fila por cada artista mostrado, y una primera fila como como cabecera, con los nombres: Código, Nombre, Año de nacimiento, Año de fallecimiento, País y Página web.
  • Como se puede ver en el fichero, el año de fallecimiento no está disponible para todos los artistas. En ese caso, en la columna correspondiente se mostrará el texto “Desconocido”.
  • En la última columna, el valor se obtiene del elemento fichaCompleta. Debe mostrarse un vínculo a la dirección adecuada, con el texto “Saber más”.
  • Sólo se mostrarán los artistas nacidos después de 1500.
  • Los artistas se mostrarán ordenados por año de nacimiento creciente. Es decir, en la primera fila, el que tenga un año de nacimiento anterior.

Para el fichero artistasej.xml se obtendrá una página web con este aspecto:

Aspecto tabla resultado en Chrome Aspecto tabla resultado en Chrome

Y este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<html>
  <head>
    <meta charset="UTF-8"/>
    <title>Tabla de artistas</title>
  </head>
  <body>
    <table>
      <tr>
        <th>Código</th>
        <th>Nombre</th>
        <th>Año de nacimiento</th>
        <th>Año de fallecimiento</th>
        <th>País</th>
        <th>Página web</th>
      </tr>
      <tr>
        <td>a102</td>
        <td>Michelangelo Caravaggio</td>
        <td>1571</td>
        <td>Desconicido</td>
        <td>Italia</td>
        <td>
          <a target="blank" href="https://es.wikipedia.org/wiki/Caravaggio">Saber más</a>
        </td>
      </tr>
      <tr>
        <td>a101</td>
        <td>Diego Velázquez</td>
        <td>1599</td>
        <td>1660</td>
        <td>España</td>
        <td>
          <a target="blank" href="https://es.wikipedia.org/wiki/Diego_Vel%C3%A1zquez">Saber más</a>
        </td>
      </tr>
      <tr>
        <td>a104</td>
        <td>Francisco de Goya</td>
        <td>1746</td>
        <td>1828</td>
        <td>España</td>
        <td>
          <a target="blank" href="https://es.wikipedia.org/wiki/Francisco_de_Goya">Saber más</a>
        </td>
      </tr>
    </table>
  </body>
</html>

XSLT y XSL-FO

Transforma el documento en formato Markdown que has entregado en la Tarea: Introducción a XPath realiza las siguientes acciones:

  1. Exporta el documento a formato HTML (mejor si es XHTML). Puedes usar la web de codebeautify o cualquier otra.
  2. Transformar el documento HTML a formato XSL-FO con un XSLT. Se recomienda usar Saxon HE.
  3. Transforma el documento XSL-FO a PDF. Se recomienda usar Apache FOP.

Proceso transformación de MD a PDF Proceso transformación de MD a PDF

Puedes basarte en alguno de los siguientes ejemplos pero deberás añadir casos para interpretar listas, bloques de código o cambiar los estilos de los diferentes bloques.

Ejemplo de XSLT que genera un XSL-FO válido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/html/body">

    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

      <fo:layout-master-set>
        <fo:simple-page-master master-name="simple" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="2cm" margin-left="2.5cm" margin-right="2.5cm">
          <fo:region-body margin-top="3cm" />
          <fo:region-before extent="3cm" />
          <fo:region-after extent="1.5cm" />
        </fo:simple-page-master>
      </fo:layout-master-set>

      <fo:page-sequence master-reference="simple">
        <fo:flow flow-name="xsl-region-body">

          <fo:block font-size="24pt" font-family="sans-serif" line-height="24pt" space-after.optimum="15pt" text-align="center" padding-top="3pt">
            <xsl:value-of select="h1"/>
          </fo:block>

          <xsl:for-each select="h2|p">

            <xsl:if test="name() =  'h2'">
              <fo:block font-size="18pt" font-family="sans-serif" line-height="24pt" space-after.optimum="15pt" text-align="left" padding-top="3pt">
                <xsl:value-of select="."/>
              </fo:block>
            </xsl:if>

            <xsl:if test="name() =  'p'">
              <fo:block font-size="12pt" font-family="sans-serif" line-height="18pt" space-after.optimum="15pt" text-align="left" padding-top="3pt">
                <xsl:value-of select="."/>
              </fo:block>
            </xsl:if>

          </xsl:for-each>

        </fo:flow>
      </fo:page-sequence>
    </fo:root>

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

Ejemplo de XSLT que genera un XSL-FO válido usando varias templates y el elemento <xsl:apply-templates>:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <xsl:template match="/html/body">
  
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  
  <fo:layout-master-set>
    <fo:simple-page-master master-name="simple" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="2cm" margin-left="2.5cm" margin-right="2.5cm">
      <fo:region-body margin-top="3cm" />
      <fo:region-before extent="3cm" />
      <fo:region-after extent="1.5cm" />
    </fo:simple-page-master>
      </fo:layout-master-set>

      <fo:page-sequence master-reference="simple">
        <fo:flow flow-name="xsl-region-body">
          
          <fo:block font-size="24pt" font-family="sans-serif" line-height="24pt" space-after.optimum="15pt" text-align="center" padding-top="3pt">
            <xsl:value-of select="h1"/>
          </fo:block>

          <xsl:apply-templates select="h2|p"/>
          
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </xsl:template>

  <xsl:template match="h2">
    <fo:block font-size="18pt" font-family="sans-serif" line-height="24pt" space-after.optimum="15pt" text-align="left" padding-top="3pt">
      <xsl:value-of select="."/>
    </fo:block>
  </xsl:template>

  <xsl:template match="p">
    <fo:block font-size="12pt" font-family="sans-serif" line-height="18pt" space-after.optimum="15pt" text-align="left" padding-top="3pt">
      <xsl:value-of select="."/>
    </fo:block>
  </xsl:template>
  
</xsl:stylesheet>

En mi caso he usado el siguiente comando para crear el XSL-FO:

1
java -jar "C:\Program Files\SaxonHE12-4J\saxon-he-12.4.jar" -xsl:03_xslt_simplificado.xsl -s:02_real.html -o:04_xslfo.xsl

Y el siguiente comando para crear el PDF:

1
fop.bat -fo 04_xslfo.xsl -pdf 05_pdf.pdf

Si quieres saber que son las variables de entorno y como se configuran, lee el artículo Tutorial: La variable de entorno Path

Bibliografía

Este artículo está licenciado bajo CC BY 4.0 por el autor.

Espacios de nombres XML

Tarea: RSS y Atom