Você está na página 1de 139

Wouter van Vugt

Open XML
Gua sobre el Lenguaje Estructurado

Contenido

Contenido
Contenido ...................................................................................................................................................................... ii Agradecimientos ........................................................................................................................................................... iv Prefacio .......................................................................................................................................................................... v Introduccin ................................................................................................................................................................ vii Para quin est dirigido este libro? ...................................................................................................................... vii Ejemplos de cdigo ................................................................................................................................................. vii ECMA Office Open XML .................................................................................................................................................1 El estndar Open XML...............................................................................................................................................1 Captulo 1 WordprocessingML ......................................................................................................................................2 Creacin de documentos digitales ............................................................................................................................2 Configuracin de la estructura principal ...................................................................................................................3 Adicin de texto al documento .................................................................................................................................8 Formato del texto ...................................................................................................................................................13 Tablas ......................................................................................................................................................................17 Estilo del documento ..............................................................................................................................................21 Adicin de imgenes ...............................................................................................................................................32 Diseo de pgina.....................................................................................................................................................35 XML personalizado en documentos ........................................................................................................................38 Finalizacin del documento ....................................................................................................................................46 Temas avanzados ....................................................................................................................................................49 Notas finales de WordprocessingML ......................................................................................................................59 Captulo 2 SpreadsheetML ..........................................................................................................................................60 Introduccin ............................................................................................................................................................60 Elementos de una hoja de clculo simple ...............................................................................................................61 Creacin de hojas de trabajo ..................................................................................................................................63 Frmulas .................................................................................................................................................................64 Optimizaciones de la hoja de trabajo .....................................................................................................................65 Tablas ......................................................................................................................................................................68 Tablas Dinmicas ....................................................................................................................................................72 Adicin y posicionamiento de grficas ...................................................................................................................78 Estilos de contenido ................................................................................................................................................80 Formato condicional ...............................................................................................................................................85 Hojas de grficos .....................................................................................................................................................88 Caractersticas de soporte ......................................................................................................................................88 Notas Finales ...........................................................................................................................................................90 Captulo 3 PresentationML ..........................................................................................................................................91 ii

Contenido

Introduccin ............................................................................................................................................................91 Estructura del documento PresentationML............................................................................................................91 Diseos....................................................................................................................................................................92 Elementos de una presentacin bsica ..................................................................................................................97 Marcadores de posicin ........................................................................................................................................100 Imgenes ...............................................................................................................................................................102 Tablas, grficos y diagramas .................................................................................................................................103 Captulo 4 DrawingML ...............................................................................................................................................106 Introduccin ..........................................................................................................................................................106 Texto .....................................................................................................................................................................106 Grficos .................................................................................................................................................................110 Tablas ....................................................................................................................................................................117 Cuadros .................................................................................................................................................................121 Temas ....................................................................................................................................................................128 Unidades de Medida ..................................................................................................................................................131 El EMU...................................................................................................................................................................131 El twip ...................................................................................................................................................................131

iii

Agradecimientos

Agradecimientos
Los blogs han sido principalmente el medio en el que he estado habituado a publicar y discutir artculos de carcter tcnico, por lo cual escribir un libro fue una tarea ardua a la que no estoy acostumbrado. Para lograr que el contenido fuera legible y correcto a nivel tcnico, cont con la valiosa colaboracin de Doug Mahugh y Mauricio Ordoez, sin la cual hubiera tomado ms tiempo escribir este libro. Su esfuerzo combinado hizo posible mejorar notablemente la calidad del material incluido. Gracias a los dos por todo el tiempo invertido.

iv

Prefacio

Prefacio
La primera vez que vi el nombre de Wouter Van Vugt fue en abril de 2006 cuando l comenz a responder preguntas hechas por desarrolladores en el sitio web OpenXmlDeveloper.org. En unos pocos meses, Wouter estaba contribuyendo con gran cantidad de contenido a OpenXmlDeveloper al publicar ejemplos de cdigo en su blog, y haba creado un programa til para desarrolladores de Open XML (Package Explorer), que carg a CodePlex como proyecto de cdigo abierto. Comenc a trabajar directamente con Wouter en el otoo del ao 2006 cuando presentamos juntos el primer taller de Open XML en Paris, y luego cada uno de nosotros hizo el mismo taller muchas otras veces en diversos sitios del mundo a principios del ao 2007. El trabajo de Wouter era simplemente ensear los temas que hacan seccin de los talleres pero no pudo abstenerse de crear ms contenido, y as termin incluyendo varios ejemplos de cdigo y documentos de demostracin. Yo us sus archivos de demostracin siempre que hice mis talleres, y tambin publiqu uno de ellos en mi blog, lo cual le llev a hacer el comentario "Oye Doug, creo que te ests apropiando de mis demos!" Es verdad, pero considralo un halago. El entusiasmo de Wouter para ayudar a los desarrolladores a aprender todo sobre Open XML nunca ha decrecido. Casi al final de esa primera serie de talleres, cuando se hizo el lanzamiento de la Muestra de Tecnologa para la Comunidad (CTP) del Paquete de Herramientas de Desarrollo de Software (SDK) de Microsoft para Open XML, yo me encontraba ocupado viajando y no haba tenido la oportunidad de hablar con l durante algn tiempo. Dos das despus del lanzamiento de CTP revis el foro de soporte de MSDN y all estaba Wouter, respondiendo preguntas sobre el desarrollo de Open XML. Siempre que hay desarrolladores de software preguntando acerca de Open XML, Wouter aparece y responde sus preguntas. En este libro, Wouter ha condensado su amplia experiencia en el desarrollo de Open XML en un libro simple que los desarrolladores pueden leer y aplicar fcil y rpidamente. Las personas que han estado en sus talleres reconocern su estilo en cada una de las pginas: dogmtico y entusiasta, con una gran facilidad para hacer que temas complicados se vean simples y obvios. Open XML est liderando una nueva era en formatos de documentos. Por primera vez en la historia de la computacin, el software de creacin de documentos ms usado en el mundo Microsoft Office usa un estndar documentado abierto como formato de archivo predeterminado. Esto significa que los desarrolladores pueden leer y escribir dichos documentos desde cualquier plataforma, en cualquier lenguaje. As como HTML, HTTP, y otros estndares movieron los servicios en lnea del pasado sistema propietario de CompuServe, AOL y Prodigy a la abierta e interoperable world wide web, la existencia de estndares de documentos basados en XML est moviendo los documentos comerciales de un pasado cerrado propietario a un futuro abierto e nter operable. El salto hacia este futuro comenz a finales del ao 2005 cuando representantes de Apple, Barclays Capital, BP, The British Library, Essilor, Intel, Microsoft, NextPage, Novell, Statoil, Toshiba y la Librera del Congreso de los Estados Unidos formaron el grupo de trabajo internacional TC45 (Comit Tcnico 45) de ECMA. Este grupo desarroll el estndar ECMA 376 poco ms de un ao despus, en diciembre de 2006, el cual se constituy desde ese momento como la documentacin oficial del estndar XML.

Prefacio

Este libro abarca solamente una pequea porcin de la especificacin ECMA 376: los elementos especficos que un desarrollador experimentado de Open XML como Wouter Van Vugt considera importante para el desarrollo activo de Open XML. Con la informacin que contiene este libro, los desarrolladores pueden comenzar a aprovechar las nuevas oportunidades que ofrece Open XML, e ir rompiendo las barreras histricas entre documentos, procesos y datos. Si usted quiere comenzar a familiarizarse rpidamente con el desarrollo de Open XML, este libro es todo lo que usted necesita. Tambin es una gran fuente de archivos de demostracin de los que se puede usted apropiar gracias, Wouter! - Doug Mahugh Open XML Technical Evangelist, Microsoft 23 de Junio de 2007

vi

Introduccin

Introduccin
Entre toda la nueva variedad de tecnologas implementadas en la plataforma de Microsoft Office 2007 hay una que no se puede perder de vista. Los nuevos lenguajes de marcado Open XML para documentos, hojas de clculo y presentaciones estn aqu para resolver las dificultades relacionadas con el desarrollo y la retencin de documentos que tradicionalmente se han presentado al usar las tcnicas binarias ms antiguas. Open XML proporciona un entorno estandarizado y abierto que se construye a partir de muchos estndares existentes como XML, ZIP y Esquema XML. Debido a que el uso de estas tcnicas se ha dado paso en casi todas las plataformas utilizadas hoy en da, el documento ya dej de ser una caja negra que slo contena informacin con cierto formato. En lugar de ello, el documento mismo se ha convertido en la informacin! Es fcil de integrar en los procesos de su negocio. Open XML ofrece varias tecnologas nuevas que permiten que la informacin comercial embebida en el documento tenga representacin por fuera del cuerpo principal del documento, lo cual facilita el acceso a las reas importantes de un documento y optimiza su reutilizacin. El propsito de este libro es presentar los bloques esenciales necesarios para que usted construya su propia solucin centrada en documentos. En este libro usted descubrir los aspectos bsicos de WordprocessingML, SpreadsheetML y PresentationML, as como del lenguaje de soporte DrawingML. Aprenda cmo usar lenguaje de marcado personalizado para desarrollar soluciones a la medida usando WordprocessingML, las frmulas de SpreadsheetML o los magnficos efectos visuales que se pueden aplicar usando DrawingML.

Para quin est dirigido este libro?


En este libro usted podr obtener informacin general detallada sobre los tres lenguajes de marcado en Open XML. Este libro ha sido escrito para aquellas personas que tienen un conocimiento bsico de XML o HTML. Si usted es un arquitecto o desarrollador de software que necesita construir soluciones centradas en documentos, usted puede aprender cmo construir soluciones de valor agregado basadas en la plataforma de Open XML. Este libro tambin ser de gran ayuda para las personas que apenas estn comenzando a familiarizarse con el lenguaje de marcado de documentos, as como tambin para aquellas que tienen experiencia en el marcado de documentos pero son nuevas en el estndar Open XML.

Ejemplos de cdigo
Dentro del texto del libro usted podr encontrar una gran variedad de ejemplos de cdigo en XML. Estos ejemplos, y muchos otros, se pueden consultar en el sitio web de OpenXMLDeveloper, en una pgina dedicada al contenido de este libro. Cualquier revisin que sea necesaria tambin ser publicada en esta pgina. Vaya al sitio OpenXMLDeveloper.org para que llene su caja de herramientas con ejemplos de Open XML. http://openxmldeveloper.org/articles/OpenXmlExplained.aspx

vii

ECMA Office Open XML


El estndar Open XML
El estndar de marcado de documentos Open XML representa un gran avance con respecto al antiguo mtodo binario de guardar contenido de documentos en la plataforma de Microsoft Office. Este formato basado en XML es estandarizado y usa tecnologas de cdigo fuente abierto que facilitan el uso de diversas soluciones en muchos sistemas operativos y plataformas de software. Esta primera versin del estndar contiene tres lenguajes de marcado principales. WordprocessingML es el lenguaje para documentos, SpreadsheetML para hojas de clculo y PresentationML para presentaciones. Existen tambin muchos lenguajes de marcado subyacentes tales como DrawingML, lenguaje que soporta figuras, grficas, tablas y diagramas. El formato de archivo de un documento de Open XML es un contenedor dividido en muchas partes. Actualmente el contenedor es un archivo ZIP y cada una de sus partes es un archivo dentro del ZIP, pero las partes del documento tambin se pueden guardar en una base de datos para maximizar su reutilizacin. Adems de servir como estndar para el marcado de documentos, la estructura interna del contenedor tambin se encuentra estandarizada. Esta estructura se conoce como Open Packaging Convention (Convencin de Paquete de Cdigo Fuente Abierto) y se describe en la Seccin 2 de los cinco documentos que componen el estndar. Otra seccin importante de la especificacin es la seccin de Compatibilidad del Marcado, Seccin 5. Esta seccin explica cmo se deben manejar ciertos detalles tales como la asignacin de versiones, proceso que puede tener un gran impacto en el marcado. La siguiente imagen ilustra de forma general las diversas capas que componen la especificacin. ZIP, XML y Unicode no hacen parte del estndar Open XML. Markup languages WordprocessingML SpreadsheetML Vocabularies DrawingML Custom XML Bibliography PresentationML

VML

Metadata Open Packaging Convention

Equations

Relationships

Content Types Core Technologies ZIP

Digital Signatures

XML + Unicode

Figura 1 Componentes de Open XML

Captulo 1

WordprocessingML
Aprenda acerca de la estructura de un documento de Open XML Obtenga informacin bsica sobre aspectos como el marcado de documentos, prrafos, ejecuciones y tablas de documentos de WordprocessingML Inserte imgenes y grficos usando las funciones de marcado de DrawingML Incluya informacin de negocios en un contenedor de WordprocessingML Finalice un documento eliminando los comentarios y las revisiones.

Creacin de documentos digitales


Mucho antes de siquiera pensar en tener hojas de clculo y presentaciones en formato digital, ya se estaba trabajando con documentos. Estos documentos han sido creados usando herramientas de diversos tipos, desde la casi obsoleta mquina de escribir hasta las herramientas que permiten tener hoy en da documentos digitales generados automticamente. El uso del documento tambin ha sufrido algunos cambios. Los documentos en formato digital ofrecen muchos beneficios en comparacin con el antiguo formato basado en papel. Ahora es posible adicionar a los documentos una variedad de elementos como firmas digitales, contenido embebido personalizado o etiquetas, con el propsito de aumentar el valor del documento para el negocio. Una expresin que me gusta utilizar es que los documentos son 'un vehculo primario para el intercambio de informacin ', haciendo que la manera como trabajamos con documentos sea extremadamente importante. WordprocessingML y las tecnologas que comprende permiten implementar estas soluciones partiendo del conjunto de caractersticas de alta calidad del sistema de Microsoft Office 2007. En este captulo usted aprender cmo estn estructurados los documentos de WordprocessingML y cmo se le puede dar formato a un documento usando estilos. Luego miraremos cmo hacer dinmico un documento al incorporar elementos personalizados de marcado a la informacin del negocio, aumentando enormemente la utilidad del documento como contenedor de informacin. El captulo concluye con algunos detalles sobre cmo finalizar un documento antes de enviarlo a un colega o cliente.

Figura 2 Un reporte simple

Configuracin de la estructura principal

La ilustracin anterior muestra el informe principal que ser utilizado para muchos de los ejemplos de marcado en este captulo. Este documento de ejemplo tiene en particular varios elementos interesantes. Primero, el documento tiene los elementos bsicos de texto, bloques de construccin primarios del documento. Luego est la tabla en la parte inferior del informe, la cual ser discutida en detalle posteriormente, incluyendo efectos de estilo tiles como el de sombreado de filas. Finalmente se adicionar la imagen del encabezado para finalizar el informe. Por otra parte, tambin se manejarn otros elementos de WordprocessingML. Al convertir en estilos la informacin relacionada con el formato es posible aumentar el grado de reutilizacin del documento. El documento ser marcado usando etiquetas XML personalizadas y tambin se discutir la insercin de otros elementos avanzados como tablas de contenido. Pero antes de que sea posible adicionar las caractersticas avanzadas, es necesario construir la base del documento.

Configuracin de la estructura principal


Antes de discutir en detalle todos los elementos que conforman los documentos de ejemplo, es necesario configurar la estructura bsica de un documento. Cuando se toma un documento de WordprocessingML y se usa el men contextual del Explorador de Windows para cambiar la extensin docx a zip, se pueden apreciar muchos elementos diferentes, especialmente en documentos grandes. Un documento de WordprocessingML separa muchas partes del documento usando archivos independientes dentro del paquete comprimido zip. Adems de las partes que guardan la informacin de marcado del documento hay muchas otras partes de soporte dentro del contenedor zip que guardan otros tipos de informacin, tales como opciones de configuracin, fuentes y estilos. La siguiente imagen ilustra algunos de los elementos comunes en un documento. La mayora de estos elementos no son necesarios.

Figura 3 Estructura de un documento WordprocessingML

En la raz del zip se encuentra una parte denominada [Content_Types].xml. Esta parte almacena un diccionario con tipos de contenido para todas las otras partes dentro del paquete. El tipo de contenido le indica al programa consumidor qu tipo de contenido se espera que tenga el paquete. Hay una distincin obvia necesaria entre informacin binaria e informacin en XML, pero la informacin en XML est dividida en muchos tipos de contenido diferentes ya que la mayor parte del contenido del zip est compuesta por XML. Al recorrer la estructura ms a fondo es posible encontrar archivos XML que usan la extensin rels y siempre estn guardados en carpetas denominadas _rels. Estos archivos de relacin articulan las diversas partes del documento. Para evitar guardar las relaciones entre archivos dentro de cada archivo mismo, se usa el modelo de archivo de relacin. Este modelo reduce enormemente la carga de trabajo de aplicaciones personalizadas que necesitan 3

WordprocessingML

examinar un paquete para buscar elementos especficos. ste es un aspecto de gran importancia cuando se trata de trabajar con paquetes de Open XML. Nunca dependa de una ruta de acceso de archivo; siempre use relaciones para examinar el paquete Siempre use relaciones para examinar un paquete; nunca acceda a una parte directamente con base en una ruta de acceso 'conocida' Todo documento de WordprocessingML debe tener tres partes como mnimo. Debe tener una parte que define el cuerpo principal del documento, usualmente denominada document.xml. Esta parte necesita guardar su tipo de contenido en la parte de tipos de contenido. Cada paquete contiene exactamente una parte de tipos de contenido. Finalmente, las partes del cuerpo principal deben ser localizables, para lo cual se usa una parte de relaciones. sta es la tercera parte que conforma el paquete. Para crear el documento vaco inicial, cree primero un directorio vaco. Dentro de este directorio vaco cree un nuevo subdirectorio denominado _rels. No olvide el caracter de subrayado; el nombre es importante. En el directorio raz vaca se deben guardar dos archivos, la lista de tipos de contenido y la parte del documento principal. En el subdirectorio _rels se guarda la tercera parte de relaciones. De hecho, la parte del documento principal se puede guardar en cualquier directorio de preferencia, siempre y cuando la relacin seale su ubicacin correctamente. El directorio raz slo se usa por conveniencia. Microsoft Office Word 2007 usa el subdirectorio word. Otras aplicaciones pueden escoger libremente cualquier otro directorio que resulte conveniente. Para crear el primer ejemplo de cualquier libro, es necesario crear por supuesto un documento 'Hello World'. Los pasos que se presentan a continuacin explican cmo se puede crear dicho documento. La imagen y el ejemplo de cdigo de marcado ilustran cmo est formada la parte del documento principal as como el resultado final generado en un programa consumidor. No invierta tiempo en la estructura del marcado por ahora, ya que el tema ser discutido con detalle ms adelante en este captulo. <w:document> <w:body> <w:p> <w:r> <w:t>Hello World!</w:t> </w:r> </w:p> </w:body> </w:document>

Figura 4 Un documento bsico 'Hello World'

Adems de este ejemplo de marcado tambin se requieren las otras dos partes de contenido y de relaciones. No basta simplemente con introducir este cdigo de ejemplo en un contenedor ZIP arbitrario ya que es muy importante que la estructura sea correcta. En primer lugar es necesario poner el cdigo XML de 'Hello World' en una parte especial del paquete denominada parte de inicio, y luego se deben crear los otros elementos del paquete. La parte de inicio, document.xml El primer paso para crear cualquier documento en Open XML es definir la parte de inicio. ste es el lugar donde el consumidor comenzar a analizar el contenido del documento. En cada uno de los tres lenguajes principales de Open XML siempre habr una parte dentro del paquete ZIP que ser considerada la parte de inicio. El uso que se le d a esta parte ser diferente para cada uno de los lenguajes de marcado. En WordprocessingML la parte de inicio se usa para guardar el texto del cuerpo principal, como por ejemplo el texto de 'Hello World' del ejemplo anterior. Como la mayor parte del contenido, la parte de inicio debe definirse usando lenguaje de marcado XML. 4

Configuracin de la estructura principal

No se requieren muchas instrucciones de marcado para crear un documento vaco. El elemento document es el nico que debe guardar dentro de esta parte. El documento estar totalmente vaco cuando se abre en un consumidor de Open XML tal como Microsoft Word. <?xml version="1.0" encoding="utf-16" standalone="yes"?> <w:document xmlns:w="http://schemas.openxmlformats.org/WordprocessingML/2006/main"> </w:document>
Ejemplo de marcado 1 Documento ms bsico de WordprocessingML

Dentro del elemento document usted puede aplicar diversos bloques de construccin tales como tablas y prrafos para conformar el documento. La mayora de estos elementos usan el mismo identificador de espacio de nombres de XML. Microsoft Office 2007 usa el prefijo w. Usted puede escoger cualquier otro pero el espacio de nombres de XML tiene que ser siempre el mismo. Espacio de nombres principal de WordprocessingML http://schemas.openxmlformats.org/WordprocessingML/2006/main Para la mayor parte de los otros ejemplos en el libro, se han abreviado los espacios de nombres de XML para ahorrar algo de espacio horizontal. La parte schemas.openxmlformats.org ha sido reemplazada por tres puntos () . Para pasar este ejemplo del nivel de documento vaco a un nivel que muestre el texto 'Hello World', solamente hay que adicionar algunos otros elementos a la etiqueta document. El siguiente ejemplo muestra las lneas completas de marcado para este punto de partida. No se detenga mucho en el contenido XML. Por ahora slo se incluye para completar el primer ejemplo. Primero hay que finalizar el paquete adicionando la definicin de tipos de contenido y la relacin principal. <?xml version="1.0" encoding="utf-16" standalone="yes"?> <w:document xmlns:w="http://schemas.openxmlformats.org/WordprocessingML/2006/main"> <w:body> <w:p> <w:r> <w:t>Hello World!</w:t> </w:r> </w:p> </w:body> </w:document>
Ejemplo de marcado 2 Documento ms bsico de WordprocessingML

La lista de tipos de contenido, [Content_Types].xml Ahora que se ha definido la parte de inicio, es necesario definir su tipo de contenido para que el consumidor de Open XML pueda saber qu tipo de marcado est guardado en esa parte. Esto nunca se define usando nombres de archivo conocidos. En su lugar, se mantiene una lista de tipos de contenido dentro del paquete. Esta parte nueva de tipos de contenido dentro del paquete va en el directorio raz, justo al lado de la parte del documento principal. Esta ubicacin no puede cambiar nunca. Tambin se debe copiar el nombre exactamente. El elemento es [Content_Types].xml. No olvide usar corchetes cuadrados! Como el mismo nombre lo dice, la parte de tipos de contenido guarda el tipo de contenido (una cadena bsica) para cada parte dentro del paquete. La informacin se guarda de dos maneras. En la primera se definen los tipos de contenido predeterminados con base en la extensin de archivo de cada una de las partes del paquete. La segunda implica establecer invalidaciones segn la ubicacin de una sola parte dentro del paquete. 5

WordprocessingML

La parte de inicio en WordprocessingML se denota usando el siguiente tipo de contenido. Tipo de contenido para el documento principal application/vnd.openxmlformats-officedocument.WordprocessingML.document.main+xml Adems de este tipo de contenido, tambin es necesario establecer el tipo de contenido para el archivo de relacin y configurar algunos de los valores predeterminados para las partes que se adicionen posteriormente. En un documento bsico se usa normalmente el siguiente contenido. <?xml version="1.0" encoding="utf-16" standalone="yes"?> <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /> <Default Extension="xml" ContentType="application/xml" /> <Override PartName="/document.xml" ContentType="application/vnd.openxmlformats- officedocument.WordprocessingML.document.mainxml" /> </Types>
Ejemplo de marcado 3 Parte de Tipos de Contenido

La parte de tipos de contenido usa un espacio de nombres de XML especfico para identificar el contenido XML que, como se ha mencionado, es importante para guardar la informacin correctamente. Dentro de la lista Types se pueden crear dos tipos de elementos, Default y Override. Para el caso del documento de ejemplo, se establecen tipos de contenido predeterminados usando la extensin de archivo rels. Finalmente, la relacin entre el paquete y el cuerpo del documento principal se guarda en un archivo usando esta extensin. El segundo elemento predeterminado es para las partes de cdigo XML incluidas en el paquete. Su valor predeterminado es application/XML, ya que no hay ningn otro valor predeterminado mejor que se pueda usar con tantos archivos XML diferentes en el paquete. Cada parte que contiene lenguaje de marcado usa un tipo de contenido nico que es diferente del valor predeterminado, por lo cual tiene sentido usar application/XML como valor predeterminado. Hay una invalidacin que se requiere para crear un paquete vlido. La parte document.xml que se crea a continuacin contiene el cuerpo principal del documento y se debe identificar como tal. En lugar de usar el atributo Extension para identificar la extensin de archivo para el tipo de contenido, se usa el atributo PartName para sealar una parte especfica dentro del paquete. Este atributo slo permite usar una ruta de acceso absoluta que es evaluada desde la raz del paquete. La parte del documento principal ser llamada document.xml y es almacenada en el directorio raz vaco junto a la parte de tipos de contenido que se est creando en este paso. Las aplicaciones en Open XML deben hacer cumplir los tipos de contenido verificando que el contenido de la parte de inters coincida con el tipo de contenido esperado. Un documento cuyas partes no coinciden con el manifiesto de tipos de contenido es considerado corrupto. Un error comn cuando se edita manualmente un documento en Open XML es adicionar partes nuevas al paquete, pero olvidar actualizar la lista de tipos de contenido. Cuando se olvida adicionar una nueva entrada de tipo Override a la lista de tipos de contenido, el documento no abre y se muestra un mensaje indicativo de error de tipo no descriptivo. La parte de relaciones Aunque un paquete contiene usualmente muchas partes de relaciones, slo una de ellas guarda las relaciones con las partes de inicio. Estas partes de inicio son los puntos donde se comienza a trabajar con un documento. Para un documento de WordprocessingML esta parte de inicio es la parte document.xml creada en el paso anterior. Las relaciones con las partes de inicio se guardan en un archivo de relaciones especial denominado .rels, el cual siempre se guarda dentro de un subdirectorio especfico. Para crear la parte de relaciones del documento de ejemplo, se debe crear primero el subdirectorio correcto. El archivo de relaciones que identifica todas las partes de 6

Configuracin de la estructura principal

inicio siempre se guarda en el subdirectorio _rels en la raz del paquete. Dentro de la carpeta _rels, el archivo .rels guarda las relaciones con las partes de inicio. La siguiente imagen ilustra esta situacin.

Figura 5 Parte de relaciones principal

El contenido de la parte de relaciones para el informe de ejemplo es el siguiente.


<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/ 2006/relationships/officeDocument" Target="document.xml" /> </Relationships>
Ejemplo de marcado 4 El archivo de relaciones principal

El archivo de relaciones guarda las relaciones en una lista dentro del elemento Relationships. La relacin se forma usando tres partes de informacin. El nmero de identificacin de la relacin determina en forma nica cada una de las relaciones. Este nmero debe ser nico dentro del archivo de relaciones especfico. La relacin es de un tipo especfico que se especifica usando el atributo Type. Finalmente, la relacin seala el destino de la relacin. Obsrvese que el archivo de relaciones no guarda informacin de la fuente. La fuente est definida en la parte de relaciones misma. Ya que el archivo de relaciones se llama .rels y se guarda en la carpeta _rels, la fuente es el paquete mismo. El valor del atributo Target es evaluado con respecto a la ubicacin de la fuente. Debido a que la fuente del archivo de relaciones es el paquete, se usa el smbolo raz / para identificar la fuente de la relacin. Al combinar el smbolo / con el valor especificado en Target para document.xml, se obtiene la ruta de acceso /document.xml, la cual resulta ser la ubicacin exacta de la parte del documento principal. La parte del documento principal usa el siguiente tipo de relacin. Tipo de relacin para el documento principal http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument Ms adelante en este captulo se crearn nuevas relaciones y nuevos archivos de relaciones. Recuerde que esta relacin solamente se utiliza para identificar las partes de inicio. Los otros elementos estn relacionados de manera similar, aunque presentan ciertas variaciones. El documento final comprimido en formato zip El paso final para crear un documento bsico de WordprocessingML es comprimir las tres partes correspondientes. Es importante crear el archivo ZIP desde la ubicacin correcta. Para ello, seleccione los archivos [Content_Types].xml y document.xml, as como la carpeta _rels, y luego escoja la opcin Enviar ACarpeta Comprimida. Si se ejecuta este procedimiento desde un nivel superior y se comprime la carpeta misma en lugar de comprimir los archivos que se encuentran dentro de la carpeta, la estructura interna del paquete no ser correcta.

WordprocessingML

Figura 6 Crear un documento utilizando el Explorer shell

La Interfaz de Programacin de Aplicaciones (API) de Creacin de Paquetes de .NET 3.0 Cuando se trabaja normalmente en el desarrollo de Open XML es de esperarse que no se estn creando paquetes a travs del men contextual del Explorador de Windows. Existen diversas APIs disponibles para el desarrollo comn de plataformas como Java, .NET y PHP. El siguiente fragmento de cdigo muestra cmo se puede crear la estructura del paquete creado a travs del men contextual usando cdigo simple. A la hora de escribir se cuenta con la API ms elaborada para .NET Framework, pero es probable que la situacin cambie en el futuro a medida que sean introducidos en la web ms proyectos de cdigo fuente abierto y cerrado. Si se ejecuta el siguiente cdigo de C# se obtendr el mismo documento que fue creado en los pasos anteriores. static void Main() { using (Package package = Package.Open("HelloWorld.docx")) { // create the main part PackagePart mainPart = package.CreatePart( new Uri("/document.xml", UriKind.Relative), "application/vnd.openxmlformatsofficedocument.WordprocessingML.document.main+xml"); // and the relationship package.CreateRelationship( mainPart.Uri, TargetMode.Internal, "http://.../officeDocument/2006/relationships/officeDocument"); // create the empty document XML using (XmlWriter writer = XmlWriter.Create( mainPart.GetStream(FileMode.CreateNew, FileAccess.ReadWrite))) { writer.WriteStartElement( "w", "document", "http://.../WordprocessingML/2006/main"); writer.WriteEndElement(); } } }

Adicin de texto al documento


Lo primero que usted probablemente desear hacer en el documento vaco nuevo es adicionar algo de marcado de texto. La mayor parte del texto que usted adicionar a un documento se guarda en la parte del documento principal creada en la seccin anterior. El texto que se puede agregar a otros sitios como encabezados y pies de pgina se guarda en lugares diferentes. 8

Adicin de texto al documento

Dentro de la parte del documento principal ya se ha adicionado el elemento raz del documento para comenzar a definir el documento. El elemento del documento permite que un elemento secundario denominado cuerpo guarde el texto que conforma el documento. Existen dos grupos principales de contenido para el cuerpo del documento, el contenido de nivel de bloque y el contenido en lnea. El contenido de nivel de bloque proporciona la estructura principal. Elementos como prrafos y tablas hacen parte de este tipo de contenido. El contenido de nivel de bloque incluye el contenido en lnea. Entre los elementos en lnea estn los elementos de ejecucin de texto y las imgenes.

Figura 7 La jerarqua de texto de WordprocessingML

Un prrafo est dividido en elementos de ejecucin diferentes. El elemento de ejecucin es el elemento de ms bajo nivel al que se le puede aplicar formato. A su vez, el elemento de ejecucin est dividido en varios elementos de texto. Hay un elemento de texto para definir texto de impresin y tambin hay elementos para guardar caracteres no imprimibles tales como retornos de lnea o saltos de pgina. A este respecto, es necesario tener cuidado de no darle formato a un documento usando retornos de lnea y saltos de pgina. El prrafo es la unidad bsica del diseo, y al fijar las mrgenes y la informacin de tabulacin correctas se le puede dar un formato mucho mejor al documento, especialmente cuando se trata de modificar su estilo. Ahora salgamos del reporte de ejemplo para mostrar cmo trabajar con prrafos, elementos de ejecucin y elementos de texto. La siguiente imagen contiene un texto 'Lorem Ipsum'. ste es el texto predeterminado que normalmente se usa en el mundo de la tipografa para generar contenido predeterminado en documentos.

Figura 8 Un texto de ejemplo

WordprocessingML

Para generar usted mismo este texto de ejemplo abra un documento nuevo en el programa Microsoft Office Word y digite =lorem(8,8). La macro 'lorem' es una funcin especial de Word que permite generar texto para demostraciones y pruebas. Tambin se puede usar 'rand' para generar texto pseudo-aleatorio Si tomamos los primeros dos prrafos de este documento de ejemplo, se puede usar el siguiente marcado para definir el texto. <w:document xmlns:w="http://schemas.openxmlformats.org/WordprocessingML/2006/main"> <w:body> <w:p> <w:r> <w:t> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna. Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. </w:t> </w:r> </w:p> <w:p> <w:r> <w:t> Mauris et orci. Aenean nec lorem. In porttitor. Donec laoreet nonummy augue. Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy. Fusce aliquet pede non pede. </w:t> </w:r> </w:p> <!-- other paragraphs have been ommitted --> </w:body> </w:document>
Ejemplo de marcado 5 Un prrafo de texto simple

Algo importante a tener en cuenta es que el texto comprendido por los elementos t no debe ocupar varias lneas. El espaciado del texto en el consumidor se ve afectado por este hecho. El texto ha sido impreso de esta manera para hacerlo visible. Cuando copie esta informacin verifique que todo el texto est en una sola lnea. Aunque la estructura general del prrafo es bastante bsica, hay ciertos detalles y variaciones que pueden afectar el documento. Si se toma el primer prrafo, es posible crear exactamente el mismo texto en el consumidor usando muchas combinaciones diferentes de elementos de ejecucin y elementos de texto. Lo primero que usted puede hacer es dividir el elemento de texto en dos o ms elementos. El resultado final sera exactamente el mismo. El siguiente ejemplo de marcado muestra el mismo prrafo anterior, pero ahora separado entre dos elementos t. <w:p> <w:r> <w:t xml:space="preserve"> 10

Adicin de texto al documento

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, </w:t> <w:t> sit amet commodo magna eros quis urna. Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. </w:t> </w:r> </w:p>
Ejemplo de marcado 6 El primer prrafo dividido en dos elementos de texto

Debido a que el contenido del primer elemento de texto termina en un espacio, se aplica el atributo xml:space. Si usted olvida copiar este atributo, el espacio divisor ser ignorado por el consumidor. Lo siguiente que usted puede hacer es similar a esto. En lugar de separar el texto entre muchos elementos t, usted puede dividir el texto a nivel del elemento de ejecucin. El siguiente ejemplo de marcado ilustra este concepto. <w:p> <w:r> <w:t xml:space="preserve"> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, </w:t> </w:r> <w:r> <w:t> sit amet commodo magna eros quis urna. Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. </w:t> </w:r> </w:p>
Ejemplo de marcado 7 El prrafo dividido en dos elementos de ejecucin

Las divisiones de elementos de ejecucin y de texto se pueden usar conjuntamente. Una razn para hacerlo es darle formato al texto, algo de lo cual nos ocuparemos ms adelante. Debido a que el elemento de ejecucin es el elemento de ms bajo nivel al que se le puede aplicar formato de texto, poner en negrita una sola palabra dentro del texto de un elemento de ejecucin crear nuevos elementos de ejecucin bajo el nivel. La razn para separar elementos de ejecucin en elementos de texto es hacer que el elemento de ejecucin pueda guardar caracteres no imprimibles tales como retornos de lnea o caracteres de tabulacin. El informe de ejemplo tambin usa diversos prrafos para definir el texto. La siguiente imagen muestra cmo se ve el informe despus de adicionar los prrafos requeridos. Obsrvese que su formato todava no est completo. En la siguiente seccin le adicionaremos formato al informe.

11

WordprocessingML

Figura 9 Prrafos sin formato

Para recrear el informe de ejemplo que acompaa este libro, usted debe adicionar los prrafos de texto al documento vaco inicial. Aunque usted puede practicar dividiendo el prrafo en elementos de ejecucin y de texto, es probablemente ms fcil usar slo un elemento de ejecucin y un solo elemento de texto. Hay algo ms que adicionar al modelo presentado hasta ahora. El ltimo prrafo contiene el nombre 'Stephen Jiang' y su direccin de correo electrnico usa un nuevo elemento, cr. Como se puede apreciar, el nombre y la direccin de correo electrnico se encuentran en lneas separadas en el documento. Aunque parece que se trata de dos prrafos, este texto est formado por un solo prrafo, un solo elemento de ejecucin y dos elementos de texto con un retorno de lnea entre ellos. El siguiente ejemplo de marcado muestra lo que se le debe adicionar al documento vaco para lograr este objetivo.
<w:document xmlns:w="http://schemas.openxmlformats.org/WordprocessingML/2006/main"> <w:body> <w:p> <w:r> <w:t>Stephen Jiang</w:t> </w:r> </w:p> <w:p> <w:r> <w:t xml:space="preserve">Sales from 1/1/2003 </w:t> <w:t>to 12/32/2003</w:t> </w:r> </w:p> <w:p> <w:r> <w:t>Cont</w:t> </w:r> <w:r> <w:t>act</w:t> </w:r> </w:p> <w:p> <w:r> <w:t>Stephen Jiang</w:t> <w:cr /> <w:t>stephen0@adventure-works.com</w:t> </w:r> </w:p> </w:body> </w:document> Ejemplo de marcado 8 Prrafos para el reporte de ejemplo

12

Formato del texto

Formato del texto


El siguiente paso lgico al crear el documento de ejemplo es adicionarle formato al texto. El documento de ejemplo muestra las diversas opciones de formato que se pueden aplicar. Para darle formato a una parte de un texto se pueden usar varios mtodos. El ms simple es aplicar directamente el formato al prrafo y a los elementos de ejecucin creados en la seccin anterior. Si se desea reutilizar los valores de configuracin de formato, se puede crear tambin un estilo. Este tema ser discutido ms adelante en el captulo. Existen dos niveles de formato directo que se pueden aplicar al texto del documento: nivel de prrafo y del elemento de ejecucin. Existen muchas otras opciones de configuracin diferentes que se pueden aplicar a ambos niveles. La manera ms fcil de visualizar todas las opciones disponibles es abrir las cajas de dilogo de Paragraph y Font en la aplicacin Word de Microsoft Office. Bsicamente, el formato de prrafo abarca detalles que afectan el prrafo entero, tales como el espaciado, las mrgenes y los bordes de prrafo. El formato a nivel de elemento de ejecucin permite modificar la apariencia de cada uno de los caracteres del texto. Usted puede modificar detalles como la fuente o poner un texto en negrita o en cursiva. El contenedor para el formato a nivel de prrafo tambin permite guardar opciones de formato a nivel de elemento de ejecucin. Este formato no se aplica a todo el texto del prrafo, lo que normalmente se esperara, sino ms bien a la marca de prrafo. Formato del elemento de ejecucin El informe de ejemplo ya terminado contiene texto de diferentes fuentes y tamaos. El formato del texto se aplica modificando las propiedades a nivel de elemento de ejecucin en cada uno de los elementos de ejecucin que tienen formato.

La anterior imagen muestra el formato del ttulo del informe. Adems de usar algunos elementos de formato de prrafo que se explicarn en la siguiente seccin, tambin se han aplicado elementos de formato a nivel del elemento de ejecucin para modificar el tamao y la familia de fuente. Todas estas opciones de formato a nivel del elemento de ejecucin se encuentran almacenadas dentro de uno de los elementos del contenedor denominado elemento de propiedades de ejecucin (rPr). El mismo modelo para definir propiedades especficas de elementos se aplica en todo el lenguaje Open XML. Hay un elemento arbitrario x cuyas propiedades xPr se guardan en el primer elemento secundario dentro del elemento x. Para recrear el ejemplo, usted debe guardar una serie de propiedades de ejecucin dentro de todo el elemento de ejecucin del primer prrafo. Estas propiedades de ejecucin deben definir la familia de fuente y el tamao de fuente del texto contenido en los elementos de texto. Para comenzar con la parte fcil de estas propiedades de ejecucin, el texto se pone en negrita aplicando el elemento b. Tambin se podra usar un atributo para darle explcitamente a bold el valor true, pero ese es tambin el valor predeterminado as que es suficiente usar b. Luego se especfica el tamao de fuente usando el elemento sz. El valor de especificacin usa un atributo que se mide en mitad de punto. Por ejemplo, un valor de 32 es igual a 16 puntos. El siguiente ejemplo muestra como se puede especificar dicho valor. El tamao del texto de ejemplo es 26 puntos. El texto es el que se puede apreciar en el encabezado del informe de ejemplo que se muestra en la figura anterior.

13

WordprocessingML

<w:p> <w:r> <w:rPr> <w:b /> <w:sz w:val="52" /> <w:rFonts w:ascii="Cambria" /> </w:rPr> <w:t>Stephen Jiang</w:t> </w:r> </w:p>
Ejemplo de marcado 9 Formato del primer prrafo

El ltimo valor interesante del formato del texto de ejemplo es la especificacin de fuente que se ha aplicado al usar el elemento rFonts. Obsrvese que el nombre es una palabra en plural. Es rFonts. Este elemento rFonts es especial porque permite establecer la familia de fuentes de todo el texto en el elemento de ejecucin con formato segn el intervalo de caracteres en el que el texto se encuentra. Para obtener informacin adicional sobre los intervalos de caracteres disponibles, consulte la seccin 2.3.2.24 de la Seccin 4 de la especificacin de ECMA Ahora que usted sabe cmo establecer opciones de configuracin bsicas, hay otros dos elementos que es necesario tener en cuenta antes de que pueda recrear por completo el informe de ejemplo. El informe usa un color diferente al tradicional negro, el cual se especifica usando el elemento color. El texto en cursiva se establece usando el elemento i (itlica) y, finalmente, el espaciado entre caracteres usando el elemento spacing.
<w:r> <w:rPr> <w:rFonts w:ascii="Cambria"/> <w:i /> <w:color w:val="4F81BD" /> <w:spacing w:val="15" /> <w:sz w:val="24" /> </w:rPr> <w:t>Sales from 1/1/2003 to 12/32/2003</w:t> </w:r>
Ejemplo de marcado 10 Formato del subttulo del reporte

<w:r> <w:rPr> <w:rFonts w:ascii="Cambria"/> <w:b /> <w:color w:val="4F81BD" /> <w:spacing w:val="15" /> <w:sz w:val="28" /> </w:rPr> <w:t>Contact</w:t> </w:r>
Ejemplo de marcado 11 Formato del encabezado

Probablemente usted puede haber notado hasta ahora que aplicar formato a elementos de ejecucin individuales puede resultar bastante tedioso. Por supuesto existe un mejor mecanismo para solucionar este problema. Adems, al observar el informe de ejemplo, se puede notar que hay muchos valores de configuracin de formato que usted debe copiar en todo el documento para lograr que el texto se muestre como en el ejemplo. 14

Formato del texto

Para remediar esta situacin, existen varios niveles a los cuales se puede aplicar formato de caracteres y tambin otro tipo como el formato de prrafo. Este concepto se denomina jerarqua de estilo y ser discutido ms adelante en el captulo. Formato de prrafo El documento de ejemplo usa formato a nivel de prrafo para aplicar un borde al prrafo. El prrafo es considerado un elemento a nivel de bloque. Este elemento puede ser tan ancho como el ancho de pgina. Por lo tanto el borde tambin se extiende hasta el final.

Los valores de configuracin a nivel de prrafo se guardan dentro del elemento de propiedades de prrafo, denominado pPr. El nodo de propiedades se guarda directamente dentro del prrafo, tal como sucede con el nodo de propiedades a nivel del elemento de ejecucin rPr. Entre las opciones de configuracin disponibles se encuentran las posiciones de tabulacin y los bordes, el sangrado y la justificacin de prrafo. La imagen de ejemplo usa un borde en la seccin inferior del prrafo. Usted puede aplicar bordes a todos los lados si as lo desea. El siguiente ejemplo de marcado muestra cmo declarar estos bordes. Al igual que con HTML, es necesario especificar el tamao, el color y el tipo de borde. A diferencia del tamao de fuente, el tamao de borde se mide en octavos de punto. Un valor de 24 corresponde a un borde que tiene tres puntos de espesor. Este sistema de medicin diferente permite que los nicos valores vlidos sean nmeros enteros. Por diseo, esto limita el intervalo de anchos vlidos, que tambin se limita en la especificacin. Por ejemplo, un borde de prrafo tiene un ancho mximo de doce puntos usando el valor 96.

<w:p> <w:pPr> <w:pBdr> <w:bottom w:val="single" w:sz="4" w:color="auto" /> </w:pBdr> </w:pPr> <w:r>

15

WordprocessingML

<w:t>Stephen Jiang</w:t> </w:r> </w:p>


Ejemplo de marcado 12 Aplicando propiedades a un prrafo

Revisemos ahora algunas otras opciones de configuracin. El siguiente prrafo tiene identaciones en ambos lados, est centrado y tiene borde. Texto identado El texto tiene tres opciones de configuracin. El borde ya ha sido discutido anteriormente. El prrafo se centra usando el elemento de justificacin jc. Y la identacin se logra usando el elemento ind. A continuacin se describen los pasos para construir este prrafo con formato. Primero se muestra el texto sin formato. Luego se aplica el subrayado, la justificacin y la identacin.

Texto identado

<w:pPr> </w:pPr> <w:pPr> <w:pBdr> <w:bottom w:val="single" w:sz="12" w:color="auto" /> </w:pPr> <w:pPr> <w:pBdr> <w:bottom w:val="single" w:sz="12" w:color="auto" /> <w:jc w:val="center" /> </w:pPr> <w:pPr> <w:pBdr> <w:bottom w:val="single" w:sz="12" w:color="auto" /> <w:jc w:val="center" /> <w:ind w:left="2835" w:right="2835" /> </w:pPr>

Texto identado

Texto identado

Texto identado

Diferentes tipos de salto Hay dos sitios en el documento de ejemplo en donde se han aplicado saltos. El salto sencillo que separa una lnea de texto se us para darle formato al prrafo que contiene el nombre y la direccin de correo electrnico. La otra opcin que se puede usar es el salto de pgina. Si usted quiere ver el informe de ventas siguiente en una pgina vaca, adicione el elemento br a un elemento de ejecucin. El contenido que se encuentra despus del elemento br comienza en una nueva pgina. Al proveer informacin para el atributo type, este elemento se puede usar ms adelante para crear un salto de columna. Los saltos de seccin no usan el elemento br. El tema de creacin de secciones ser discutido ms adelante en este captulo.

16

Tablas

Tipo salto Lnea Pgina

Marcado
<w:r> <w:cr /> </w:r> <w:r> <w:br w:type="page" /> </w:r>

Tabla 1 Tipos de salto

Ahora que se puede construir un documento bsico que contiene texto, el siguiente paso implica adicionarle contenido al documento. Existen varios elementos en lnea y a nivel de bloque que se pueden adicionar a un documento de WordprocessingML. Entre los elementos ms comunes estn las tablas, que usan un modelo nico para WordprocessingML, o diversos tipos de contenido de DrawingML tales como grficas o diagramas.

Tablas
Despus del prrafo, el segundo bloque de construccin ms importante de un documento es la tabla. La tabla es un elemento a nivel de bloque compuesta por filas y celdas, similar a las tablas de HTML. Una tabla se crea usando el elemento tbl. La tabla contiene muchas filas definidas con tr, que a su vez contienen las celdas que usan tc. Las celdas de la tabla son contenedores que alojan contenido a nivel de bloque. Un prrafo es un tipo comn de contenido. El siguiente ejemplo muestra una tabla de tres celdas de ancho con dos filas, y la mayor parte del cdigo de marcado que se requiere para crear esta tabla. Para que la tabla sea realmente vlida todava se deben hacer algunos ajustes. El elemento ms importante que debe definirse es la cuadrcula de la tabla.

Figura 10 Una Tabla bsica de dos por tres

<w:tbl> <w:tblGrid /> <w:tr> <w:tc></w:tc> <w:tc></w:tc> <w:tc></w:tc> </w:tr> <w:tr> <w:tc></w:tc> <w:tc></w:tc> <w:tc></w:tc> </w:tr> </w:tbl>
Ejemplo de marcado 13 Estructura de una Tabla

Para crear una tabla es necesario crear primero la definicin de cuadrcula. Esta definicin contiene valores de configuracin de las columnas que conforman la tabla. Cada columna se define usando un elemento dentro de la definicin de cuadrcula. La tabla del siguiente ejemplo est compuesta obviamente por tres columnas:

17

WordprocessingML

Lo que puede sorprender es saber qu sucede cuando se toman dos celdas de esta tabla simple y se invierten sus bordes. Esta accin crear un efecto de distorsin en una columna, donde no todas las celdas componentes tienen el mismo ancho. En el ejemplo siguiente las ltimas dos celdas de la segunda fila han sido movidas ligeramente.

En lugar de las tres columnas que normalmente se esperara tener, hay ahora cuatro columnas que ser necesario configurar en la definicin de cuadrcula. La definicin de cuadrcula no se limita nicamente a las columnas 'visibles'. Para crear la definicin de cuadrcula es necesario extender las lneas de todos los bordes de las celdas. Cada una de estas lneas define la columna limitante y los elementos duplicados se eliminan. En consecuencia, el segundo ejemplo tiene cuatro columnas pero slo pueden apreciarse tres de ellas. Los siguientes dos ejemplos de marcado muestran la definicin de cuadrcula antes y despus de invertir la celda. Obsrvese que el ancho total es igual en ambos casos.
<w:tbl> <w:tblGrid> <w:gridCol w:w="5000" /> <w:gridCol w:w="3000" /> <w:gridCol w:w="7000" /> </w:tblGrid> <!-- more Table definition to go --> </w:tbl>
Ejemplo de marcado 14 La cuadrcula de la tabla antes del movimiento

<w:tbl> <w:tblGrid> <w:gridCol w:w="5000" /> <w:gridCol w:w="3000" /> <w:gridCol w:w="2500" /> <w:gridCol w:w="4500" /> </w:tblGrid> <!-- more Table definition to go --> </w:tbl>
Ejemplo de marcado 15 La cuadrcula de la tabla despus del movimiento

Esta definicin se puede adicionar usando el elemento tblGrid. Adems de definir las columnas de una tabla, la nica funcin de la cuadrcula de tabla es guardar el ancho predeterminado de las celdas de la tabla en esa columna. Posteriormente tambin se deber guardar el ancho real de cada una de las celdas. En el documento de ejemplo, la tabla tiene dos columnas de ancho y su tamao se ajusta automticamente segn el contenido. El ejemplo de marcado siguiente muestra la definicin de tabla que se requiere para el diseo bsico. 18

Tablas

El ancho de la tabla se define dentro del nodo de propiedades de la tabla, denominado tblPr. El ancho se pone en automtico, lo que permite que el tamao de la tabla cambie automticamente segn la configuracin de tamao de sus celdas. Tambin se puede ajustar el tamao de las celdas usando el elemento de propiedades de celda, tcPr. La unidad de medicin del tamao de celdas es el 'twip', que se especifica usando el valor de atributo dxa. La segunda fila se ajusta automticamente usando el tipo auto. Hay varias modalidades de tamao que se pueden aplicar. Los conflictos de configuracin entre la tabla y las celdas son resueltos por el consumidor de manera que el contenido permanezca visible.
<w:tbl> <w:tblPr> <w:tblW w:w="0" w:type="auto" /> </w:tblPr> <w:tblGrid> <w:gridCol w:w="1614" /> <w:gridCol w:w="1330" /> </w:tblGrid> <w:tr> <w:tc> <w:tcPr> <w:tcW w:w="1614" w:type="dxa" /> </w:tcPr> <w:p> <w:r> <w:t>Country</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="0" w:type="auto" /> </w:tcPr> <w:p> <w:r> <w:t>Sales</w:t> </w:r> </w:p> </w:tc> </w:tr> <w:tr> <!-- data rows ommitted --> </w:tr> </w:tbl>
Ejemplo de marcado 16 Ejemplo de marcado de la Tabla

Figura 11 La Tabla del reporte ejemplo

Bordes y sombreado de celdas Cuando se abre un documento que contiene la tabla de ejemplo, no es inmediatamente evidente que el objeto es una tabla. La razn es que ninguno de los bordes de la tabla es visible. Estos bordes no aparecen automticamente. Es necesario adicionarlos modificando las propiedades de la tabla o de las celdas. Es posible definir hasta ocho bordes. Se pueden configurar los bordes superior, inferior, izquierdo y derecho, as como los bordes internos horizontal y vertical y los dos bordes internos diagonales. Para cada uno de los bordes se debe establecer un tipo de borde como 'simple' o 'doble' y se puede adicionar informacin sobre el color y el tamao del borde. Las definiciones de borde se guardan en un contenedor de bordes. Para la definicin de borde a nivel de tabla, este contenedor es el elemento tblBorders; el elemento tcBorders se utiliza a nivel de celda. El ancho de los bordes de tablas se mide en octavos de puntos. Los valores vlidos de ancho de bordes estn entre 2 y 96. 19

WordprocessingML

Para la tabla del documento de ejemplo se ha definido un borde superior y uno inferior para todo el contenido. A la primera fila tambin se le ha aplicado un borde. Debido a que no es posible ponerle borde a una fila, el borde de la primera fila es el borde que se ha aplicado a cada una de las celdas consecutivas. Incluya la siguiente definicin de borde en las propiedades de tablas y celdas, respectivamente.
<w:tblPr> <w:tblBorders> <w:top w:val="single" w:sz="8" w:space="0" w:color="4BACC6" /> <w:bottom w:val="single" w:sz="8" w:space="0" w:color="4BACC6" /> </w:tblBorders> </w:tblPr> <w:tcPr> <w:tcBorders> <w:top w:val="single" w:sz="8" w:space="0" w:color="4BACC6" /> <w:left w:val="nil" /> <w:bottom w:val="single" w:sz="8" w:space="0" w:color="4BACC6" /> <w:right w:val="nil" /> <w:insideH w:val="nil" /> <w:insideV w:val="nil" /> </w:tcBorders> </w:tcPr>
Ejemplo de marcado 17 Bordes de tabla y celdas

El elemento tcBorders contiene un detalle interesante acerca de la manera como se definen estos bordes. Las propiedades a nivel de tabla podran definir un borde para todas las celdas usando los elementos insideH e insideV. Para invalidar esta configuracin se le ha asignado explcitamente a los bordes de la celda el parmetro nil (nulo). Este tipo de valor de configuracin de invalidacin es comn en Open XML. Tambin se usa, por ejemplo, cuando se definen formatos por medio de estilos. El segundo requisito para hacer que la tabla luzca como el informe de ejemplo es aplicar un efecto de sombreado. Este efecto se logra al aplicar valores de configuracin de sombreado para cada una de las filas impares, sin contar el encabezado de la tabla. El sombreado se define a nivel de celda usando el elemento shd dentro de las propiedades. Para aplicar el sombreado, agregue el siguiente elemento a las propiedades de cada una de las celdas impares. Algo obvio es que en el proceso se requieren varias acciones de copiar y pegar. Ms adelante resolveremos este problema usando estilos de tablas, los cuales incluyen soporte para efectos de sombreado de filas y columnas. <w:tcPr> <w:shd w:val="clear" w:color="auto" w:fill="D2EAF1" /> </w:tcPr>
Ejemplo de marcado 18 Sombreado de la celda

20

Estilo del documento

Estilo del documento


El siguiente paso para crear un documento de apariencia profesional es aplicar diferentes estilos. Hasta ahora se le ha dado formato al informe de ejemplo aplicando elementos de formato directos en los diferentes nodos de propiedades, rPr, pPr, tblPr y tcPr. Muchas de estas opciones de formato fueron copiadas de un elemento a otro cuando se requera reutilizar cierto formato. El uso de formato directo no permite reutilizar y modificar fcilmente el formato de un documento. Por ejemplo, si se desea aplicar un efecto de sombreado diferente en la tabla, es necesario recorrer cada una de las diez celdas de la tabla. Los estilos evitan precisamente estos inconvenientes. Al observar el informe de ejemplo, se puede notar que contiene muchos valores de configuracin de formato que han sido utilizados en mltiples ocasiones. Durante el curso de esta seccin aprenderemos a crear estos estilos Parte de almacenamiento de estilos Un estilo define un conjunto especfico de valores de formato que se pueden aplicar como una sola unidad en prrafos, elementos de ejecucin y tablas. Un estilo se guarda en una parte separada, denominada parte de estilos, dentro del paquete de WordprocessingML. La parte de estilos contiene cdigo de marcado XML especfico para WordprocessingML y usa un tipo de contenido establecido. Para recrear los ejemplos que se muestran en esta seccin, es necesario guardar una nueva parte en el paquete usando el siguiente tipo de contenido. Tipo de contenido para los estilos application/vnd.openxmlformats-officedocument.WordprocessingML.styles+xml Abra primero el paquete y adicione el nuevo archivo styles.xml en cualquier directorio. Luego adicione el tipo de contenido a la parte de tipos de contenido usando un elemento de invalidacin para la extensin de archivo XML. Recuerde que el valor del atributo ContentType se debe escribir en una sola lnea. <Override PartName="/styles.xml" ContentType="application/vnd.openxmlformats- officedocument.WordprocessingML.styles+xml"/>
Ejemplo de marcado 19 Actualizacin de la parte de tipos de contenido

La parte de estilos est relacionada con la parte del documento principal. El tipo de relacin tambin es especfico para la parte de estilos. Tipo de relacin para los estilos http://schemas.openxmlformats.org/WordprocessingML/2006/styles Usted debe crear una relacin entre la parte del documento principal y la nueva parte de estilos. Las relaciones que se originan en una parte especfica se pueden guardar usando el archivo de relaciones especfico para dicha parte. Este archivo se guarda siempre en un subdirectorio _rels desde el directorio donde se encuentra la parte. El archivo de relaciones tiene el mismo nombre de archivo que la parte misma, con una extensin .rels adicional. Cuando la parte del documento principal se llama document.xml y se guarda en la raz del paquete, su archivo de relaciones se guarda en \_rels\document.xml.rels. Debido a que el programa Microsoft Office Word usa la carpeta word para guardar la parte del documento principal, el archivo de relaciones correspondiente est ubicado usualmente en \word\_rels\document.xml.rels. 21

WordprocessingML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/ 2006/relationships/styles" Target="styles.xml" /> </Relationships>
Ejemplo de marcado 20 El archivo de relaciones del documento

Tipos de estilo En la parte de estilos se guardan tres tipos de elementos: estilos, estilos latentes y valores predeterminados del documento. Todos estos tres elementos pueden definir las acciones de formato para el contenido del documento. Los estilos contienen informacin sobre el formato que se est usando actualmente en el documento. Los estilos latentes no se usan o no son visibles en el documento y sirven como sitio temporal para los valores de configuracin del estilo, como por ejemplo para aquellos valores copiados de la plantilla del documento (la mayora de desarrolladores puede ignorar los estilos latentes). Los valores predeterminados del documento son los valores predeterminados de estilo para el contenido del documento.

Paragraph

Character

Table

Latent

Default

Numbering

A travs de estilos se puede definir informacin de formato para tres tipos de elementos: elementos de ejecucin de caracteres, prrafos y tablas. Un estilo de prrafo puede proveer opciones de formato para el prrafo y sus niveles de ejecucin usando los elementos pPr y rPr. El estilo de caracteres slo permite establecer propiedades a nivel del elemento de ejecucin usando el elemento rPr. Los estilos de tablas usan las propiedades de tablas y celdas, tblPr y tcPr, as como propiedades de prrafos y niveles de ejecucin.
<w:styles xmlns:w="http://.../WordprocessingML/2006/main"> <w:docDefaults /> <w:latentStyles /> <w:style>...</w:style> <w:style>...</w:style> <w:style>...</w:style> </w:styles>
Ejemplo de marcado 21 Contenido de la parte de estilos

Hay un ltimo aspecto importante en relacin con los estilos que se debe discutir, antes de definir los detalles de la jerarqua de estilos y de cmo se le aplica un estilo al informe de ejemplo. Algunos estilos se pueden aplicar a un prrafo o una lnea de ejecucin de texto. Para hacerlo, abra un documento nuevo y digite algo de texto. Sin seleccionar nada, site nicamente el cursor dentro del texto y pase el puntero del ratn sobre el estilo de Title (Ttulo) del selector de estilos en Microsoft Office Word 2007, para darle estilo a toda la lnea. Tambin puede seleccionar un fragmento del texto y luego seleccionar el estilo de Title (Ttulo) para darle estilo solamente al texto seleccionado. Aunque slo se observa que hay un estilo que se puede aplicar tanto a un prrafo como a un elemento de ejecucin, en realidad se trata de estilos independientes de caracteres y prrafos que trabajan coordinadamente. Para aplicarle un estilo a un elemento, se usan los nodos de propiedades. Un prrafo usa pStyle para indicar qu estilo se est utilizando. El siguiente prrafo usa el estilo de Title. 22

Estilo del documento

<w:p> <w:pPr> <w:pStyle w:val="Title" /> </w:pPr> <w:r> <w:t>Stephen Jiang</w:t> </w:r> </w:p>
Ejemplo de marcado 22 Un prrafo usando el estilo 'Title'

La jerarqua de estilos Dado que el estilo de una tabla tambin puede incluir opciones de formato de prrafo y caracter, el asunto se vuelve un poco ms complicado. Los estilos tambin pueden heredar otros estilos, formando una jerarqua de estilos. Cada nivel en la jerarqua forma una parte de la vista final en el documento y puede invalidar los valores de configuracin de niveles previos en la jerarqua. La siguiente tabla presenta de manera general el orden en que ciertas configuraciones de estilo son aplicadas a tablas, niveles de ejecucin de caracteres, prrafos y elementos enumerados. Los estilos se aplican primero a la parte inicial (valores predeterminados del documento) y luego a la parte final (formato directo). Cada elemento se puede extender e invalidar los valores de configuracin establecidos en el nivel anterior. Tabla Caracteres Prrafos tems de la lista

Valores predeterminados del documento Tabla Elementos enumerados Prrafo Caracter Formato directo
Tabla 2 Jerarqua de estilos para el contenido del documento

La segunda columna de la tabla es un ejemplo de cmo se aplican estilos a niveles de ejecucin de caracteres. Observe el siguiente ejemplo de marcado. No contiene cdigo vlido de WordprocessingML pero se presenta para ilustrar cmo se aplican los estilos. <tbl style="MyTable> <row> <cell style="MyCell"> <paragraph style="MyParagraph"> <run style="MyRun">
Figura 12 Ejemplo de estilo de ejecucin en una jerarqua de estilos

23

WordprocessingML

Lo que el consumidor debe decidir es cmo va mostrar la ejecucin. Para ello recibe primero las propiedades definidas en los valores predeterminados. Debido a que el elemento de ejecucin es parte de una tabla con estilo, el consumidor busca en el estilo MyTable ms propiedades a nivel del elemento de ejecucin, lo que ocurre tambin para el estilo MyCell de las celdas de la tabla. El elemento de ejecucin se integra dentro de un prrafo con estilo. El estilo de prrafo tambin puede contener propiedades a nivel del elemento de ejecucin que se aplican a nivel del elemento de ejecucin. Finalmente, el elemento de ejecucin hace referencia a un estilo que tambin contiene propiedades a nivel del elemento de ejecucin. A esta tabla no se le ha aplicado formato directo, pero en caso necesario ste se aplicara al final. Hay dos soluciones para resolver conflictos de configuracin. Cualquier propiedad definida a nivel primario (hacia los valores predeterminados del documento) puede ser redefinida a nivel secundario (hacia el elemento con estilo). El nivel secundario redefine una propiedad, como por ejemplo el tamao de fuente, o la descarta completamente. Descartar una propiedad significa que el valor para dicha propiedad es heredado del nivel primario. Cuando el nivel primario tampoco la define, se hace una bsqueda hacia niveles superiores en la jerarqua hasta llegar a la raz, la cual es el nivel de valores predeterminados del documento para prrafos y niveles de ejecucin. Cuando no se define un valor de configuracin, el consumidor aplica el valor predeterminado. Los estilos tambin son tiles para mover el estilo de un documento a otro. Usted puede copiar muchas configuraciones de formato y cambiar completamente la apariencia del documento. Piense en el caso de poder actualizar todos los documentos viejos de una compaa para convertirlos a un formato ms moderno y de mejor presentacin. Para hacer ms fcil este proceso, asegrese de utilizar los nombres de estilos preestablecidos y use siempre una jerarqua que tenga el estilo Normal como raz. Esto garantiza que sus otros documentos no pierdan estilos cuando se reemplaza su configuracin de estilos. Los estilos personalizados tambin heredan propiedades de los estilos preestablecidos para garantizar su carcter porttil.

La pgina de descarga contiene un ejemplo de intercambio de estilos. Los valores predeterminados del documento El primer paso obvio es establecer algunos valores predeterminados de configuracin de la fuente. La parte de estilos permite guardar dos clases de valores predeterminados: las propiedades de caracteres y de prrafos. Estos valores predeterminados usan los mismos elementos de propiedades que los del formato directo. Estn los elementos pPr para propiedades de prrafos y rPr para propiedades de caracteres. Ambos hacen parte de contenedores especficos, pPrDefault y rPrDefault. El siguiente ejemplo de marcado se puede usar para fijar los valores predeterminados de configuracin de fuentes para el informe de ejemplo. Recuerde que el elemento rFonts guarda cuatro fuentes con base en el intervalo Unicode y el tamao de fuente sz se especifica en mitades de puntos. Para recrear completamente el documento de ejemplo, es necesario tambin aplicar ciertos valores de espaciado entre cada prrafo. Las propiedades a nivel de prrafo se utilizan para guardar esta informacin ya que el espaciado afecta el prrafo entero. El elemento spacing guarda toda la informacin que se requiere. Se le puede dar espaciado a la parte superior e inferior de un prrafo usando los atributos before y after. El tamao del espacio vaco se mide en vigsimos de punto, unidad conocida como twip. <w:styles xmlns:w="http://.../WordprocessingML/2006/main"> <w:docDefaults> <w:rPrDefault> <w:rPr> <w:rFonts w:ascii="Calibri" /> <w:sz w:val="22" /> </w:rPr> </w:rPrDefault> 24

Estilo del documento

<w:pPrDefault> <w:pPr> <w:spacing w:after="120" /> </w:pPr> </w:pPrDefault> </w:docDefaults> </w:styles>


Ejemplo de marcado 23 Valores predeterminados de configuracin de estilos

Creacin de estilos El informe de ejemplo tiene varias opciones de formato que se pueden reutilizar al copiarlas sobre el documento. Para mejorar el proceso de edicin, estas opciones de formato se pasarn a estilos especficos. El documento tiene cuatro estilos, excluyendo el estilo de la tabla. Ttulo

Subttulo

Heading 1

nfasis

Hay dos cosas que se deben hacer cuando se le est dando formato a un documento que tiene estilos: completar la parte de estilos con los estilos que se desea usar y luego crear referencias a esos tipos de estilos desde el cuerpo del documento. Los estilos ms comunes son los encabezados bien conocidos como 'Heading 1', 'Heading 2', etc. Tambin es posible usar estilos personalizados. Una ventaja de usar los nombres de estilos preestablecidos es que se pueden usar en elementos de texto como tablas de contenido, las cuales se basan en ciertos prrafos con estilo presentes en el documento. Para definir un estilo se usa el elemento style directamente dentro del elemento raz de la parte de estilos. Hay muchos estilos que se pueden almacenar en dicho elemento. Cada estilo est compuesto por tres partes: propiedades comunes de estilo, tipo de estilo y propiedades especficas de tipo. Entre las propiedades comunes de estilo estn el nombre de estilo y el estilo del cual se heredan las propiedades. Usualmente el estilo Normal es el que se utiliza como raz de la jerarqua. Estilos de prrafo En el documento se utilizan tres estilos de prrafo: uno para el ttulo, otro para el subttulo y otro para los encabezados. El informe de ejemplo usa nombres de estilos preestablecidos para mantener una interfaz de usuario consistente en el consumidor y para crear ms adelante la tabla de contenido.

25

WordprocessingML

El primer estilo que crearemos es el estilo del ttulo (title). La manera ms fcil es abrir la parte de estilos y adicionar una definicin global de estilo, y luego mover las propiedades de prrafo y de nivel del elemento de ejecucin desde el documento principal hasta la parte de estilos. Al hacer esto se pierde el formato del texto del ttulo. El siguiente paso obvio es hacer que el prrafo del ttulo use el nuevo estilo del ttulo. El siguiente ejemplo de marcado se puede copiar en la parte de estilos para crear el estilo del ttulo. <w:style w:type="paragraph" w:styleId="Title"> <w:name w:val="Title" /> <w:next w:val="Normal" /> <w:basedOn w:val="Normal" /> <w:qFormat /> </w:style>
Ejemplo de marcado 24 Propiedades bsicas del estilo

El estilo que aqu se define es un estilo de prrafo. Las propiedades de prrafo y del elemento de ejecucin se aplicarn a todo el texto del prrafo. El elemento styleId se incluye para hacer referencia al estilo. El elemento name le da al estilo un nombre fcil de usar. Los estilos de prrafo pueden tener un elemento secundario especfico denominado next. Esto indica qu estilo se usar para el prrafo insertado despus de un prrafo que usa el estilo de ttulo. El estilo se puede personalizar an ms haciendo que el estilo de ttulo herede las propiedades del estilo normal y adicionndolo al visualizador de formato rpido en el consumidor usando el elemento qFormat. El estilo de prrafo puede contener propiedades a nivel de prrafo. <w:pPr> <w:pBdr> <w:bottom w:val="single" w:sz="4" w:space="1" w:color="auto" /> </w:pBdr> <w:spacing w:after="200" /> <w:keepNext /> <w:keepLines /> <w:spacing w:before="480" w:after="0" /> <w:outlineLvl w:val="0" /> </w:pPr>
Ejemplo de marcado 25 Propiedades de un prrafo en un estilo de prrafo

Las propiedades a nivel del elemento de ejecucin tambin se definen en el estilo de prrafo. <w:rPr> <w:rFonts w:ascii="Cambria" /> <w:spacing w:val="5" /> <w:sz w:val="52" /> </w:rPr>
Ejemplo de marcado 26 Propiedades de ejecucin en un estilo de prrafo

El siguiente ejemplo de marcado muestra la definicin completa del estilo. <w:style w:type="paragraph" w:styleId="Title"> <w:name w:val="Title" /> <w:next w:val="Normal" /> <w:basedOn w:val="Normal" /> 26

Estilo del documento

<w:qFormat /> <w:pPr> <w:pBdr> <w:bottom w:val="single" w:sz="4" w:space="1" w:color="auto" /> </w:pBdr> <w:spacing w:after="200" /> <w:keepLines /> <w:spacing w:before="480" w:after="0" /> <w:outlineLvl w:val="0" /> </w:pPr> <w:rPr> <w:rFonts w:ascii="Cambria" /> <w:spacing w:val="5" /> <w:sz w:val="52" /> </w:rPr> </w:style>
Ejemplo de marcado 27 Estilo de prrafo para el ttulo

Hay otros tres estilos de prrafo que se pueden crear. El estilo de prrafo normal se define para que se pueda usar conjuntamente con el elemento next mencionado en el ejemplo anterior Los estilos Subtitle y Heading1 se pueden copiar del documento principal. Estilos de caracteres El ttulo 'Sales Summary' (Informe de Ventas) y los encabezados de la tabla del informe de ejemplo han sido enfatizados al usar texto en negrita. Esta informacin se puede guardar en un estilo de carcter. A diferencia del estilo de prrafo, un estilo de carcter slo contiene propiedades a nivel del elemento de ejecucin. La configuracin general es la misma. Se debe definir el tipo e identificacin del estilo, as como tambin su nombre. El resto del contenido se puede copiar de la parte del documento principal. <w:style w:type="character" w:styleId="Emphasis"> <w:name w:val="Emphasis" /> <w:qFormat /> <w:rPr><w:b /></w:rPr> </w:style>
Ejemplo de marcado 28 Estilos de caracteres

Para aplicar el estilo de carcter, se emplea un procedimiento similar. Dentro de las propiedades a nivel del elemento de ejecucin se usa el elemento rStyle para identificar el estilo de carcter que se va a usar en el elemento de ejecucin. nicamente las propiedades aplicadas directamente a un elemento de ejecucin, usando el elemento rPr, contienen valores de configuracin del formato de texto. Las propiedades a nivel del elemento de ejecucin que se encuentran dentro de las propiedades de prrafo le dan formato a la marca de prrafo. El siguiente ejemplo de marcado muestra un prrafo al que le ha sido aplicado un estilo. El prrafo contiene dos elementos de ejecucin, al primero de los cuales tambin le ha sido aplicado un estilo. Al lado del ejemplo se muestra uno de los posibles resultados de aplicar estas propiedades.

27

WordprocessingML

<w:p> <w:pPr> <w:pStyle w:val="Normal" /> </w:pPr> <w:r> <w:rPr> <w:rStyle w:val="MyCharacterStyle" /> </w:rPr> <w:t>Hello</w:t> </w:r> <w:r xml:space="preserve"> <w:t> World</w:t> </w:r> </w:p>
Ejemplo de marcado 29 Aplicando estilos de prrafo y caracter

Estilos de tablas Antes de discutir los detalles del diseo de pgina, es necesario explicar ms a fondo el tema de estilos de tablas. El estilo de tabla puede guardar informacin que no se limita simplemente a un solo conjunto de propiedades de tablas y celdas. Mediante el uso de WordprocessingML es posible reestructurar la tabla en diferentes secciones tales como fila superior e inferior, primera y ltima columna y filas sombreadas. Con el uso de la funcin de sombreado de filas se puede aplicar un estilo diferente a todas las filas pares e impares, proporcionando as un efecto de banda que hace que la tabla pueda ser leda mejor por el usuario. A la siguiente tabla se le ha aplicado esta funcin. Precio Costo tem 1 14,95 5,65 tem 2 13,92 3,14 tem 3 12,65 9,30 tem 4 16,00 10,00 La tabla del informe de ejemplo usa dos efectos independientes en el encabezado y las filas. Para crear un estilo de tabla se emplea un modelo casi similar al de los otros estilos. Se crea un elemento style y se establece el tipo 'table'. Dentro del estilo de tabla se pueden definir las propiedades de la tabla, las celdas, los prrafos y los elementos de ejecucin. Definamos primero el esquema del estilo de la tabla. Para ello aplicamos los mismos elementos que usamos en los otros estilos. El elemento qFormat hace que el estilo aparezca en el men de formato rpido. <w:style w:type=Table" w:styleId="ReportTable"> <w:name w:val="My Table Style" /> <w:qFormat /> <!-- More to go here --> </w:style>
Ejemplo de marcado 30 Estilo de tabla con efecto de sombreado o de banda

Dentro del estilo de tabla se puede comenzar a aplicar estilos a las diferentes reas de la tabla. La tabla de ejemplo que se muestra usa un grupo diferente de valores de configuracin de estilo para la primera fila, la primera 28

Estilo del documento

columna y cada fila par enumerada. El primer paso es usar los elementos pPr y rPr para aplicar las opciones de configuracin predeterminadas para los prrafos y elementos de ejecucin dentro de la tabla. La siguiente imagen muestra el resultado obtenido con este primer paso. El ejemplo de marcado se debe insertar dentro del elemento style, tal como los otros siguientes ejemplos de estilo de la tabla. <w:pPr> <w:spacing w:after="0" /> </w:pPr> <w:rPr> <w:color w:val="31849B" /> </w:rPr>
Ejemplo de marcado 31 Estilo de tabla con efecto de sombreado o de banda

Luego viene el borde de la tabla. Debido a que el borde se extiende a travs de la parte superior e inferior de la tabla, el borde se puede aplicar en el nodo de propiedades de tabla, tblPr. Tambin se podra definir este borde en la parte de configuracin de la fila superior creada ms adelante. <w:tblPr> <w:tblBorders> <w:top w:val="single" w:sz="8" w:color="4BACC6" /> <w:bottom w:val="single" w:sz="8" w:color="4BACC6" /> </w:tblBorders> </w:tblPr>
Ejemplo de marcado 32 Estilo de tabla con efecto de sombreado o de banda

La primera rea especial con estilo es la fila superior. A esta fila se le ha aplicado un borde en la parte inferior, y tiene un color de fondo diferente. Adems, el texto es de color blanco y est en negrita. Para guardar estos valores de configuracin, se debe crear un nuevo contenedor dentro de la definicin de estilo. En este contenedor se guardarn las propiedades especficas para la primera fila con estilo usando los mismos nodos pPr, rPr y tcPr que hemos venido utilizando continuamente. <w:tblStylePr w:type="firstRow"> <w:rPr> <w:b /> <w:color w:val="FFFFFF" /> </w:rPr> <w:tcPr> <w:tcBorders> <w:bottom w:val="single" w:sz="8" w:space="0" w:color="4BACC6" /> </w:tcBorders> <w:shd w:val="clear" 29

WordprocessingML

w:color="auto" w:fill="D2EAF1"/> </w:tcPr> </w:tblStylePr>


Ejemplo de marcado 33 Estilo de tabla con efecto de sombreado o de banda

El elemento contenedor para la primera columna es aproximadamente igual al de la primera fila. nicamente el atributo type en el elemento tblStylePr seala otra parte de la tabla y no hay que aplicar ningn borde. Los bordes son heredados de los valores de configuracin de toda la tabla y de la primera fila. <w:tblStylePr w:type="firstColumn"> <w:rPr> <w:b /> <w:color w:val="FFFFFF" /> </w:rPr> <w:tcPr> <w:shd w:val="clear" w:color="auto" w:fill="D2EAF1"/> </w:tcPr> </w:tblStylePr>
Ejemplo de marcado 34 Propiedades de la primera columna

La ltima parte de la tabla que tiene un estilo son las filas que tienen el efecto de sombreado o de banda. Se pueden establecer valores de configuracin diferentes para las filas pares e impares. <w:tblStylePr w:type="band1Horz"> <w:tcPr> <w:shd w:val="clear" w:color="auto" w:fill="D2EAF1"/> </w:tcPr> </w:tblStylePr>
Ejemplo de marcado 35 Estilo de tabla con efecto de sombreado o de banda

El siguiente ejemplo de marcado define los elementos de estilo de toda la tabla. <w:style w:type=Table" w:styleId="ReportTable"> <w:name w:val="My Table Style" /> <w:qFormat /> <w:pPr> <w:spacing w:after="0" /> </w:pPr> <w:rPr> <w:color w:val="31849B" /> </w:rPr> <w:tblPr> <w:tblBorders> 30

Estilo del documento

<w:top w:val="single" w:sz="8" w:color="4BACC6" /> <w:bottom w:val="single" w:sz="8" w:color="4BACC6" /> </w:tblBorders> </w:tblPr> <w:tblStylePr w:type="firstRow"> <w:rPr> <w:b /> <w:color w:val="FFFFFF" /> </w:rPr> <w:tcPr> <w:tcBorders> <w:bottom w:val="single" w:sz="8" w:space="0" w:color="4BACC6" /> </w:tcBorders> <w:shd w:val="clear" w:color="auto" w:fill="D2EAF1"/> </w:tcPr> </w:tblStylePr> <w:tblStylePr w:type="firstColumn"> <w:rPr> <w:b /> <w:color w:val="FFFFFF" /> </w:rPr> <w:tcPr> <w:shd w:val="clear" w:color="auto" w:fill="D2EAF1"/> </w:tcPr> </w:tblStylePr> <w:tblStylePr w:type="band1Horz"> <w:tcPr> <w:shd w:val="clear" w:color="auto" w:fill="D2EAF1"/> </w:tcPr> </w:tblStylePr> </w:style>
Ejemplo de marcado 36 Estilo de toda la tabla

Para aplicarle un estilo a una tabla se usa el elemento tblStyle, similar al estilo de prrafo y elemento de ejecucin. No obstante, hay un elemento adicional a tener en cuenta. Existe una separacin entre las secciones definidas en el estilo de la tabla y las que realmente se aplican a la tabla. El estilo de tabla puede definir en cualquier momento la configuracin de cualquiera de las secciones, como por ejemplo los efectos de sombreado. Pero luego, la tabla debe indicarle al consumidor cul de las configuraciones es la que se va a usar. Este procedimiento es controlado por el elemento tblLook. Este elemento define una mscara de bits hexadecimal con instrucciones sobre las secciones de destino del estilo. El valor 0420 corresponde a la activacin de la fila del encabezado y el sombreado de filas. El siguiente ejemplo de marcado ilustra este concepto.

<w:tbl> <w:tblPr> <w:tblStyle w:val="ReportTable" /> <w:tblLook w:val="0420" /> <w:tblW w:w="0" w:type="auto" /> 31

WordprocessingML

</w:tblPr> <!-- Remaining Table markup omitted --> </w:tbl>


Ejemplo de marcado 37 Aplicacin del estilo de tabla

Adicin de imgenes
Hay varios tipos de contenido que se pueden incorporar en un documento de WordprocessingML. El documento permite crear imgenes y otros elementos usando lenguaje de marcado de DrawingML o el antiguo Vector Markup Language (Lenguaje de Marcado Vectorial). El mtodo preferido es DrawingML. Es ms poderoso y no depende de nombres de espacio especficos de Microsoft. En el mundo real se usan ambos mtodos. El principal beneficio de VML para un desarrollador es la baja cantidad de marcado que se requiere para guardar una imagen en el documento. El marcado de DrawingML es mucho ms sofisticado y hay un captulo del libro dedicado solamente a este tema. Antes de poder mostrar una imagen dentro del documento, primero es necesario guardar la imagen dentro del paquete. Al igual que con la parte de estilos, usted debe crear un archivo en el paquete, actualizar la lista de tipos de contenido y crear una relacin entre la parte del documento principal y la imagen. Busque un lugar adecuado para guardar la imagen y actualice la parte de tipos de contenido para definir el tipo de imagen. Para el tipo de contenido se usan los tipos MIME normales, tales como 'image/png'. Para mostrar la imagen en la parte del documento principal se debe crear una relacin a la parte de imagen. El tipo de relacin depende del tipo de imagen. Tipo de relacin para imgenes http://schemas.openxmlformats.org/officeDocument/2006/relationships/image Cmo insertar una imagen de DrawingML Cuando se inserta una imagen en un documento de WordprocessingML usando un consumidor como Microsoft Word, se pueden observar los diferentes efectos que se pueden aplicar a la imagen. ste es el caso tambin de las figuras y los diagramas. En realidad, el entorno que est definiendo este contenido no es WordprocessingML sino DrawingML. Hay un contenedor especfico de WordprocessingML, denominado cuadro de grficos, para permitir el uso de ste y otros tipos de contenido dentro del documento. WordprocessingML usa el elemento drawing para crear un cuadro de grficos. Este cuadro sirve como elemento de posicin del dibujo dentro del documento. Dentro del dibujo insertado, el elemento graphic define el contenido del cuadro de grficos. El contenido de la informacin grfica se define mediante el uso de la estructura graphicData. Cada lenguaje de Open XML usa esta estructura para guardar diversos tipos de contenido. El atributo uri del elemento graphicData identifica el tipo de contenido. El contenido real se debe ajustar por supuesto a este tipo para no causar confusin en el consumidor de Open XML.

32

Adicin de imgenes

Los detalles sobre imgenes, grficas y diagramas se discutirn ms adelante en el captulo sobre DrawingML. El siguiente ejemplo de marcado contiene el cdigo mnimo de marcado que se requiere para crear la misma imagen que se muestra en el informe de ejemplo. <w:drawing> <wp:inline distT="0" distB="0" distL="0" distR="0"> <wp:extent cx="5943600" cy="2003354" /> <wp:docPr id="1" name="Picture 1" /> <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"> <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"> <pic:nvPicPr> <pic:cNvPr id="0" name="Picture 1" /> <pic:cNvPicPr /> </pic:nvPicPr> <pic:blipFill> <a:blip r:embed="rId2" /> <a:stretch> <a:fillRect /> </a:stretch> </pic:blipFill> <pic:spPr> <a:xfrm> <a:off x="0" y="0" /> <a:ext cx="5943600" cy="2003354" /> </a:xfrm> <a:prstGeom prst="rect"> <a:avLst /> </a:prstGeom> </pic:spPr> </pic:pic> </a:graphicData> </a:graphic> </wp:inline> </w:drawing>
Ejemplo de marcado 38 Imagen del informe usando DrawingML

Aunque parece que el procedimiento para insertar una imagen es demasiado complejo, muchos elementos son bsicos y simplemente son valores predeterminados. La gran ventaja de DrawingML es la facilidad con la que se puede mejorar sustancialmente una imagen. Si se toma una imagen simple, se pueden aplicar simplemente dos

elementos para hacerla ms interesante, uno para darle una figura diferente y otro para crear un efecto de reflexin. .

33

WordprocessingML

<a:prstGeom prst="star5"> <a:avLst /> </a:prstGeom> <a:effectLst> <a:reflection blurRad="6350" stA="50000" endA="300" endPos="55000" dir="5400000" sy="-100000" algn="bl" rotWithShape="0" /> </a:effectLst>

El captulo sobre DrawingML presenta ms detalles sobre todos los efectos que se pueden aplicar.

Cmo insertar una imagen de VML Aunque no son parte del estndar Open XML, las imgenes de VML tambin se usan en documentos de WordprocessingML, as como cualquier otro formato que un implementador desee. Este lenguaje est ahora en desuso pero en ocasiones se utiliza dentro del programa Microsoft Word. El conjunto de caractersticas es similar pero DrawingML proporciona una mayor variedad de efectos. Tambin se puede cambiar la geometra de la figura, tal como en DrawingML. A esta geometra se le puede dar entonces, por ejemplo, un efecto de sombra o de movimiento en 3D. A la geometra se le ha aplicado un estilo de lnea y de relleno. El ejemplo usa una imagen como tipo de relleno pero tambin se pueden especificar colores individuales, gradientes y texturas. Aunque las caractersticas disponibles no son tan amplias como las de DrawingML, VML tiene una ventaja sobre DrawingML. El cdigo de marcado que se requiere para insertar una figura de VML en un documento es mucho menor que el que se requiere para una figura equivalente en DrawingML. El Ejemplo de marcado 39 muestra cmo insertar una figura y hacer que se vea como una imagen normal en el documento. El efecto se puede lograr usando el elemento rect para definir la geometra como un rectngulo y proporcionando un relleno basado en la imagen insertada en el paquete. El ID de relacin seala la imagen que se insertado previamente en el documento.
<w:p> <w:r> <w:pict> <v:rect style="width:16.56cm;height:5.36cm;" stroked="f"> <v:fill r:id="rId2" type="frame" /> </v:rect> </w:pict> </w:r> </w:p>
Ejemplo de marcado 39 Imagen del informe usando VML

El cdigo de marcado que se requiere para insertar una figura de VML en un documento es mucho menor que el que se requiere para una figura equivalente en DrawingML. Personalmente, yo prefiero usar ste ltimo. DrawingML tiene ms poder de expresin y puede ser distribuido mejor por diferentes aplicaciones en comparacin con VML. Para lograr el estilo que se desea usando cdigo en VML se requiere distribuir una cadena de texto; por el contrario, DrawingML usa valores de configuracin basados en lenguaje XML puro, lo que resulta ms fcil de hacer. 34

Diseo de pgina

Con la imagen de ejemplo se concluye la creacin del informe bsico. Finalmente, todos los elementos estn presentes: el texto, la tabla y la imagen. El siguiente paso es definir diseos de pgina y adicionar contenido variado.

Diseo de pgina
Ahora que hemos explorado el formato bsico de un documento de WordprocessingML, el siguiente paso es crear el diseo de pgina apropiado. Hay varias opciones de configuracin que debemos aprender, pero comenzaremos con los encabezados de secciones y pginas. Despus de explorar cada uno de estos elementos, el siguiente en la lista es el uso de campos. Con todo esto podremos crear encabezados o pies de pgina que contienen diversos elementos de informacin, como por ejemplo el nmero de pgina. Concluiremos esta seccin con la discusin de otras caractersticas relacionadas con el diseo de pgina, como por ejemplo la distribucin de texto en columnas. Creacin de secciones Las secciones son los bloques de construccin de alto nivel del documento. Usualmente se crean secciones independientes para la primera pgina del documento, el cuerpo del documento y posibles anexos. La razn para tener diversas secciones es que una seccin es la unidad a la cual se le pueden aplicar nmeros de pgina o encabezados y pies de pgina. Con una seccin tambin se pueden especificar otros detalles como la orientacin de la pgina. Una seccin se puede crear a dos niveles: dentro de prrafos y directamente dentro del cuerpo del documento. Cada vez que se define una seccin dentro de las propiedades de prrafo, ese prrafo y todos los anteriores forman parte de dicha seccin hasta que se llega a otro prrafo que define otra seccin independiente. La definicin de la seccin dentro del cuerpo del documento contiene las propiedades de la ltima seccin del documento, y debe ser el ltimo elemento definido dentro del cuerpo del documento. El siguiente ejemplo de marcado muestra el uso ms simple de dos secciones. Ambas secciones usan los valores de configuracin de seccin predeterminados ya que los elementos sectPr no tienen nodos secundarios.
<w:body> <w:p> <w:r> <w:t>First</w:t> </w:r> </w:p> <w:p> <w:pPr>

<w:sectPr />
</w:pPr> </w:p> <w:p> <w:r> <w:t>Second</w:t> </w:r> </w:p>

<w:sectPr />
</w:body>
Ejemplo de marcado 40 Dos secciones

Existen varios tipos de saltos de seccin. El tipo predeterminado que se usa en el ejemplo de marcado 40 sita un salto de pgina de manera que la siguiente seccin comience siempre con una pgina vaca. Adems de especificar el tipo de salto de seccin, es posible especificar otras propiedades desde el elemento de propiedades de seccin. Entre las ms comunes est la orientacin horizontal de una pgina cuando las otras tienen la orientacin vertical normal, tal como se muestra en el siguiente ejemplo. 35

WordprocessingML

Figura 13 Un documento con dos secciones

Adems de la definicin misma de las dos secciones, como en el ejemplo de marcado anterior, hay dos cosas que se deben hacer para lograr este efecto. La primera es definir una orientacin horizontal en las propiedades de la segunda seccin. Para ello usamos el elemento de tamao de pgina, pgSz. Sin embargo, no basta con especificar la orientacin de la seccin; tambin es necesario modificar el alto y ancho de la pgina definiendo valores correctos para pginas en modo horizontal. La unidad de medicin del alto y ancho es el 'twip'. En el siguiente ejemplo de marcado se definen las propiedades para configurar una pgina en tamao normal A4 y definir una orientacin vertical u horizontal.
<w:sectPr> <w:pgSz w:w="12240" w:h="15840" /> </w:sectPr>
Ejemplo de marcado 41 Diseo de pgina con orientacin horizontal (Portrait)

<w:sectPr> <w:pgSz w:w="15840" w:h="12240" w:orient="landscape" /> </w:sectPr>


Ejemplo de marcado 42 Diseo de pgina con orientacin horizontal (Landscape)

Adicin de encabezados y pies de pgina Cada pgina dentro de un documento conserva una cierta margen entre el texto y el borde de la pgina. Estas mrgenes superiores e inferiores se conocen como el encabezado y el pie de pgina del documento. En WordprocessingML es posible llenar esta rea con contenido normal. Este contenido ser repetido en todas las pginas que forman parte de la misma seccin. Usualmente los encabezados y pies de pgina se usan para escribir el ttulo del captulo o el nmero de pgina o para insertar alguna imagen descriptiva.

La seccin se usa para definir el encabezado y pie de pgina que se debe usar en las pginas correspondientes a dicha seccin. Los encabezados y pies de pgina son considerados entidades independientes y por tanto tienen su propio lugar dentro del paquete. Para crear encabezados y pies de pgina propios, se debe primero guardar el archivo XML en el paquete y definir el tipo de contenido correcto para las nuevas partes. Luego se debe crear una relacin entre la parte del documento principal y la parte del encabezado o pie de pgina. Debido a que un documento puede usar una gran variedad de secciones, se pueden tener muchas partes de encabezado y pie de 36

Diseo de pgina

pgina. Tambin es posible tener secciones que usan el mismo encabezado o pie de pgina de la seccin anterior para evitar redefinir el mismo contenido para cada una de las secciones. Para establecer la referencia de este encabezado desde las propiedades de seccin, se usan los elementos headerReference y footerReference. El siguiente ejemplo muestra cmo establecer la referencia del encabezado y el pie de pgina de una seccin. Mediante el uso del atributo type, tambin es posible definir encabezados o pies de pgina diferentes para pginas enumeradas con nmeros pares o impares. Esto permite incluir contenido de encabezado, como por ejemplo un nmero de pgina, en el lado derecho de la pgina cuando se imprimen pginas por ambos lados.
<w:sectPr> <w:headerReference w:type="default" r:id="rId3" /> <w:footerReference w:type="default" r:id="rId4" /> </w:sectPr>
Ejemplo de marcado 43 Encabezado y Pie de pgina

La parte identificada por el ID de relacin debe usar un tipo de relacin especfico. Tipo de relacin para encabezados y pies de pgina http://schemas.openxmlformats.org/officeDocument/2006/relationships/header http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer El contenido del encabezado y el pie de pgina es similar al cuerpo del documento. El elemento raz es hdr o ftr, dependiendo del elemento que se est definiendo. Dentro de estos elementos se puede crear contenido normal a nivel de bloque, como prrafos y tablas. Tambin se pueden incluir imgenes y otras figuras.
<?xml version="1.0" encoding="utf-16" standalone="yes"?> <w:hdr xmlns:w="http://schemas.openxmlformats.org/WordprocessingML/2006/main"> <w:p> <w:pPr> <w:jc w:val="center" /> </w:pPr> <w:r> <w:t>AdventureWorks Report</w:t> </w:r> </w:p> </w:hdr>
Ejemplo de marcado 44 Contenido bsico en un encabezado

El tipo de contenido para esta seccin se presenta en el siguiente prrafo. El procedimiento para adicionar partes nuevas al paquete y actualizar la lista de tipos de contenido ya debe ser familiar. Si todava no lo es, revise nuevamente las secciones iniciales del libro en donde se explican con mayor detalle los conceptos relacionados con el paquete ZIP. Tipo de contenido para encabezados y pies de pgina application/vnd.openxmlformats-officedocument.WordprocessingML.header+xml application/vnd.openxmlformats-officedocument.WordprocessingML.footer+xml

37

WordprocessingML

XML personalizado en documentos


Si usted examina el uso de documentos a travs de los aos notar que los documentos se estn convirtiendo en un medio primordial para el intercambio de datos. Ya no son textos de formato enriquecido pegados unos a otros en unas cuantas pginas. Hoy en da, el documento mismo es la informacin. Para que esto sucediera, se han introducido varias tecnologas en WordprocessingML. Examinemos cmo un documento de negocios, como una factura, se le puede dar formato usando Open XML. Cuando usted examina un documento de negocios tpico, puede encontrar que existen dos niveles de informacin: cmo se ve y qu significa. El marcado que hemos visto hasta ahora especifica cmo se debe presentar el texto. Pero supongamos que usted quiere preservar el significado o contexto de negocio de la informacin contenida en el documento. Puede intentar especificar una norma de formato para los elementos de informacin tales como "la letra en negrilla indica clientes ", pero esta estrategia sera poco prctica y propensa a producir errores. Para aprovisionar su documento con informacin semntica extra la cual no se puede proveer dando formato visual aisladamente, usted tiene dos tecnologas de donde escoger. Cada una tiene sus propios escenarios de uso, beneficios y desventajas. Para aadir semnticas de negocio personalizadas a varios elementos en el marcado usted puede hacer dos cosas, usar XML o etiquetas de documento estructuradas. Las etiquetas de documento estructuradas se introdujeron en Open XML y existen para evitarle a usted algunas dificultades al trabajar con XML. Adems de tener muchas caractersticas ventajosas, las etiquetas de documento estructuradas tambin omiten algunas caractersticas que usted espera que estn presentes. Ambos sistemas le permiten a usted marcar el documento con semnticas de negocio basadas en un mensaje XML personalizado. Entonces usted podr validar el mensaje XML personalizado usando un esquema XML para asegurarse que el documento haya sido creado correctamente por el consumidor. XML personalizado La primera estrategia de aadir semnticas de negocio existe desde el comienzo de la historia de XML para documentos. El marcado requerido para usarlo se cambi levemente para permitir un mejor soporte par la validacin XML, pero se aplican los mismos conceptos. Para ver cmo se puede usar el marcado XML personalizado, eche un vistazo al reporte encontrado en el sitio web de muestra. Existen muchas piezas diferentes de datos representados en este reporte. El encabezado contiene un nombre del vendedor as como tambin la fecha de inicio y finalizacin del reporte. En el contenido usted encontrar la informacin de contacto, totales de ventas, y la lista de ventas por territorio. La mayora de estos datos pueden estar representados por un valor nico. La tabla de ventas por territorio contiene elementos repetidos. Usted no sabe de antemano cuntos habr. EL marcado XML personalizado le permite a usted trabajar tambin con esto. La siguiente imagen describe el reporte y los datos que contiene. Los datos se encerraron con un crculo. Hay un dato que no se encerr con un crculo, el reporte completo. Usted puede imaginarse el reporte como un todo as como la estructura que contiene los datos. Esto estar representado como el nodo raz de su mensaje XML personalizado elaborado en el documento.

38

XML personalizado en documentos

Figura 14 Regiones de datos en el reporte

Los datos dentro de este reporte pueden estar representados como un mensaje XML nico que contenga nicamente elementos en una asignacin de nombres sin relacin con Open XML. <salesReport xmlns="http://adventureworks.com/salesReport"> <name>Stephen Jiang</name> <salesPeriod> <startDate>1-1-2003</startDate> <endDate>12-31-2003</endDate> </salesPeriod> <salesPerson> <name>Stephen Jiang</name> <email>stephen0@advenure-works.com</email> </salesPerson> <salesSummary> <totalSales>610881.02</totalSales> <salesQuota>0.00</salesQuota> </salesSummary> <salesByTerritory> <territory> <name>Australia</name> <sales>0.00</sales> </territory> <territory> <name>Canada</name> 39

WordprocessingML

<sales>135342.50</sales> </territory> <!-- other territorties omitted--> </salesByTerritory> </salesReport>


Ejemplo de marcado 45 Datos XML personalizados

Para representar este dato dentro del marcado WordprocessingML usted enlaza los datos personalizados y el documento normal de marcado. La siguiente imagen describe cmo se puede ver esto dentro de un consumidor Open XML. nicamente se muestra la parte superior del reporte.

Figura 15 XML personalizado en la Interfaz de Usuario

Los datos en el documento se reemplazan por marcadores de posicin personalizados. Estos marcadores de posicin los puede llenar el usuario para proporcionar datos simplemente digitando el texto dentro del documento. La presentacin visual mostrada est orientada a los diseadores. Tambin existe una forma ms fcil de mostrar los mismos elementos. Estas configuraciones se pueden almacenar en el documento usando la parte de configuraciones.

Figura 16 Marcadores de Posicin (Placeholders)

Para representar este dato de negocios personalizado dentro del documento usted debe modificar la parte principal del documento y aplicar elementos de marcado personalizados para dar formato al texto. Existe una marca especial llamada customXml, la cual puede usar para definir un nodo de su mensaje de negocios personalizado. Para identificar el nombre de su nodo y asignacin de nombres, se usa propiedades. Esto permite validar el documento usando tecnologa de esquema. Al permitir un XML verdaderamente arbitrario encerrando el marcado WordprocessingML, ya no sera posible esta validacin. El ejemplo siguiente ilustra cmo se encierra el nombre con el marcado personalizado. Note cmo an puede dar formato al texto usando las tcnicas explicadas.
<w:customXml w:uri="http://adventureworks.com/salesReport" w:element="name"> <w:p> <w:pPr> <w:pStyle w:val="Title" /> </w:pPr> <w:r> <w:t>Stephen Jiang</w:t>

40

XML personalizado en documentos

</w:r> </w:p>

</w:customXml> Algo que puede usted notar sobre este ejemplo es que el nombre del reporte no es el elemento base del mensaje de negocios personalizado. Cmo se forma esta jerarqua? Usted puede insertar las marcas customXml dentro de otras marcas customXml para formar la jerarqua XML de su documento. Un ejemplo es encerrar una tabla con una marca customXml identificando el nodo salesByTerritory (ventas por territorio) y cada fila con uno identificando un territory (territorio). Existe un elemento con el que usted normalmente cerca un documento completo, el nodo raz de su mensaje de negocios. Esto tomar la siguiente forma.
<w:document> <w:body> <w:customXml w:uri="http://adventureworks.com/salesReport" w:element="salesReport"> <w:customXml w:uri="http://adventureworks.com/salesReport" w:element="name"> <w:p> <w:r> <w:t>Stephen Jiang</w:t> </w:r> </w:p> </w:customXml> </w:customXml> </w:body> </w:document>
Ejemplo de marcado 46 Ejemplo de mapeo de XML personalizado

Usando el elemento customXml usted podr encerrar los siguientes elementos.

Prrafos Celdas Ejecuciones

Filas

Custom XML
Tablas Etiquedas de documentos estructurados

Campos

Hipervnculos

Figura 17 Elementos aptos para el marcado XML personalizado

Trabajar con customXml en la plataforma de Microsoft Office tiene una gran ventaja. Si usted aade filas a la tabla dentro de la aplicacin de Microsoft Word, las nuevas filas se distribuyen automticamente usando nuevas marcas customXml. Esto le permite repetir el contenido repetitivo de su mensaje de negocios dentro del consumidor. Esta 41

WordprocessingML

es una caracterstica de la aplicacin, la cual no est disponible en el siguiente modelo para almacenar semnticas de negocios, la etiqueta de documento estructurada. Existen otros grandes beneficios para el modelo de etiqueta de documento estructurada, que sin embargo merecen ser estudiados un poco ms a fondo. Etiquetas de documento estructuradas (Structured document tags STD) El segundo modelo es conocido bajo el nombre de programador 'etiqueta de documento estructurada', el cual es tambin llamado por Microsoft 'control de contenido'. Este modelo proporciona un doble uso. Usted puede marcar un documento usando el control de contenido para demarcar las reas en su documento. Estas reas pueden ser piezas elementales de datos, pero tambin agrupaciones de texto enriquecido. Para las partes elementales de datos se pueden mostrar ciertas Interfaces de Usuario tales como el selector de fechas que se muestra en el ejemplo. Adems de marcar un documento usted tambin puede tomar el contenido del control de contenido y distribuirlo a una archivo de datos de negocios personalizado dentro del paquete. Esto separa los datos de una forma que no sera posible usando XML personalizado. Esta informacin XML personalizada est almacenada como una parte separada dentro del paquete y permite el encadenamiento de datos bidireccional. Cuando usted edita el contenido del SDT en el consumidor, se actualiza la parte XML personalizada. Cuando se actualiza la parte XML personalizada a travs del cdigo, el documento reflejar este cambio al abrirse. Usted puede proporcionar un esquema para la informacin, pero no es obligatorio. Una de las ventajas principales de trabajar con etiquetas de documento personalizadas es la opcin de restringir la edicin o eliminacin de la etiqueta de documento. El modelo XML personalizado permiti la eliminacin accidental de la distribucin. Esto es algo que usted puede prevenir fcilmente usando etiquetas de documento estructuradas. Usando estas marcas usted puede crear un documento que sea realmente un marcador de posicin para el contenido y est asegurado contra ediciones accidentales del diseo. Las etiquetas de documento estructuradas pueden usarse como regla de bloqueo y contenido en lnea, dependiendo del contenido que se vaya a marcar. Usando una etiqueta de documento estructurada usted puede crear los siguientes tipos de contenido.

Texto plano

Texto enriquecido

List-box

Selector de Building-block

Imgenes

Combo-box

Selector de Fecha

Grupo

Figura 18 Tipos de etiquetas de documento estructuradas

La mayora de las marcas estructuradas proporcionan contenido de documento elemental. Las marcas especiales son Group y Building-Block (Bloques de Construccin). Group se puede usar para agrupar contenido incluyendo otras etiquetas de documento. Normalmente se usa para bloquear una parte especfica del documento, previniendo la edicin excepto para las etiquetas hija. Esto le permite crear un documento que contenga 42

XML personalizado en documentos

marcadores de posicin editables. Building-Block es otro tem interesante el cual le permite reemplazar su contenido con un bloque de construccin predefinido en la plantilla del documento. Para crear una etiqueta de documento estructurada debe usar el elemento sdt. La etiqueta de documento estructurada utiliza dos secciones, propiedades y contenido distintos. Dentro de propiedades usted define detalles tales como el tipo de etiqueta de documento. La etiqueta de documento tambin usa un elemento alias y tag. El primero es como referencia para el consumidor, el segundo como referencia programtica. El alias se muestra en el encabezado de la interfaz de usuario. Usted tambin puede personalizar la configuracin de cada etiqueta de documento dentro del elemento, definiendo el tipo de etiqueta de documento. Un ejemplo de ello es almacenar informacin acerca del formato de fecha para una etiqueta de fecha.
<w:sdt> <w:sdtPr> <w:alias w:val="Day of birth" /> <w:tag w:val="Birthday" /> <w:showingPlcHdr /> <w:date> <w:dateFormat w:val="d-M-yyyy" /> <w:calendar w:val="gregorian" /> </w:date> </w:sdtPr> <w:sdtContent> <w:p> <w:r> <w:t>Click here to enter a date.</w:t> </w:r> </w:p> </w:sdtContent> </w:sdt>
Ejemplo de marcado 47 Etiqueta de documento estructurada de fecha

El contenido para la etiqueta de documento se especifica usando el elemento sdtContent. Este elemento puede reflejar una de las dos partes de la informacin, el texto de marcador de posicin para elementos vacos, o la informacin actual para la etiqueta de documento. La marca showingPlcHdr, en propiedades, indica que el contenido est mostrando informacin de marcador de posicin. Cuando se usa el encadenamiento de datos, estos datos no se almacenan en una parte de negocios personalizada. Dentro del reporte de muestra usted puede utilizar marcadores de posicin de texto y fecha para crear todos los espacios de contenido. La tabla se puede distribuir encerrando filas, pero tambin puede simplemente marcar los valores de las celdas. El siguiente encadenamiento de datos que se aadir est configurado por etiqueta de documento sin ninguna nocin de jerarqua como customXml.

43

WordprocessingML Encadenamiento de datos (data-binding) El mayor habilitador para etiquetas de documento es el uso de encadenamiento de datos. Esta tcnica gira en torno al almacenamiento de datos dentro de la etiqueta de documento, separada del marcado principal. Ya que los datos se mantienen separados es mucho ms fcil encontrarlos a travs de aplicaciones personalizadas que cuando se almacenan en lnea. El modelo de encadenamiento de datos definido en Open XML hace posible que ocurra un enlace bidireccional. Cuando usted actualiza los contenidos de la etiqueta de documento como usuario a travs de un consumidor, los datos se almacenarn en el contenedor separado. Cuando usted actualiza el contenedor como diseador y abre el documento, la informacin aparece de nuevo en lnea dentro del documento. Esta estrategia de enlace bidireccional es muy valiosa para crear contenido empresarial enriquecido. El encadenamiento de datos de etiquetas de documento estructuradas involucra el aprovisionamiento de cada elemento sdt con una expresin X-Path. Esta expresin se calcula para obtener datos de una parte especial de negocios personalizada dentro del paquete. Usted puede almacenar mltiples partes dentro de un paquete y referenciar cada una individualmente. Para actualizar el reporte de muestra para que use el encadenamiento de datos, usted primero debe almacenar una parte de negocios personalizada dentro del paquete. El tipo de contenido que se muestra a continuacin se usa para identificar la parte como tal. El tipo MIME se usa por defecto para XML. Cree tambin una segunda parte dentro del paquete para conservar las propiedades personalizadas acerca de los datos de negocio. Esto se usar despus para identificar la parte especfica de datos personalizada. Se usa el mismo tipo de contenido. Usted probablemente no necesitar actualizar la lista [Content_Types].xml. El tipo de contenido por defecto para la extensin de archivo XML es correcto. Tipo de contenido para datos de negocio XML personalizados application/xml El segundo paso es relacionar el contenido de documento principal con la parte de datos de negocio personalizada y relacionar la parte personalizada con la parte de propiedades. Se usan los dos siguientes tipos de relacin. Tipo de relacin para datos de negocio XML personalizados http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml Tipo de Relacin para propiedades XML personalizadas http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps Ya que se le permite almacenar mltiples archivos de datos personalizados dentro de un paquete, puede haber problemas al identificar a cul se debe enlazar el documento. La informacin, en diferentes partes, puede estar estructurada de la misma manera. Por defecto el consumidor escoger la primera parte XML personalizada que se equipara a la expresin X-Path proporcionada por la etiqueta de documento. Si no encuentra alguna, no realizar ninguna accin. Para identificar adems en qu parte quiere usted almacenar los datos, puede utilizar el storeitemID. Este identificador est vinculado a una parte XML personalizada usando una parte de propiedades XML personalizadas. La parte de propiedades determina dos piezas de la informacin, el ID de la parte XML personalizada y los esquemas XML para el mensaje de datos XML personalizado.

44

XML personalizado en documentos

<ds:datastoreItem xmlns:ds="http://schemas.openxmlformats.org/officedocument/2006/2/customXml" ds:itemID="{C65DD089-1234-4A84-8443-BC4CB07DEB45}"> <ds:schemaRefs> <ds:schemaRef ds:uri="http://adventureworks.com/sampleReport" /> </ds:schemaRefs> </ds:datastoreItem>


Ejemplo de marcado 48 Parte de propiedades XML personalizada

Ahora que puede identificar su parte de negocio personalizada usando el ID, puede aadirle contenido. Es importante notar la ausencia de asignacin de nombres especfica de Open XML. Usted puede almacenar cualquier XML arbitrario y enlazarlo a l.
<a:report xmlns:a="http://adventureworks.com/sampleReport"> <a:salesMan>Stephen Jiang</a:salesMan> <a:contactEmail>stephen0@adventure-works.com</a:contactEmail> <a:salesPeriod> <a:start>1-1-2003</a:start> <a:end>31-12-2003</a:end> </a:salesPeriod> <a:salesSummary> <a:totalSales>610,881.02</a:totalSales> <a:salesQuota>0</a:salesQuota> </a:salesSummary> </a:report>
Ejemplo de marcado 49 Parte XML personalizada

Para completar el crculo, la etiqueta de documento estructurada requiere ahora referenciar la informacin dentro de la parte XML personalizada. Aplique un elemento de encadenamiento de datos donde proporcione el X-Path que conduce a la informacin. Le es permitido usar prefijos de asignacin de nombres XML aplicando distribucin de prefijos separados al elemento de encadenamiento de datos. Estos son requeridos cuando usted usa un prefijo de asignacin de nombres XML en su bsqueda de X-Path. El atributo storeitemID es opcional. Cuando usted lo omita el consumidor intentar enlazarse a la primera parte XML personalizada compatible tal como se expuso anteriormente en esta parte.
<w:sdt> <w:sdtPr> <w:alias w:val="Sales-man" /> <w:tag w:val="salesManName" /> <w:dataBinding w:prefixMappings="xmlns:a='http://adventureworks.com/sampleReport'" w:xpath="/a:report/a:salesMan" /> <w:text /> </w:sdtPr> <w:sdtContent> <w:r> <w:t>Click here to enter text</w:t> </w:r> </w:sdtContent> </w:sdt>
Ejemplo de marcado 50 Etiqueta de documento estructurada datos encadenados

45

WordprocessingML

El Toolkit para Control de Contenido Para hacer un poco ms fcil el proceso de encadenamiento de etiquetas de documento estructuradas a un archivo de datos XML personalizado dentro del paquete, se puede usar el Toolkit para Control de Contenido. Esta herramienta de cdigo abierto permite generar partes, relaciones y el marcado para encadenar el XML personalizado. Se puede descargar el toolkit desde CodePlex: http://www.codeplex.com/Wiki/View.aspx?ProjectName=dbe

Finalizacin del documento


Lo que probablemente le ha sucedido a alguno de ustedes durante el curso de su carrera es que enviaron documentos a un prospecto con los datos de revisin y los comentarios an estaban incorporados en el documento. Esto podra ser muy embarazoso si los comentarios no deban ser vistos por esa persona en particular. WordprocessingML almacena varias partes de la informacin acerca de los cambios hechos al documento. Ya se abord el tema sobre RSID en la primera parte de este captulo, pero existen otras opciones ms poderosas. Cuando usted activa la opcin de revisin en el documento, todos los cambios hechos al documento sern almacenados por el consumidor. Para todos los cambios se conserva el original as como el valor cambiado. Usted tambin puede almacenar comentarios dentro de un documento para una posterior revisin. Todo el contenido se puede eliminar del documento sin mucha dificultad si usted sabe la estructura en la cual se almacenaron los datos. Para indicarle al usuario que usted ha terminado el documento, quizs despus de eliminar todos los datos revisados, usted puede poner una marca sobre el documento sealando que est completo. Se le pedir al consumidor que abra el documento en modo de slo lectura. Eliminacin de datos revisados Cuando usted activa el control de revisiones dentro de la configuracin, todos los cambios hechos al documento se conservarn a travs de un marcado especializado. Posteriormente un usuario puede escoger cul contenido se debe conservar aceptando los cambios o revirtindolos al original. No es poco comn dejar accidentalmente los datos revisados intactos antes de enviar el documento al cliente. El marcado de revisin se conservara en elementos especializados. Muchos de estos elementos pueden removerse fcilmente desde el documento junto con las etiquetas hijas definidas dentro de l. Algunos otros elementos 46

Finalizacin del documento

actan como contenedor para contenido actual y deben ser removidos mientras se mantienen las etiquetas hija. EL siguiente resumen proporciona una lista de todos los elementos que usted necesita tocar para poder limpiar el documento de todos los datos revisados. Elemento rPrChange pPrChange tblPrChange trPrChange tcPrChange moveFrom moveFromRangeStart moveFromRangeEnd moveTo moveToRangeStart moveToRangeEnd Ins Del delText Contiene Propiedades originales de ejecucin Propiedades originales de prrafo Propiedades originales de tabla Propiedades originales de fila Propiedades originales de celda Contenedor para contenido movido Marcador para mover ubicacin origen Marcador para mover ubicacin origen Contenedor para contenido movido Marcador para mover ubicacin destino Marcador para mover ubicacin destino Contenedor para contenido insertado Marcador para elementos borrados Contenedor para contenido borrado Contenedor para texto borrado Accin de limpieza Remover Elemento Remover Elemento Remover Elemento Remover Elemento Remover Elemento Remover Elemento Remover Elemento Remover Elemento Remover Elemento Mantener hijos Remover Elemento Remover Elemento Remover Elemento Mantener hijos Remover Elemento Remover Elemento

Tabla 3 Lista de elementos revisados

La mayora de las acciones de eliminacin son bastante bsicas. Todos los elementos marcados como 'Eliminar Elemento' se pueden eliminar del documento usando edicin XML elemental. Los elementos moveTo e ins toman un paso ms. Ya que contienen el contenido actual del control de revisin, usted necesitar conservar todos los elementos hijos definidos dentro de estos contenedores. Eliminacin de comentarios Un comentario es una anotacin atada a una parte especfica del documento. Usualmente no es tanta la necesidad de crear, es preferible remover los comentarios de un documento como parte de la finalizacin del proceso. En cualquier caso se debe conocer la estructura. Hay dos partes para los comentarios. El comentario de texto se almacena en el paquete y se vincula dentro del documento en alguna ubicacin. El comentario de texto se almacena en una parte separada en el paquete, unindolo a la parte del documento principal usando un tipo de relacin reconocido. Tipo de relacin para comentarios http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments Dentro de la parte identificada por esta relacin usted puede encontrar comentarios separados. El nodo raz comments almacenar un elemento comment para cada comentario definido en el documento. El comentario individual se identifica usando un valor de ID y almacena detalles acerca de quin cre el comentario. Dentro del nodo comment le ser permitido usar construcciones normales a nivel de bloque, tales como un prrafo o una tabla.
<w:comments xmlns:w="http://schemas.openxmlformats.org/WordprocessingML/2006/main"> <w:comment w:id="0" w:author="Wouter van Vugt" w:date="2007-04-28T19:35:00Z" w:initials="WvV"> <w:p> <w:r> <w:t>A comment</w:t> </w:r>

47

WordprocessingML

</w:p> </w:comment> </w:comments>


Ejemplo de marcado 51 Seccin Comentario

Para referenciar este comentario dentro del documento hay una estrategia simple. Usted encontrar un nodo commentReference en la ubicacin donde quiera que se incluya el comentario. Esta referencia se vincula al comentario mediante la especificacin del valor de ID del comentario en la parte de comentarios. Ya que el commentReference es un elemento individual, no puede demarcar un comentario que involucre varias partes de contenido. Usted slo cuenta con un punto de referencia. Para definir el rea de la que se va a hablar en el comentario, usted puede usar los elementos commentRangeStart y commentRangeEnd adicionalmente al commentReference.
<w:p> <w:commentRangeStart w:id="0" /> <w:r> <w:t>This text is commented on</w:t> </w:r> <w:r> <w:commentReference w:id="0" /> </w:r> <w:commentRangeEnd w:id="0" /> </w:p>
Ejemplo de marcado 52 Referenciando un comentario

Los ms importante sobre esta configuracin es que es extraordinariamente fcil eliminar comentarios del paquete de WordprocessingML. Usted deber hacer dos cosas. Primero elimine la parte de comentarios del paquete y elimine los nodos comment del marcado. Ya que los comentarios slo pueden aparecer en el contenido del documento principal, usted solamente deber ver un documento XML. La estructura de los nodos de referencia tambin permite una fcil eliminacin. Cada nodo comment se elimina de cualquier contenido hijo, as que no es necesario mover ningn contenido al eliminar comentarios. Marcando como Final Marcar un documento como Final, es una caracterstica dirigida a deshabilitar la edicin de la Interfaz de Usuario en el consumidor. Aunque no es una caracterstica de seguridad si es un suplemento til para que el usuario pueda saber con qu tipo de documento est tratando. La caracterstica de marcar un documento no est definida dentro del alcance de Open XML, pero ya que es algo que a usted le gustara hacer, est incluido aqu. Marcar un documento como final involucra almacenar una parte XML personalizada dentro del paquete y almacenar algunos marcados especficos de Open XML. El marcado utilizado es la facilidad de Open XML para definir las propiedades personalizadas y permitir que sean utilizadas por el consumidor. Para marcar un documento como final, primero cree una parte nueva dentro del paquete y configure otra vez el tipo de contenido de forma correcta. El paso siguiente es ejecutar una relacin desde el archivo de relacin principal. Las propiedades se consideran un parte de inicio. Deber aadir la relacin en el archivo \_rels\.rels. Se usa el siguiente tipo de contenido y tipo de relacin. Tipo de contenido para la parte de propiedades personalizadas: application/vnd.openxmlformats-officedocument.custom-properties+xml Tipo de relacin para la parte de propiedades personalizadas: http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties 48

Temas avanzados

Dentro de la parte de propiedades personalizadas usted debe almacenar contenido XML especfico para que la aplicacin Microsoft Office Word considere el documento como finalizado. <?xml version="1.0" encoding="utf-16" standalone="yes"?> <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"> <property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="_MarkAsFinal"> <vt:bool>true</vt:bool> </property> </Properties>
Ejemplo de marcado 53 Propiedades para marcar un documento como final

El marcado es absolutamente especfico para la plataforma de Microsoft Office y muestra una de muchas maneras en las que un consumidor puede aumentar la experiencia del documento y ajustarlo a sus necesidades especficas. Usted encontrar que la mayora de los requerimientos empresariales, tales como el soporte para el acceso, no requieren el uso de propiedades personalizadas pero s utilizan el marcado Open XML genuino.

Temas avanzados
Ahora que la imagen ha sido insertada en el documento el informe se ve como el ejemplo que viene con este libro. Hay otros contenidos interesantes que no se usan de manera directa en el informe de ejemplo, pero de todas maneras es interesante hablar sobre ellos. Se tratarn otras caractersticas comunes, como por ejemplo, mezclas de celdas de cuadros e insercin de contenidos como listas y campos. Fondo de pgina En el documento usted puede establecer una grfica para que la muestre como fondo de su documento. Este fondo llena toda la pgina y tan slo se puede especificar a nivel del documento, esta es una caracterstica que no est disponible en al nivel de parte. El fondo del documento se crea dentro de la etiqueta document usando el elemento background. Usted puede crear el fondo del documento de dos maneras. Un color uniforme se puede representar dentro de la etiqueta del fondo. Se pueden definir tipos ms complejos de fondos usando un marcado VML. Esto le da la capacidad de usar un relleno degradado o tambin una foto. El siguiente ejemplo muestra cmo crear un efecto de degradado VML.
<w:document xmlns:w="http://.../WordprocessingML/2006/main"> <w:background w:color="9BBB59"> <v:background fillcolor="#9bbb59 [3206]"> <v:fill color2="fill darken(118)" method="linear sigma" focus="100%" type="gradientRadial"> <o:fill v:ext="view" type="gradientCenter" /> </v:fill> </v:background> </w:background></w:document>
Ejemplo de marcado 54 Fondo de documento

Es importante saber que este fondo no aparecer en la visin predeterminada del consumidor. En vez de esto, para ver el fondo, abra algo parecido al modo de 'lectura de pantalla completa' (Full-screen Reading) de Microsoft Office Word. Hay una configuracin que usted puede aplicar en la parte de configuracin para indicarle que usted 49

WordprocessingML

tambin quiere ver el fondo en la vista de impresin. Especficamente usted est usando la propiedad displayBackgroundShape. Tablas con celdas mezcladas Una caracterstica que se usa muy frecuentemente en una tabla es la de mezclar sus celdas, tanto horizontal como verticalmente. Las tablas de WordprocessingML tambin pueden hacer esto. Para cada tipo de mezcla, horizontal o vertical, hay un modelo diferente. Ambas se fundamentan en las propiedades de nodo de las celdas de las tablas. Siempre se tienen que crear celdas rectangulares, las formas en L no son permitidas. En la prctica esto quiere decir que una celda puede mezclarse horizontal y verticalmente de manera simultnea, pero no puede empezar una mezcla y al mismo tiempo ser parte de otra. Se necesita que cada una de la filas definidas con tr cumpla la definicin de la cuadrcula que fue definida con tblGrid. Usualmente esto se hace creando elementos tc para cada elemento gridCol en la definicin de la cuadrcula. Slo hay una cosa que anula este planteamiento. Una celda de una tabla puede tener un elemento gridSpan aplicado con un valor mayor que 1. Para cada valor mayor que 1, la fila necesita almacenar una celda menos. Entonces, cuando una definicin de cuadrcula contiene tres elementos gridCol se pueden tener tres celdas, o dos celdas con una usando un atributo gridSpan con valor 2, o una celda con un gridSpan igual a 3. Cuando una fila contiene dos mezclas horizontales separadas, este modelo solo se podr aplicar dos veces. El siguiente ejemplo muestra un cuadro de dos por dos. La fila de arriba est mezclada. El siguiente ejemplo muestra una tabla de dos por dos. La fila de arriba est mezclada.
<w:tbl> <w:tblGrid> <w:gridCol w:w="4788" /> <w:gridCol w:w="4788" /> </w:tblGrid> <w:tr> <w:tc> <w:tcPr> <w:gridSpan w:val="2" /> </w:tcPr> <w:p /> </w:tc> </w:tr> <w:tr> <w:tc> <w:p /> </w:tc> <w:tc> <w:p /> </w:tc> </w:tr> </w:tbl>
Ejemplo de marcado 55 Celdas mezcladas horizontalmente

Figura 19 Celdas mezcladas horizontalmente

Las mezclas verticales toman una forma diferente. La mezcla horizontal tiene un elemente tc menos para cada celda que se mezcla. No borre las celdas para las mezclas verticales. Hay dos valores relacionados con las mezclas verticales que se pueden aplicar a una celda de una tabla. Dentro de las propiedades de cada celda se puede usar vMerge para identificar las celdas que estn participando en la serie de celdas mezcladas. Al darle un valor de 'restart' se indica que la celda es la primera en la serie mezclada de celdas. Las otras celdas que tambin hacen parte de la misma mezcla usan el valor de 'continue'. Tan pronto una celda en la columna no tenga el elemento vMerge aplicado, la mezcla se detiene. De la misma manera para reiniciar la mezcla vertical se usa el valor 'restart' para hacerlo por segunda vez. 50

Temas avanzados

Figura 20 Celdas mezcladas verticalmente

<w:tbl> <w:tblGrid> <w:gridCol w:w="4788" /> <w:gridCol w:w="4788" /> </w:tblGrid> <w:tr> <w:tc> <w:tcPr> <w:vMerge w:val="restart" /> </w:tcPr> <w:p /> </w:tc> <w:tc> <w:p /> </w:tc> </w:tr> <w:tr> <w:tc> <w:tcPr> <w:vMerge w:val="continue" /> </w:tcPr> <w:p /> </w:tc> <w:tc> <w:p /> </w:tc> </w:tr> <w:tr> <w:tc> <w:p /> </w:tc> <w:tc> <w:p /> </w:tc> </w:tr> </w:tbl>
Ejemplo de marcado 56 Celdas mezcladas verticalmente

Hay que percatarse de algo especial respecto a la mezcla vertical. Dado que no hay elementos tc que se eliminen, como si pasa en la mezcla horizontal, se puede finalizar con un contenido invisible. Para almacenar el contenido estn disponibles las celdas de la tabla marcadas con 'continue'. Sin embargo, este contenido no podr ser visto por el usuario final. Listas numeradas WordprocessingML le permite crear dos tipos de listas, numeradas o con vieta. Hay en realidad una tercera lista por la cual se puede crear un forma hbrida, un nivel numerado, el otro con vieta. La siguiente informacin general le proporciona un ejemplo de cada una de los estilos mencionados. Primer tem o Segundo tem Tercer tem 1. 2. Primer tem a. Segundo tem Tercer tem 1) Primer tem Segundo tem 2) Tercer tem Lista hbrida

Lista con vieta

Lista numerada

51

WordprocessingML

Para crear listas se usan los prrafos normales. Cada prrafo individual puede formar un tem en una lista. Para identificar el prrafo como un tem de una lista, las propiedades del prrafo pPr se llenan con dos informaciones, la identificacin de numeracin y el nivel en el que est el prrafo. El elemento numPr dentro de las propiedades del prrafo le dice a los consumidores cul numeracin usar en el prrafo. numId seala la definicin de la numeracin. Cuando dos prrafos son parte de la misma lista tienen el mismo valor en la configuracin numId. El ilvl, o nivel de identacin, se usa para especificar el nivel de sangra en una lista de niveles mltiples. Un prrafo no estar nunca anidado dentro de otro prrafo, en su lugar, se usan las propiedades para identificar los niveles de anidamiento.
<w:p> <w:pPr> <w:numPr> <w:ilvl w:val="0" /> <w:numId w:val="1" /> </w:numPr> </w:pPr> <w:r> <w:t>First item</w:t> </w:r> </w:p>
Ejemplo de marcado 57 Un prrafo numerado

El elemento de prrafo no proporciona ninguna informacin sobre la numeracin que no sea la del identificador de numeracin y el nivel de sangra. La mayor parte de la informacin de numeracin se almacena por fuera del cuerpo del documento principal en una parte de numeracin aparte. Para encontrar esta parte se usa una parte de relacin especfica. Tipo de relacin para la numeracin http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering La parte identificada con este tipo de relacin, tambin se identifica usando un tipo especfico de contenido. Tipo de contenido para la numeracin application/vnd.openxmlformats-officedocument.WordprocessingML.numbering+xml Hay por lo menos una parte que puede usar esta relacin dentro del paquete. La parte de numeracin contiene muchas definiciones de numeracin. Para empezar a ensayar con la numeracin, primero cree una nueva parte dentro del paquete de WordprocessingML y agregue la relacin entre la parte del documento principal y la nueva parte de numeracin. La parte de numeracin consta de dos partes, las definiciones de numeracin reales y las abstractas. Las definiciones de numeracin reales y tambin las abstractas contienen informacin sobre el tipo de lista, sin ordenar, numeradas o hbridas, y tambin las configuraciones que se aplican a cada nivel de sangra, como por ejemplo, las fuentes que se usarn. Las definiciones de numeracin abstractas establecen la configuracin global que se aplica a cada nivel de numeracin. Las definiciones de numeracin abstractas nunca aparecern mencionadas directamente en un prrafo. En cambio el prrafo siempre apunta hacia la definicin de numeracin real, y la definicin de numeracin real apunta hacia la definicin abstracta. El propsito de este modelo es el de reutilizar la configuracin de la numeracin. Cuando dos listas son exactamente iguales, pero slo difieren en la fuente utilizada en ciertos niveles de sangra sera til ser capaz de especificar solamente las diferencias. Todas las configuraciones globales van dentro de la definicin de numeracin abstracta. Las diferencias se almacenan dentro de la definicin de numeracin real. El siguiente ejemplo de marcado muestra el contenido inicial de la parte de numeracin. El siguiente paso es agregarle las definiciones de numeracin reales y las abstractas.

52

Temas avanzados

<w:numbering xmlns:w="http://.../WordprocessingML/2006/main"> </w:numbering>


Ejemplo de marcado 58 La seccin de numeracin

Lo que usualmente se encuentra cuando uno examina la parte de numeracin es que la definicin de numeracin abstracta contiene la mayor parte de las configuraciones. La primera configuracin de importancia es la identificacin de la definicin abstracta. Este valor de ID posteriormente ser utilizada por la definicin de nmero real. Dentro del elemento abstractNum, el elemento multiLevelType define el tipo de numeracin que se est definiendo. Las tres opciones disponibles identifican las listas de niveles sencillos, listas de niveles mltiples y listas hbridas. Cada nivel de numeracin est con un formato que usa el elemento lvl. El ejemplo de marcado 59 muestra el nivel de propiedades para crear una lista sin ordenar de un slo nivel. El texto del nivel almacena el carcter de vieta que se muestra, el formato de nmero identifica que est usando un carcter de vieta normal. Esta configuracin cambiar para las listas numeradas. Una lista por lo general hace una pequea sangra. Esta informacin se puede almacenar dentro del prrafo y ejecuta nodos a nivel de propiedad. La informacin almacenada en estos nodos ms tarde se combinar con el formato directo en el prrafo y se ejecutaran a s mismos para la creacin de la vista final de la lista. Para crear una lista con vietas como esta: tem 1 tem 2 tem 3

Usted necesita la siguiente definicin en la parte de numeracin.


<w:abstractNum w:abstractNumId="0"> <w:multiLevelType w:val="singleLevel" /> <w:lvl w:ilvl="0"> <w:numFmt w:val="bullet" /> <w:lvlText w:val="" /> <w:pPr /> <w:rPr /> </w:lvl> </w:abstractNum> <w:num> <w:abstractNumId w:val="0" /> </w:num>
Ejemplo de marcado 59 Lista con vietas

Para crear una lista numerada es necesario que unos cuantos elementos se alteren. Hay que cambiar el formato de nmero identificado por numFmt, para que refleje el estilo de nmero deseado. El valor se puede escoger de una lista preestablecida de valores vlidos. Para una numeracin bsica sirve 'decimal'. El segundo elemento que requiere modificaciones es el texto de la numeracin. lvlText se us previamente para especificar el caracter de vieta. Ahora necesita usar una cadena de formato especfico con un marcador de posicin para el nmero. El marcador de posicin '%1)' es el que se necesita para el nmero del primer nivel. Tendr como resultado una numeracin que va '1) 2) 3)...'. La creacin de un marcador de posicin en un segundo nivel que se viera como '%1.%2', dara como resultado una numeracin que ira '1.1, 1.2, 2.1, 2.2, 2.3'. Por defecto la numeracin empezar en cero. Para empezar a contar en otro valor tendr que aplicar el elemento start dentro de la definicin del nivel. Hay muchas otras configuraciones que se pueden aplicar para modificar el estilo de la numeracin. Para crear una lista numerada as:

53

WordprocessingML

101. tem 1 102. tem 2 103. tem 3 Usted necesita el siguiente marcado.
<w:abstractNum w:abstractNumId="0"> <w:multiLevelType w:val="singleLevel" /> <w:lvl w:ilvl="0"> <w:numFmt w:val="decimal" /> <w:start w:val="101" /> <w:lvlText w:val="%1)" /> </w:lvl> </w:abstractNum>
Ejemplo de marcado 60 Lista numerada

La definicin del nmero real mnimo, almacena una identificacin de numeracin y una referencia a la definicin abstracta. Tambin se permite hacer anulaciones para todos los niveles definidos por la matriz abstracta. Para anular una configuracin hay que volver a crear un nivel completo. No se aplicarn las configuraciones en la definicin abstracta. Las anulaciones se crean usando el elemento lvlOverride. Dentro de l usted crea una definicin de nivel usando el mismo elemento lvl tal y como se utiliza en la definicin abstracta.
<w:num w:numId="1"> <w:abstractNumId w:val="0" /> <w:lvlOverride w:ilvl="0"> <w:lvl w:ilvl="0"> <w:numFmt w:val="bullet" /> <w:lvlText w:val=">>" /> </w:lvl> </w:lvlOverride> </w:num>
Ejemplo de marcado 61 Anulando un nivel de numeracin

Marcadores de libro e hipervnculos La manera comn de vincular contenido, es el hipervnculo. Dentro de WordprocessingML se usan estos hipervnculos para dos clases de vnculos, el contenido externo y la ubicacin dentro del documento. Para vincular el contenido externo especifique el URL que se va a vincular usando Open Packaging Convention. Los vnculos al contenido interno utilizan los marcadores de libro (bookmark). Un hipervnculo al contenido externo se almacena como relacin de paquete. Esta relacin utiliza un tipo de

relacin especfica para que pueda ser identificada como hipervnculo. Dado que el recurso al cual el hipervnculo apunta no se almacena dentro del paquete, no es necesario definir el sector del paquete ni el tipo de contenido. Se utiliza la siguiente clase de relacin. Tipo de relacin para los hipervnculos externos http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink

54

Temas avanzados

Es necesario almacenar la relacin en el archivo de relaciones para la parte principal del documento, cuando el hipervnculo se usa dentro del cuerpo principal del documento. Los hipervnculos utilizados en el encabezado o los pies de pgina se almacenan en sus archivos de relaciones respectivos. <Relationships xmlns="http://.../package/2006/relationships"> <Relationship Id="rId2" Type="http://.../officeDocument/2006/relationships/hyperlink" Target="http://www.openxmldeveloper.org" TargetMode="External"/> </Relationships>
Ejemplo de marcado 62 Relaciones externas de un hipervnculo

Los hipervnculos se crean usando el elemento hyperlink. Este elemento rodea el texto de comando que conforma al texto del hipervnculo. Se usa el ID de la relacin para especificar el destino del hipervnculo.
<w:p> <w:hyperlink r:id="rId2"> <w:r> <w:t>Open XML Developer</w:t> </w:r> </w:hyperlink> </w:p>
Ejemplo de marcado 63 Hipervnculo externo

Para utilizar un hipervnculo para sealar el contenido interno, se aplica un modelo similar. Dado que el hipervnculo apuntar a una ubicacin dentro del documento, primero necesita crear un marcador hacia el cual apunte el hipervnculo. Este marcador se define usando bookmark. Mientras el elemento de hipervnculo rodea al texto que muestra, un marcador de libro usa dos elementos diferentes para indicar el inicio y el fin de la ubicacin, bookmarkStart y bookmarkEnd. El motivo de este modelo es que un marcador de libro podra empezar en un prrafo y finalizar en otro. El inicio y el final de un identificador del marcador de libro se identifican utilizando un valor de ID. Para referencia del usuario, al marcador de libro tambin se le da un nombre.
<w:p> <w:bookmarkStart w:id="0" w:name="MyMark" /> <w:r> <w:t>Bookmarked Text</w:t> </w:r> <w:bookmarkEnd w:id="0" /> </w:p>
Ejemplo de marcado 64 Marcadores de libro

<w:p> <w:hyperlink w:anchor="MyMark"> <w:r> <w:t>Hyperlink Text</w:t> </w:r> </w:hyperlink> </w:p>


Ejemplo de marcado 65 Hipervnculo interno

El marcador de libro se le puede referenciar dentro del documento utilizando otra vez el elemento hyperlink. En lugar de utilizar el atributo ID de la relacin, para apuntar al contenido, se aplica el atributo anchor. Este atributo identifica el marcador de libro, usando el nombre del marcador de libro. Usando Campos Los campos son piezas dinmicas de contenido, en un documento que es principalmente esttico. Mientras que la mayor parte del documento no debe cambiar por los cambios de diseo, algunas reas tienen que reflejar algo de contenido dinmico. Piense en los nmeros de pgina, o en aquellos elegantes encabezados que se muestran en cada pgina de este captulo. Si tuvieran un cdigo rgido sera muy difcil tratar de mantener el documento actualizado. Los campos estn aqu para evitarle ese problema. Ellos le proporcionan un mecanismo para definir los marcadores de posicin, los cuales se llenan de datos cuando los consumidores abren el documento. 55

WordprocessingML

Hay dos tipos de campos: simples o complejos. Los campos simples pueden abarcar un slo comando. El texto de comando almacena una versin oculta de los datos del campo, tomada de la ltima vez que se actualizaron los campos. Los campos complejos pueden abarcar mltiples comandos, pero como lo indica su nombre, el modelo es un poco ms complejo. Tanto los campos simples como los complejos usan funciones para definir sus datos dinmicos. La Tabla de Contenido es un buen ejemplo de un campo complejo. Estas son algunas de las funciones comunes: Funcin PAGE STYLEREF "Heading 1" TITLE AUTHOR SAVEDATE \@ "dddd d MMMM yyyy" TOC
Tabla 4 Funciones comunes para campos

Valor de retorno Nmero de la pgina actual Texto actual de heading 1 Ttulo del documento Autor del documento ltima fecha de grabacin, en un formato especfico La Tabla de Contenido

Los campos simples se crean utilizando el elemento fldSimple. Este, est comnmente anidado en un prrafo. El elemento fldSimple toma una funcin simple y contiene el valor escondido de esa funcin dentro de un comando en el campo.
<w:p> <w:r> <w:t xml:space="preserve">Page </w:t> </w:r> <w:fldSimple w:instr="PAGE"> <w:r> <w:t>32</w:t> </w:r> </w:fldSimple> </w:p>
Ejemplo de marcado 66 Campos simples

Para crear campos complejos se sigue un planteamiento ms elaborado. A los campos complejos se les permite abarcar prrafos y comandos mltiples. La Tabla de Contenido es un buen ejemplo. Aunque hay una funcin nica para crear una tabla de contenido, la tabla misma est compuesta de muchos prrafos que hacen parte del mismo campo complejo. Los ejemplos que vienen en este libro contienen una muestra del uso del campo complejo en la tabla de contenido. Tabla de Contenido Muchos documentos contienen un listado de su contenido en forma de tabla, conocido como la Tabla de Contenido. Esta es una parte del documento que cambia constantemente y como tal uno no quisiera tener que actualizar sus datos manualmente. WordprocessingML proporciona un mecanismo simple para crear dinmicamente este ndice. Usted puede utilizar un campo para definirlo.
<w:p> <w:fldSimple w:instr="TOC" /> </w:p>
Ejemplo de marcado 67 Tabla de Contenido mnima

Para que los consumidores sepan que el campo define un ndice se utiliza la funcin TOC Este campo se puede utilizar con la notacin sencilla de la que ya hablamos, o, cuando sea necesario, con una notacin compleja. La ventaja de la notacin compleja es que uno puede agregar los tems que conforman el ndice antes de abrir el documento. 56

Temas avanzados

Utilizando la notacin sencilla el usuario tendr que actualizar el ndice manualmente antes de que se muestren los tems. Para insertar el campo de Tabla de Contenido, usted puede utilizar el marcado que se encuentra en el ejemplo de marcado 67. Como lo indicara la leyenda, este ndice es realmente mnimo. Primero tiene que abrir el documento y actualizar el campo antes de que se muestre cualquier contenido. Los usuarios probablemente esperan que el ndice se llene cuando se abra el documento. Para facilitar esto usted puede utilizar la notacin del campo complejo y agregar los tems al ndice utilizando el marcado sencillo de WordprocessingML. El otro enfoque, implica decirle a los consumidores que actualicen todos los campos cuando el documento se abra. Crear la Tabla de Contenido utilizando el campo complejo le da la ventaja de que el ndice queda definido y no se necesita interaccin con el usuario cuando se abra el documento. La siguiente grfica muestra un cuadro simple que contiene textos, nmero de pgina y los puntos entre ellos. Chapter 1 My Puppy .................................................................................................................................... 4 Chapter 2 My Cat ......................................................................................................................................... 9 Hay tres partes para la Tabla de Contenido avanzada, cada una est contenida en un prrafo diferente o en una serie de prrafos. La tabla est hecha con marcadores para el inicio de campo, contenido del campo y marcador del fin de campo.
<w:p> <w:r> <w:fldChar w:fldCharType="begin" /> </w:r> <w:r> <w:instrText>TOC</w:instrText> </w:r> <w:r> <w:fldChar w:fldCharType="separate" /> </w:r> </w:p> <w:p> <w:pPr> <w:tabs> <w:tab w:val="right" w:leader="dot" w:pos="9350" /> </w:tabs> </w:pPr> <w:r> <w:t> Chapter 1 My Puppy</w:t> </w:r> <w:r> <w:tab /> </w:r> <w:hyperlink w:anchor="_TocHeading1"> <w:fldSimple w:instr="PAGEREF _TocHeading1"> <w:r> <w:t>4</w:t> </w:r> </w:fldSimple> </w:hyperlink> </w:p> <w:p> <w:r> <w:fldChar w:fldCharType="end" />

Inicio del campo complejo Tabla de Contenido La funcin Tabla de Contenido Separacin entre la funcin y el contenido oculto

Posicin del Tab para alinear nmero de pgina y proveer los puntos Tab entre el texto y el nmero Hipervnculo apuntando a un marcador de libro en el encabezado del captulo

Funcin para recuperar el nmero de pgina de un marcador de libro Final del campo Tabla de Contenido

57

WordprocessingML

</w:r> </w:p>
Ejemplo de marcado 68 Tabla de Contenido avanzada

Por lo general el ndice utiliza hipervnculos para permitirle al usuario darle clic al tem en el consumidor. Se utilizan estructuras para apoyar estos hipervnculos internos del documento. En el siguiente ejemplo se rodea el texto del captulo con el marcado de marcador de libro.
<w:p> <w:pPr> <w:pStyle w:val="Heading1" /> </w:pPr> <w:bookmarkStart w:id="0" w:name="_TocHeading1" /> <w:r> <w:t>Heading 1</w:t> </w:r> <w:bookmarkEnd w:id="0" /> </w:p>
Ejemplo de marcado 69 Prrafo Heading 1

Uno puede automatizar la actualizacin de los campos cuando se abra el documento, agregndole el elemento updateFields a la parte de configuracin del WordprocessingML y suministrndole el valor 'true'. Cuando el usuario abra el documento en el consumidor, todos los campos en el documento quedarn actualizados. Esto har que el ndice sea visible. La desventaja de este planteamiento es que todava se necesita la accin del usuario para llenar la Tabla de Contenido. Leyendas Cuando se insertan imgenes, tablas u otro tipo especial de contenido, usualmente hay que darle una leyenda que de alguna informacin sobre lo que se est almacenando. Estas leyendas se hacen con un etiqueta y un nmero de secuencia. Se requiere poco marcado para crear una leyenda. De nuevo, el modelo gira en torno al uso de los campos y las funciones dentro del marcado del documento. Hay una funcin especial que puede contar etiquetas ('labels') La funcin se llama 'SEQ' y usted le suministra un nombre de etiqueta a ser contada. Cada vez que utiliza el mismo nombre de etiqueta el conteo es un nmero mayor. De nuevo el campo oculta el nmero real de las leyendas. El siguiente ejemplo utiliza la etiqueta 'figura'.
<w:p> <w:r> <w:t xml:space="preserve">Figura </w:t> </w:r> <w:fldSimple w:instr="SEQ Figura"> <w:r> <w:t>1</w:t> </w:r> </w:fldSimple> </w:p>
Ejemplo de marcado 70 Leyendas

58

Notas finales de WordprocessingML

Notas finales de WordprocessingML


Hay muchas caractersticas del WordprocessingML que an no han sido planteadas. El poderoso motor de ecuaciones es un buen ejemplo, o la utilizacin del documento de glosario para almacenar bloques de construccin. Aunque todos estos son temas espectaculares para plantear, hay otros lenguajes de Open XML que estn esperando su turno. Hay tres lenguajes de Open XML esperndolo. El primero en esta lista es SpreadsheetML.

59

Captulo 2

SpreadsheetML
Conozca los elementos de una hoja de clculo bsica. Conozca cmo trabajar con las frmulas Conozca cmo crear tablas y tablas dinmicas Conozca como enriquecer la hoja de clculo con estilos y formatos condicionales Conozca como mostrar las grficas

Introduccin
Al igual que en el captulo sobre WordprocessingML, SpreadsheetML usar un informe de ejemplo que se construir durante el transcurso del captulo. El ejemplo de la hoja de clculo contiene tres elementos destacados de SpreadsheetML, datos, tablas pivote y una grfica incluida. Primero que todo se crear un libro de trabajo usando una cantidad mnima de marcado. Despus se le agregarn los datos a la primera hoja de trabajo. Estos datos sern reestructurados como una tabla para permitirle un mejor filtrado a los datos. La tabla entonces se convertir en la fuente de una tabla pivote que, a su vez, le suministrara datos a la grfica. Dado que la grfica se crea utilizando marcado DrawingML, se puede encontrar la explicacin de la grfica en el captulo respectivo. La siguiente imagen muestra el ejemplo de un documento SpreadsheetML.

60

Elementos de una hoja de clculo simple

Elementos de una hoja de clculo simple


Se utiliza una cantidad mnima de marcado para crear una hoja de clculo que se ubica en alguna parte entre WordprocessingML y PresentationML, desde el punto de vista de las secciones necesarias en el paquete y la marcacin necesaria dentro de esas secciones. Un documento SpreadsheetML contiene una parte central del libro de trabajo y secciones separadas para cada hoja de trabajo. Para crear Figura 21 Secciones mnimas de una hoja de un paquete vlido en SpreadsheetML uno siempre necesita el libro de clculo trabajo y por lo menos una parte de una hoja. El paquete contiene 5 elementos que se tienen que reunir de manera similar a los documentos iniciales de WordprocessingML. Primero cree el libro de trabajo y la parte de hoja. Usted puede almacenarlos en cualquier directorio, los documentos de ejemplo utilizan el directorio raz del paquete. Tanto el libro de trabajo como la hoja utilizan una parte de contenido especfico que se almacena en la parte de tipos de contenido. La parte de tipos de contenido se llama [Content_Types].xml, y se encuentra tambin en el directorio raz. Las siguientes son las partes de contenido para el libro de trabajo y la hoja. application/vnd.openxmlformats-officedocument.SpreadsheetML.sheet.main+xml application/vnd.openxmlformats-officedocument.SpreadsheetML.worksheet+xml El paso final es la creacin de las relaciones necesarias entre el paquete y el libro de trabajo, y la relacin entre el libro de trabajo y la hoja. Dado que la primera relacin se ejecuta desde el paquete hasta la parte inicial, necesita ir a un archivo llamado '.rels' en la carpeta _rels, en la raz del paquete. Si usted sigui el ejemplo de cmo nombrar, entonces la segunda relacin va en el archivo workbook.xml.rels en la carpeta _rels. Utilice las siguientes dos partes de relaciones para crear unos nudos en el paquete. http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet La parte de libro de trabajo (workbook) La primera y ms importante tarea de la parte del libro de trabajo es mantener un registro de las hojas de trabajo, la configuracin general y otros componentes compartidos del libro de trabajo. La parte del libro de trabajo mantiene una lista de todas las hojas de trabajo en la hoja de clculo. Esta lista se cre para poder nombrar todas las hojas de trabajo y tambin para proporcionar la informacin de secuencia para la aplicacin Open XML. Hay tres partes de datos almacenados dentro de la parte del libro de trabajo sobre todas las hojas de trabajo. Cada hoja tiene un nombre adherido para mostrarlo en la interfaz de usuario del consumidor. Hay un valor de identificacin utilizado para clasificar las hojas y finalmente una relacin de la identificacin para conectar el libro de trabajo, con la parte dentro del paquete en donde se almacenan las hojas. Otra informacin en el libro de trabajo tiene que ver con la informacin de apariencia, los clculos y las versiones y tambin con otras opciones.
<workbook xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" xmlns:r="http:// schemas.openxmlformats.org /officeDocument/2006/relationships"> <sheets> <sheet name="Sheet1" sheetId="1" r:id="rId1" /> </sheets> </workbook>
Ejemplo de marcado 71 Un libro de trabajo mnimo

Una cosa que uno puede notar en el ejemplo de marcado del libro de trabajo, es que no hay prefijo para el espacio del nombre XML en los espacios de nombre preestablecidos de SpreadsheetML. As es en todo el SpreadsheetML. El motivo para no usar un prefijo, es, de nuevo, la optimizacin del tiempo. Cuando hay menos letras en el marcado se necesita analizar y cargar menos informacin en la memoria. La ausencia de prefijos en los espacios 61

SpreadsheetML

de nombre garantiza una reduccin de por lo menos cuatro caracteres del nodo XML. El slo prefijo ya es, por lo menos, un carcter; los dos puntos que separan el prefijo del nombre del nodo es, de nuevo, otro caracter, que se multiplica por dos al inicio y al final del nodo. La desventaja de este enfoque es una pequea disminucin en la legibilidad, pero esto es realmente muy poco y no es un problema cuando tratamos con un archivo SpreadsheetML. Esta optimizacin no est definida dentro de los perfiles de Open XML. En cambio, es una optimizacin utilizada en las aplicaciones de Microsoft Office Excel. Es posible que otros consumidores no utilicen la misma estrategia. La parte de hojas de trabajo Un documento mnimo SpreadsheetML debe contener por lo menos una hoja. La parte de hoja puede ser una hoja de trabajo, una hoja de dilogo o una hoja de grficos. Usualmente la hoja de clculo definir por lo menos una hoja de trabajo. La hoja de trabajo es lo que normalmente uno relaciona con las hojas de clculo. Contiene una tabla parecida a una estructura para definir los datos. Para crear una hoja de trabajo vaca no hay que definir muchos elementos. Como se puede ver en el ejemplo de marcado, una hoja de datos usa el elemento worksheet como elemento raz para definir las hojas de trabajo. Dentro de una hoja de trabajo los datos se pueden dividir en tres secciones diferentes. La primera parte contiene las propiedades de la hoja. La segunda contiene los datos, usando el elemento sheetData que se necesita. Exactamente despus, se pueden encontrar varias caractersticas de apoyo de sheetData como la proteccin de la hoja y los filtros de informacin. Para definir una hoja de trabajo vaca uno solamente tiene que asegurarse de haber creado un elemento worksheet y un elemento sheetData. Se permite que los datos de la hoja estn vacos.
<worksheet xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" > <sheetData> <row> <c> <v>1234</v> </c> </row> </sheetData> </worksheet>
Ejemplo de marcado 72 Hoja de trabajo mnima conteniendo el valor '1234'

La estructura completa Hay muchas otras secciones que se pueden poner en un paquete de SpreadsheetML. La siguiente imagen representa la mayor parte de los elementos que se pueden encontrar en una hoja de clculo de una empresa, la mayora de los cuales se usan para construcciones especficas como, por ejemplo, las tablas pivote o los estilos de hojas de clculo.

62

Creacin de hojas de trabajo

Creacin de hojas de trabajo


La hoja de trabajo funciona como el caballo de tiro de SpreadsheetML. Contiene datos con un estilo de tabla. Para crear nuevos valores en la hoja de trabajo uno define filas dentro del elemento sheetData. Estas filas contienen celdas, las cuales contienen valores. La manera como se pueden definir estas filas y celdas tiene varias optimizaciones que se les aplican. Antes de pasar a los detalles de estas optimizaciones de la hoja de trabajo, primero es necesario explicar ms la estructura de una hoja simple. El elemento row define una nueva fila. Normalmente la primera fila en sheetData es la primera fila en la hoja visible. Hay optimizaciones que pueden alterar este comportamiento, lo cual ser explicado ms adelante en el captulo. Dentro de la fila un puede crear nuevas celdas usando el elemento c. Los valores de las celdas se pueden suministrar almacenando un elemento v dentro de la celda. Usualmente el elemento v contendr el valor actual de la celda de la hoja de trabajo. Para almacenar un valor numrico en la hoja de clculo todo lo que hay que hacer es incluir el valor en el elemento v.
<worksheet xmlns="http://.../SpreadsheetML/2006/main" > <sheetData> <row> <c> <v>42</v> </c> </row> </sheetData> </worksheet>
Ejemplo de marcado 73 Una hoja de trabajo simple

63

SpreadsheetML

Si usted crea una hoja de clculo con Microsoft Excel podr notar que el texto de la celda es diferente del ejemplo de cadenas inline que acaba de ver. Excel almacena textos usando una variedad optimizada llamada cadenas compartidas que se explican posteriormente. Al igual que ocurre con muchas optimizaciones en Open XML, ambas son igualmente vlidas pero hay una compensacin entre tamao, desempeo y complejidad. Para crear una celda con texto utilice el elemento 'is' que representa la cadena en-lnea. Antes de que se le permita almacenar una cadena inline en una celda de una hoja de trabajo, primero la celda tiene que estar identificada como un contenedor de una cadena en-lnea. Esto se hace configurando el atributo del elemento t de la celda a inlineStr. Dentro del elemento 'is' uno puede establecer el texto como tal usando el elemento t. El texto no se almacena directamente dentro del elemento 'is' porque hay otros lugares en el marcado en donde tambin puede aparecer el texto. Se reutiliza el mismo elemento t. El siguiente ejemplo de marcado muestra la segunda fila de los datos del ejemplo. Utiliza dos cadenas inline y dos valores directos. Al suministrar los elementos row usted puede construir los datos del ejemplo de la hoja de clculo. Los documentos suministrados en el sitio web contienen una muestra completa. La ubicacin del sitio web se puede encontrar en el introduccin.
<worksheet xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" > <sheetData> <row> <c t="inlineStr"> <is> <t>Southeast</t> </is> </c> <c t="inlineStr"> <is> <t>Stephen Jiang</t> </is> </c> <c> <v>0</v> </c> <c> <v>720315</v> </c> </row> </sheetData> </worksheet>
Ejemplo de marcado 74 Una hoja de trabajo simple

Si usted crea una hoja de clculo con Microsoft Excel podr notar que el texto de la celda es diferente del ejemplo de cadenas inline que acaba de ver. Excel almacena textos usando una variedad optimizada llamada cadenas compartidas que se explicarn posteriormente. Al igual que ocurre con muchas optimizaciones en Open XML, ambas son igualmente vlidas pero hay una compensacin entre tamao, desempeo y complejidad.

Frmulas
Una buena parte de la potencia de las hojas de clculo se deriva del uso de frmulas para crear modelos de cmputo. Las frmulas permiten que haya clculo de valores automticamente fundamentados en los datos dentro y fuera de la hoja de clculo, o el resultado de otras celdas computadas en la hoja de clculo. Las frmulas se almacenan dentro de cada celda que utiliza la frmula. Utilizando el elemento f usted define el texto de la frmula. Los frmulas pueden contener expresiones matemticas que incluyen un rango amplio de funciones predefinidas.

64

Optimizaciones de la hoja de trabajo

<c> <f>(A3*B3) * (1-C3)</f> <v>3168</v> </c>


Ejemplo de marcado 75 Frmulas

El elemento v, que previamente contena el valor directo, ahora es utilizado para almacenar la frmula oculta con base en la ltima vez que se hizo el clculo de la frmula. Esto le permite al consumidor posponer los clculos de los valores de la frmula cuando la hoja de clculo se abre, lo cual generara un mayor tiempo de espera cuando se abra la hoja de trabajo. No es necesario que especifique el valor, y si usted lo omite es responsabilidad del lector de Open XML computar el valor en que se basa la definicin de la frmula. El uso de las funciones, en un ambiente altamente internacionalizado como el espacio de trabajo del documento, nos plantea preguntas interesantes. Cuando usted ejecuta Microsoft Office Excel a usted se le permite expresar funciones en su lengua materna. La funcin 'SUM()' en ingls, pasara a ser 'SUMA()' en espaol. Lo importante es que considere la forma en la cual esto se almacena en Open XML. La funcin se salvar de una manera no localizada. Cuando un usuario hispano parlante use la funcin SUMA() dentro del consumidor, el marcado subyacente almacenar la funcin SUM(). Solamente se localiza la interfaz del usuario, no la marcacin. Esto le ahorra una gran cantidad de cdigos de programa cuando trabaja con funciones, y le da a los desarrolladores la ventaja de trabajar con funciones bien conocidas. Las frmulas no pueden aparecer dentro de la celda de la hoja de trabajo. Otros elementos, como por ejemplo, las columnas de las tablas, tambin pueden almacenar las frmulas. El mismo modelo se usa en todas partes. La frmula siempre se almacena como texto.

Optimizaciones de la hoja de trabajo


Hay varias optimizaciones para el modelo de SpreadsheetML. Hay una configuracin especial que se le puede aplicar a las filas y a las celdas llamada el marcado esparcido de tablas. Se usa para darle posicin a la celda utilizando nicamente la serie de celdas que se requieran. Las cadenas y frmulas compartidas estn all para disminuirle al consumidor la cantidad de trabajo y reducir el tamao del archivo. Marcado esparcido de tablas Hasta ahora la posicin de la fila y de la celda empieza de la izquierda arriba de la hoja de clculo y se ejecuta hacia afuera, siendo la primera celda A1. Utilizar este modelo requiere una gran cantidad de marcado tan slo si uno desea darle un valor a la celda E5. E es la quinta columna, 5 es la quinta fila, eso quiere decir 25 celdas para tan solo llegar a la celda E5. Obviamente esa no es la mejor manera de hacerlo considerando la cantidad de marcado y dispersin que hay que hacer. Para resolver este problema, la fila y la celda pueden tener un identificador de posicin. Por ejemplo, para crear una hoja de clculo con una columna nica ubicada en el ndice 5, usted agrega el atributo r al elemento de la fila tal como se muestra en el ejemplo de marcado 76. Las celdas utilizan un modelo similar para identificar su posicin. El atributo r es para identificar la columna y el ndice de fila. Obviamente el ndice de la fila debe ser igual al definido en el nivel de fila.
<worksheet xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main"> <sheetData> <row r="5"> <c r="E5"> <v>1234</v> </c> </row> </sheetData> </worksheet>
Ejemplo de marcado 76 Optimizaciones de ubicacin

65

SpreadsheetML

El ejemplo de la hoja de clculo no utiliza las optimizaciones de ubicacin de la celda y de la fila. Los datos se ejecutan de la celda A1 hacia afuera, de tal manera que no es necesario incluir esta informacin. Usted tiene la libertad de trasladar los datos en la hoja de trabajo, pero requiere una gran cantidad de trabajo de edicin. El documento de ejemplo de las optimizaciones de ubicacin solo muestra una celda con una slo ubicacin. La ubicacin de las filas y las columnas tiene que avanzar de arriba a abajo y de izquierda a derecha. No se puede especificar la fila 5 antes de la fila 4 ni la columna E antes de la columna D. Hacerlo ser considerado como un error en la hoja de clculo. Cadenas compartidas Las cadenas compartidas optimizan las necesidades de espacio, cuando las hojas de clculo contienen mltiples instancias en la misma cadena. Cuando examine el ejemplo de la hoja de clculo notar que una buena cantidad de cadenas se utilizan varias veces. Este escenario ocurre con frecuencia en el uso moderno de las hojas de clculo para analizar datos de negocio o analticos. Si almacenara estas cadenas utilizando marcado de cadenas inline, el mismo marcador aparecera una y otra vez en la hoja de trabajo. Hay varias desventajas de este enfoque. Primero que todo el archivo necesitar ms espacio en el disco por toda la repeticin del contenido. Adems, se necesitar ms tiempo para cargar y salvar. Para optimizar el uso de las cadenas en una hoja de clculo, SpreadsheetML asume el enfoque de almacenar una sola instancia de la cadena en una tabla, llamado la tabla de las cadenas compartidas. Las celdas, entonces referencian la cadena por un ndice, en lugar de almacenar el valor inline del valor de la celda. La tabla de cadenas compartidas aparece como una parte separada dentro del paquete. Cada libro de trabajo contiene nicamente una parte de las cadenas compartidas, ya sea que las cadenas aparezcan varias veces en una hoja o en varias hojas. Usted puede repasar los pasos descritos en los captulos de WordprocessingML sobre como la estructura del paquete funciona. Para pasar el ejemplo de hoja de clculo de las cadenas inline a las cadenas compartidas primero tiene que crear una parte diferente para almacenar los datos de la cadena compartida. Esta parte se puede almacenar de nuevo en cualquier parte del paquete, al igual que se pueden almacenar todas las dems partes del paquete. La parte de contenido tiene que reflejar el tipo de contenido en la tabla de cadenas. Se necesita el siguiente valor: Parte de contenido para las cadenas compartidas application/vnd.openxmlformats-officedocument.SpreadsheetML.sharedStrings+xml El segundo paso est relacionado con la cadena compartida de la parte del libro de trabajo. Solo puede haber una tabla de cadenas compartidas en la hoja de clculo. Dado que cada hoja de trabajo usa la misma tabla, se consulta desde el libro de trabajo en lugar de hacerlo desde cada hoja de trabajo individual. La siguiente parte de relacin se utiliza para crear la relacin entre el libro de trabajo y las secciones de la tabla de cadenas. Parte de relacin para las cadenas compartidas http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings Ahora que el paquete almacena y referencia la tabla de cadenas, hay que llenarlo con los datos. La tabla de cadenas compartidas se define usando el elemento sst. El usa dos atributos para llevar registro del contenido y el uso de las cadenas compartidas. El elemento si se usa para agregar un tem a las cadenas compartidas. Significa tem de cadenas (string item) y es exactamente todo lo contrario al elemento is de la cadena inline (inline string).
<sst xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main"> <si> <t>Region</t> </si> <si> <t>Sales Person</t>

66

Optimizaciones de la hoja de trabajo

</si> <si> <t>Sales Quota</t> </si> ...12 more items ... </sst>
Ejemplo de marcado 77 Tabla de cadenas compartidas

El ltimo paso en la transicin a las cadenas compartidas, es la actualizacin de los datos de la hoja de clculo. Las celdas utilizaron el tipo de identificador t para identificarlas como contenedores de cadenas inline. En su lugar tienen que utilizar las cadenas compartidas. Es necesario definir el tipo como 'shared string', identificado usando el valor s. El valor de la celda se utiliza para almacenar el ndice de la tabla de cadenas compartidas. Un buen ejemplo es el encabezado de las filas en el ejemplo de la hoja de clculo. Utiliza el siguiente marcado para referenciar la tabla de cadenas. <worksheet xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main"> <sheetData> <row r="1" spans="1:4"> <c r="A1" t="s"> <v>0</v> </c> <c r="B1" t="s"> <v>1</v> </c> <c r="C1" t="s"> <v>2</v> </c> <c r="D1" t="s"> <v>3</v> </c> </row> ...24 more rows... </sheetData> </worksheet>
Ejemplo de marcado 78 Referenciando las cadenas en la tabla de cadenas

Frmulas compartidas Al igual que con las cadenas compartidas hay tambin una optimizacin para las frmulas. Al igual que los valores de las cadenas, las frmulas a menudo se repiten a lo largo del rango de las celdas, por ejemplo, en una columna con operaciones de clculo de una tabla. Tan slo hay diferencia en pequeos detalles tal como la frmula que usa el ndice de filas. Para los consumidores es ms fcil cargar primero la frmula en la memoria y fundamentar las frmulas que se repiten en esos datos, que cargar cada frmula de manera individual. A diferencia de la optimizacin para las cadenas que usa una parte aparte para las cadenas compartidas, el modelo de las frmulas compartidas no necesita una parte separada dentro del paquete. Todo ocurre ah mismo, dentro de la hoja de trabajo. Se defini una frmula normal tan slo agregando el elemento frmula f dentro de la celda. El texto de la frmula fue almacenado dentro de la etiqueta de apertura y cierre del elemento f. Para las frmulas compartidas, el elemento frmula tiene un atributo adicional aplicado para identificarlo como parte de una frmula compartida, similar a la identificacin de la parte de celda. La primera celda que utiliza la frmula almacena tres valores. Almacena el texto de la frmula como un texto normal y una referencia al rango de celda que usa esa parte de frmula. La frmula misma se identifica utilizando el atributo si. La siguiente celda que utilice la frmula usa el 67

SpreadsheetML

mismo valor para este atributo. Esta no define el texto de la frmula, solamente la primera celda tiene que almacenar esa informacin.
<row> <c> <v>1</v> </c> <c> <f t="shared" ref="C2:C4" si="0">A2 + 1</f> <v>2</v> </c> </row> <row> <c> <v>2</v> </c> <c> <f t="shared" si="0" /> <v>3</v> </c> </row>
Ejemplo de marcado 79 Frmulas compartidas

Tablas
Una tabla de SpreadsheetML es una construccin lgica que especifica que un rango de datos pertenece a un grupo de datos concreto. SpreadsheetML usa un modelo de tablas para especificar valores en filas y columnas, pero usted tambin puede marcar un subconjunto de la hoja como una tabla y darle propiedades especficas tiles para anlisis ad hoc. La tabla en SpreadsheetML le permite trabajar con los datos de maneras que no son posibles, usando el formato que hemos examinado hasta este momento. Algunos ejemplos de esto son la depuracin, formato y enlace de datos. Al igual que otras construcciones en SpreadsheetML, las tablas de una hoja de trabajo son almacenadas en una parte independiente dentro del paquete. La parte de la tabla no contiene ningn dato de la tabla. Estos datos se mantienen siempre en las celdas de la hoja de trabajo, exactamente en la misma manera que hemos usado hasta ahora. La hoja de trabajo que muestra los datos es en gran medida independiente de la existencia de la tabla. Para crear una tabla en SpreadsheetML usted crea una parte independiente dentro del documento. Esta parte de la tabla debe ser referenciada desde la hoja de trabajo que muestra la tabla. Se utiliza el siguiente tipo de contenido y tipo de relacin. Tipo de contenido para la tabla application/vnd.openxmlformats-officedocument.SpreadsheetML.Table+xml Tipo de relacin para la tabla http://schemas.openxmlformats.org/officeDocument/2006/relationships/Table La parte de la tabla contiene la definicin de una sola tabla. Cuando hay mltiples tablas en una hoja de trabajo, hay mltiples partes de tabla. El elemento raz para esta parte es table. En su forma mnima, sta slo necesita informacin sobre las columnas de la tabla que la conforman, pero probablemente usted tambin querr definir un filtro automtico vaco. Ms adelante se explica cmo se definen los filtros automticos. Omitir el elemento filtros automticos deshabilita los botones de depuracin en las columnas de la tabla en el consumidor. 68

Tablas

<Table xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" id="1" name=Table1" displayName=Table1" ref="A1:D25"> <autoFilter ref="A1:D25" /> <TableColumns count="4"> <TableColumn id="1" name="Region" /> <TableColumn id="2" name="Sales Person" /> <TableColumn id="3" name="Sales Quota" /> <TableColumn id="4" name="Sales" /> </TablaColumns> </Table>
Ejemplo de marcado 80 Tabla Simple

El elemento Table tiene varios atributos aplicados para identificar la tabla y el rango de datos que esta cubre. El atributo id de tabla debe ser nico en todas las partes de la tabla, al igual que name y displayName. DisplayName tiene la restriccin ms estricta, debe ser nico en todos los nombres definidos en el libro de trabajo. Ms adelante veremos que usted puede definir nombres para muchos elementos, tales como celdas o frmulas. El valor name se usa para el modelo de objetos en Microsoft Office Excel. displayName se usa para referencias en frmulas. El atributo ref se usa para identificar el rango de celdas que cubre la tabla. Esto incluye no solamente los datos de la tabla, sino tambin el encabezado de la tabla que contiene los nombres de las columnas Para agregar columnas a su tabla, debe agregar nuevos elementos tableColumn al contenedor de tableColumns. De manera similar a la tabla de cadena compartida, el grupo mantiene un atributo de conteo que identifica el nmero de columnas. Adems de la definicin de la tabla en la parte de la tabla, tambin es necesario identificar qu tablas aparecen en la hoja de trabajo. La parte de la hoja de trabajo tiene un elemento tableParts aparte para almacenar esta informacin. Cada parte de la tabla es referenciada a travs del ID de relacin y nuevamente se mantiene un conteo del nmero de partes de la tabla. El siguiente ejemplo de marcado fue tomado de los documentos que acompaan este libro. El elemento de datos de la hoja fue eliminado para reducir el tamao del ejemplo. Para referenciar la tabla, agregue el elemento tableParts, despus de haber creado y almacenado la parte de la tabla. <worksheet xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main"> ... <TableParts count="1"> <TablePart r:id="rId1" /> </TableParts> </worksheet>
Ejemplo de marcado 81 Referencia de la parte de tabla en una hoja de trabajo

69

SpreadsheetML Filtros Automticos Cuando hay un gran nmero de tems en una tabla, una mejor vista podra ser mostrar solo un determinado nmero de filas basado en varios criterios. El modelo de Tabla de SpreadsheetML usa filtros automticos para proveer sta capacidad. Esto permite poner diferentes criterios sobre las columnas, como filtros sobre los valores, rangos e incluso los colores de las celdas.

Existen seis tipos de filtros que usted puede definir. A cada columna en una tabla se le puede aplicar uno de estos filtros. Filtro Elemento Filtra por valor filters Una lista de valores de celda color colorFilter El tipo de letra o color de llenado de una celda cono iconFilter Un conjunto de iconos y un icono dentro de ese conjunto tems top10 Los N por ciento, o un nmero N de tems principales dinmico dynamicFilter Algn dato dinmico como por ejemplo 'hoy' personalizado customFilters Un rango de datos usando operadores tales como 'mayor que'
Figura 22 Tipos de Filtro

Por lo comn, los filtros automticos estn definidos dentro de la parte de la tabla. La parte de la tabla define los filtros para cada columna, pero tambin es necesario hacer un cambio en los datos de la hoja de trabajo. Examinemos primero la definicin de un filtro automtico simple. Para crear filtros automticos primero se agrega el contenedor de autoFilter al elemento table en la parte de la tabla. Este contenedor almacena las opciones de configuracin de los filtros para todas las columnas. Cada columna puede tener un filtro, y no es necesario definir las columnas sin filtros. El atributo ref se usa para identificar el rango de celdas a las que se aplican los filtros contenidos en el elemento autoFilter. Usualmente esto define todo el rango de datos de la tabla, incluyendo las posibles celdas ocultas. Para cada columna a la cual se ha aplicado un filtro se crea el elemento filterColumn, identificando la columna usando el atributo colId. La primera columna tiene como ID el nmero 0, la siguiente el nmero 1 y as sucesivamente. El ltimo paso es identificar qu tipo de filtro quiere usar en la columna, almacenando informacin dentro del elemento filterColumn.
<autoFilter ref="A1:D25"> <filterColumn colId="0"> <filters> <filter val="Southeast" /> <filter val="Northeast" /> </filters> </filterColumn> </autoFilter>
Figura 23 Usando un filtro de valores

Simplemente proporcionar un filtro automtico a travs de la parte de la tabla no es suficiente para tener un filtro que funcione. Los datos de la hoja de trabajo deben reflejar las opciones de configuracin del filtro ocultando explcitamente las filas que deben estar ocultas debido al filtro. El elemento row proporciona el atributo hidden para respaldar esto. ste es un factor importante al trabajar con filtros usando cdigo de programacin. Para 70

Tablas

modificar las opciones de configuracin del filtro es necesario recalcular las columnas que deben estar ocultas. El clculo implica la capacidad para trabajar con marcadores complejos tales como frmulas. <row hidden="1"> ... </row>
Ejemplo de marcado 82 Escondiendo filas filtradas

Si su aplicacin genera Open XML a partir de fuentes de datos del negocio, lo ms probable es que usted habilite los filtros automticos y no aplique un filtro u oculte filas. El siguiente esquema general muestra una implementacin sencilla de algunos tipos de filtros. Todos los filtros son aplicados a la primera columna de la tabla.
<filterColumn colId="0"> <top10 percent="1" val="20" filterVal="5"/>

</filterColumn>

La regla top10 puede mostrar un nmero de tems principales o un porcentaje de tems. El atributo percent es un parmetro booleano para determinar el modo. El atributo val indica el nmero o porcentaje, como por ejemplo 'top 20%'. filterVal es el valor usado para efectuar la comparacin. Esto representa una lista de valores predeterminados segn los cuales se ejecutar el filtro. Actualmente slo se muestran las filas que contienen un valor de 3, 4 5 en la primera columna.

<filterColumn colId="0"> <filters> <filter val="3" /> <filter val="4" /> <filter val="5" /> </filters>

</filterColumn>
<filterColumn colId="0"> <customFilters and="1"> <customFilter operator="greaterThan" val="2" /> <customFilter operator="lessThan" val="4" /> </customFilters>

El filtro personalizado se utiliza para usar dos operadores y unirlos. El atributo and puede indicar la condicin 'y', de lo contrario se usa la condicin 'o'. En el ejemplo se muestran todas las filas que contienen un valor mayor de 2 y menor de 4.

</filterColumn>
<filterColumn colId="0"> <dynamicFilter type="today" val="39206" maxVal="39207" />

</filterColumn> Columnas con clculos

Un dato dinmico, como por ejemplo 'today', es representado en el filtro dinmico. type se configura como un tipo predeterminado, y los valores se usan como memoria cach.

Una funcin que se usa con frecuencia para una tabla, es calcular los valores para la columna con base en una frmula. La hoja de clculo de ejemplo puede contener una columna extra en la tabla para calcular las ventas menos las metas en ventas, para ver de manera fcil quin est por encima o por debajo de la meta. Las columnas calculadas estn definidas dentro de la definicin de la tabla, igual que sucede con una columna normal de una tabla. 71

SpreadsheetML

Para crear una columna que contenga una frmula, agregue el elemento calculatedColumFormula dentro de la definicin de la columna. La frmula se ingresa como contenido de texto.
<Table xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" id="1" name=Table1" displayName=Table1" ref="A1:D25"> <autoFilter ref="A1:D25" /> <TableColumns count="5"> <TableColumn id="1" name="Region" /> <TableColumn id="2" name="Sales Person" /> <TableColumn id="3" name="Sales Quota" /> <TableColumn id="4" name="Sales" /> <TableColumn id="5" name="Exceeding Sales"> <calculatedColumnFormula>[Sales] - [Sales Quota]</calculatedColumnFormula> </TableColumn> </TableColumns> </Table>
Ejemplo de marcado 83 Una columna con clculos

Tablas Dinmicas
Una vez definidos los datos para la hoja de clculo, el siguiente paso es facilitar el anlisis de estos datos usando una tabla dinmica (pivot table). El documento de ejemplo contiene una tabla dinmica sencilla, usando la regin y el vendedor como las filas y los totales de todas las ventas y cuotas de ventas como la informacin de la columna. La tabla dinmica se termina con la fila de suma total. En esta seccin la tabla dinmica ser distribuida y creada desde el principio.

Elementos de una tabla dinmica La tabla dinmica es una de las partes ms complejas dentro del paquete SpreadsheetML. Para crear una tabla dinmica necesita crear tres partes y relacionarlas entre ellas. El libro de trabajo tambin necesita una relacin adicional. La siguiente imagen ilustra la jerarqua de relaciones.

72

Tablas Dinmicas

Esta jerarqua se puede examinar de manera ms fcil comenzando con la definicin de cach dinmico. Esta parte contiene las definiciones de todos los campos en la tabla dinmica. Cuando usted crea la tabla dinmica con base en una tabla normal, cada columna se convierte en un campo de la definicin de cach dinmico. El cach dinmico contiene las definiciones del campo e informacin acerca del tipo de contenido que se encuentra en ese campo. Tambin mantiene una referencia hacia los datos originales en el marcado del cach, de manera que el cach dinmico puede ser actualizado junto con la informacin guardada en la parte de registros del cach dinmico. Los datos que aparecen en la tabla dinmica estn almacenados en dos lugares. La parte de registros del cach dinmico mantiene los datos reales de la tabla dinmica. Las celdas de la tabla en la hoja de trabajo tambin almacenan una versin adicional de los datos, pero que se usa solamente para propsitos de visualizacin. La parte de registros del cach dinmico almacena los datos en una de dos maneras. Los valores nicos del rea de datos de la tabla dinmica son guardados en lnea. Los tems repetidos que normalmente usted encuentra en la fila y la columna son referenciados. Los datos compartidos son almacenados en la definicin del cach dinmico. Cada registro de la parte de registros del cach dinmico consta de N valores, donde N equivale al nmero de campos definidos en la definicin del cach dinmico La ltima parte que une todo es la tabla dinmica misma. Esta parte contiene la informacin sobre qu campos estn presentes en qu lugares de la tabla dinmica. Usted puede poner un campo en cuatro reas: fila, columna, datos y filtro. Los campos son seleccionados desde los campos almacenados en la definicin del cach dinmico. Para crear una tabla dinmica verdadera que est lista cuando sea abierta, usted tambin debe crear el marcado para las celdas de la tabla. La tabla dinmica se muestra en las celdas normales de una hoja de trabajo y por lo tanto, usted necesita construir esto tambin. Usted tambin puede elegir que el consumidor actualice las celdas de la tabla dinmica cuando se abre el documento. Creacin del men contextual de la tabla dinmica Es necesario construir muchas partes requeridas para crear una tabla dinmica sencilla. Estn las tres partes nuevas definidas en la seccin anterior, as como las actualizaciones de las partes existentes. El primer paso es crear la estructura de archivos bsica. Almacenar tres partes nuevas dentro del paquete, una para las tres partes descritas. La siguiente lista enumera los tipos de contenido que usted necesita para construir la estructura. Parte Tipo de Contenido Pivot Table application/vnd.openxmlformats-officedocument.SpreadsheetML.pivotTable+xml Cache Definition application/vnd.openxmlformats-officedocument.SpreadsheetML.pivotCacheDefinition+xml Cache Records application/vnd.openxmlformats-officedocument.SpreadsheetML.pivotCacheRecords+xml El siguiente paso consiste en relacionar las diferentes partes entre s, posteriormente se puede agregar el contenido, Usted debe establecer cuatro relaciones. Usted debe crear la jerarqua descrita anteriormente y relacionar el libro de trabajo con la definicin del cach dinmico. De Workbook Tipo de relacin Cache http://schemas.openxmlformats.org/officeDocument/2006/... Definition relationships/pivotCacheDefinition Worksheet Pivot Table http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable Pivot Table Cache http://schemas.openxmlformats.org/officeDocument/2006/... Definition relationships/pivotCacheDefinition Cache Cache http://schemas.openxmlformats.org/officeDocument/2006/... Definition Records ...relationships/pivotCacheRecords sta es una de esas ocasiones en las que una imagen dice mucho ms que unas cuantas palabras en una tabla. La distribucin final se muestra en la siguiente imagen. A

73

SpreadsheetML

Creacin de la definicin del cach dinmico Una vez que el men contextual ha sido creado, se puede crear un cach dinmico sencillo. Usted podra crear muchos elementos aqu, pero para hacerlo simple slo usaremos dos. El cach dinmico definir la fuente de los datos en la tabla dinmica para que sea posible actualizarlos y definir la lista de campos en los datos. Los datos ya se encuentran en la hoja de clculo de ejemplo. Es importante tener en cuenta que el cach define todos los campos disponibles para la tabla dinmica, no los que estn siendo usados. Estos campos se definen ms adelante en la parte de la tabla dinmica. En los siguientes pasos se construir la definicin del cach dinmico. Cuando usted examina rpidamente esta definicin del cach dinmico el primer tem de inters es el elemento raz. La ID de relacin usada en los atributos est dirigida hacia la parte de registros del cach dinmico. <pivotCacheDefinition xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"> <!-- the rest of the cache definition goes in between these tags... --> </pivotCacheDefinition> La definicin de la fuente de datos est justo dentro del elemento raz. Esta definicin hace referencia a los datos que estn siendo mostrados en la tabla dinmica. La tabla dinmica tambin mantiene esa informacin en la parte de registros del cach para permitir la actualizacin de la tabla cuando la conexin con los datos no est disponible. Usted no puede asumir que las celdas de la tabla dinmica almacenarn esos datos ya que los datos de estas celdas son transitorios por naturaleza, cambian cuando usted cambia la tabla. Existen varios tipos disponibles de tablas dinmicas para fuentes de datos, hojas de trabajo, bases de datos, cubo OLAP y otras tablas dinmicas. La tabla dinmica simple tomar los datos de la primera hoja de datos en la hoja de clculo de ejemplo. La tabla dinmica ser almacenada en una hoja aparte <cacheSource type="worksheet"> <worksheetSource name=Table3" /> </cacheSource> La ltima parte de la definicin del cach define los campos de la fuente de datos. Nuestra tabla contiene cuatro columnas que dan como resultado cuatro elementos cacheField. El elemento cacheField se usa con dos propsitos. Define el tipo de datos y el formato del campo. Y se usa tambin como cach para cadenas compartidas. Recuerda cmo funciona la tabla de cadenas compartidas? En este caso se aplica el mismo concepto. Los valores dinmicos son almacenados en la parte de registros del cach dinmico. Cuando se usa una cadena recurrente como un valor, el registro del cach usa una referencia hacia el grupo cacheField de tems compartidos. Ya que el primer y segundo campo se usan para las etiquetas de las filas que son tems recurrentes, estos dos campos utilizan el grupo sharedItems. Los ltimos dos campos son la cuota de ventas y las ventas. Estos valores son nicos para cada celda y usar los tems compartidos no servira de mucho. <cacheFields count="4"> <cacheField name="Region"> <sharedItems count="5"> <s v="Southeast" /> 74

Tablas Dinmicas

<s v="Southwest" /> <s v="Central" /> <s v="Northeast" /> <s v="Canada" /> </sharedItems> </cacheField> <cacheField name="Sales Person"> <sharedItems count="6"> <s v="Stephen Jiang" /> <s v="Michael Blythe" /> <s v="Linda Mitchell" /> <s v="Jillian Carson" /> <s v="Garrett Vargas" /> <s v="Tsvi Reiter" /> </sharedItems> </cacheField> <cacheField name="Sales Quota"> <sharedItems containsSemiMixedTypes="0" containsString="0" containsNumber="1" containsInteger="1" minValue="0" maxValue="300000" /> </cacheField> <cacheField name="Sales"> <sharedItems containsSemiMixedTypes="0" containsString="0" containsNumber="1" containsInteger="1" minValue="1374" maxValue="1759212" /> </cacheField> </cacheFields> Se puede decir con seguridad que sta es solamente una tabla dinmica muy bsica. Usted puede incluir muchas ms opciones de configuracin dentro de la definicin del cach dinmico que van ms all del alcance de este libro. Definicin de los registros del cach La segunda parte de la tabla dinmica se usa solamente como cach de datos. La parte de registros del cach puede almacenar cualquier cantidad de registros guardados en el cach. Cada registro tiene un nmero de valores definidos equivalente al nmero de campos en la definicin del cach. Los registros del cach tienen una estructura simple. Cada registro se define con el elemento r. Este registro contiene tems de valor como elementos hijo. Usted puede ingresar algunos valores 'digitados', como por ejemplo datos numricos, booleanos o fechahora, o de referencia en los tems compartidos. El primer registro del cach usa dos referencias hacia los tems compartidos usando el elemento hijo x, y dos valores numricos usando v. Los valores son los mismos de la primera fila en la tabla, la cual sirve como fuente de datos. Los dems registros del cach dinmico se llenan con ms registros del mismo tipo. Veintids registros fueron removidos para guardar algo de espacio. <pivotCacheRecords xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" count="24"> <r> <x v="0" /> <x v="0" /> <n v="0" /> 75

SpreadsheetML

<n v="720315" /> </r> <r> <x v="1" /> <x v="0" /> <n v="0" /> <n v="1759212" /> </r> <!-- 22 more records to go --> </pivotCacheRecords>
Ejemplo de marcado 84 Registros del cach dinmico

Referencia del cach desde el libro de trabajo Antes de poder crear la parte de la tabla dinmica, la cual enlaza todos los campos almacenados en el cach, es necesario referenciar el cach dinmico dentro de la parte del libro de trabajo. El marcado es sencillo. Hay un ID de relacin para identificar la parte que contiene el cach y un nmero nico para identificar ese cach. En la hoja de clculo de ejemplo, la tabla dinmica aparece en una hoja de trabajo aparte, la cual tambin es referenciada desde la parte del libro de trabajo. <workbook xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> <sheets> <sheet name="Data" sheetId="1" r:id="rId1" /> <sheet name="Pivot" sheetId="2" r:id="rId2" /> </sheets> <pivotCaches> <pivotCache cacheId="1" r:id="rId5" /> </pivotCaches> </workbook>
Ejemplo de marcado 85 La lista de cachs dinmicos del libro de trabajo

Crear la tabla dinmica El ltimo paso para definir la tabla dinmica es crear la parte de la tabla dinmica. La parte fue agregada anteriormente usando contenido especfico y un tipo de relacin, referencindolos desde la hoja en la cual aparece la tabla dinmica. La funcin principal de la parte de la tabla dinmica es almacenar informacin sobre cul campo se muestra en qu eje de la tabla dinmica y en qu orden. Muchas otras opciones de configuracin se pueden agregar a la definicin de la tabla dinmica pero para hacerlo simple explicamos la estructura bsica. Los siguientes pasos se usan para construir la tabla dinmica. Nuevamente, la construccin no es muy difcil, si omite todos los elementos opcionales. El elemento raz es el primer elemento de inters. Adems de darle un nombre a la tabla dinmica para que pueda ser usada como una fuente de datos, la raz referencia el cach dinmico usando la ID asignada a la parte del libro de trabajo y define la etiqueta de ttulo que aparecer encima del rea de datos de la tabla dinmica. Todos estos elementos son necesarios. <?xml version="1.0" encoding="utf-16" standalone="yes"?> <pivotTableDefinition xmlns="http://schemas.openxmlformats.org/SpreadsheetML/2006/main" 76

Tablas Dinmicas

name="PivotTable1" cacheId="1" dataCaption="Values"> <!-- the rest of the pivot table definition goes in between these tags... --> </ pivotTablaDefinition > pivotTableDefinition tiene tres partes principales: la ubicacin de la tabla, la informacin que aparece en los campos almacenados y la ubicacin de la informacin de los campos almacenados. La ubicacin de la tabla dinmica es un mecanismo doble. La tabla dinmica aparece en una ubicacin especfica de alguna hoja de trabajo. La hoja de trabajo que muestra la tabla dinmica almacena una relacin de paquetes con esta parte de la tabla dinmica. location se usa para identificar el rango de celdas que ocupa la tabla dinmica. Usted debe aplicar tres ndices para catalogar en qu fila, contando desde la parte superior de la tabla, comienza la informacin del encabezado y en qu fila / columna est el primer elemento de datos. Esta informacin es necesaria para actualizar correctamente la tabla dinmica. De lo contrario el consumidor no puede diferenciar las celdas de la tabla dinmica. <location ref="A1:C17" firstHeaderRow="1" firstDataRow="2" firstDataCol="1" /> Ahora que se conoce la ubicacin de la tabla, sta se puede construir usando los campos en la definicin del cach dinmico. Primero se debe definir el grupo de campos que aparecen en la tabla dinmica usando el elemento pivotFields. Cada campo sirve como cach para los datos de ese campo en la fuente de datos. No es necesario definir ese cach. En lugar de esto, usted puede usar el tem default y dejar que el consumidor actualice la tabla al abrir el documento. El atributo showAll se usa para ocultar ciertos elementos para esa magnitud de datos. Por ejemplo, una tabla dinmica que cambia entre ventas / vendedor / regin de ventas. Si un vendedor no trabaja en una regin especfica, se debe ocultar este dato? El atributo showAll define esta opcin. <pivotFields count="4"> <pivotField axis="axisRow" showAll="0"> <items count="1"> <item t="default" /> </items> </pivotField> <pivotField axis="axisRow" showAll="0"> <items count="1"> <item t="default" /> </items> </pivotField> <pivotField dataField="1" numFmtId="164" showAll="0" /> <pivotField dataField="1" numFmtId="164" showAll="0" /> </pivotFields> Despus de definir qu campos hacen parte de la tabla, stos son aplicados a las cuatro reas de la tabla dinmica. <rowFields count="2"> <field x="0" /> <field x="1" /> </rowFields> <colFields count="1"> <field x="-2" /> </colFields> <dataFields count="2"> <dataField name="Sum of Sales Quota" fld="2" /> <dataField name="Sum of Sales" fld="3" /> </dataFields>

77

SpreadsheetML

Resumen Una discusin ms extensa de las caractersticas de las tablas dinmicas se debe hacer en otro momento y en otro libro. Existe un amplio nmero de opciones de configuracin que usted puede aplicar para enriquecer an ms la tabla dinmica. Usted puede usar estilos, y formato condicional para mejorar la manera como se visualizan los datos. Depure y clasifique los datos usando las definiciones de campos y trabaje con jerarquas de datos encontradas en fuentes tales como los cubos OLAP. La tercera parte de la especificacin de Open XML es un buen punto de partida para aprender ms, al igual que los ejemplos que se encuentran en Referencia sobre el Lenguaje de Marcado.

Adicin y posicionamiento de grficas


La parte del contenedor enlaza la grfica a la hoja y define la ubicacin en la cual aparecer la grfica, as como la manera cmo reaccionar al cambiar el tamao de las filas y columnas. Hay tres mtodos de posicionamiento disponibles: absoluto, enlace de una celda y enlace de dos celdas. Los tres mtodos usan un sistema de valores que se encuentra dentro de DrawingML. Las posiciones y ajustes se miden en EMU o Unidades Mtricas Inglesas (English Metric Unit). En el captulo sobre DrawingML se discute cmo hacer la conversin entre EMU y unidades ms conocidas como pulgadas y centmetros. Los enlaces absolutos son los ms fciles de usar. El enlace le permite especificar la posicin de la parte superior izquierda de un elemento grfico tal como la grfica. Adems de la posicin, usted tambin puede especificar el ancho y la altura del marco grfico. Dentro del elemento absoluteAnchor hay un elemento graphicFrame. El marco grfico contiene una referencia a la parte individual con los datos de la grfica.
<xdr:absoluteAnchor> <xdr:pos x="2276475" y="1552575" /> <xdr:ext cx="1238250" cy="1238250" /> <xdr:graphicFrame> ... </xdr:graphicFrame> <xdr:clientData /> </xdr:absoluteAnchor>
Ejemplo de marcado 86 Enlaces absolutos

El segundo mtodo de enlace es el enlace de celda individual. Usando este mtodo usted tambin debe especificar la ubicacin, tamao y contenido del enlace. La posicin se define usando una referencia a un ndice de fila y columna. Nuevamente, el ndice est basado en un valor cero. Despus de especificar la fila y la columna, usted puede ajustar la grfica desde esa fila usando un nmero especfico desde la esquina superior izquierda de la posicin referenciadas. El siguiente paso es especificar el tamao y el contenido del marco grfico. Despus de discutir el ltimo tipo de enlace, el enlace de dos celdas, hablaremos sobre cmo se ve el contenido.
<xdr:oneCellAnchor> <xdr:from> <xdr:col>3</xdr:col> <xdr:colOff>457200</xdr:colOff> <xdr:row>7</xdr:row> <xdr:rowOff>104775</xdr:rowOff> </xdr:from> <xdr:ext cx="1234567" cy="1234567" /> <xdr:graphicFrame> ... </xdr:graphicFrame>

78

Adicin y posicionamiento de grficas

<xdr:clientData /> </xdr:oneCellAnchor>


Ejemplo de marcado 87 Enlace de una celda

El ltimo mtodo de enlace parece similar al enlace de una celda. En lugar de especificar el tamao usando una medida absoluta, usted especifica la celda de la parte inferior derecha a la cual tambin est ligada la grfica. La grfica ser dimensionada segn el tamao y la posicin de las celdas de la parte superior izquierda y la parte inferior derecha. De manera similar a los otros modelos, usted puede especificar un ajuste desde la esquina para posicionamiento adicional.
<xdr:twoCellAnchor> <xdr:from> <xdr:col>5</xdr:col> <xdr:colOff>438150</xdr:colOff> <xdr:row>11</xdr:row> <xdr:rowOff>9525</xdr:rowOff> </xdr:from> <xdr:to> <xdr:col>13</xdr:col> <xdr:colOff>133350</xdr:colOff> <xdr:row>25</xdr:row> <xdr:rowOff>85725</xdr:rowOff> </xdr:to> <xdr:graphicFrame macro=""> ... </xdr:graphicFrame> <xdr:clientData /> </xdr:twoCellAnchor>
Ejemplo de marcado 88 Enlace de dos celdas

Todos los tipos de enlace almacenan el tem para el cual se proporciona el enlace dentro del contenido del elemento. graphicFrame es similar en los tres lenguajes de marcado Open XML. La totalidad del uso de los marcos grficos se explica en el captulo sobre PresentationML. Para lo que estamos estudiando ahora es suficiente decir que usted especifica los valores obvios, la identidad, el tamao y la posicin. La grfica es un contenedor genrico, usado en este caso para almacenar un diagrama. El elemento grfica identifica qu grfica se debe mostrar usando una ID de relacin especfica. El contenido de la parte referenciada dentro de graphicFrame es una grfica de DrawingML. Las caractersticas asociadas a una grfica se explican ms detalladamente en ese captulo.
<xdr:graphicFrame> <xdr:nvGraphicFramePr> <xdr:cNvPr id="2" name="Chart 1" /> <xdr:cNvGraphicFramePr /> </xdr:nvGraphicFramePr> <xdr:xfrm> <a:off x="0" y="0" /> <a:ext cx="0" cy="0" /> </xdr:xfrm> <a:graphic> <a:graphicData uri="http://.../drawingml/2006/chart"> <c:chart xmlns:c="http://.../drawingml/2006/chart" xmlns:r="http://.../officeDocument/2006/relationships" r:id="rId1" /> </a:graphicData>

79

SpreadsheetML

</a:graphic> </xdr:graphicFrame>
Ejemplo de marcado 89 El marco grfico de SpreadsheetML

Estilos de contenido
Al igual que con los dems lenguajes Open XML, usted puede usar estilos para crear opciones de configuracin de formato comn para las celdas. A diferencia de WordprocessingML, usted no puede crear un formato directo dentro del marcado de la hoja de trabajo. La informacin del formato se almacena siempre por separado. Usando estilos usted puede dar formato a celdas y tablas. Estos estilos de SpreadsheetML son almacenados en una parte independiente dentro del paquete. En este punto usted est probablemente acostumbrado al proceso de almacenamiento de partes nuevas dentro del paquete. Primero cree el archivo XML para guardar los datos de estilo. Actualice las partes de tipo contenido para reflejar el tipo de contenido correcto, y por ltimo agregue una relacin entre el libro de trabajo y la parte de estilos. Todas las hojas de trabajo usan la misma configuracin de estilo, slo hay una parte de estilos en todo el paquete de hojas de clculo. Se debe utilizar el siguiente tipo de contenido y tipo de relacin: Tipo de contenido para los estilos application/vnd.openxmlformats-officedocument.SpreadsheetML.styles+xml Tipo de relacin para los estilos http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles Elementos de la parte de estilos Usted se puede sentir algo confundido dentro de la parte de estilos debido a las diferentes secciones. La razn de esta estructura es permitir el mayor nivel de reutilizacin de las diferentes opciones de configuracin relacionadas con los estilos. Cuando usted resume todos los elementos y se concentra solamente la estructura, puede ver algo parecido a lo siguiente.
<styleSheet xmlns="http://.../SpreadsheetML/2006/main"> <fonts /> <fills /> <borders /> <numFmts /> <cellStyleXfs /> <cellXfs /> <cellStyles /> <dxfs /> <TableStyles /> </styleSheet>
Ejemplo de marcado 90 Parte de estilos de SpreadsheetML

Cuatro elementos dentro del elemento styleSheet de la parte de estilos definen las opciones de configuracin relacionadas con los estilos. Estos elementos son font, fills, borders y numFmts y como sus nombres lo indican stos contienen opciones de configuracin de tipo de letra, llenado, bordes y numeracin. Cada uno de ellos es un contenedor para esas propiedades y puede contener mltiples definiciones. Los cuatro elementos principales no son referenciados directamente por las celdas y otros contenidos de estilo. En cambio, se mantienen diferentes tipos de registros de formato. Cuando usted aplica un estilo en una celda, se referencia un tem en el grupo cellXfs. El grupo contiene formatos aplicados directamente en una celda. El grupo cellXfs referencia un tem del grupo cellStyleXfs. El segundo grupo contiene las opciones de configuracin de formato para estilos de celda globales tales como 'normal'. Usted puede considerar cellStyleXfs como la definicin 80

Estilos de contenido

global, cellXfs como las modificaciones de esa definicin. Una celda referencia las modificaciones, y a travs de esto, tambin referencia las opciones de configuracin definidas globalmente. Tanto cellStyleXfs como cellXfs hacen uso de los registros de formato para referenciar tems en los grupos de tipos de letra, llenados, bordes y numeracin. Aplicacin de un estilo de celda Una vez creados los estilos, se puede proseguir con la parte ms fcil, aplicar el estilo en las celdas. Lo nico que usted debe hacer es agregar un atributo extra dentro de cada elemento de celda en la parte del libro de trabajo. <row> <c s="1"> <v>0</v> </c> </row>

s="1"

Formateo directo cellXfs

xfId="3"

Estilo de Celda cellStyleXfs

Figura 24 Jerarqua de estilos de celda

Cuando usted usa un consumidor, como por ejemplo Microsoft Office Excel, el usuario puede crear nuevos estilos para aplicar a las celdas. Las opciones de configuracin de formato seleccionadas por el usuario son almacenadas en el grupo de estilos cellStyleXfs. La informacin de nombres se mantiene en una lista por separado llamada cellStyles. CellStyles se puede considerar como la lista de estilos disponible para el usuario. El grupo mantiene un ndice en el grupo de estilos globales para almacenar las opciones de formato. Cuando usted aplica un estilo en una celda, ste no referencia cellStyles. En cambio, ste copia la referencia al estilo en su registro de formato directo dentro de cellXfs.

Tipos de letra, llenados, bordes y numeracin Todos los registros de formato identificados con el elemento Xfs referencian definiciones de formato almacenadas globalmente en la parte de estilos. Los tipos de letra, bordes y llenados son referenciados por el ndice, el formato de numeracin por la ID. 81

SpreadsheetML

Hay una advertencia importante sobre la parte de tipos de letras. Antes de crear la parte de estilos, se aplicaron las opciones de configuracin predeterminadas de tipo de letra de la aplicacin. Tan pronto como usted crea la parte de tipos de letra en la parte de estilos, el primer tipo de letra ser usado como predeterminado en todo el libro de trabajo. Para darle formato a las celdas de la hoja de clculo de ejemplo, usted necesita dos tipos de letra. El primer tipo de letra se usa para las opciones de configuracin predeterminadas, el otro para el texto blanco en negrilla del encabezado y el pie de pgina. Hay cuatro llenados, el primero es vaco, los otros tres son para los tres colores que componen la tabla. Finalmente, hay tres definiciones de borde. Nuevamente una vaca, la segunda define el borde para la fila del encabezado. La ltima se usa como borde para toda la tabla. Definiciones de borde El elemento borders mantiene una lista de elementos de borde. Cada borde es creado usando el elemento border. Dentro de la etiqueta border usted puede crear seis bordes usando un nombre de etiqueta dedicado, como por ejemplo left o bottom. El borde tiene una lista de posibles tipos de borde tales como thin o double. No es posible configurar un acho exacto de borde. El tipo determina el acho del borde. El color del borde se define usando un valor ARGB (alpha, red, green, blue), el cual consiste de un componente rojo, verde, azul y alfa (transparencia).
<borders> <border> <left style="thin"> <color rgb="FFFFFFFF" /> </left> </border> <!-- more borders omitted -->

</borders>
Ejemplo de marcado 91 Definicin del estilo del borde

Tipos de letra Los tipos de letra se definen usando un modelo similar a WordprocessingML. Cada tipo de fuente puede establecer sus propiedades usando elementos tales como sz para tamao, name para la familia de tipo de letra y color para especificar el color del texto.
<fonts> <font> <sz val="11" /> <name val="Calibri" /> <color rgb="00000000" /> </font> <!-- more fonts omitted -->

</fonts>
Ejemplo de marcado 92 Definicin del estilo del tipo de letra

Llenados Un llenado consiste de un color de fondo, un color de primer plano y un patrn de llenado. En este caso los colores son especificados tambin mediante valores ARGB. La lista de patrones disponibles est en las especificaciones de Open XML.
<fills> <fill> <patternFill patternType="solid"> <fgColor rgb="FF4F81BD" />

82

Estilos de contenido

<bgColor rgb="FF1281F3" /> </patternFill> </fill> <!-- more fills omitted -->

</fills>
Ejemplo de marcado 93 Definicin del estilo del llenado

Registros de formato El segundo paso para crear una celda con estilo, es crear los registros de formato que referencian los formatos definidos anteriormente. No tenemos la posibilidad de crear muchos registros de formato debido a la simplicidad de la hoja de clculo de ejemplo. En ejemplos reales, usted encontrar muchos registros de formato definidos. En el ejemplo usamos un registro de formato maestro y cuatro registros de formato directos. Estos cuatro registros son reutilizados en todas las celdas de la tabla. El encabezado, y las franjas de las celdas usan un registro de formato por separado, y el cuarto se usa como un registro de formato vaco predeterminado. Encabezado

Banda primera fila Banda segunda fila

Para crear los registros de formato, la parte de estilos debe ser ampliada con dos grupos nuevos. Como se dijo anteriormente, el grupo cellStyleXfs mantiene el formato que usted asocia con un estilo. El grupo cellXfs contiene las diferencias aplicadas a una celda despus de que se le ha dado estilo. No piense que estos estilos slo pueden ser aplicados dentro del contexto de una tabla. El estilo es aplicado directamente a una celda, la cual no tiene conocimiento de que puede ser parte de una tabla. El siguiente ejemplo de marcado muestra cmo se usan estos dos grupos. Todos los valores son ndices en los grupos de formato discutidos anteriormente. El registro de formato directo que se mantiene dentro de cellXfs est dirigido hacia el grupo cellStyleXfs usando el atributo xfId. <cellStyleXfs count="1"> <xf fontId="0" fillId="0" </cellStyleXfs> <cellXfs count="1"> <xf fontId="0" fillId="0" <xf fontId="1" fillId="4" <xf fontId="0" fillId="3" <xf fontId="0" fillId="2" </cellXfs> borderId="0" />

borderId="0" borderId="1" borderId="2" borderId="2"

xfId="0" xfId="0" xfId="0" xfId="0"

/> /> /> />

Ejemplo de marcado 94 Registros de formato

Registros diferenciales de formato La configuracin actual para dar formato a las celdas no es ideal. Es necesario visitar cada celda individual para aplicar el estilo correcto. SpreadsheetML contiene una expresin de optimizacin de estilos llamada registro diferencial de formato o dxf, la cual hace ms eficaz el proceso de dar estilo a una tabla. Al igual que los otros registros de formato, dxf se usa para definir un formato determinado. La principal diferencia es que un registro 83

SpreadsheetML

diferencial se aplica adicionalmente al estilo de celda normal ya aplicado a travs del formato de celdas. ste tampoco referencia los 4 contenedores de formato principales, pero define un llenado, tipo de letra o borde directamente en lnea.
<dxfs count="1"> <dxf> <fill /> <font /> <numFmt /> <border /> </dxf> </dxfs>
Ejemplo de marcado 95 Formato diferencial

Para crear los registros diferenciales de formato, se debe crear primero el elemento contenedor llamado dxfs. Despus se agrega un registro dxf individual para cada una de las 3 partes con estilo de la tabla. Una para el encabezado, las otras para las dos franjas de las celdas. Por ltimo, usted debe copiar los tipos de letra, llenados y bordes apropiados, agrupndolos en uno de los tres registros dxf. Esto establece los registros diferenciales que sern usados por el estilo de la tabla. Usar un estilo de tabla mejorar mucho la manera como usted le puede dar estilo a una tabla Estilos de tabla Dos cosas se deben hacer para implementar un estilo de tabla. Primero usted debe crear un estilo nuevo dentro de la parte de estilos, y despus debe actualizar la parte de la tabla y referenciar el nuevo estilo. Para crear estilos de tabla se deben seguir pasos similares a los necesarios para los registros de formato. Hay un elemento de grupo, tableStyles, que contiene elementos tableStyle individuales para cada estilo de tabla que usted defina. De manera similar que con WordprocessingML, usted puede crear un formato diferente para ciertas reas de la tabla tales como la celda del encabezado o el pie de pgina, las franjas de filas y columnas y las celdas de las esquinas. Esto se hace a travs de los registros diferenciales de formato. Cada rea de la tabla referencia un registro diferencial individual para darle formato. El siguiente marcado muestra el estilo de tabla para la hoja de clculo de ejemplo.
<TableStyles count="1"> <TableStyle name="ReportTable" pivot="0" count="5"> <TableStyleElement type="wholeTable" dxfId="0" /> <TableStyleElement type="headerRow" dxfId="1" /> <TableStyleElement type="totalRow" dxfId="2" /> <TableStyleElement type="firstRowStripe" dxfId="3" /> <TableStyleElement type="secondRowStripe" dxfId="4" /> </TableStyle> </TableStyles>
Ejemplo de marcado 96 Estilos de tabla

El segundo paso es actualizar la parte de la tabla. La definicin de la tabla debe referenciar el estilo de tabla definido. Esto se hace a travs del nombre del estilo. La parte de la tabla se ampla con el elemento tableStyleInfo, el cual define qu estilo usar y de qu manera. Una tabla que usa un estilo no necesariamente debe usar toda la definicin. Si la tabla no requiere usar un estilo de celdas totales diferente, es posible no hacerlo. Existen varios atributos booleanos que sirven para indicar qu secciones de una tabla requieren la aplicacin de un formato especial. El siguiente ejemplo de marcado muestra la definicin actualizada de la tabla.

84

Formato condicional

<Table xmlns="http://.../SpreadsheetML/2006/main"> <TableColumns count="4"> <TableColumn id="1" name="Region" /> <TableColumn id="2" name="Sales Person" /> <TableColumn id="3" name="Sales Quota" /> <TableColumn id="4" name="Sales" /> </TableColumns> <TableStyleInfo name="My Table Style" showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0" /> </Table>
Ejemplo de marcado 97 Aplicacin de un estilo de tabla

Formato condicional
El formato condicional basado en celdas ayuda a proporcionar una estructura a los datos que hacen parte de una hoja de trabajo. Es ms fcil diferenciar el nivel relativo de los valores en una tabla usando colores que solamente mostrando el valor. Existen varias opciones de formato que puede aplicar a las celdas con base en su valor. Usted puede resaltar los tems del rango superior o inferior, proporcionar barras de datos que muestren una Interfaz de Usuario de tipo barra de progreso o usar escalas de colores para indicar los valores superiores e inferiores. El formato condicional es aplicable directamente a una celda de una hoja de trabajo. No es necesario que est en una tabla, pero por lo general ste es el lugar donde se encuentra. Observe en el ejemplo en la figura 25, en el cual se ha aplicado un formato de escala de color. Con base en los datos actuales de la celda, el de menor valor tendr color rojo y Figura 25 Formato condicional aplicado el de mayor valor tendr color verde. Todos los dems datos son interpolados. Todas las opciones de configuracin de formato condicional son almacenadas a nivel de la hoja de trabajo. La hoja de trabajo almacena un elemento conditionalFormatting para cada formato aplicado a un nmero de celdas. El grupo de celdas al cual se le aplica el formato se define usando el atributo sqref. ste especifica un rango de celdas usando la notacin 'from:to', por ejemplo 'A1:A10'.
<worksheet> <sheetData> ... </sheetData> <conditionalFormatting sqref="A1:A5"> <cfRule type="dataBar" priority="1"> ... </cfRule> <cfRule type="colorScale" priority="2"> ... </cfRule> </conditionalFormatting> </worksheet>
Ejemplo de marcado 98 Reglas de formato condicional

A cada formato condicional aplicado a un rango de celdas se le permite especificar diversas reglas de formato. Por ejemplo, usted puede aplicar una escala de color y barras de datos al mismo tiempo. Cada una de estas se representa usando un elemento cfRule por separado. Para especificar la prioridad de Interfaz de Usuario se puede 85

SpreadsheetML

usar el atributo priority. Debido que el elemento conditionalFormatting puede superponerse a otras reas con formato, la prioridad es global para todos los formatos condicionales definidos. La regla cfRule contiene una gran cantidad de tipos de formato que pueden ser aplicados. Cada tipo de formato usa elementos comunes para definir sus opciones de configuracin. La siguiente lista contiene todos los diferentes tipos de formato disponibles. Tipos de formato condicional aboveAverage beginsWith cellIs colorScale containsBlanks containsErrors containsText dataBar duplicateValues endsWith iconSet notContainsBlanks notContainsErrors notContainsText timePeriod top10 uniqueValues
Tabla 5 Tipos de formato condicional

Reglas para resaltar La primera regla de formato condicionado es la regla cellIs. Con esta regla se pueden conseguir diversos efectos, dependiendo del operador y los valores suministrados. El operador define el nmero de frmulas que se pueden usar para definir el rango. Algunos ejemplos de operadores son ' between', 'greaterThan' o 'notEqual'. El operador utilizad en el ejemplo de marcado requiere dos frmulas. Estas frmulas pueden contener valores predeterminados, pero en escenarios ms avanzados usted puede usar la sintaxis de frmula completa y valores de celda de referencia, etc. El formato que dado a los valores que hacen parte del rango definido se aplica usando un registro diferencial de formato, indicado por el atributo dxfId. El formato usado en la muestra, le aplica un color rojo a los tems del rango especificado.
<cfRule type="cellIs" dxfId="0" priority="1" operator="between"> <formula>2</formula> <formula>4</formula> </cfRule>

<dxf> <fill> <patternFill> <bgColor rgb="FFFFC7CE" /> </patternFill> </fill> </dxf>

Reglas de valor superior e inferior Para resaltar los N nmeros de valor superior o inferior en las celdas, usted debe aplicar la regla top10. Una vez ms, el formato se identifica usando un registro diferencial de formato. En el ejemplo se resaltan los tres tems de valor inferior. El atributo bottom es un parmetro Booleano. rank identifica el nmero de tems. Para resaltar el N por ciento de tems superiores, se aplica tambin el atributo booleano percent. rank identifica un porcentaje cuando se usa este atributo.
<cfRule type="top10" dxfId="0" priority="1" bottom="1" rank="3" />

<dxf> <fill> <patternFill> <bgColor rgb="FFFFC7CE" /> </patternFill> </fill> </dxf>

86

Formato condicional Barras de datos Para indicar el nivel relativo de los tems usted puede usar barras de datos. Las barras de datos usan un solo color y lo muestran como una barra. La longitud de la barra indica el nivel relativo del valor de la celda. Las escalas de color, que mostraremos a continuacin, son un mtodo similar para mostrar los niveles relativos pero usan diferentes colores. La barra de datos usa un modelo por separado dentro de la regla para definir sus opciones de configuracin. El elemento dataBar almacena todos los datos relevantes. La barra de datos requiere tres opciones de configuracin, el valor mnimo para comparar los valores de las celdas, el valor mximo y un color. El primer elemento cfvo, u objeto valor de formato condicional, define el valor mnimo, el segundo define el mximo. Usted puede usar diferentes mtodos para especificar un valor, como por ejemplo usar una frmula o un valor predeterminado. Otra opcin comn es usar los tipos 'min' y 'max'. Estos dos tipos cfvo especifican los valores mnimo y mximo encontrados en el rango de celdas al cual fue aplicado el formato. Esto proporciona un gradiente escalonado entre los tems de menor y mayor valor.
<cfRule type="dataBar" priority="1"> <dataBar> <cfvo type="formula" val="$D$2" /> <cfvo type="number" val="5" /> <color rgb="FF638EC6" /> </dataBar> </cfRule>

Escalas de color El uso de escalas de color es similar al uso de barras de datos. stas se usan para dar una idea del valor relativo entre todos los tems de las celdas. Al igual que la barra de datos, la escala de color tiene un elemento hijo especfico en el contenedor cfRule. Usted puede especificar tres valores, uno para el inicio de la escala, uno para la mitad, y uno para el final. Tambin es posible usar dos valores, omitiendo el valor de la mitad en la escala. En el ejemplo, la escala de color empezar en el valor mnimo del rango de celdas. El segundo punto en el gradiente de color est identificado por un porcentaje, cincuenta por ciento. El punto final es el valor mximo del rango de celdas. Cada punto tiene un color asignado. El primer elemento color aplica al primer cfvo, y as sucesivamente.
<cfRule type="colorScale" priority="1"> <colorScale> <cfvo type="min" val="0" /> <cfvo type="percentile" val="50" /> <cfvo type="max" val="0" /> <color tint="-0.499984740745262" /> <color tint="-0.249977111117893" /> <color /> </colorScale> </cfRule>

Conjuntos de conos La ltima opcin de formato es el conjunto de iconos. Usando esta opcin usted puede aplicar diferentes conjuntos de iconos a los tems. El conjunto de tems usa un rango de valores similar para identificar a qu celdas aplicar la regla de formato. El primer elemento cfvo identifica el valor mnimo, el segundo el punto medio y el ltimo el valor mximo. iconSet identifica qu iconos se deben aplicar. Usted puede elegir entre diferentes iconos predeterminados que se pueden ver en las especificaciones de Open XML. 87

SpreadsheetML

<cfRule type="iconSet" priority="1"> <iconSet iconSet="3Symbols"> <cfvo type="percent" val="0" /> <cfvo type="percent" val="33" /> <cfvo type="percent" val="67" /> </iconSet> </cfRule>

Hojas de grficos
Hay otros dos tipos de hojas adems de la hoja de clculo comn. Usted puede crear dilogos usando una hoja de dilogo y mostrar grficos en una hoja de grficos. El uso de dilogos no est dentro del alcance de este libro, pero s se discutirn las hojas de grficos. Los grficos usan el marcado DrawingML. Esto permite que se puedan usar los mismos grficos en todo el espectro de Open XML. Para permitir que cada lenguaje de marcado muestre un grfico se tienen contenedores de lenguaje especficos. Para SpreadsheetML, este contenedor es una parte separada al interior del paquete y se referencia con la hoja de grficos. Igualmente, usted tambin puede poner un grfico en una hoja de clculo normal. La hoja de clculo referenciar el contenedor en la parte separada. El grfico en s tambin es una parte especfica de DrawingML al interior del paquete. Esto da una jerarqua de tres niveles: la hoja, el contenedor y el grfico. La parte ms simple de la jerarqua es el nivel de la hoja. El siguiente ejemplo de marcado muestra una hoja de grficos mnima.
<chartsheet xmlns="http://.../SpreadsheetML/2006/main" xmlns:r="http://.../officeDocument/2006/relationships"> <sheetViews> <sheetView workbookViewId="0" /> </sheetViews> <drawing r:id="rId1" /> </chartsheet>
Ejemplo de marcado 99 Hoja de grficos

Hay dos referencias. La primera referencia es a la lista de los elementos de workbookView en la parte del libro. El valor es un ndice con base en cero. La segunda es una referencia al contenedor SpreadsheetML para los grficos usando identidad de relacin. Si usted inserta un grfico normal en una hoja de clculo normal en vez de una hoja de grfico, entonces lo nico que debe hacer es agregar tambin el elemento de dibujo y referenciar la parte del contenedor separada.

Caractersticas de soporte
Nombres definidos Cuando se hace referencia a elementos dentro de una hoja de clculo, usar una referencia de celda como por ejemplo '$D$2' en realidad no contiene informacin til. Cuando usted la usa en una frmula, sera mucho mejor si usted puede decir 'VentasTotales CostoTotal' en vez de 'D2 E5'. Para habilitar este tipo de sintaxis, usted puede definir los nombres de las celdas y otros elementos. A estos nombres puede definrseles alcance a nivel del libro o de la hoja de clculo individual. Los nombres que se definen a nivel del libro, se pueden usar desde todas las hojas 88

Caractersticas de soporte

de clculo, los otros obviamente no se pueden usar. Estos nombres se pueden usar luego en frmulas para proporcionar mejor legibilidad. N nombre definido es en realidad una frmula con un nombre adjunto. Dentro del elemento definedNames al interior del libro, usted puede crear nombres y aplicar sus configuraciones. El contenido del texto del elemento definedName contiene la frmula a la cual se refiera el nombre. Usted puede aplicar configuraciones tales como el nombre que se muestra, los comentarios, texto de men o descripciones. Para que el nombre definido sea local para una hoja de clculo especfica aplique el atributo localSheetId el cual se refiere al ndice de hoja de clculo en la lista de hoja de clculo.
<definedNames> <definedName name="Formula" comment="A Named Formula" localSheetId="0">SUM(1,2,3)</definedName> <definedName name="MyFirstCell">Sheet1!$B$1</definedName> <definedName name="MySecondCell">Sheet1!$B$2</definedName> </definedNames>
Ejemplo de marcado 100 Definicin de nombres

Propiedades del libro de trabajo Hay varias propiedades que usted le puede aplicar al libro, al nivel de libro o de hoja de clculo que an no se han discutido. Algunas de estas propiedades tienen que ver con la definicin de la versin; otras con el tamao de la pgina y la ventana. Al nivel del libro, hay propiedades comunes cuando se guarda el documento desde la aplicacin Microsoft Office Excel. fileVersion indica el consumidor que guard la hoja de clculo. appName indica la aplicacin. El atributo lastEdited indica la versin de la aplicacin para guardar la hoja de clculo. lowestEdited indica la versin ms antigua de la aplicacin que guard el archivo y por ltimo rupBuild se usa junto con appName y lastEdited para indicar el nmero de creacin. workbookPr se puede utilizar para especificar las configuraciones generales del libro. Una configuracin importante es si se usa el formato de fecha basado en 1900 1904. SpreadsheetML le permite utilizar ambos. SpreadsheetML ha sido diseado para que sea compatible con billones de documentos creados en computadores personales. Uno de los primeros programas de hojas de clculo, Lotus 123, tena un problema conocido que calculaba mal el ao bisiesto en el formato 1900. Esto llev a que se desarrollara dos formatos de fechas en SpreadsheetML. El formato de fecha 1900 sigue siendo compatible con esas primeras hojas de clculo. El formato de fecha 1904 rompe con esa compatibilidad pero asegura que los aos bisiestos siempre sean calculados con precisin. Hay muchas otras configuraciones, incluidas la informacin de respaldo y la posibilidad de actualizar los datos cuando se abre la hoja de clculo.
<workbook> <fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505" /> <workbookPr date1904="0" refreshAllConnections="1" updateLinks="always" /> <sheets> ... </sheets> <calcPr fullCalcOnLoad="1" /> </workbook>
Ejemplo de marcado 101 Propiedades del libro

El elemento calcPr se utiliza para definir propiedades de la herramienta para anlisis. Una configuracin interesante es fullCalcOnLoad la cual permite que todo el libro sea analizado cuando se abre la hoja de clculo. 89

SpreadsheetML

Notas Finales
Ya vamos mucho ms all de la mitad del texto, pero an hay dos lenguajes de marcado para analizar. Si bien no es cierto que SpreadsheetML no amerite ms espacio, es necesario prestar atencin a todas las opciones disponibles de Open XML en un espacio limitado. An hay muchas cosas por descubrir cuando se revise las especificaciones y los documentos de ejemplo. El uso de tablas dinmicas ms avanzadas, la integracin de informacin comercial usando el marcado XML personalizado son algunos de los ejemplos que se analizan.

90

Captulo 3

PresentationML
Aprender sobre los elementos de una presentacin Aprender sobre diferentes diseos Aprender cmo utilizar marcadores de posicin y diapositivas de ttulo para crear una apariencia uniforme Aprender a insertar imgenes, tablas y grficos

Introduccin
Tal y como se puede deducir de su nombre, PresentationML es el lenguaje de marcado que se utiliza para crear presentaciones. El modelo de PresentationML est creado a partir de la aplicacin Microsoft PowerPoint y permite el uso de una gran variedad de elementos diferentes. Si examina PresentationML con un poco ms de detenimiento, se dar cuenta de que depende en gran medida de un lenguaje de soporte, el DrawingML. En realidad hay bastante confusin; la parte sobre imgenes DrawingML en la tercera parte de la especificacin hace mencin a los espacios de nombre de PresentationML y viceversa. La mayora de los elementos que hacen referencia a las propiedades que tienen impacto visual usan el espacio de nombre DrawingML. DrawingML como tal se analiza en un captulo posterior. El nfasis en este captulo se centrar en cmo utilizar PresentationML en sus presentaciones.

Estructura del documento PresentationML


Al igual que los otros lenguajes de marcado definidos al interior de Open XML estndar, PresentationML sigue la Open Packaging Convention para separar los distintos elementos que constituyen el conjunto de diapositivas. Para PresentationML esto da como resultado una estructura compleja. La siguiente imagen muestra la estructura:

Figura 26 Elementos de PresentationML

91

PresentationML

Tal y como se puede observar, la estructura de empaquetado contiene varias referencias circulares y una gran variedad de elementos. La parte central de la presentacin acta como el eje y es punto de partida para empezar a trabajar con el paquete. Hay diferentes tipos diferentes de diapositivas de ttulo y otros tipos de contenido referenciados por la presentacin. Para los que no estn familiarizados con el trmino, un ttulo es un patrn de diapositiva genrico que las diapositivas utilizan. Para PresentationML, la jerarqua es incluso un poco ms grande, en la cual una diapositiva hace referencia al formato especfico de diapositiva, el cual a su vez va a un patrn de diapositiva. Juntos, estos tres elementos forman la diapositiva final en la pantalla. Hay diferentes tipos de diapositivas de ttulo para varios tipos de contenido. Un tipo de diapositiva de ttulo est disponible para diapositivas, pginas de notas y presentaciones. Cada pgina de ttulo o formato de ttulo individual y cada diapositiva de la presentacin se almacena en una parte separada al interior del paquete, lo cual permite fcil acceso a las partes individuales de la presentacin. Las pginas de notas siguen un modelo similar. En l, cada nota se almacena dentro de una parte separada que se referencia desde la diapositiva a la que le proporciona las notas. El siguiente aspecto interesante para resaltar es el formato de los temas. Al igual que los otros dos formatos principales de Open XML, se puede utilizar la definicin de temas de DrawingML para crear valores por defecto para las fuentes, formatos y otros datos sobre etiquetado y permitir que dicha definicin de temas est separada de del cuerpo principal de la presentacin. Un tema se puede reutilizar en todos los lenguajes de marcado Open XML. Al interior de un paquete PresentationML hay varios temas en uso. Por defecto, cada diapositiva de ttulo individual, patrones de notas e informacin, referencia una parte separada del tema. La presentacin tambin referenciar un tema por defecto que ha de usarse en la presentacin. Este tema por defecto es compartido con los patrones de diapositiva al referenciar la misma parte dentro del paquete. La estructura de empaquetado contiene dos referencias circulares, una entre la diapositiva de ttulo y el formato de diapositiva, la otra entre la diapositiva y la diapositiva de notas. El resto de la estructura de empaquetado es bastante obvia. La mayora de los elementos que se encuentran en una presentacin guardada de PowerPoint no se necesitan. En el siguiente captulo se discute el formato del conjunto sencillo de diapositivas vacas. Esta es una buena base para empezar a construir una presentacin de muestra. Luego se discutirn los varios elementos que se pueden poner en las diapositivas tales como diseos y grficos. El captulo sobre PresentationML finaliza dando detalles sobre cmo agregar animaciones y algunos detalles sobre las diapositivas de apoyo tales como las pginas de notas. Pero primero se analizarn los elementos de una presentacin vaca. Y para hacerlo de manera adecuada, primero necesitamos saber acerca del elemento ms comn de una presentacin: el diseo.

Diseos
Hay varias cosas que usted puede definir usando un diseo. Con el uso del diseo usted puede crear el texto de la presentacin, las figuras que contiene y los marcadores de posicin al nivel del formato y al nivel del patrn. Estos diseos se utilizan en todos los niveles: diapositiva, formato y patrn. Por ejemplo, usted puede definir un marcador de posicin para el texto en el nivel de patrn, definirle el estilo en el nivel de formato e introducirle el contenido en el nivel de diapositiva. Hay muchas subordinaciones en DrawingML en la definicin del diseo. El marcado de PresentationML del diseo define los contenedores especficos tales como las propiedades, Figura 27 Varios diseos estilo y contenedor del cuerpo del texto del diseo . Estos contenedores generalmente se rellenan con las propiedades de DrawingML para brindar efectos tales como relleno del diseo de una manera especfica, reflejo y rotacin y permiten que se agregue texto. Las diferencias entre un cuadro de texto y el aviso de prohibido fumar que se muestra en la Figura 26 son mnimas. Algo adicional es que los efectos de DrawingML no solamente se pueden 92

Diseos

aplicar a figuras normales, sino tambin al texto mismo, lo cual permite que los diseos sean excelentes piezas para crear presentaciones profesionales. Para crear el diseo, se usa el elemento sp. Este elemento e definir ms tarde en un rbol de diseo. Puede leer ms adelante en el captulo sobre este concepto. La mayora de los contenedores se explicarn ms en detalle en el captulo DrawingML ya que gran parte del marcado reside en estos espacios de nombres.

<p:sp> <!-- the rest goes in here --> </p:sp>


Ejemplo de marcado 102 Generalidades de los elementos de diseo

El primer contenedor dentro del diseo es las propiedades no visuales de diseo. Tal y como el nombre lo sugiere, ste almacena propiedades que no afectan la apariencia del diseo, tales como los bloqueos de diseo. Los nicos elementos que se requieren son el esquema bsico y el nombre y los atributos de identificacin.
... <p:nvSpPr> <p:cNvPr id="1" name="TextShape" /> <p:cNvSpPr /> <p:nvPr /> </p:nvSpPr> ...
Ejemplo de marcado 103 Propiedades de diseo no visuales

La continuacin obvia de las propiedades de diseo no visuales que usan nvSpPr son las que no afectan la apariencia visual del diseo. El nodo spPr almacena esta informacin usando el marcado DrawingML. No se necesita ningn contenido en el nodo spPr. EL ejemplo muestra cmo establecer la posicin y el tamao.
... <p:spPr> <a:xfrm> <a:off x="285720" y="428604" /> <a:ext cx="1928826" cy="369332" /> </a:xfrm>

</p:spPr> ...
Ejemplo de marcado 104 Propiedades de diseo

La ltima parte de la definicin del diseo es el cuerpo del texto del diseo. sta es opcional, pero muchos diseos definen el contenido del texto por eso el ejemplo muestra cmo definir una sangra sencilla del texto. Es similar a WordprocessingML.
<p:txBody> <a:bodyPr /> <a:p> <a:r> <a:t>Shape Text</a:t> </a:r> </a:p> </p:txBody>
Ejemplo de marcado 105 Texto del diseo

93

PresentationML

Si usted combina todos los elementos tendr como resultado el marcado bsico que se muestra en la siguiente pgina. Se puede realzar este marcado usando geometras personalizadas y efectos DrawingML.
<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="TextShape" /> <p:cNvSpPr /> <p:nvPr /> </p:nvSpPr> <p:spPr> <a:xfrm> <a:off x="285720" y="428604" /> <a:ext cx="1928826" cy="369332" /> </a:xfrm> </p:spPr> <p:txBody> <a:bodyPr /> <a:p> <a:r> <a:t>Shape Text</a:t> </a:r> </a:p> </p:txBody> </p:sp>
Ejemplo de marcado 106 Un diseo de texto

Figuras Para convertir un diseo de texto normal en una figura, basta con adicionar unas cuantas propiedades extras en la parte de propiedades visuales de un diseo. Al enunciar un tipo especfico de relleno, un color de relleno y color de lnea, el diseo de la izquierda se puede transformar en el diseo de la derecha.

Si bien este es un estilo bastante simple, ms adelante usted puede agregarle efectos 3D para realzar de verdad la imagen. Se necesita enunciar todos los elementos siguientes dentro de las propiedades de diseo visuales, spPr despus de enunciar los elementos del tamao de diseo usando xfrm. Primero aplique una geometra personalizada. La geometra por defecto es un rectngulo, pero hay muchas otras predeterminadas para escoger. Aplique prstGeom para usar una de las predeterminadas. Usted tambin puede crear geometras personalizadas.
<a:prstGeom prst="smileyFace"> <a:avLst /> </a:prstGeom>
Ejemplo de marcado 107 Uso de una geometra diferente en un diseo

94

Diseos

Enseguida debe aplicar un tamao y color para el borde de la geometra. Hay muchos rellenos y colores para escoger. Los rellenos degradados, por ejemplo. El captulo sobre DrawingML explica la lnea y el relleno de lnea ms en detalle.
<a:ln> <a:solidFill> <a:prstClr val="green" /> </a:solidFill>

</a:ln>
Ejemplo de marcado 108 Definicin del borde de la geometra

Y por ltimo aplique el relleno de diseo. La geometra se puede rellenar con un color, degradado o imagen o textura especficos.

<a:solidFill> <a:srgbClr val="00B0F0" />

</a:solidFill>
Ejemplo de marcado 109 Aplicacin de un relleno

Las siguientes propiedades visuales de diseo forman el marcado completo para este diseo de carita feliz. La altura del diseo ha sido modificada un poco con el fin de mejorar la presentacin del diseo.

<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="TextShape" /> <p:cNvSpPr /> <p:nvPr /> </p:nvSpPr> <p:spPr> <a:xfrm> <a:off x="285720" y="428604" /> <a:ext cx="1928826" cy="1209332" /> </a:xfrm> <a:prstGeom prst="smileyFace"> <a:avLst /> </a:prstGeom> <a:solidFill> <a:srgbClr val="00B0F0" /> </a:solidFill> <a:ln> <a:solidFill> <a:prstClr val="green" /> </a:solidFill> </a:ln> </p:spPr> <p:txBody> <a:bodyPr /> <a:p> <a:r> <a:t>Shape Text</a:t> </a:r> </a:p>

95

PresentationML

</p:txBody> </p:sp>
Ejemplo de marcado 110 Un diseo bsico

Diseos de grupo El ltimo tipo de diseo que se analizar es el diseo de grupo. Este concepto de diseos de agrupamiento podra serle familiar por la aplicacin Microsoft PowerPoint. Un diseo agrupado contiene varios diseos y forma un contenedor para ellos. Usted puede editar todos los diseos como si fuera una sola unidad usando el grupo. El diseo de agrupamiento no utiliza el elemento normal sp para definirse a s mismo, sino que usa el grpSp. El resto es en gran parte similar al diseo normal. Primero se define el contenedor. <p:grpSp> <!-- The other elements go inside this container --> </p:grpSp>
Ejemplo de marcado 111 Un diseo de grupo

Luego se definen las propiedades no visuales. <p:nvGrpSpPr> <p:cNvPr id="4" name="Group 3" /> <p:cNvGrpSpPr /> <p:nvPr /> </p:nvGrpSpPr>
Ejemplo de marcado 112 Propiedades de diseo de grupo no visuales

Despus de las propiedades no visuales, se definen las propiedades visuales. Se especifican la posicin y el tamao del diseo de grupo al igual que el rectngulo que cobija todos los diseos derivados. Si usted no define estos elementos, el grupo no se mostrar de manera apropiada. <p:grpSpPr> <a:xfrm> <a:off x="285720" y="428604" /> <a:ext cx="4071966" cy="1209332" /> <a:chOff x="285720" y="428604" /> <a:chExt cx="4071966" cy="1209332" /> </a:xfrm> </p:grpSpPr>
Ejemplo de marcado 113 Propiedades de diseo de grupo visuales

Los ltimos elementos del diseo de grupo son los diseos que yacen al interior del grupo. Estos diseos toman exactamente la misma forma que se vio en la primera parte sobre diseos. A un grupo tambin se le permite contener otros grupos, formando as un rbol de diseos.

96

Elementos de una presentacin bsica

<p:grpSp> <p:nvGrpSpPr></p:nvGrpSpPr> <p:grpSpPr></a:xfrm> </p:grpSpPr> <p:sp><!-- markup omitted --></p:sp> <p:sp><!-- markup omitted --></p:sp> </p:grpSp>
Ejemplo de marcado 114 Un diseo de grupo (abreviado)

Elementos de una presentacin bsica


Ahora que se ha discutido el elemento principal de una presentacin, podemos empezar a juntar los diseos para formar una presentacin. Una presentacin bsica est conformada por cinco partes diferentes: la parte principal de la presentacin, un patrn de diapositiva, un formato, una diapositiva y un tema. El tema es un elemento requerido y lo referencian tanto la parte de la presentacin como el patrn de diapositiva. En cada uno de los niveles del formato para una diapositiva, usted puede crear un rbol de diseos. Este rbol de diseo se forma usando el elemento spTree y est presente en cada uno de los niveles de diapositiva. Puede pensar en el elemento spTree como el grupo del que son parte todos los diseos de una diapositiva, un formato o un patrn. Parte de la diapositiva EL nivel de la hoja de la jerarqua es la diapositiva. Dentro de una diapositiva usted puede crear diseos usando un rbol de diseo. Hay tipos especficos de diseo que usted puede crear. Un ejemplo es que los diseos de marcadores de posicin, los cuales se analizarn ms adelante, no se permiten en el nivel de la diapositiva. Para crear una diapositiva en el paquete PresentationML, use el siguiente tipo de contenido y tipo de relacin. Tipo de contenido para diapositiva application/vnd.openxmlformats-officedocument.PresentationML.slide+xml Tipo de relacin para diapositiva http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide El contenido de la diapositiva se inicia con el elemento sld. No hay muchas cosas que usted debe almacenar. Primero se crea el rbol de diseo dentro de los datos de la diapositiva comn, o la cSld. El elemento del rbol de diseo usa los mismos dos nodos de propiedades, el visual y el no visual, como el diseo de grupo. Los diseos al interior del rbol han sido abreviados.
<p:sld> <p:cSld> <p:spTree> <p:nvGrpSpPr> <p:cNvPr id="1" name="" /> <p:cNvGrpSpPr /> <p:nvPr /> </p:nvGrpSpPr> <p:grpSpPr /> <p:sp><!-- The first shape in the slide --></p:sp>'

Figura 28 Una presentacin bsica

97

PresentationML

<p:sp><!-- The second shape in the slide --></p:sp> </p:spTree> </p:cSld> </p:sld>
Ejemplo de marcado 115 Diapositiva

Parte del formato de la diapositiva Al igual que la parte de la diapositiva, la parte del formato de la diapositiva define un rbol de diseo que contiene los elementos de la diapositiva. EL resultado que se ve en la pantalla es una combinacin de estos elementos junto con los que se definieron en el nivel de la diapositiva y el nivel del patrn. Ya que usted define un rbol de diseos completamente nuevo, no puede tener acceso a los diseos en los otros niveles. Usted no puede agrupar los diseos en el nivel de la diapositiva y el formato, por ejemplo. Hay una coas que puede hacer para relacionar los diseos. Usted puede crear un marcador de posicin en el nivel de formato o en el nivel de patrn y relacionar un diseo en el nivel de diapositiva con ese marcador de posicin. El siguiente ejemplo de marcado muestra un formato sencillo de diapositiva vaco. Los marcadores de posicin se analizarn ms adelante en este captulo. Al igual que para el patrn, usted puede definir varias configuraciones tales como el fondo o agregar elementos al rbol de diseo. A diferencia de la diapositiva de ttulo, una diapositiva de formato puede tener marcadores de posicin personalizados para definir regiones del contenido para la diapositiva. La manera como se forma este rbol de diseo desde los marcadores de posicin hasta el contenido de la diapositiva se analizan en el siguiente captulo.
<p:sldLayout xmlns:a="http://.../drawingml/2006/main" xmlns:r="http://.../officeDocument/2006/relationships" xmlns:p="http://.../PresentationML/2006/main"> <p:cSld name="Title Slide"> <p:spTree> <p:nvGrpSpPr> <p:cNvPr id="1" name="" /> <p:cNvGrpSpPr /> <p:nvPr /> </p:nvGrpSpPr> <p:grpSpPr /> </p:spTree> </p:cSld> </p:sldLayout>
Ejemplo de marcado 116 Formato de la diapositiva

Parte del patrn de diapositivas El patrn de diapositivas constituye la raz de los elementos que componen una diapositiva. Tambin contiene un rbol de diseo. Adems del elemento de rbol de diseo, debe definir otras cuantas piezas del contenido para formar un patrn correcto. Nuevamente, el rbol de diseo es exactamente igual a los rboles de diseo anteriores. Los datos de la diapositiva comn no necesitan otros datos derivados, por eso el contenido ha sido abreviado para centrar la atencin en los otros contenidos del patrn.
Figura 29 Jerarqua de diapositiva a patrn

La primera diferencia es el uso del elemento clrMap para mapear los colores usados en la diapositiva con los colores de la parte del tema. Los valores referencian los nombres de los colores del tema.

98

Elementos de una presentacin bsica

La segunda diferencia es la adicin de una lista de formatos de diapositivas. Esta lista se guarda en el patrn de diapositiva para poder clasificar los formatos. El valor de ID tiene que ser nico y el ID de la relacin apunta a la parte del formato.
<p:sldMaster xmlns:a="http://.../drawingml/2006/main" xmlns:r="http://.../officeDocument/2006/relationships" xmlns:p="http://.../PresentationML/2006/main"> <p:cSld><!-- The shape tree has been omitted --></p:cSld> <p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink" /> <p:sldLayoutIdLst> <p:sldLayoutId id="2147483649" r:id="rId1" /> </p:sldLayoutIdLst> </p:sldMaster>
Ejemplo de marcado 117 Patrn de diapositiva

Parte del tema A continuacin se analiza la parte de los temas referenciada por la parte de las diapositivas de ttulo y la parte principal de la presentacin. El contenido de esta parte se explica ms en detalle en el captulo 4. El contenido que se muestra abajo es una versin reducida del contenido de la parte de los temas.
<a:theme xmlns:a="http://.../drawingml/2006/main" name="Office Theme"> <a:themeElements> <a:clrScheme/> <a:fontScheme/> <a:fmtScheme/> </a:themeElements> <a:objectDefaults /> <a:extraClrSchemeLst /> </a:theme>
Ejemplo de marcado 118 Generalidades de los elementos de los temas

Parte de la presentacin La parte final para ensamblar la presentacin es la parte principal de la presentacin. Esta parte es la parte de inicio del documento. El elemento clave es el elemento presentation.
<?xml version="1.0" encoding="utf-16" standalone="yes"?> <p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/PresentationML/2006/main"> </p:presentation>
Ejemplo de marcado 119 Elemento raz de la parte de la presentacin

El elemento presentation contiene dos listas, una para los patrones de diapositivas y la otra para las diapositivas, la cual se usa para clasificar estos elementos de presentacin en el consumidor.
<p:sldMasterIdLst>

99

PresentationML

<p:sldMasterId id="2147483648" r:id="rId1" /> </p:sldMasterIdLst>


Ejemplo de marcado 120 Lista de ID del patrn de diapositiva

Adems de contener los patrones, la parte de la presentacin tambin posee todas las diapositivas en la presentacin. Una lista de todas las diapositivas se guarda en la parte de la presentacin.
<p:sldIdLst> <p:sldId id="256" r:id="rId2" /> <p:sldId id="257" r:id="rId3" /> <p:sldId id="258" r:id="rId4" /> </p:sldIdLst>
Ejemplo de marcado 121 Lista de ID de diapositiva

La parte final de la parte de la presentacin la forma el tamao de la diapositiva. Tambin debe especificar el tamao de las diapositivas de notas. Las diapositivas de notas se usan para proporcionar notas al pie de pgina para cada diapositiva individual. El tamao se mide en EMU (English Metric Unit) (Unidad Mtrica Inglesa). Esta unidad de medida se analiza en el primer anexo.

<p:sldSz cx="9144000" cy="6858000" /> <p:notesSz cx="6858000" cy="9144000" />


Ejemplo de marcado 122 Tamaos de las diapositivas

La parte completa de la presentacin toma el siguiente marcado.


<?xml version="1.0" encoding="utf-16" standalone="yes"?> <p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/PresentationML/2006/main"> <p:sldMasterIdLst> <p:sldMasterId id="2147483648" r:id="rId1" /> </p:sldMasterIdLst> <p:sldIdLst> <p:sldId id="256" r:id="rId2" /> <p:sldId id="257" r:id="rId3" /> <p:sldId id="258" r:id="rId4" /> </p:sldIdLst> <p:sldSz cx="9144000" cy="6858000" /> <p:notesSz cx="6858000" cy="9144000" /> </p:presentation>
Ejemplo de marcado 123 La parte de la presentacin

Marcadores de posicin
Hasta ahora slo se han adicionado unos cuantos diseos al rbol de diseo en el nivel de diapositivas. Aunque esto le permite crear un conjunto sencillo de diapositivas, un conjunto normal consta del contenido definido en el nivel de patrn y formato y dicho conjunto se llena en el nivel de diapositivas. Esto se logra usando marcadores de posicin y cada diseo normal sp puede ser un marcador de posicin o proporcionar el contenido para uno. Un marcador de posicin se define usando un tipo de marcador incorporado tales como el marcador de posicin del 100

Marcadores de posicin

ttulo o usando un valor de identificacin personalizado. El uso de los tipos incorporados permite que la presentacin sea porttil en todos los conjuntos de diapositivas. La tabla en la pgina siguiente muestra los tipos de marcadores de posicin y dnde puede utilizarlos. Un marcador de posicin se puede crear en el nivel de formato o el nivel de patrn. Un marcador de posicin en el nivel de patrn se puede llenar con contenido en el nivel de formato. Las diapositivas no tienen acceso a los marcadores de posicin en el patrn directamente. La diapositiva usa los marcadores de posicin que se definen en la parte del formato. Un marcador de posicin en la parte del formato puede ser amarrado a un marcador de posicin similar en la parte del patrn. Esto da una jerarqua de tres niveles para la definicin del diseo. Se puede definir un marcador de posicin sin necesidad de dar formato a la patrn de diapositivas, se puede formatear con un borde en el nivel de formato y se puede llenar con texto en el nivel de diapositivas. Lo anterior involucrara tres elementos de diseo, uno en cada nivel. Patrn Formato Diapositiva

Marcador de Posicin

Patrn Diapositiva

Patrn Notas

Patrn Ayudas

Formato Diapositiva

Diapositiva

Notas Diapositiva

cuerpo x x x x x grfica x x clipart x x ttulo centrado x x diagrama x x fecha hora x x x x x x pie de pgina x x x x x x encabezado x x x medio x x objeto x x dibujo x x imagen diapositiva x x nmero diapositiva x x x x x x subttulo x x tabla x x ttulo x x x Para crear esta jerarqua, se usan los electos del diseo normal con una propiedad adicionada. Cada elemento de diseo se encuentra en la parte de propiedades no visuales descrita anteriormente. A continuacin se muestra en el ejemplo. El diseo est reducido al mnimo para que la atencin se centre en la seccin de propiedades. No hay cuerpo de texto o propiedad visual definidos.
<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="TextShape" /> <p:cNvSpPr /> <p:nvPr /> </p:nvSpPr> <p:spPr />

</p:sp>
Ejemplo de marcado 124 Estructura del diseo

101

PresentationML

El elemento nvPr est vaco, pero eso cambiar cuando se usen los marcadores de posicin. Al interior de este elemento usted usa el elemento ph para identificar el diseo como un marcador de posicin. El efecto de la aplicacin de este elemento difiere segn el nivel en la jerarqua Cuando usted usa la propiedad marcador de posicin en el nivel de diapositivas, la propiedad identifica el diseo de marcador de posicin en el nivel de formato al que est amarrado. Usted no puede definir nuevos marcadores de posicin en el nivel de diapositivas porque este es el ltimo nivel de la jerarqua. El diseo de marcador de posicin en el nivel de formato es referenciado segn el ID o tipo. El siguiente ejemplo de marcado muestra cmo referenciar un marcador de posicin en el nivel de diapositivas usando un valor de identificacin. El tipo no necesita ser especificado, as que se usa el tipo genrico body.

Formato

Diapositiva

<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="MyTitleShape" /> <p:cNvSpPr /> <p:nvPr> <p:ph type="body" idx="1" /> </p:nvPr> </p:nvSpPr> <p:spPr />

<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="MyTitleShape" /> <p:cNvSpPr /> <p:nvPr> <p:ph type="body" idx="1" /> </p:nvPr> </p:nvSpPr> <p:spPr />

</p:sp>

</p:sp>

Tabla 6 Anexin de un diseo de nivel de diapositivas a un marcador de posicin en el nivel de formato

En el nivel de formato se usa el elemento ph para definir nuevos marcadores de posicin. Estos marcadores de posicin pueden ser nuevos o estar amarrados a los marcadores de posicin en el nivel de patrn, lo cual crea una jerarqua de tres niveles. Patrn Formato

<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="MyShape" /> <p:cNvSpPr /> <p:nvPr> <p:ph type="body" idx="1" /> </p:nvPr> </p:nvSpPr> <p:spPr />

<p:sp> <p:nvSpPr> <p:cNvPr id="1" name="MyShape" /> <p:cNvSpPr /> <p:nvPr> <p:ph type="body" idx="1" /> </p:nvPr> </p:nvSpPr> <p:spPr />

</p:sp>

</p:sp>

Tabla 7 Anexin de un diseo de nivel de formato a un marcador de nivel de patrn

Imgenes
Si bien es posible crear una imagen en una diapositiva usando el elemento diseo un llenado de objeto de tamao binario, tambin existe un elemento separado para crear fotos. Al igual que para el diseo, usted puede establecer varios bordes y efectos DrawingML, pero adicionalmente hay varias configuraciones especficas para fotos que se 102

Tablas, grficos y diagramas

pueden aplicar. Una foto permite que se modifique el contraste y el brillo, igual que le permite especificar una capa extra de color para modificar la foto final que se muestra en la pantalla. Una foto tambin proporciona comandos relacionados con la foto en la interfaz de usuario de PowerPoint. En realidad hay muy poca diferencia entre una foto y un diseo que contiene un llenado basado en una foto. La principal diferencia radica en el hecho que es casi seguro que el consumidor bloquear los cambios de ratio de aspecto por defecto en las fotos, mientras que esto no sucede cuando se usan diseos.
<p:pic> <p:nvPicPr>...</p:nvPicPr> <p:blipFill> <a:blip r:embed="rId2" /> </p:blipFill> <p:spPr> <a:xfrm> <a:off x="762000" y="571500" /> <a:ext cx="7620000" cy="5715000" /> </a:xfrm> <a:prstGeom prst="rect" /> </p:spPr> </p:pic>
Ejemplo de marcado 125 Imagen

Para crear una imagen, agregue un nodo pic al rbol de diseo. El elemento foto exige la adicin de los elementos de propiedades visuales y no visuales, un estilo opcional y la referencia necesaria para la foto que se va a mostrar. La imagen se almacena por separado en el paquete usando una relacin. El valor de identificacin de esta relacin se usa para referirse a la imagen. Hay dos formas de referirse a la imagen. La imagen se puede almacenar interna o externamente, por fuera del paquete. El atributo embed (incrustrar) indica que la imagen se almacen internamente. El atributo link (vnculo) se usa para referencias externas. Ambos atributos usan la identificacin de relacin como datos para la referencia. En el captulo sobre DrawingML se pueden encontrar ms detalles sobre cmo dar estilo a esta imagen.

Tablas, grficos y diagramas


Adems de los diseos y las fotos que hemos visto hasta ahora, el rbol de diseo puede contener otros varios tipos de elementos tales como tablas, grficos y diseos (tambin conocidos como smart-art). La manera como funciona es un poco diferente del enfoque que se asume para los diseos y las fotos. El marcado para estos tres elementos no se define al interior de los espacios de nombres de PresentationML, sino que en vez de ello se usa DrawingML Esto se tambin se usa para las partes de diseos y fotos. Los detalles sobre la estructura de tablas, grficos y diagramas se analizan en el captulo 4, el cual se estudia DrawingML. La manera como se inserta en el rbol de diseo toma una forma genrica para todos los elementos, especfica para PresentationML, pero similar a la forma como los otros lenguajes insertan el marcado de DrawingML. Usan un elemento contenedor genrico.
A B C

Take step 1 Next do step 2 Finish with 3

Lo interesante acerca del uso del marcado de DrawingML para la implementacin de grficos y diagramas es que se puede reutilizar en todos los lenguajes de marcado. Usted puede incrustar un grfico o un diagrama DrawingML 103

PresentationML

en el lenguaje que usted elija, usando exactamente el mismo marcado para definir el contenido. La utilizacin de DrawingML tambin permite el uso efectos ricos tales como el reflejo de una tabla o la vista en 3D de un grfico.
<p:graphicFrame> <p:nvGraphicFramePr /> <p:xfrm /> <a:graphic> <a:graphicData uri=http://.../drawingml/2006/ Table> <!-- elements of the Table --> </a:graphicData> </a:graphic> </p:graphicFrame>
Ejemplo de marcado 126 Ambiente grfico de tablas

El contenedor genrico para PresentationML sigue el modelo visible en el ejemplo de marcado 126. En vez de definir contenidos tales como una tabla directamente en el rbol de diseo, hay un contenedor genrico llamado graphicFrame. Este ambiente grfico se puede usar para definir contenidos arbitrarios, tales como los elementos DrawingML discutidos en este captulo. Los esquemas ECMA permiten cualquier tipo de contenidos XML en un graphicFrame pero la aplicacin necesita entender el contenido para poder abrir con xito el documento. Para identificar este contenido, el ambiente grfico usa un atributo en el graphicData interno. Con el uso del atributo uri usted direcciona al tipo de de contenido almacenado en el elemento graphicData. Cada editor habilitado de Open XML podra definir sus propios tipos de contenidos especficos para la plataforma. Microsoft Office System 2007 permite una lista especfica de valores uri vlidos, los cuales todos referencian un espacio de nombre DrawingML. http://schemas.openxmlformats.org/drawingml/2006/chart http://schemas.openxmlformats.org/drawingml/2006/compatibility http://schemas.openxmlformats.org/drawingml/2006/diagram http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas http://schemas.openxmlformats.org/drawingml/2006/picture http://schemas.openxmlformats.org/drawingml/2006/table http://schemas.openxmlformats.org/drawingml/2006/ole
Figura 30 Valores URI edificadores de contenido disponibles

104

Tablas, grficos y diagramas

El nico contenido real que se define directamente dentro del ambiente grfico son los detalles tales como el identificador y el nombre del ambiente, el tamao del ambiente y la informacin sobre si est atado al marcador de posicin en la parte del formato. El Ejemplo de marcado 127 muestra las propiedades de un ambiente grfico utilizado para amarrar el ambiente a un marcador de posicin indexado y para deshabilitar el agrupamiento y definicin del tamao del ambiente dentro del editor. El marcador de posicin es del tipo table.
<p:nvGraphicFramePr> <p:cNvPr id="6" name="Content Placeholder 5" /> <p:cNvGraphicFramePr> <a:graphicFrameLocks noGrp="1" noResize="1" /> </p:cNvGraphicFramePr> <p:nvPr> <p:ph idx="1" /> </p:nvPr> </p:nvGraphicFramePr>
Ejemplo de marcado 127. Configuracin de las propiedades del ambiente grfico

En el prximo captulo sobre DrawingML se analizan con ms profundidad los varios tipos de contenido para el ambiente grfico.

105

Captulo 4

DrawingML
Aprender a crear texto y listas Aprender a cerca de bordes, geometra y rellenos grficos Aprender sobre efectos 2D y 3D Aprender sobre tablas y grficos de DrawingML Aprender sobre definicin de temas

Introduccin
DrawingML es el lenguaje para definir los contenidos grficos en Open XML. Aunque algunas partes de las especificaciones toman como referencia el legado de Vector Markup Language (Lenguaje de Marcado de Vector), DrawingML proporciona el mismo conjunto de caractersticas con muchas cosas extra. DrawingML permite el uso de un ambiente 3D para mostrar grficos, lo cual le da a usted la habilidad para tomar fotos como la que se muestra en la figura 31, y de enriquecerla adicionndole bordes, reflejndola en un superficie virtual y movindola hacia los lados para darle la apariencia de que est parada. Todos estos efectos se pueden aplicar a los grficos y muchos de ellos tambin al texto, lo cual permite gran versatilidad. En el fondo, se est usando un motor DirectX en Microsoft Office para hacer posible estas caractersticas para todos los grficos personalizados. La mayora de los efectos no son en realidad tan extraos comparados el impresionante conjunto de caractersticas de los motores relacionados con los juegos en 3D. .

Figura 31 Algunas de las capacidades de DrawingML

Hay varios elementos en DrawingML que requieren cierto anlisis. En primer lugar, se analizarn las capacidades de DrawingML para manejar texto. El prximo tem en la lista es la aplicacin de grficos y por ltimo la adicin de efectos como se puede ver en la foto anterior. Estos efectos se pueden luego aplicar a las grficas de DrawingML que se analizan en las tres secciones siguientes sobre tablas, grficos y diagramas.

Texto
La manera como usted crea texto usando el marcador DrawingML es similar a WordprocessingML. Hay un elemento para enunciar un prrafo, el cual est conformado por ejecuciones, las cuales a su vez contienen otras caractersticas de formato. El prrafo en s es usado por otros varios elementos del lenguaje, que almacenan prrafos en su contenedor especfico de lenguaje. Un ejemplo es el diseo de texto de PresentationML que se 106

Texto

analiz en el captulo anterior. Usa el elemento txBody como el contenedor especfico de lenguaje para almacenar el texto DrawingML.

<p:txBody> <a:bodyPr /> <a:p> <a:r> <a:t>Your text here!</a:t> </a:r> </a:p> </p:txBody>
Ejemplo de marcado 128 Contenedor de PresentationML para texto DrawingML

Al interior del contenedor se usan varias configuraciones DrawingML para definir el formato de texto. Usted puede aplicar estas configuraciones en el nivel de contenedor, prrafo y sangra. En el nivel de contenedor, usted puede crear configuraciones como las configuraciones 3D que se analizarn ms adelante en este captulo. Los efectos de tipo Word-Art, los cuales se volvieron obsoletos con DrawingML, tambin se pueden aplicar en este nivel. Las propiedades en el nivel de prrafo almacenan informacin como mrgenes o alineacin del texto en el prrafo. Por ltimo, las propiedades sangra se usan para almacenar configuraciones tales como texto en negrilla o itlica. La sangra es el tem de nivel ms bajo al cual aplicarle formato. Para crear un slo prrafo en el cual una palabra en el medio est en negrilla, necesitar al menos tres sangras. Aplicacin de formato al texto El formato del texto permite diseos bastante complicados. Adems de las opciones de formato normal tales como itlica, usted puede usar extensiones de las caractersticas de DrawingML tales como transformaciones 3D, reflejo y brillo. Para ilustrar el poder del modelo de texto de DrawingML, la Figura 31 muestra la letra normal A, usando la fuente Brush Script MT (es tan slo una fuente al azar) con relleno degradado, con formato y reflejo. La imagen de la derecha es la misma letra A a la que se le aplic un efecto 3D rugoso y ligeramente rotada. La nocin bsica para el relleno de un texto usa los mismos principios que se analizarn en la prxima parte sobre grficos. Las transformaciones 3D se analizarn ms adelante en este captulo.

Figura 32 texto basado en DrawingML

Lo ltimo para mencionar con respecto al texto basado en DrawingML es el uso de opciones de formato normal como texto en negrilla o itlica. El modelo es un poco diferente de WordprocessingML, atributos en vez de elementos.
<a:p> <a:r> <a:rPr b="1" /> <a:t>a</a:t> </a:r> <a:r> <a:rPr sz="2800" i="1"> <a:latin typeface="Arial" /> </a:rPr> <a:t>b</a:t> </a:r> <a:r> <a:rPr u="sng" />

107

DrawingML

<a:t>c</a:t> </a:r> <a:endParaRPr /> </a:p>


Ejemplo de marcado 129 Formateo directo del texto

Listas con vietas Para crear una lista de tems con vietas, en vez en vez de un texto sencillo, basta agregar una propiedad extra al prrafo. Al igual que en WordprocessingML, el elemento pPr se usa para definir ese prrafo como parte de una lista. Cada elemento en una lista con vietas se define usando un prrafo. Donde WordprocessingML usa una parte separada para almacenar la informacin de numeracin, en PresentationML esta informacin se almacena en el elemento contenedor mismo. Hay varias formas en la cuales se puede especificar el tipo de lista que se debe usar. El Ejemplo de marcado 130 muestra cmo usar el formateo directo bsico. El elemento buChar define el caracter que se debe usar para la vieta. Otras opciones de formateo directo incluyen la fuente de la vieta, el tamao de la vieta y el espaciado alrededor de la vieta.
<p:txBody> <a:bodyPr /> <a:p> <a:pPr lvl="0"> <a:buChar char="" /> </a:pPr> <a:r> <a:t>Level 0 text</a:t> </a:r> </a:p> <a:p> <a:pPr lvl="1"> <a:buChar char="" /> </a:pPr> <a:r> <a:t>Level 1 text</a:t> </a:r> <a:endParaRPr /> </a:p> </p:txBody>
Ejemplo de marcado 130 Listas con vietas

Hay varias formas en la cuales usted puede definir el tipo de vieta que se debe usar. El ejemplo muestra cmo usar el carcter vieta utilizando el elemento buChar. La vieta de foto se crea con el elemento buBlip y por ltimo, la lista numerada se crea con buAutoNum. En la seccin sobre grficos de DrawingML se analiza cmo almacenar y usar un BLIP. Listas numeradas Para las listas auto numeradas necesita adicionar el elemento buAutoNum y especificar el tipo de numeracin que se debe usar. Usted puede escoger entre los distintos estilos de numeracin incorporados tales como a...z o 1...9, pero tambin estn disponibles otros formatos de todo el mundo. La manera como la numeracin funciona es que todos los prrafos a los que se le aplica el mismo estilo de numeracin y que son sucesivos, son parte del mismo grupo de numeracin. El grupo de numeracin asegurar que a cada prrafo que contiene se le aplique un nmero nico y secuencial. Cuando uno de estos prrafos est vaco, no incrementa el nmero de conteo, pero an es parte del grupo de numeracin. Un prrafo al que no se le aplique ningn estilo de numeracin rompe el grupo de numeracin, al igual que lo rompe el cambio en el estilo de 108

Texto

numeracin. La prxima vez que se utilice nuevamente un estilo de numeracin que ya se haba usado, volver a comenzar a contar desde cero. El marcado que se muestra en el ejemplo de marcado 131 se usa para crear la lista a partir del mensaje. Para crear la brecha entre los tems numerados hay un prrafo sin ninguna sangra, pero que tiene el mismo tipo de numeracin que se le aplico al prrafo predecesor. El ltimo prrafo usa tipo de nmero diferente y tiene la numeracin reiniciada a partir del primer valor en adelante.

<a:p> <a:pPr> <a:buAutoNum type="arabicPeriod" /> </a:pPr> <a:r>...</a:r> <a:endParaRPr /> </a:p> <a:p> <a:pPr> <a:buAutoNum type="arabicPeriod" /> </a:pPr> <a:r>...</a:r> </a:p> <a:p> <a:pPr> <a:buAutoNum type="arabicPeriod" /> </a:pPr> <!-- EMPTY --> <a:endParaRPr /> </a:p> <a:p> <a:pPr> <a:buAutoNum type="arabicPeriod" /> </a:pPr> <a:r>...</a:r> <a:endParaRPr /> </a:p> <a:p> <a:pPr> <a:buAutoNum type="romanLcPeriod" /> </a:pPr> <a:r>...</a:r> <a:endParaRPr /> </a:p>
Ejemplo de marcado 131 Listas numeradas con un salto en la numeracin

Para crear los diferentes niveles de numeracin, usted define el nivel usando el atributo lvl en las propiedades de prrafo tal y como se puede ver en el ejemplo de marcado 130. Cada nuevo nivel de numeracin reinicia el conteo de desde 1 y el resto de la regla aplica para cada uno de los subniveles tambin. Es posible crear niveles numerados dentro de niveles sin numeracin y viceversa. Usando el atributo lvl usted tambin puede mover las configuraciones para el prrafo hacia el elemento estilo de lista o lstStyle. Este elemento se almacena dentro del elemento contenedor. Usando el estilo de lista, usted puede aplicar las configuraciones para cada una de los nueve niveles disponibles usando los elementos mencionados tales como lvl1pPr y lvl2pPr. Cuando se presenta un conflicto entre las propiedades definidas dentro del elemento estilo de lista y las propiedades directas que se aplican al prrafo, las propiedades directas priman. La especificacin Open XML se refiere a esto como 'estar ms cerca al contenido de texto real. 109

DrawingML

Grficos
Adems del texto, DrawingML es altamente experto para la creacin de diseos basados en vectores personalizados. Estos diseos pueden tener varios efectos aplicados para enriquecer la vista final en el consumidor. Estos efectos incluyen mover el diseo en espacio 3D o aplicar una sombra y reflejo al diseo. Una de las cosas interesantes es que todos los efectos se pueden aplicar a la mayora de los tipos de contenido definidos con el uso del marcado DrawingML tales como diseos, tablas y grficos.
Figura 33 Ejemplo de grfico

DrawingML proporciona un rango extremadamente elaborado de marcado que no se puede explicar completamente. En este libro la atencin se centra en cmo aplicar los efectos por defecto a los distintos diseos tales como una tabla, los cuales tal vez un libro sobre DrawingML especficamente desarrollar posteriormente. Hay varios elementos en DrawingML que requieren mayor anlisis. Los primeros aspectos que se mirar son la geometra de un grfico DrawingML y las diversas propiedades que rodean a la geometra tales como la lnea y el estilo de relleno. Ms adelante en esta seccin, se analiza ms a fondo el formato de un diseo en el espacio 3D de DrawingML con los efectos aplicables a este ambiente 3D. Todos los diseos de muestra que se presentan en esta seccin se derivan del diseo visible en la esquina superior derecha de esta seccin. La geometra del grfico La primera cosa que usted podra notar con respecto al diseo de muestra son las esquinas redondeadas. Cuando se redefina el tamao de este diseo, las esquinas seguirn igual de redondeadas a como estn ahora. En el fondo, se est usando el marcado de vector para definir la geometra de este diseo. El diseo de muestra usa la geometra predeterminada 'roundRect'. Hay dos tipos de geometras que usted puede crear usando DrawingML: las geometras predeterminadas y las geometras personalizadas. Una geometra personalizada le permite definir exactamente el borde de su diseo utilizando el marcado de vector, las geometra predeterminadas existen para evitarle este trabajo engorroso. Aunque en este libro no se cubrirn las geometras personalizadas, el marcado con geometra predeterminada si se explicar. Puesto que las geometras son predeterminadas, requieren poco marcado para definirlas.

<a:prstGeom prst="noSmoking"> <a:avLst /> </a:prstGeom>


Ejemplo de marcado 132 Cambios en la geometra predeterminada Figura 34 Cambios en la geometra predeterminada

Para convertir la geometra de un diseo en una forma predeterminada, aplique el elemento prstGeom. Hay dos lugares principales donde se usa esto: en los diseos de PresentationML y en las fotos de Open XML. La geometra predeterminada se especifica usando un slo nombre, para el cual se puede encontrar una completa lista de valores en las especificaciones. Esta lista incluye lo bsico como 'rect' para rectngulo, pero igualmente incluye geometras ms complejas como el smbolo 'no' que se muestra en la figura 33. Para crear este smbolo 'no', se usa el marcador XML que se muestra en el ejemplo de marcado 132. En el mismo ejemplo de marcado se muestra el uso del elemento avLst. El elemento avLst define una lista de valores de ajuste. Estos valores se pueden usar luego para ajustar algunas propiedades del diseo. En el fondo se est calculando la geometra real al instante, usando las configuraciones por defecto y aplicando conjuntamente los valores de ajuste. En la figura 35 se puede ver un ejemplo de para qu se usa el avLst. Aqu, el diseo de muestra original (el rectngulo redondeado) usa la lista de

110

Grficos

valores de ajuste para proporcionar un nuevo valor para la cantidad de redondeo que se debe aplicar a los bordes del rectngulo.
<a:prstGeom prst="roundRect"> <a:avLst> <a:gd name="adj" fmla="val 50000" /> </a:avLst> </a:prstGeom>
Ejemplo de marcado 133 Valores de ajuste para una geometra Figura 35 Geometra con valores de ajuste

El sistema de coordenadas Un grfico DrawingML se ubica sobre una superficie. Para ubicar el grfico sobre la superficie, se necesita especificar la posicin y el tamao del diseo. Usted puede hacerlo utilizando el elemento xfrm (transformar). El rea superior izquierda de la superficie del grfico es la fuente que expande la superficie hacia la parte inferior derecha. Tanto la posicin como el tamao se especifican usando el EMU. El captulo sobre PresentationML contiene ms detalles sobre esta unidad de medida. Otro detalle que usted puede especificar utilizando el elemento xfrm es un giro vertical u horizontal del diseo y la rotacin del grfico sobre la superficie del grfico.
<a:xfrm flipV="1" rot="-2700000"> <a:off x="571472" y="1214422" /> <a:ext cx="1428760" cy="714380" /> </a:xfrm>
Ejemplo de marcado 134 Configuracin del tamao, localizacin y rotacin del diseo Figura 36 Grfico rotado

Especificacin de los colores de DrawingML La geometra de un grfico abarca un rea determinada sobre la superficie del grfico (una diapositiva, una hoja de clculo). Este espacio que el grfico ocupa se puede personalizar ms adelante usando una variedad de configuraciones relacionadas con la aplicacin de y relleno de este grfico. Hay varias opciones de aplicacin de color y relleno para los grficos de DrawingML; tambin hay varios estilos de lneas. Como el estilo de relleno y el estilo de lnea usan colores, es apenas lgico analizar primero como se puede especificar un color en DrawingML. En DrawingML hay varias formas en la cuales usted puede especificar valor de un color. Los suministros desde DrawingML incluyen algunas denominaciones para colores bien conocidas como RGB y HSL. Adems de los estndares de la industria, DrawingML tambin incluye algunos colores denominados especficos al igual que la posibilidad referenciar un color en un tema. Para los valores RGB, hay formas en las cuales usted puede configurar los componentes del rojo, el verde y el azul. Usted especfica un rango de 0 a 255 para todos los tres componentes usando la denominacin hexadecimal o usa un algoritmo basado en el porcentaje relativo. Cuando se use un rango de valor, el valor 0A141E significar que el color final estar compuesto por diez unidades de rojo, veinte unidades de verde y treinta de azul. El mismo color se podra expresar usando la denominacin basada en el porcentaje. Slo divida los valores para rojo, verde y azul por 255 y multiplique por 1/1000. Los valores para la denominacin basada en porcentaje almacenan la informacin en campos separados con una precisin de 1/1000 por ciento. La denominacin de valor absoluto utiliza el elemento srgbClr mientras que la que se basa en porcentaje usa el elemento scgbClr. EL uso de los valores RGB se hizo popular con el uso de los monitores CTR, los cuales muestran los tres colores principales dentro de cada pixel en su pantalla. Otra forma de expresar los colores es el uso de HSL (hue, saturation y lightness tinte, saturacin y claridad). El uso de HSL es ms intuitivo para los humanos porque nosotros normalmente no identificamos un color como conformado por tres componentes sino que vemos una variacin de 111

DrawingML

un color y su brillo. El tinte identifica un color. La saturacin identifica la profundidad del color. Una saturacin de 0 crea imgenes en escala de grises. La claridad se mueve entre 0 (oscuro y negro) y 100 (blanco y brillante). HSL es convertible a RGB. Cuando se usa HSL, el tinte se especifica en 1/60000 grados y la saturacin y la claridad en 1/1000 por ciento. Por eso a un tinte de 250 grados en realidad se le referira como el valor 15.000.000 (15 millones). El elemento hslClr permite el uso de la definicin de color basado en HSL.
<!-- Percentage based RGB --> <a:scrgbClr r="10000" g="20000" b="30000" /> <!-- Absolute RGB --> <a:srgbClr val="597C95" /> <!-- Absolute HSL --> <a:hslClr hue="12300000" sat="23500" lum="46700" /> <!-- System Colors --> <a:sysClr val="windowText" /> <!-- Preset Colors --> <a:prstClr val="black" /> <!-- Scheme Colors --> <a:schemeClr val="accent1" />
Ejemplo de marcado 135 Modos de color

Al interior de muchos sistemas operativos hay varios nombres predefinidos para los colores, como por ejemplo WindowText'. Estos colores se pueden utilizar con el elemento sysClr. El elemento prstClr se puede usar para los valores de colores predeterminados tales como black o slateGray. Los valores para estos nombres se pueden encontrar en la especificacin de Open XLM. Para proporcionar estilizado fcil y actualizacin del estilo, usted puede usar los temas. Estos temas se cargan en todos los lenguajes Open XML y definen fuentes y colores. El ltimo tipo de color que usted puede usar para dibujar como texto o diseos usa estos colores de tema. El elemento schemeClr se usa para identificar un color de tema denominado. Hay varios nombres de color de tema incorporados y usted no puede agregar nuevos nombres a este conjunto. En el ejemplo de marcado 135 los tres colores superiores, RGB y HSL, representan el mismo color en el consumidor. Los tres ejemplos inferiores usan configuraciones al azar. Los colores permiten que se apliquen varias configuraciones extra, pero los detalles de dichas configuraciones no se analizarn ms a fondo en este libro. Efectos de diseo Uno de los usos de la informacin del color es proporcionar el relleno de color para un diseo. DrawingML proporciona capacidades para el relleno de diseos usando un color especfico o un degradado de color, pero tambin se puede utilizar una imagen especfica. El relleno con una imagen permite en especial efectos bonitos. Tambin existe el tipo de relleno de compatibilidad regresiva usando un patrn especfico. Este tipo ha estado disponible en Microsoft Office para indicar las diferentes regiones en las que la definicin avanzada de color an no estaba disponible.

Figura 37 Diferentes llenados

El primer relleno que se debe examinar es el relleno slido. Este toma un solo color y llena el rea entera definida por un diseo con un solo color. Todos los modelos de color vistos antes se pueden aplicar para proporcionar el color de relleno. El elemento solidFill que se usa para definir este tipo de relleno no requiere configuraciones extra adicionales a esta.

112

Grficos

<a:solidFill> <a:scrgbClr r="10000" g="20000" b="30000" /> </a:solidFill>

Lo que se usa con frecuencia para proporcionar una apariencia menos plana es un relleno degradado. El relleno degradado va de una direccin de un diseo al lado opuesto exacto, de la parte superior izquierda a la parte inferior derecha, por ejemplo. Para crear el degradado usted necesita enunciar las posiciones y los colores que se deban usar en el degradado. Las posiciones de degradado oscilan entre 0 y 100%. Usted especifica este valor en 1/1000 puntos porcentuales. El valor 100.000 representa la ltima posicin posible para la detencin del degradado. Hay otras varias configuraciones que usted puede aplicar a un degradado. Una opcin comn usada es para proporcionar informacin sobre cmo el degradado debera rotar cuando se rota el diseo. El relleno degradado se crea utilizando elemento gradFill. <a:gradFill flip="none" rotWithShape="1"> <a:gsLst> <a:gs pos="0"> <a:prstClr val="white" /> </a:gs> <a:gs pos="100000"> <a:prstClr val="black" /> </a:gs> </a:gsLst> <a:lin ang="0" scaled="1" /> <a:tileRect /> </a:gradFill> El ltimo tipo de relleno que requiere anlisis es el relleno BLIP (Binary Large Image or Picture). Usted usa este tipo de relleno para rellenar un diseo utilizando una imagen. Esta imagen se puede almacenar adentro o afuera del paquete, determinada por una relacin del paquete. Para crear el relleno blip, especifique un elemento blipFill. El contenido es bastante elemental, es slo una referencia a la imagen usando la identificacin de relacin. Para las imgenes que no estn incrustadas, se usa el atributo link. <a:blipFill> <a:blip r:embed="rId1" /> </a:blipFill>

Adems de los rellenos que se han analizado hasta ahora, hay otros dos tipos importantes. En primer lugar, usted puede especificar un noFill para los diseo que no se rellenan. Usted podr ver de las reas no rellenadas hasta los diseos que yacen detrs. El grpFill indica que el diseo recibe su tipo de relleno de un diseo de grupo cuando se encuentra almacenado en uno de ellos. Despus de rellenar el grfico con un relleno especfico, el borde de la geometra tambin se puede realzar. Muchos diseos que usan DrawingML permiten la utilizacin de un elemento ln en las propiedades visuales para almacenar informacin sobre este borde. Usando el elemento lnea usted puede especificar el grosor, estilo de relleno y estilo de lnea para el borde. Usted puede utilizar todos los estilos diferentes de relleno que se han analizado. El estilo de lnea que se usa para la lnea tambin se puede cambiar. Hay varios estilos de lnea incorporados. Usted tambin puede crear patrones personalizados especificando la longitud de cada lnea y espacio.

113

DrawingML

<a:ln> <a:solidFill> <a:prstClr val="green" /> </a:solidFill> <a:prstDash val="dash" />

</a:ln>

Escenas en 3D La superficie plana de dibujo sobre la que estamos trabajando para crear grficos DrawingML, en realidad est localizada dentro de un ambiente 3D. Esto permite que se apliquen varios efectos agradables a los diseos, tales como vista en 3D para los grficos DrawingML. Para proporcionar una escena en 3D correctamente usando cualquier ambiente de motor 3D, hay configuraciones extra que se deben aplicar antes de que se pueda ver la foto final. Lo que usted ve cuando se usa DrawingML en un consumidor, es una vista de este mundo en 3D tomado de alguna posicin en el espacio 3D. La posicin se define usando una cmara, la cual apunta hacia un determinado punto dentro de la escena. La foto final se toma de esta cmara y se muestra como una imagen plana en la pantalla. Igual que en la vida real, se necesita que haya luz para poder ver algo. Sin la iluminacin, usted slo vera un ambiente oscuro y negro. Por eso, las primeras cosas que se deben aplicar son la posicin de la cmara y la direccin de la luz. Usted no necesita enfocar la cmara hacia ningn lado, DrawingML lo hace por usted.

<a:scene3d> <a:camera prst="isometricOffAxis2Right" /> <a:lightRig rig="threePt" dir="t" /> </a:scene3d>


Ejemplo de marcado 136 Movimiento de la cmara en un espacio 3D

Para configurar la cmara y la iluminacin para las escenas en 3D, use el elemento scene3D. La cmara se puede mover usando dos modos: uno predeterminado por defecto como por ejemplo isometricOffAxis2Right o especificando manualmente la posicin de la cmara usando los valores de latitud y longitud. Algo extra que usted puede hacer para configurar una cmara es usar el factor de campo de visin y de zoom. El campo de visin es el ngulo al cual la cmara puede ver. Un humano norman ve en forma de un campo de visin de cerca de 80 grados, pero slo los 5 primeros grados definen el rea donde podemos ver con agudeza. Tan importante como la posicin de la cmara es la configuracin de la luz. Hay un nmero de tipos de iluminacin incorporados, piense en ellos como la configuracin de una cabina fotogrfica. Usted no puede agregar nuevos tipos de luz (como por ejemplo crear una luz que brille usando un color rojo) o proporcionar la posicin precisa de la luz en la escena en 3D. En vez de eso, usted puede escoger de los tipos predeterminados descritos en la especificacin ECMA. Hay un tercer aspecto sobre la definicin de la escena en 3D en DrawingML. Usted puede especificar cmo se crea el fondo. El fondo se usa como la capa en la cual se proyectan los efectos en 2D, como por ejemplo las sombras. Un efecto que se puede utilizar para visualizar cmo funciona esto se puede ver en la figura 37. Aqu la foto parece desprenderse de la superficie porque el fondo ha sido inclinado ligeramente. Para este efecto en realidad no se usa el fondo, pero s ilustra lo que el fondo hace en la escena.

Figura 38 Cambios en el fondo en 3D

114

Grficos Efectos en 3D Ahora que un grfico se encuentra en realidad ubicado dentro del espacio en 3D, es mejor que usemos las caractersticas que proporciona el motor de creacin de 3D. Varios efectos que son comunes en los juegos en 3D por ejemplo tambin se pueden aplicar a un grfico creado con el uso de DrawingML. Las configuraciones del grfico incluyen cambios en el material del que el grfico est hecho. El material funciona con las configuraciones de iluminacin, reflejndolo como en la vida real. Usted puede crear diferentes tipos de superficies y hacer que todas reflejen la luz de manera distinta, una superficie brillante o una muy difusa. Otro problema con un grfico plano ubicado en un mundo en 3D es que no tiene profundidad. Para solucionar este problema, usted puede aplicar una profundidad personalizada a un grfico o usar bordes biselados para simular profundidad. Las configuraciones de los grficos en 3D, definidos con el elemento sp3D, se utilizan para especificar las configuraciones grficas de 3D especficas. El material se aplica tanto aqu como en los bordes biselados. Las tres imgenes de muestra siguientes muestran el uso de una extrusin para simular la profundidad para el grfico. Cmo usar el contorno para darle los bordes al diseo con algo que quiz se pueda describir como una banda elstica que se arrastra alrededor del grfico y el uso de un borde biselado. Todas las muestras usan el mismo grfico inicial que se muestra al comienzo de este captulo. A ellos se les ha aplicado rotacin para hacer los efectos ms visibles.

Figura 39 Configuraciones en 3D del diseo aplicadas

Usted tambin puede combinar todos estos efectos. El siguiente marcado muestra lo que se necesita aplicar a las propiedades de 3D del diseo.
<a:sp3d prstMaterial="softEdge" extrusionH="412750" contourW="82550" > <a:bevelT /> <a:extrusionClr> <a:srgbClr val="FF0000" /> </a:extrusionClr> <a:contourClr> <a:srgbClr val="92D050" /> </a:contourClr>

</a:sp3d>
Ejemplo de marcado 137 Configuraciones de 3D especficas para el diseo

El segundo elemento que almacena datos relacionados con la 3D se usa para darle los efectos al diseo. Para aplicar un efecto de 3D a sus diseos se utiliza una lista de efectos. Esta lista se encuentra disponible en los elementos como diseos, fotos, tablas y grficos. Hay un nmero fijo de efectos primitivos en esta lista que se puedes personalizar en cierto modo para crear un conjunto ms amplio de efectos finales. Este libro detalla el uso 115

DrawingML

de efectos de brillo, sombra, reflejo y de borde suave. Todos estos efectos estn definidos dentro de un elemento contenedor similar a sp3d, el elemento effectLst.
<a:effectLst> <a:outerShdw blurRad="76200" dir="18900000" sy="23000" kx="-1200000" algn="bl" rotWithShape="0"> <a:prstClr val="black"> <a:alpha val="20000" /> </a:prstClr> </a:outerShdw> </a:effectLst> <a:effectLst> <a:reflection blurRad="6350" stA="52000" endA="300" endPos="35000" dir="5400000" sy="-100000" algn="bl" rotWithShape="0" /> </a:effectLst>

<a:effectLst> <a:softEdge rad="63500" /> </a:effectLst>

<a:effectLst> <a:glow rad="101600"> <a:srgbClr val="FF0000"> <a:alpha val="60000" /> </a:srgbClr> </a:glow> </a:effectLst>

La siguiente tabla muestra los efectos que pueden aplicarse a las componentes de PresentationML.

116

Tablas Shape sp Rotacin en 2D Transformacin de Textos Sombras Reflejos Brillo Bordes Suaves Bisel Rotacin en 3D Picture pic Text txBody Table tbl Chart chart

x x x x x x x

x x x x x x x x x x x x x x x x

Tablas
Una de las cosas interesantes que puede definir usando DrawingML es una tabla. La razn por la cual esto es interesante es que se le pueden aplicar algunos de los efectos de forma de DrawingML sobre las tablas enteras o sobre celdas individuales de la tabla. Este modelo de tablas lo utiliza PresentationML para facilitar el uso de dichas tablas enriquecidas. Existen en realidad tres modelos de tabla definidos dentro del contexto de Open XML. El primer modelo de tabla se discuti en el captulo acerca de WordprocessingML. Es un modelo optimizado para guardar tablas de documentos, sin la clase rica de efectos en 3D que ofrece DrawingML. El modelo de tabla SpreadsheetML est optimizado para manejar grandes cantidades de datos, pues una hoja de clculo podra, en potencia, contener muchas filas. El modelo de tablas de DrawingML est optimizado para grficas vistosas. Elementos de tabla La tabla misma se crea usando el elemento tbl que reside en el espacio de nombres de DrawingML. El modelo para declarar la estructura de la tabla es similar a WordprocessingML. El elemento de la tabla contiene una definicin de grilla y un conjunto de filas. La definicin de grilla define todas la s columnas virtuales dentro de la tabla. Tmese por ejemplo la siguiente tabla: Aunque cada fila slo contiene dos celdas, cada lnea vertical debe contarse como columna dentro de la definicin de la grilla. Esto dara como resultado cuatro columnas de la grilla para esta tabla de ejemplo pues hay cuatro lneas verticales, menos la primera columna pues no hay que definir la columna inicial. Esto da como resultado una definicin de grilla que define tres columnas.

a:tbl> <a:tblPr firstRow="1" bandRow="1" /> <a:tblGrid> <a:gridCol w="1325565" /> <a:gridCol w="1325565" /> <a:gridCol w="1325565" /> </a:tblGrid> <a:tr h="463019"> <a:tc> <a:txBody /> </a:tc> <a:tc /> <a:tc /> </a:tr>

117

DrawingML

<a:tr h="463019"> <a:tc /> <a:tc /> <a:tc /> </a:tr> </a:tbl>
Ejemplo de marcado 138 Marcado de tablas

Despus de declarar la definicin de grilla de la tabla, se aade una serie de filas. Usted debe definir al menos una fila. Si no, no existira una tabla visible para mostrar en el editor. Las filas, tr, contienen celdas individuales, tc. Este modelo es exactamente igual al de WordprocessingML o incluso HTML. En comparacin con WordprocessingML, a una tabla en DrawingML puede definrsele menos contenido dentro de las celdas de la tabla. Usted slo puede aadirle texto a una celda. La forma en que esto funciona es que el contenedor txBodx se usa para guardar texto basado en DrawingML. Esto permite que cada carcter individual dentro de la tabla pueda ser estilizado usando efectos como por ejemplo el reflejo. Para ms informacin acerca de la definicin de texto basado en DrawingML, lea la seccin en la pgina 106. En el Ejemplo de marcado 138 se muestra una tabla bsica usando tres columnas y dos filas. La grilla de la tabla guarda el ancho de cada columna. No es posible definir esto para cada celda individual. De manera similar a WordprocessingML, una tabla permite unir sus celdas horizontal y verticalmente. Tambin es similar la forma en que cada celda de la tabla slo puede hacer parte de a lo sumo una unin, no se puede unir una celda horizontalmente con su vecino y verticalmente con la celda de abajo al mismo tiempo. A diferencia de WordprocessingML, la unin de celdas no reduce el nmero total de celdas definidas dentro del elemento tr. Una fila PresentationML siempre tiene el mismo nmero de celdas definidas como hay definidas columnas de la grilla dentro de la tabla. Celdas mezcladas La unin de celdas de la tabla vara levemente del modelo usado en WordprocessingML. En WordprocessingML para cada conjunto de celdas unidas horizontalmente, se define un elemento tc menos dentro del marcado de la fila. En DrawingML no ocurre esta reduccin en el nmero total de celdas. A la primera celda del conjunto unido se le aplica un atributo que define que es el inicio de una unin horizontal. Las dems celdas del mismo conjunto unido contienen un atributo que define su estado de hermandad. Las uniones verticales funcionan de manera similar, pero usan diferentes atributos para definir la manera en que se lleva a cabo la unin vertical. No se permite unir una celda horizontal y verticalmente a la vez. El Ejemplo de marcado 139 muestra las propiedades requeridas para unir las celdas horizontal y verticalmente. Una cosa adicional que debe notarse es que el consumidor slo desplegar el contenido de la primera celda del conjunto unido. Las dems celdas pueden guardar contenidos, pero estos no le sern visibles al usuario. Un asunto interesante es que este contenido escondido si puede ser buscado por el usuario.

Mezclas horizontales <a:tr> <a:tc gridSpan=2 /> <a:tc hmerge=true /> </a:tr>

Mezclas Verticales <a:tr> <a:tc rowSpan=2 /> </a:tr> <a:tr> <a:tc vmerge=true /> </a:tr>

Ejemplo de marcado 139 Celdas de tablas unidas horizontal y verticalmente

Formato de Tablas Para hacer que la tabla se vea grandiosa en una presentacin profesional, el modelo de tablas de DrawingML le ofrece varias configuraciones que puede aplicarle a la tabla en general o a filas y celdas individuales. Cada 118

Tablas

elemento de fila y celda usa un nodo de propiedades visuales de DrawingML para definir detalles como el relleno de la celda, como por ejemplo un relleno gradiente. El elemento de la tabla soporta la adicin de configuraciones para toda la tabla como por ejemplo el reflejo DrawingML. Una gran adicin a las opciones de estilo para una tabla permite reutilizar los estilos de tabla en las diferentes tablas de un conjunto de diapositivas. El modelo de tabla de DrawingML permite separar los estilos de tabla de la definicin principal de la tabla. Este mismo estilo puede entonces aplicrsele a todas las tablas de una presentacin para crear una apariencia comn para todas las diapositivas de un conjunto. Para formatear directamente una fila o una celda de una tabla, el nodo de propiedades para el elemento (tcPr para las celdas de la tabla) puede usarse para guardar configuraciones basadas en DrawingML. Estas configuraciones se describen ms a fondo en la seccin de efectos grficos de DrawingML. Lo mismo sucede con la adicin de efectos a la tabla. El nodo tblPr sirve como el elemento contenedor para guardar los efectos de forma de DrawingML. Una cosa ms que puede definirse en las propiedades del nivel de la tabla es el uso de un estilo de tabla separado. El estilo de tabla separado contiene informacin acerca del tipo de lnea, el relleno, la fuente y el color a usarse en los elementos especficos de la tabla. Al utilizar un estilo de tabla se le permite especificar varias configuraciones para las filas y columnas que constituyen una tabla. Pueden aplicarse diferentes configuraciones a las filas de encabezado y de pie de pgina, adems de la primera y ltima columna. Para aun ms variacin a las filas y columnas puede aplicrseles el bandeado. El bandeado de filas o columnas implica darles a las filas pares e impares un estilo diferente. Al darle un fondo diferente a los elementos pares e impares, puede mejorarse la retroalimentacin acerca de cules celdas constituyen una fila o columna.

Una parte separada dentro del paquete se usa para guardar la informacin de estilo individualizado. Existe mximo una parte de estilo de tabla que puede contener muchos estilos diferentes de tabla. Cada estilo de tabla se referencia usando la ID del estilo. Este valor de ID es un GUID (globally unique identifier - identificador nico global), y es distinto a los dems valores de ID que son por lo general un entero normal.

<a:tbl> <a:tblPr firstRow="1" bandRow="1"> <a:TableStyleId> {37CE84F3-28C3-443E-9E96-99CF82512B78} </a:TableStyleId> </a:tblPr> </a:tbl>


Ejemplo de marcado 140 Referenciar un estilo de tabla

119

DrawingML

Dentro de las propiedades de la tabla uno especifica los distintos elementos iniciales/finales y las opciones de bandas que deben aplicrsele a la tabla. La informacin de estilo se guarda por separado, en la parte de estilo de tabla. Si firstRow es verdadero en las propiedades de la tabla, el consumidor aplicar el estilo de fila inicial del estilo identificado por el GUID sobre la primera fila de su tabla. La propiedad bandRow le indica al consumidor que debe aplicar el estilo band1H a la primera fila, el estilo band2H a la segunda, y luego continuar con el estilo band1H de nuevo en la tercera fila. Los estilos de tabla pueden combinarse con el formateo directo. El formateo directo aplicado toma prioridad sobre el estilo aplicado, permitindole modificar aun ms la manera en que se ve la tabla. Los estilos de tabla se guardan en una parte separada para estilos de tabla. Esta parte de estilos de tabla se referencia de la parte de presentacin usando el siguiente tipo conocido de relacin. http://schemas.openxmlformats.org/officeDocument/2006/relationships/TableStyles Esta relacin apunta a una parte que contiene una lista de estilos de tabla. Esta lista guarda estilos nicos identificables mediante un valor de identificacin GUID. Existe un estilo de tabla que se considera el estilo por defecto. Este estilo puede usarse para tablas nuevas que el usuario inserta en la presentacin. Un estilo de tabla se define mediante dos piezas de contenido. La informacin identificadora, que consta de un ID y un nombre legible en la interfaz del usuario (UI), y un conjunto de informacin de estilo para todos los componentes que conforman la tabla incluyendo la fila de encabezado y la ltima columna.
<a:tblStyleLst xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" def="{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"> <a:tblStyle styleId="{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}" styleName="Medium Style 2 - Accent 1"> <!-- style content --> </a:tblStyle> </a:tblStyleLst>
Ejemplo de marcado 141 Estilos de tabla

En total existen trece estilos que pueden aplicrsele a una tabla. Elemento de Estilo wholeTbl band1H band2H band1V band2V firstCol lastCol firstRow lastRow seCell swCell neCell nwCell Usado para Formatear toda la tabla Filas 1, 3, 5 Filas 2, 4, 6 Columnas 1, 3, 5 Columnas 2, 4, 6 Primera columna ltima columna Primera fila ltima fila Esquina inferior izquierda (south-east) Esquina inferior derecha (south-west) Esquina superior izquierda (north-east) Esquina superior derecha (north-west) Propiedades requeridas de tabla Siempre bandRow="1" bandRow="1" bandCol="1" bandCol="1" firstCol="1" lastCol="1" firstRow="1" lastRow="1" lastRow="1", lastCol="1" lastRow="1", firstCol="1" firstRow="1", lastCol="1" firstRow="1", firstCol="1"

Tabla 8 Tipos de estilo de tabla permitidos

Cada uno de estos elementos de estilo de tabla puede definir dos piezas de informacin, el estilo de la celda y el estilo del texto de la celda.
<a:tblStyle styleId="{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"

120

Cuadros

styleName="Medium Style 2 - Accent 1"> <a:wholeTbl> <a:tcTxStyle> <a:fontRef /> <a:schemeClr /> </a:tcTxStyle> <a:tcStyle> <a:cell3D /> <a:fill /> <a:tcBdr /> </a:tcStyle> </a:wholeTbl> </a:tblStyle>
Ejemplo de marcado 142 Estilo ejemplo para toda la tabla

El estilo de celda de tabla define configuraciones para la celda entera, el estilo de texto de celda de tabla para el texto dentro de la celda. Slo hay unas pocas opciones de formateo permitidas. El estilo de texto define la fuente y el color y el estilo de celda define algunas configuraciones en 3D, bordes y el llenado de la celda. En general, estas opciones les proveen a los artistas los medios para conseguir tablas ricas con un marcado que permite la migracin sencilla entre varias apariencias distintas.

Cuadros
Los cuadros proveen los medios para visualizar informacin usando una configuracin familiar como un cuadro de pastel o de barras. Los datos visualizados pueden reutilizarse a lo largo de Open XML. El mismo cuadro puede aadrsele a un documento de WordprocessingML, SpreadsheetML y PresentationML definiendo un elemento de contenedor de lenguaje especfico para guardar el marcado del cuadro. El marcado que constituye el cuadro slo se referencia desde un contenedor de lenguaje especfico. El cuadro mismo se guarda en una parte separada dentro del paquete. Como un cuadro es en s una estructura bastante grande, se discutir en varias secciones. Primero se discutir el contenido de un cuadro bsico, y luego se manejarn varias adiciones a la configuracin del cuadro. Elementos de un cuadro simple Hay varios tipos de cuadros que pueden crearse usando el marcado DrawingML. Hay disponibles varios tipos de cuadros en 2D y 3D, adems de cuadros de pivote que se usan principalmente en SpreadsheetML. Todos estos tipos de cuadro permiten la adicin de varios elementos relacionados como por ejemplo la rotulacin de las columnas y las filas, o ttulos y leyendas. Tambin se le permite aadirles formas individualizadas al cuadro para modificar aun ms la apariencia de un cuadro en la presentacin. La Figura 39 muestra los elementos que conforman un cuadro bsico de barras en 2D. Como muchos de los elementos usados en todo tipo de cuadros, tanto 2D como 3D, son similares, primero se discutir este cuadro simple con datos predefinidos para luego aadirle caractersticas adicionales que enriquecern la apariencia y el funcionamiento del cuadro. Para crear un cuadro simple, debe aadrsele una parte Figura 40 Un cuadro sencillo separada al paquete para crear el marcado del cuadro. El elemento raz de este marcado es el elemento chartSpace que define el cuadro y varias otras configuraciones 121

DrawingML

como por ejemplo la informacin de estilo para el cuadro. Aqu tambin puede especificar que los datos deben estar ligados a una fuente de datos como por ejemplo un paquete SpreadsheetML incrustado en la presentacin. Ms adelante en esta seccin se discutirn ms a fondo los pasos requeridos para anexar el cuadro a una fuente de datos. Dentro de chartSpace el cuadro es el nico elemento requerido. El cuadro define todos los elementos que componen al cuadro incluyendo el ttulo, el rea de trazado y los datos que definen el cuadro. El nico elemento que debe definirse es el elemento plotArea. La Figura 39 muestra un cuadro sencillo. El rea de trazado es el rea con el fondo degradado. El rea de trazado define el tipo de cuadro que se est desplegando y si es un cuadro en 2D o en 3D. La forma en que esto funciona es bastante simple. Para cada tipo de cuadro existe un elemento XML individual que define ese tipo. Puede encontrar un elemento barChart o pieChart, pero tambin un elemento barChart3D. Slo se le permite definir uno de estos tipos como hijo de plotArea.
<c:chartSpace xmlns:c="http://.../drawingml/2006/chart" xmlns:a="http://.../drawingml/2006/main" <c:chart> <c:plotArea> <c:layout /> <c:barChart /> <c:catAx /> <c:valAx /> <c:spPr /> </c:plotArea> </c:chart> </c:chartSpace>
Ejemplo de marcado 143. Contenido bsico del cuadro

En el ejemplo se est usando un cuadro de barras. Para crear un cuadro de barras uno aade un elemento hijo barChart en el rea de trazado. De esta manera se restringe el conjunto de tipos de cuadro permitidos. Adems de la especificacin requerida del tipo de cuadro, se le permiten varias otras configuraciones. El elemento de esquema (layout) se usa a lo largo del marcado del cuadro para especificar cosas como la posicin de los rtulos o la leyenda. Tambin puede mover el cuadro entero sobre la superficie del rea de trazado utilizndolo en esta ubicacin. El cuadro ejemplo que se mostr en la pgina anterior usa dos ejes: una horizontal para categoras y una vertical para valores. Usted crea ejes dentro del rea de graficado usando los elementos catAx y valAx. Se le permite crear uno de estos elementos por tipo dentro del rea de trazado. Siempre existe un solo eje de categoras, un eje de valores, un eje de datos y un eje de series.
<c:catAx> <c:axId val="70435584" /> <c:scaling> <c:orientation val="minMax" /> </c:scaling> <c:axPos val="b" /> <c:tickLblPos val="nextTo" /> <c:crossAx val="70437120" /> <c:crosses val="autoZero" /> <c:auto val="1" /> <c:lblAlgn val="ctr" /> <c:lblOffset val="100" /> </c:catAx>
Ejemplo de marcado 144 Definicin del eje de categoras

Como los elementos de ejes de categoras y valores son referencias hechas desde el interior de la definicin del cuadro, debemos discutir estos elementos antes de entrar en los detalles de un cuadro de barras.

122

Cuadros

Figura 41 Cambiando definiciones de los ejes del cuadro

Figura 42 Cambiando las configuraciones del cuadro de barras

Los elementos de los ejes definen cmo se ven los ejes del cuadro, dnde se intersectan y los datos que despliegan. Cada definicin de eje tiene anexo un valor de ID, que luego se usa para referenciar el eje dentro del elemento de cuadro. El Ejemplo de marcado 144 muestra la definicin del eje de categoras del cuadro de muestra. El ID es sencillamente un nmero grande elegido aleatoriamente, y se usa para referenciar el eje de diversas ubicaciones. El elemento de escala define el rango de datos para los ejes, y si se deja sin especificarse, como sucede en el ejemplo, el rango de datos se determina usando los datos reales. La orientacin define si el eje fluye del valor mnimo al mximo o viceversa. El eje define otros ejes que lo cruzan usando su valor de ID. El punto donde los dos ejes se Cruzan puede definirse como un punto exacto, y aqu los ejes se cruzarn en el valor cero. El resto de la definicin de eje est lleno de informacin acerca de dnde ubicar los rtulos de los ejes, las marcas a usarse pero tambin si esas marcas se extienden para formar una malla sobre la superficie del cuadro. Esto le facilita al usuario leer el cuadro en la pantalla, pero si tiene un impacto visual considerablemente alto. El mismo cuadro como se ve anteriormente se muestra en la figura 40. Pero esta vez los ejes de valores y de categora usan la aproximacin maxMin, y el eje de valores se est intersecando en el valor 10, lo cual esconde todas las columnas inferiores a este valor. El siguiente elemento en la lista de discusin es la definicin barChart. El cuadro de barras contiene varios elementos incluyendo opciones de formateo para las barras, referencias a los ejes para mostrar junto a las barras y, de manera ms importante, los datos a visualizarse. Algunos de los elementos son especficos para el cuadro de barra, como por ejemplo la direccin de las barras, otros, como la definicin de los datos o el anexo de los ejes son genricos para todos los tipos de cuadros. Sin modificar los datos, el cuadro de ejemplo puede formatearse para que se vea como el ejemplo que se muestra en la figura 41.
<c:barChart> <c:barDir val="col" /> <c:grouping val="stacked" /> <c:ser>...</c:ser> <c:ser>...</c:ser> <c:ser>...</c:ser> <c:gapWidth val="100" /> <c:overlap val="100" /> <c:axId val="70435584" /> <c:axId val="70437120" /> </c:barChart>
Ejemplo de marcado 145 Definicin de un cuadro de barras

Los datos que integran el cuadro se definen usando un conjunto de series de datos, definidos usando el elemento ser. Dentro de cada serie de datos usted define los datos a usar para la categora y el valor. En el cuadro ejemplo hay dos series de datos. Cada uno se muestra usando un color especfico dentro del cuadro. En ambas series estn definidas dos piezas de datos, lo cual da como resultado el cuadro de dos barras de los ejemplos anteriores. 123

DrawingML

<c:ser> <c:idx val="1" /> <c:order val="1" /> <c:cat> <c:strLit> <c:ptCount val="2" /> <c:pt idx="0"> <c:v>Col 1</c:v> </c:pt> <c:pt idx="1"> <c:v>Col 2</c:v> </c:pt> </c:strLit> </c:cat> <c:val> <c:numLit> <c:ptCount val="2" /> <c:pt idx="0"> <c:v>5</c:v> </c:pt> <c:pt idx="1"> <c:v>10</c:v> </c:pt> </c:numLit> </c:val> </c:ser>
Ejemplo de marcado 146 Series de datos para cuadros

Se muestra una serie de datos ejemplo en el ejemplo de marcado 146. El encabezado del elemento contiene informacin nica de ID y de orden. Luego, contiene un elemento de categora y valor. Dentro de ambos elementos se define una lista de valores. El elemento strLit define una cadena literal (predefinida), de la misma manera que numLit define un valor predefinido. En lugar de usar esta predefinicin, pueden usarse los elementos strRef y numRef para referenciar los datos de una fuente de datos separados cuando esto se use en un cuadro. Los datos guardados se visualizan como una tabla ms familiar en el encabezado de este prrafo. Pueden cometerse varios errores cuando se usan categoras y valores. La seriedad de estos errores es diferente para cada consumidor. PowerPoint le permite tener ms valores que categoras, por ejemplo, y mostrar un rtulo vaco para compensar. Adems, se permiten errores en los valores ndice para los literales de cadena de texto y de nmero, pero hacen que el cuadro se despliegue de una manera extraa. Enlazando datos en un cuadro Aunque el ingresar datos de manera predefinida le permite crear cuadros, probablemente es mejor guardar estos datos en una ubicacin separada de la definicin del cuadro. Pueden usarse dos fuentes de datos para proveerle datos a los cuadros; tablas de datos y de pivote SpreadsheetML. La fuente de datos SpreadsheetML se discute en esta seccin. Para proveerle datos que provienen de un paquete SpreadsheetML a un cuadro, el cuadro usa una relacin de paquete para definir la fuente de datos. La fuente de datos SpreadsheetML se puede incrustar en el paquete o guardarse de manera separada en el disco permitiendo una flexibilidad mxima en cuanto al lugar donde se guardan los datos. Para permitirle al consumidor acceder a los datos incluso cuando no estn disponibles las conexiones de red, los datos de la hoja de clculo se almacenan en el marcado del cuadro. Usted puede especificar una configuracin para que el consumidor recupere estos datos apenas abra el documento. El primer paso para alcanzar una fuente de datos externa consiste en crear una nueva relacin de paquete usando la parte del cuadro como la fuente. El tipo de relacin debe ser el officeDocument, no existe un tipo de relacin 124

Cuadros

individual para identificar la fuente de datos. Para anexar la hoja de clculo al cuadro, se anexa un elemento simple al elemento raz chartSpace.
<c:chartSpace xmlns:c="http://.../drawingml/2006/chart" xmlns:a="http://.../drawingml/2006/main" xmlns:r="http://.../officeDocument/2006/relationships"> <!-- other chart content --> <c:externalData r:id="rId1" /> </c:chartSpace>
Ejemplo de marcado 147 Fuente de datos externa para cuadros

Esto configura al cuadro para que recupere los datos de la hoja de clculo externa. Hasta este punto los datos de la hoja de clculo no se utilizan. Para configurar al cuadro para que use la fuente de datos, la serie de datos debe modificarse para usar los textos y los nmeros referenciados en lugar de los predefinidos. El elemento ser que define una serie de datos sigue usando los elementos cat y val para definir categoras y valores para las series de datos. Pero ahora estos elementos contienen los nodos strRef y numRef para referenciar datos de la fuente de datos externa. Las referencias de texto y de nmero guardan la funcin SpreadsheetML requerida para recuperar los datos de la fuente de datos como un rango de celdas que contienen los datos. Luego usan su nodo de cache especifico al elemento, como el elemento strCache para almacenar los valores correspondientes a la funcin, que se guarda con base en la ltima vez que se calcul.
<c:ser> <c:cat> <c:strRef> <c:f>Sheet1!$A$1:$B$1</c:f> <c:strCache> <c:ptCount val="2" /> <c:pt idx="0"> <c:v> </c:v> </c:pt> <c:pt idx="1"> <c:v>Sales</c:v> </c:pt> </c:strCache> </c:strRef> </c:cat> </c:ser>
Ejemplo de marcado 148 Series externas de datos

Aadir rtulos extra en los cuadros Uno de los pasos ms sencillos al definir cuadros es la adicin de rtulos extra en el cuadro como por ejemplo el ttulo o la leyenda. Tambin es posible mostrar una copia de los datos en formato tabulado debajo del cuadro. Para cada uno de los tres rtulos extra que pueden aadrsele a un cuadro existe un elemento separado que define el contenido. Adems, usted puede aadirle formas al cuadro, pero se necesita un modelo ms elaborado para hacer esto. El ttulo de un cuadro se define directamente dentro del elemento chart, la leyenda se encuentra dentro de este elemento chart 125
Figura 43 Etiquetas adicionales

DrawingML

tambin. Hay dos formas de definir el ttulo del cuadro. De manera similar a los datos del cuadro puede predefinirlo usando un bloque de texto enriquecido, o referenciarlo como una cadena de texto en la fuente de datos usando el elemento strRef que discutimos anteriormente. El bloque de texto enriquecido usa texto DrawingML, que se discute en otro lugar de este captulo. Existen configuraciones pequeas que requieren un valor. Es suficiente fijar la posicin de la leyenda en el lado derecho del cuadro. Puede formatear tanto el ttulo como la leyenda usando un nodo de propiedades de forma, de manera similar a la que define las propiedades de una forma individualizada. La adicin de la tabla de datos debajo del cuadro es tambin un comportamiento predefinido. Sino que esta vez el elemento hace parte del rea de trazado del cuadro. De manera similar a la que especifica la existencia del cuadro de datos, slo necesita especificar lo que quiere ver en la tabla de datos, y no la manera exacta como la quiere desplegar. Puede formatear aun ms el rea que ocupa la tabla de datos usando propiedades de forma, pero es por ejemplo imposible aadirle nuevos valores a la tabla o formatear la forma en que se muestran los rtulos por fuera de los valores predefinidos. <c:chart> <c:title> <c:tx> <c:rich> <!-- rich text --> </c:rich> </c:tx> <c:layout /> </c:title> <c:legend> <c:legendPos val="r" /> <c:layout /> </c:legend> <c:plotVisOnly val="1" /> </c:chart>
Ejemplo de marcado 149 Ttulo y leyenda del cuadro

<c:plotArea> <c:layout /> <c:dTable> <c:showHorzBorder val="1" /> <c:showVertBorder val="1" /> <c:showOutline val="1" /> <c:showKeys val="1" /> </c:dTable> </c:plotArea>
Ejemplo de marcado 150 Rtulo de la tabla de datos del cuadro

Aadir formas individualizadas Cuando est creando cuadros puede querer hacer cosas como atraer la atencin a un rea especfica. Con esto en mente, se le permite crear formas dentro de la superficie del cuadro. Esto funciona de manera similar a la especificacin de una fuente de datos externa.
<c:chartSpace> <c:userShapes r:id="rId1" /> </c:chartSpace>
Ejemplo de marcado 151 Referenciando los dibujos del cuadro

La parte que contiene las formas del cuadro se referencia usando un tipo de relacin especfico: http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartUserShapes Dentro de esta parte se guarda una lista de formas y grupos dentro de espacios de nombres de DrawingML. La manera que funciona es similar a las formas en PresentationML. La diferencia principales es que cada elemento de forma, o sp, est rodeada de un tipo especfico de ancla para ubicar al elemento en la superficie del cuadro. Estas 126

Cuadros

anclas permiten que las formas atadas a un cuadro puedan cambiar de tamao y moverse cuando el cuadro cambie de tamao o se mueva.
<c:userShapes xmlns:c="http://.../drawingml/2006/chart" xmlns:a="http://.../drawingml/2006/main" xmlns:cdr="http://.../drawingml/2006/chartDrawing"> <cdr:absSizeAnchor> <cdr:from> <cdr:x>0.03516</cdr:x> <cdr:y>0.35156</cdr:y> </cdr:from> <cdr:ext cx="600000" cy="600000" /> <cdr:sp macro="" textlink=""> <!-- shape content --> </cdr:sp> </cdr:absSizeAnchor> </c:userShapes>
Ejemplo de marcado 152 Forma de usuario posicionado de manera absoluta

El Ejemplo de marcado 152 muestra el uso de un ancla absoluto. Al usar esta ancla el tamao no cambiar cuando el cuadro cambie de tamao. Un ancla puede contener exactamente una forma, que podra ser una forma de grupo que contiene formas hijas. Los elementos userShapes pueden contener mltiples anclas para guardar mltiples formas. El marcado de formas es similar a las formas en PresentationML pero toman un espacio de nombres distinto especfico a DrawingML. Existen elementos como propiedades visuales y no visuales para identificar y estilizar las formas dentro del cuadro. Para el ancla absoluto, deben especificarse el tamao y la ubicacin. Para cambiar esta forma posicionada de manera absoluta a una relativa, que s cambia de tamao con el cuadro padre, el elemento absSizeAnchor debe cambiarse por un relSizeAnchor, el resto del marcado sigue igual, a excepcin de la extensin. El ancla absoluto define el alto y el ancho, mientras que el relativo define el porcentaje del tamao total del cuadro para definir del tamao de la forma. El elemento from est acompaado de un elemento to que define el tamao relativo de la forma.
<cdr:relSizeAnchor> <cdr:to> <cdr:x>0.94923</cdr:x> <cdr:y>0.98438</cdr:y> </cdr:to> </cdr:relSizeAnchor>
Ejemplo de marcado 153 Anclas de tamao relativo

Crear cuadros 3D Adems de los cuadros planos en 2D como los que hemos visto hasta ahora, tambin es posible crear cuadros en 3D usando los mismos principios bsicos. Hay varias cosas adicionales que pueden estilizarse en un cuadro 3D como el ngulo de visualizacin y otras configuraciones 3D. El cuadro se mostrar en una caja medio abierta. Puede proveer informacin de estilo para los lados visibles. Hay que cambiar tres cosas de la configuracin actual para cambiar de una vista 2D plana a una 3D enriquecida. El primer paso consiste en cambiar el identificador del cuadro dentro del nodo plotArea para que identifique un cuadro en 3D. El elemento bar3DChart permite el contenido exactamente igual a su equivalente en 2D a excepcin de la adicin de una referencia adicional al tercer eje que se est 127

DrawingML

mostrando. Al referirse a este eje con un valor ID de 0, puede hacer referencia a un eje vaco por defecto. Esto permite un cambio fcil entre las vistas en 2D y en 3D. La siguiente informacin a proveerse trata del estilo de las paredes visible de la caja virtual en 3D en que se est dibujando el cuadro. Esta informacin se provee directamente dentro del elemento chart. Usted puede especificar los detalles de estilo de la pared lateral, la pared de fondo y el piso de la caja virtual. La aproximacin es que cada uno de los tres elementos que definen el estilo de la caja contiene un nodo de propiedades de forma que definen las transformaciones DrawingML a aplicarse a la pared en cuestin.
<c:plotArea> <c:layout /> <c:bar3DChart> <!-- same data as the barChart --> </c:bar3DChart> </c:plotArea>
Ejemplo de marcado 154 Definiendo un cuadro de barras en 3D

El ltimo elemento que debe definirse es la posicin de la cmara que muestra el cuadro. El motor DrawingML en Microsoft Office entrega los cuadros en un ambiente 3D. La cmara es el punto desde el cual se est visualizando el cuadro, lo cual permite vistas profesionales de los datos en el cuadro, o vistas no tan profesionales cuando el clculo del ngulo de la cmara falla un poco. La cmara se configura usando el elemento view3D. Aqu, usted podr especificar la rotacin de la cmara y el tipo de cmara a usarse. Puede usar la cmara de perspectiva o la cmara de ngulo recto. La cmara de perspectiva da una sensacin ms humana pues se asemeja ms a lo que vemos nosotros mismos.
<c:chart> <c:view3D> <c:perspective val="30" /> </c:view3D> <c:sideWall> <c:spPr /> </c:sideWall> <c:floor> <c:spPr /> </c:floor> </c:chart>
Ejemplo de marcado 155 Fijando las propiedades de 3D

Temas
Para poder estilizar fcilmente un documento, una hoja de clculo o una presentacin, usando un colorido similar a lo largo de toda la pila de lenguaje Open XML usted usa temas. Un tema es una parte separada dentro del paquete y contiene definiciones para fuentes, colores y los distintos efectos de forma DrawingML que hemos observado hasta el momento. Hay varias opciones de colores y de llenado que le permiten anexar el estilo de una forma a un tema. Al alterar el tema, todas las formas basadas en ese tema tambin se alterarn.
<a:theme xmlns:a="http://.../drawingml/2006/main" name="My Scheme"> <a:themeElements> <a:clrScheme name="My Scheme" /> <a:fontScheme name="My Scheme" /> <a:fmtScheme name="My Scheme" />

128

Temas

</a:themeElements> <a:objectDefaults /> <a:extraClrSchemeLst /> </a:theme>


Markup sample 156 Elementos de tema

Un tema se define usando el elemento theme. Dentro del elemento theme, usted debe crear un nodo themeElements que contiene todos los datos del tema. En este nivel tambin puede aplicar informacin extra o superposiciones sobre la informacin existente dentro de los elementos del tema. Los elementos del tema se construyen usando un conjunto de nodos hijo, y cada nodo identifica un elemento especfico de datos como fuentes o colores. El elemento clrScheme define una lista de colores. La lista de colores de tema se limite a elementos como accent1, o enlace visitado. Cada uno de estos colores de tema usa un e lemento XML individual, donde el nombre del nodo identifica el color del tema. Dentro de este elemento usted hace uso del mecanismo de color que se discuti anteriormente para colorear formas usando DrawingML. En el ejemplo de marcado 157 se definen dos colores para el tema, los colores 'dark-1' y 'accent-1'. El ejemplo de marcado no est completo. Usted debe definir valores para cada uno de los doce colores del tema.
<a:clrScheme name="My Scheme"> <a:dk1> <a:sysClr val="windowText" lastClr="000000" /> </a:dk1> <a:accent1> <a:srgbClr val="4F81BD" /> </a:accent1> </a:clrScheme>
Ejemplo de marcado 157 Colores de tema

El esquema de fuentes usa un mecanismo similar a la configuracin del esquema de colores. Usted define dos fuentes que se usarn en el documento Open XML, una fuente mayor y una menor. Las fuentes mayor y menor se subdividen en fuentes especficos para idiomas. Por idioma humano, usted puede especificar una fuente mayor y una menor. La fuente usada en el documento depende de la configuracin regional del usuario en su sistema operativo.
<a:fontScheme name="Office"> <a:majorFont> <a:latin typeface="Calibri" /> <a:font script="Jpan" typeface=" " /> </a:majorFont> <a:minorFont> <a:latin typeface="Calibri" /> <a:font script="Jpan" typeface=" " /> </a:minorFont> </a:fontScheme>
Ejemplo de marcado 158 Fuentes temticas

El ltimo elemento que puede definir en un tema es la configuracin del formato de las formas. Esta configuracin de formato la integran cuatro secciones: llenados, lneas, efectos y llenados de fondo. Todas estas secciones se requieren. Dentro de cada seccin usted puede usar el estilo de llenado y de lnea adems de las opciones de formateo que se discuten a lo largo de esta seccin.
<a:fmtScheme name="Office"> <a:fillStyleLst /> <a:lnStyleLst /> <a:effectStyleLst />

129

DrawingML

<a:bgFillStyleLst /> </a:fmtScheme>


Ejemplo de marcado 159 Formateo temtico de formas

Despus de haber guardado varias configuraciones temticas dentro de su paquete deber aplicarlas a los elementos dentro del documento. Esta historia tiene dos lados. DrawingML provee algunos elementos que pueden referenciar las configuraciones del tema. Estos elementos deben guardarse en un contenedor especfico del lenguaje. El ejemplo de marcado 160 muestra el elemento de contenedor usado para formas PresentationML. Los elementos en su interior son elementos basados en DrawingML. Para hacer referencia a cierto estilo de lnea en el tema se usa el elemento lnRef. Las referencias a llenados y efectos usan respectivamente los elementos fillRef y effectRef. Estos tres elementos de referencia se refieren a su contraparte con base en el ndice de elementos dentro de la definicin del tema. fontRef no requiere una referencia basada en ndice pues slo se pueden definir dos fuentes, la fuente mayor y la menor. Para proveer informacin de colores y anexarle esto al tema se usa el elemento schemeClr. Puede usar este elemento en cualquier lugar donde quiera aplicarle color a su documento. El atributo val puede usar un conjunto limitado de nombres de color del tema. Los valores de estos colores se guardan dentro de la definicin del tema usando nodos nombrados. La forma en que esto se hace puede encontrarse ms arriba en esta seccin.
<p:style> <a:lnRef idx="2"> <a:schemeClr val="accent1"> <a:shade val="50000" /> </a:schemeClr> </a:lnRef> <a:fillRef idx="1"> <a:schemeClr val="accent1" /> </a:fillRef> <a:effectRef idx="0"> <a:schemeClr val="accent1" /> </a:effectRef> <a:fontRef idx="minor"> <a:schemeClr val="lt1" /> </a:fontRef> </p:style>
Ejemplo de marcado 160 Aplicndole temas a formas

130

Unidades de Medida
El EMU
La Unidad Mtrica Inglesa, o EMU (English Metric Unit), se usa a lo largo y ancho de DrawingML para especificar detalles como posicin o tamao. El EMU permite una conversin precisa entre unidades de medida bien conocidas como el centmetro y la pulgada sin requerir nmeros de punto flotante. Unidad EMU

Pulgada Centmetro Punto

914400 360000 12700

El twip
El twip es una unidad de medida independiente de la pantalla. Asegura que la proporcin de los elementos es igual en todos los sistemas de visualizacin. Un twip se define como 1/1440 de una pulgada. Unidad TWIP

Pulgada Centmetro

1440 567

131

Você também pode gostar