You are on page 1of 21

Manual de Templates

Seccin Bi Publisher
Despus de instalarse debe de estar incorporado en Word en la siguiente pestaa.

Donde encontrar el boton de XML de Ejemplo donde se podra seleccionar y asi probar el template para Oracle basandose en los datos de dicho XML Tambin el usuario encontrar el boton de Esquema XML donde se podra seleccionar y asi probar el template para Oracle basndose en los datos de estructura de dicho XSD

El botn de PDF de la seccion de Presentacion Preliminar ayuda al usuario a visualizar el template en formato pdf presentando el formato diseado en el archivo RTF junto con los datos del XML indicado. Igualmente existen otros formatos de presentacion preliminar disponibles. Este boton ayuda al usuario a visualizar las expresiones Xpath de donde proviene la informacin para cada campo

Con este botn se puede saber la versin de Bi Publisher instalada

Manejo de los campos.

El manejo de dichos campos del template en RTF se pueden introducir al template con ayuda del botn de campo y otros presentados en la ilustracin que ayudaran al usuario a no tener problemas. Cada campo introducido de esta forma queda sombreado en gris como el de @LugarExpedicion

Otra forma de introducir los campos es con solo escribirlos directamente con su direccin Xpath; tal como se ilustra

Siempre es importante incluir el namespace para que el template tenga una buena implementacin es extremadamente necesario ponerlo.

Seccin Word Produccin de tablas Como los diseos de los templates se basan principalmente en tablas se propone usar una tabla para cubrir todo el documento Se deben de saber que se puede hacer con las celdas de las tablas o Como expandirlas / reducirlas o Establecer bordes o Combinar / unir celdas o Dividir celdas /filas /columnas/ tablas
Tambin se propone usar la siguiente barra de opciones para la presentacin de la tabla para concretar dichas operaciones de tablas.

Lneas de la factura

Las lneas de la factura como son del subnodo (cfdi:Comprobante/cfdi:Conceptos/cfdi:Conceptos ) donde Conceptos puede aparecer n veces y donde sus atributos son noIdentificacion descripcin cantidad valorUnitario importe unidad

donde a su vez tiene un subnodo de InformacionAduanera con atributos fecha numero aduana

Se necesitara de un ciclo for-each para encontrar cada concepto y desplegar los valores de sus atributos Como el que se ejemplifica 1. Se inserta un campo 2. Se edita de la siguiente forma modificndole su etiqueta a F 3. Se edita en el texto alternativo con el cdigo del inicio del ciclo mencionado

Solo dando doble click sobre el campo con la leyenda F Podr salir a la vista del usuario un cuadro de propiedades de la etiqueta donde se puede ver el campo Codigo donde se escribe el cdigo que se necesite para recorrer cada linea de concepto

Tambien se podra apreciar el campo de Texto para mostrar donde decimos que F es el texto a mostrar cuando se este editando en Word el template pero realmente ejecutara el codigo antes descrito Cuadro que salta cuando el usuario da click en el boton de Propiedades de Word mostrado en la imagen anterior Despus de tambin aplastar el boton de Add Help Text Donde el usuario finalmente podr ver el texto alternativo que Word tiene nativamente y todo esto es para verificar la integridad de la etiqueta que se cre El mismo cdigo tiene que estar en los dos lugares. Es muy necesario que se verifique esta parte ya que el servidor al que se va a subir este template solo leer lo que este en este campo de ningn otro ms lo leer; aunque se tenga el cdigo correcto en la imagen anterior. Se hara lo mismo con la etiqueta de fin del ciclo for. Revisando que el cdigo sea <?end for-each?> Si no se tendr que capturar a mano. Hay que tener en cuenta que todo el formato que este en medio de estas dos etiquetas se va a repetir cuantas veces el ciclo tenga que seguir por ejemplo si las dos etiqueta contienen a un rengln de una tabla entonces el rengln se pintara esas n veces que el ciclo for-each este en funcionamiento

Copia de formatos La copia de formatos adquiere importancia para ahorrar pasos en la seleccin de fuentes, colores de letra, etc en diferentes zonas del documento. Tambin puede servir para copiar y pegar el mismo formato de texto sin tener que saber cul es el formato solo se tiene que saber de dnde copiarlo y donde pegarlo.

1. Primero se selecciona el texto donde est el texto con el


formato que se desea copirsele el formato.

