Numeración

Mediante <xsl:number> es posible asignar una secuencia a los nodos del árbol resultado. Por ejemplo, se puede numerar capítulos, párrafos o elementos simples. Es posible igualmente la numeración en distintos niveles, así como la definición del formato de salida. El atributo format permite elegir, por ejemplo, entre una numeración con números arábigos o rómanos, o con letras.

El elemento <xsl:number> va acompañado habitualmente de tres atributos: count, level y format. El atributo count determina los nudos que deben ser numerados, level establece el modo en que se debe asignar la secuencia y format el formato de salida.

La hoja de estilo:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output encoding="iso-8859-1" version="1.0"/>
   <xsl:template match="antologia">
      <html>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="autor">
      <br/>
      <h4>
         <xsl:apply-templates/>
      </h4>
   </xsl:template>
   <xsl:template match="nombre">
      <xsl:apply-templates/>
      <xsl:text> </xsl:text>
   </xsl:template>
   <xsl:template match="apellido">
      <xsl:apply-templates/>
   </xsl:template>
   <xsl:template match="titulo">
      <h2>
         <xsl:number format="I" level="any"/>          (1)
         <xsl:text> </xsl:text>                        (2)
         <xsl:apply-templates/>
      </h2>
   </xsl:template>
   <xsl:template match="estrofa">
      <p>
         <b>Estrofa<xsl:number/></b>
         <br/>
         <xsl:apply-templates/>
      </p>
   </xsl:template>
   <xsl:template match="verso">
      <b>Verso <xsl:number level="multiple" count="//estrofa | //estrofa/verso" format="1.1"/></b> (3)
      <br/>
      <xsl:apply-templates/>
      <br/>
   </xsl:template>
   <xsl:template match="poema">
      <br/>
      <xsl:apply-templates/>
   </xsl:template>
</xsl:stylesheet>

(1) En esta plantilla se utiliza el elemento <xsl:number> para numerar los poemas. El atributo format tiene establecida como configuración básica los números arábigos. El valor I asigna un formato de numeración romana en mayúsculas a la secuencia generada.

Aquí se contarán todos los elementos poema en todos los niveles, ya que se le ha asignado el valor any al atributo level y por tanto no se tendrá en cuenta la estructura.

(2) El elemento <xsl:text> permite copiar texto en el documento de salida. Esto puede hacerse aquí también sin este elemento. No obstante, en relación con XSL-FO se emplea de manera habitual debido a que su uso permite controlar los espacios como parte integrante del texto de salida.

(3) El elemento <xsl:number> es empleado aquí con los tres atributos más importantes. El atributo level establece el modo de recuento en función de los niveles del árbol, que puede ser single (sencillo) o multiple (1., 1.1, 1.2, etc). El atributo format establece el formato y tiene como posibles valores 1, a, A, i y I, los cuales se pueden combinar. Cada nivel se separa con ayuda de un carácter. Aquí se utiliza el punto, pero es posible el empleo de otros separadores. El atributo count establece qué elementos se deben contar y en qué niveles. El separador para los niveles es el carácter |.

Vista del navegador

Vista del navegador - Ejemplo de numeración

Ejercicio 6

a) Complete el ejemplo de manera que aparezca también en cada verso la numeración romana correspondiente al poema. Por ejemplo: I.3.4.

b) Escriba la hoja de estilo para que aparezca una numeración continua de las lineas. La numeración debe comprender todo el texto.

>> ver soluciones del ejercicio 6

<< anterior siguiente >>

 


© Derechos de autor 2004, dpunkt.verlag GmbH
El usuario podrá imprimir la versión online. La copia será exclusivamente para uso personal. Por lo demás el presente capítulo del libro "XSL-FO in der Praxis" está sometido a los mismos términos y condiciones que la versión impresa. La presente obra está protegida en su totalidad por la ley de propiedad intelectual. Reservados todos los derechos, incluyendo los derechos de reproducción, traducción, microfilmación, así como el almacenamiento y procesamiento en sistemas electrónicos.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, teléfono + 49 (0) 6221-14830, fax +49 (0) 6221-148399, hallo(at)dpunkt.de