2. Se aplasta el botn de Format Painter.

3. Se selecciona el texto donde se tiene que aplicar el


formato del texto anterior.

4. Se suelta el mouse y se cambia


el formato al deseado por el usuario.

Seccin herramienta de FO
Se descarga del disco duro USB desde la carpeta de inventario [ (G:)/instaladores/ ] Y se selecciona alguno de los dos .zip indicados en azul

Se descomprime el seleccionado y se accede a la carpeta resultante. El archivo ms importante es el j4lFODesigner.jar como se ilustra en la siguiente en azul:

Se le da clic y se podr ver la siguiente pantalla: Y despus esta:

Despus hay diversas opciones en la barra de herramientas que a continuacin se describen.

Funcionalidades: Nuevo documento FO Nuevo documento FO

Abrir documento FO

Genera un documento PDF a partir del documento Genera el cdigo FO segn como este el documento Para mover objetos dentro del documento Inserta un grfico al documento

Guardar documento FO

Inserta una imagen a documento

Inserta una leyenda al documento

Seccin xsl-fo
Xsl fo es una especificacin que pertenece a la familia de xsl la principal funcin del xsl-fo es darle formato a la informacin dada desde un archivo XML. XSLT y Xpath son parte de la familia de esta especificacin pero con funciones distintas.
Template:

en oracle Es el documento de extensin RTF o FO que permite maniobrar la presentacin de los datos a partir de un archivo XML en FO Es el elemento <xsl:template > que nos permite definir una serie de reglas de presentacin para poder producir un documento, generalmente est anidado en un elemento </xsl:stylesheet> o Ejemplo

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" ... > <xsl:template match="/" > <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="master0" page-width="21.58cm" pageheight="27.95cm" margin="7mm 4mm 7mm 4mm"> <fo:region-body region-name="body0" margin="0cm 0cm 0cm 0cm" spacebefore="280pt" /> <fo:region-before region-name="header0" extent="330pt" /> <fo:region-after region-name="footer0" extent="12mm" displayalign="after"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="master0"> <!--EMPIEZO DEL AREA DE CABECERA DE PAGINA--> <fo:static-content flow-name="header0" > <fo:table width="19.65cm" > <fo:table-column column-width="12.9cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3.75cm"/> <fo:table-body end-indent="0pt" start-indent="0pt"> <fo:table-row height="0.5cm"> <fo:table-cell > <fo:block font-size="7pt"></fo:block> .... </fo:static-content> <!--FIN DEL AREA DE CABECERA DE PAGINA--> <!--EMPIEZO DEL AREA DE PIE DE PAGINA--> <fo:static-content flow-name="footer0"> <fo:table width="20cm"> <fo:table-column column-width="20cm"/> <fo:table-body> <fo:table-row height="0.22cm"> <fo:table-cell number-columns-spanned="1" text-align="end"> <fo:block font-size="5pt"> Pagina:<fo:page-number/> de <fo:page-number-citation ref-id="lastpage" /> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table>

</fo:static-content> <!--FIN DEL AREA DE PIE DE PAGINA--> <!--EMPIEZO DE CUERPO DE PAGINA--> <fo:flow flow-name="body0"> <!-- START lineas --> <xsl:if test="cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto" > <fo:table width="20.2cm" > <fo:table-column column-width="1cm"/> <fo:table-column column-width="2.03cm"/> <fo:table-column column-width="5.22cm"/> <fo:table-column column-width="2.23cm"/> <fo:table-column column-width="1.35cm"/> <fo:table-column column-width="1.89cm"/> <fo:table-column column-width="1.19cm"/> <fo:table-column column-width="1.69cm"/> <fo:table-column column-width="1.79cm"/> <fo:table-column column-width="1.79cm"/> <fo:table-header > <fo:table-row height="0.25cm"> <fo:table-cell padding="0.04cm" border-color="#000000" border-style="solid" borderwidth="thin" color="rgb(0,0,0)" backgroundcolor="rgb(192,192,192)" number-columns-spanned="1"> .... <!-- FIN --> <fo:block id="last-page"/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template name = "formato"> <xsl:param name="palabra1"/> <xsl:param name="palabra2"/> <xsl:choose> <xsl:when test=" string-length($palabra1) &lt;= 0 and string-length($palabra2) &gt; 0 "> <xsl:value-of select="concat($palabra2,'&#10;')"/> </xsl:when> <xsl:when test=" string-length($palabra2) &lt;= 0 and string-length($palabra1) &gt; 0 "> <xsl:value-of select="concat($palabra1,'&#10;')"/> </xsl:when> <xsl:when test=" string-length($palabra2) &lt;= 0 and string-length($palabra1) &lt;= 0 "> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat($palabra1,'&#10;',$palabra2,'&#10;')"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> Cuando no se tienen las funciones xsl necesarias para cumplir con los requerimientos del cliente se necesita habilitar el elemento <template> como procedimiento que admita valores y los procese pero no regresa resultado. Tambin este elemento <template> puede tener algunas caractersticas primitivas de un procedimiento procedural tipo C o Java, que puede ser invocada e introducir variables, pero nunca devuelve variables.

Ejemplo: procedimiento que concatena un carcter de nueva lnea a dos palabras independientemente si alguna de las dos es nula o las dos son no nulas. Cdigo en C void formato(char* palabra1, char* palabra2) { If ( strlen(palabra1) <= 0 && strlen(palabra2) >=0 ){ puts (strcat (palabra2,"\n") ); }else{ If ( strlen(palabra2) <= 0 && strlen(palabra1) >=0 ){ puts (strcat (palabra1,"\n") ); }else{ If ( strlen(palabra1) <= 0 && strlen(palabra2) <=0 ){ }else{ puts (strcat (palabra1,"\n", palabra2,\n) ); } }

<xsl:template name = "formato"> <xsl:param name="palabra1"/> <xsl:param name="palabra2"/> <xsl:choose> <xsl:when test="string-length($palabra1) &lt;=0 and stringlength($palabra2)&gt;0"> <xsl:value-of select="concat($palabra2,'&#10;')"/> </xsl:when> <xsl:when test="string-length($palabra2)&lt;=0 and string-length($palabra1) &gt; 0 "> <xsl:value-of select="concat($palabra1,'&#10;')"/> </xsl:when> <xsl:when test="string-length($palabra2)&lt;=0 and string-length($palabra1) &lt;= 0 "> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat($palabra1,'&#10;',$palabra2,'&#10;')"/> </xsl:otherwise> </xsl:choose> </xsl:template>
Invocacin de los templates Se puede mandar llamar a un template con el uso del elemento <xsl:call-template > con el nombre del template que se est invocando Anidado al elemento va el elemento <xsl:with-param junto con el nombre del parmetro tal como se program en el template:

<xsl:call-template name="formato"> <xsl:with-param name="palabra1" select="concat(cfdi:Comprobante/cfdi:Emisor/cfdi:DomicilioFiscal/@calle,' no. ',cfdi:Comprobante/cfdi:Emisor/cfdi:DomicilioFiscal/@noExterior)"/> <xsl:with-param name="palabra2" select="cfdi:Comprobante/cfdi:Emisor/cfdi:DomicilioFiscal/@colonia"/> </xsl:call-template>

Teora bsica
Documentos XSL

Son archivos XML con informacin de formato de salida los cuales con grabados con la extensin .fo o .fob pero tambin se puede usar la extensin .xml para hacer el archivo accesible a los editores
Estructura de un documento XSLFO

Su estructura es como la que sigue: <?xml versin=1.0 encoding=ISO-8859-1?> <fo:root xmlns: FO=HTTP://WWW.W3.ORG/1999/XSL/FORMAT> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> <!-- template de la pagina aqui va--> </fo:simple-page-master > </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <!-- contenido de la pagina aqui va--> <fo:page-sequence> </fo:root>
Estructura

Los documentos xslfo son XMLs entonces tienen que empezar con una declaracin

<fo:root xmlns:
FO=HTTP://WWW.W3.ORG/1999/XSL/FORMAT> </fo:root> El elemento <fo:root> es el elemento primario de los XSLFOs este elemento declara el namespace para los XSLFOs El elemento <fo:layout-master-set> contiene uno o ms templates de la pgina <fo:layout-master-set> </fo:layout-master-set> Cada elemento <fo:simple- page-master > contiene un solo template de la pgina cada template debe de tener un nico master-name en este caso A4 <fo:simple-page-master master-name="A4"> <!-- template de la pagina aqui va--> </fo:simple-page-master >

Uno o mas elementos <fo:page-sequence> describe los contenidos de las paginas el atributo masterreference tiene que ser igual al nombre de el atributo simple-page-master template <fo:page-sequence master-reference="A4"> <!-- contenido de la pagina aqui va--> <fo:page-sequence>

reas XSLFO

Son reas rectangulares donde se despliega la salida los diferentes tipos de reas se dividen en Paginas Regiones Bloques


Paginas

Lneas Inline

La salida de los XSLFOs va en formato de pgina solo se usa una cuando se destina a un navegador pero se divide en varias si es salida impresa.
Regiones

Existen varios tipos: Region-body (el cuerpo de la pagina) Region-before (cabecera de la pagina) Region-after (pie de pagina) Region-start (margen izquierdo) Region-end (margen derecho) Cabe notar que las regiones constan de bloques
Bloques

Pueden contener a su vez bloques anidados o lneas Contienen escritos, tablas y listas
<fo:page-sequence> <fo:flow flow-name="xsl-region-body"> <fo:block> <!-- Output goes here --> </fo:block> </fo:flow> </fo:page-sequence>

Lneas Pueden contener a su vez inlines. Pero seguramente contienen lneas de texto Inlines Definen smbolos dentro de las lneas vietas,caracteres simples,graficos,etc El fluir de los XSLFOs El contenido de los bloques fluye hacia las pginas y de ah a la salida Un elemento <fo:page-sequence> contiene elementos <fo:flow> que contienen elementos <fo:block> que contiene la salida XSL Ejemplo Hola Mundo de XSLFO
<?xml version="1.0" encoding="ISO-8859-1"?> Elemento page-sequences <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" > Este elemento define las pginas de la salida, <fo:layout-master-set> Cada pgina de salida tiene referenciado a un <fo:simple-page-master master-name="A4"> master-page que define la apariencia final, <fo:region-body /> Cada pgina de salida tiene un elemento flow que </fo:simple-page-master> define su salida </fo:layout-master-set> Cada pgina de salida tiene una salida impresa en <fo:page-sequence master-reference="A4"> secuencia <fo:flow flow-name="xsl-region-body"> <fo:block>Hola mundo</fo:block> Elemento flow </fo:flow> </fo:page-sequence> Las paginas XSLFO estan llenas de los datos que </fo:root>

provienen de los bloques de los elementos flow Este elemento contiene todos los elementos que sern impresos a la pgina Cuando la pgina llegue a estar llena el mismo page master ser usado cuantas veces sean necesarias, hasta q el texto sea impreso. A dnde lo fluimos el contenido?

Cada elemento flow tiene un atributo flow-name y el valor de este atributo determina cual ser el cauce del contenido definido en el elemento. Los valores legales de este atributo son: xsl-region-body que corresponde a el cuerpo de la pagina xsl-region-before que corresponde a la cabecera de la pagina xsl-region-after que corresponde al pie de pagina xsl-region-start que corresponde al margen izquierdo xsl-region-end que corresponde al margen derecho.

Elemento page master Los page master es la forma en XSL de llamar a los templates cada template debe de tener un nico nombre.
<fo:simple-page-master master-name="intro"> <fo:region-body margin="5in" /> </fo:simple-page-master> <fo:simple-page-master master-name="left"> <fo:region-body margin-left="2in" margin-right="3in" /> </fo:simple-page-master> <fo:simple-page-master master-name="right"> <fo:region-body margin-left="3in" margin-right="2in" /> </fo:simple-page-master>

El cdigo anterior describe la creacion de 3 diferentes templates con el elemento <fo:simple-page-master> donde cada template o page master tiene diferente nombre o master-name. Tamao de la pgina Page-with Page-height Mrgenes de la pgina Margin-top Margin-bottom Margin-left Margin-right Margin

Regiones

<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>

Entonces la estructura es la siguiente:

Paginas XSL , elementos flow y bloques Los bloques anidados dentro de las paginas contienen datos extraidos de elementos flow, los cuales iran a la salida. Una pagina consta de flows Y un flow consta de bloques

Ejemplo: <fo:page-sequence> <fo:flow flow-name="xsl-region-body"> <fo:block> <!-- Output goes here --> </fo:block> </fo:flow> </fo:page-sequence>

Atributos del elemento de bloque Son secuencias de salida en zonas rectangulares que pueden ser estilizados individualmente: space before and space after margin border padding
<fo:block border-width="1mm"> <!--este bloque de salida tendra un borde de un milmetro --> </fo:block>

space before and space after o espacio de separacin entre bloques margin o espacio de separacin del borde del bloque o margin o margin-top o margin-bottom o margin-left o margin-right border o puede adquirir diferentes colores y fondos o 4 diferentes grosores o Estilos border-style border-before-style border-after-style border-start-style border-end-style border-top-style (same as border-before) border-bottom-style (same as border-after) border-left-style (same as border-start) border-right-style (same as border-end) o color border-color border-before-color border-after-color border-start-color border-end-color border-top-color (same as border-before) border-bottom-color (same as border-after) border-left-color (same as border-start) border-right-color (same as border-end) o ancho border-width border-before-width

border-after-width border-start-width border-end-width border-top-width (same as border-before) border-bottom-width (same as border-after) border-left-width (same as border-start) border-right-width (same as border-end) o Padding padding padding-before padding-after padding-start padding-end padding-top (same as padding-before) padding-bottom (same as padding-after) padding-left (same as padding-start) padding-right (same as padding-end) o fondo background-color background-image background-repeat background-attachment (scroll or fixed) Padding o rea entre el borde del bloque y el contenido. Contenidos o Contiene datos
<fo:list-block> <fo:list-item> <fo:list-item-label> <fo:block>*</fo:block> </fo:list-item-label> <fo:list-item-body> <fo:block>Volvo</fo:block> </fo:list-item-body> </fo:list-item>

Bloques de listado en XSL Existen 4 objetos de listado para crear listas

fo:list-block o contenedor de la lista fo:list-item o contiene un elemento listado fo:list-item-label o es la vieta del elemento listado fo:list-item-body <fo:list-item> o es el ttulo y contenido del elemento listado <fo:list-item-label>

<fo:block>*</fo:block> </fo:list-item-label> <fo:list-item-body> <fo:block>Saab</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>

Tablas en XSL. Existen 9 objetos usados para crear tablas.


<fo:table-and-caption> <fo:table> <fo:table-column column-width="25mm"/> <fo:table-column column-width="25mm"/> <fo:table-header> <fo:table-row> <fo:table-cell> <fo:block font-weight="bold">Car</fo:block> </fo:table-cell> <fo:table-cell> <fo:block font-weight="bold">Price</fo:block> </fo:table-cell> </fo:table-row> </fo:table-header> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block>Volvo</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>$50000</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <fo:block>SAAB</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>$48000</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:table-and-caption>

fo:table-and-caption Contiene la tabla fo:table Objeto obligatorio contenido dentro de fo:table-and-caption fo:table-caption Objeto opcional dentro de fo:table-and-caption fo:table-column Objeto NO obligatorio dentro de fo:table fo:table-header Objeto NO obligatorio dentro de fo:table fo:table-footer Objeto NO obligatorio dentro de fo:table fo:table-body Objeto obligatorio dentro de fo:table fo:table-row Objeto obligatorio dentro de un subnivel de fo:table fo:table-cell Objeto obligatorio dentro de un subnivel de fo:table

XSL-FO Tables
The XSL-FO table model is not very different from the HTML table model. There are nine XSL-FO objects used to create tables: fo:table-and-caption fo:table fo:table-caption fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell

El elemento <fo:table-and-caption> debe de tener anidado a un elemento tipo <fo:table> y un elemento tipo <fo:caption> opcional. El elemento de tabla tiene anidado un elemento opcional de <fo:table-column> el cual define las columnas y el nmero de estas dependen directamente de las n veces que este elemento es referenciado n columnas la tabla tendr. Tiene una cabecera de tabla opcional <fo:table-header>; para poner los nombres de los rubros que tendr la tabla; tambin un cuerpo de la tabla <fo:table-body>y un pie de tabla <fo:table-footer>. Estos tres elementos <fo:table-header>,<fo:table-body> y <fo:table-footer> los cuales a su vez contienen multiples renglones <fo:table-row> los cuales a su vez anidan multiples columnas <fo:table-cell>.

<fo:table-and-caption> <fo:table> <fo:table-column column-width="25mm"/> <fo:table-column column-width="25mm"/> <fo:table-header> <fo:table-row> <fo:table-cell> <fo:block font-weight="bold">Car</fo:block> </fo:table-cell> <fo:table-cell> <fo:block font-weight="bold">Price</fo:block> </fo:table-cell> </fo:table-row> </fo:table-header> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block>Volvo</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>$50000</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <fo:block>SAAB</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>$48000</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:table-and-caption>

Paginacin Se necesita un bloque as en cualquier regin: <fo:block font-size="5pt"> Pagina:<fo:page-number/> de <fo:page-number-citation ref-id="last-page" /> </fo:block> Y un bloque con id con la etiqueta que cierra al elemento <fo:flow> que define todos los elementos que entran en una pagina asi que este bloque con id ser el ltimo en imprimirse y recopilara la extensin final del documento <fo:block id="last-page"/> </fo:flow> Comentarios en XSL FO son identicos al de un HTML o XML; <!--Documento en depuracion--> Elemento table El template en oracle a dentro de xsl-region-body se usan frecuentemente el elemento de table y sus elementos hijos similares al del ejemplo a continuacin <fo:table> <fo:table-column column-width="25mm"/> <fo:table-column column-width="25mm"/> <fo:table-header> <fo:table-row> <fo:table-cell> <fo:block font-weight="bold"> Modelo de carro </fo:block> </fo:table-cell> <fo:table-cell> <fo:block font-weight="bold"> Costo </fo:block> </fo:table-cell> </fo:table-row> </fo:table-header> <fo:table-body> En la primera columna se define la cabecera de la tabla dentro del elemento de fo:table-header que es donde se contienen los nombres de los rubros que se presentarian dentro de cada elemento de table-header le corresponden lineas <fo:table-row> y columnas <fo:table-cell> de extension y caracteristicas acorde a lo que se especifica en los atributos del elemento fo:table-column donde solo especifica una cosa: cada renglon tendra una longitud de 25 mm a lo largo, otros argumentos usuales del atributo column-width pueden ser pts o porcentajes. Ms detalles en: http://www.w3schools.com/xslfo/xslfo_tables.asp, en pocas palabras los formatos de tabla para FO deben de estar a la altura del formato que se pueda dar a las tablas en HTML y un poco ms. <fo:table-row> <fo:table-cell> <fo:block>Volvo</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>$50000</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <fo:block>SAAB</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>$48000</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table>

Estructuras de control ms usuales Basndonos en el siguiente archivo XML: <?xml version="1.0"?> <CentroRecreativo> <Miembro nivel="basica"> <Nombre>Jose </Nombre> <Telefono tipo="casa">5555-1234</Telefono> <Telefono tipo="trabajo">5555-4321</Telefono> <Casilla>8700</Casilla> </Miembro> <Miembro nivel="premier"> <Nombre>David</Nombre> <Telefono tipo="casa">3838-1234</Telefono> <Telefono tipo="trabajo">3838-4321</Telefono> <Casilla>5600</Casilla> </Miembro> <Miembro nivel="basica"> <Nombre>Rogelio</Nombre> <Telefono tipo="casa">8888-1234</Telefono> <Telefono tipo="trabajo">8888-4321</Telefono> <Casilla>4000</Casilla> </Miembro> </CentroRecreativo> Podemos sealar que: if : solo existe esta estructura que define solo una lnea de decisin sin alternativas. <xsl:if test="Miembro/@nivel='premier'"> Por ser miembro especial le ofrecemos lo siguiente..... </xsl:if> if-else : no existe tal orden de elementos if else pero existe una opcion que nos permite tomar varias decisiones segun el valor del atributo del nodo con varias alternativas. El elemento <xsl:choose> anida los elementos <xsl:when> que contienen una evaluacin/prueba escrita en XPath y el respectivo contenido a ejecutarse, y adems se puede incluir el elemento <xsl:otherwise> para ejecutarse en caso de no cumplirse ninguna evaluacin definida en <xsl:when>. <xsl:choose> <xsl:when test="Miembro/@nivel='premier'"> Por ser miembro especial le ofrecemos lo siguiente..... </xsl:when> <xsl:when test="Miembro/@nivel='basico'"> Le recordamos que si asciende su membresa a "premier" obtiene..... </xsl:when> <xsl:otherwise> Actualmente no tiene asignada su membresa... </xsl:otherwise> </xsl:choose>

For-each: localiza la informacin de cada atributo perteneciente al nodo a nivel de Miembro. <xsl:for-each select="Miembro"> Nombre : <xsl:value-of select="Nombre"/> Membresa : <xsl:value-of select="@nivel"/> </xsl:for-each>

You might also like