Pasar de Word a XML (1)

En varias ocasiones, me han realizado consultas sobre la posibilidad de pasar un documento DOC de Word a formato XML, visualizable como página web.

Seguramente que en la próxima versión de Office, se podrá pasar un documento generado con Word a formato XML directamente, pero mientras llega esa posibilidad, se puede realizar dicha acción sin demasiadas complicaciones, aunque con algunas restricciones.

En este artículo se va a comentar uno de los posibles procesos para realizar la conversión de formato DOC de Word a XML, aunque también sirve como método para transformar un documento DOC en otro HTML, y también, uno HTML en otro XML visible como página web, ya que son los pasos intermedios que vamos a utilizar en el proceso.

Otro objetivo secundario de este artículo es que se conozcan nuevas herramientas de transformación de formatos.

Notas:Para comprobar los ejemplos que siguen a continuación, es imprescindible disponer de Internet Explorer 5. Este artículo está basado en el libro XML. Iniciación y Referencia, publicado por la editorial McGraw-hill. Esta versión del documento cumple las normas HTML 4. Existen otras versiones del mismo documento adaptadas a XHTML y a XML.

Introducción

En primer lugar hay que comentar que tanto el formato DOC, como HTML, como XML, son descripciones de documentos basados en los lenguajes de marcas, aunque el primero utiliza un sistema propietario y los otros se basan en especificaciones públicas.

Una vez hecha la aclaración, voy a utilizar un documento realizado en Word como ejemplo real. Se trata de una versión reducida de un artículo titulado Promoción a través de Internet, en el que se tratan algunas ideas útiles para que los autores de libros puedan promocionar sus obras por Internet. El documento original para Word se puede ver a través de este enlace, que enlaza con articulo_promocion.doc.

En dicho documento existen un título general, otros de segundo nivel, una tabla, una figura y varios párrafos, conteniendo varios tipos de letra con diversos tamaños y algunos estilos de cursiva y de negrita. Un ejemplo típico de documento sin grandes complicaciones, pero que nos va a servir perfectamente para ver el comportamiento del proceso elegido.

Cada transformación que se realice, puede estudiarse accediendo a su correspondiente enlace y observando su código.

Como última aclaración, antes de empezar con el proceso, es preciso conocer que existen sistemas y herramientas que hacen este proceso de forma automática, aunque son propietarias de sus empresas comercializadoras, mientras que, el método que vamos a ver, es totalmente gratuito, siempre que se disponga de Word 2000, claro.

Word 2000 y HTML

Las últimas versiones de Word 97/2000 soportan la posibilidad de guardar sus documentos en el formato HTML, realizando esta operación de forma directa. Word 97 no consigue un resultado muy bueno, ya que utiliza un código HTML con muchas restricciones, lo que implica que el documento HTML no es igual al documento original DOC. Sin embargo, Word 2000 es capaz de exportar en HTML de forma que mantiene todas las características del documento original, haciendo posible incluso que se pueda volver a pasar de formato HTML a DOC sin pérdidas de información o de formato.

Para pasar un documento DOC a HTML es suficiente con activar la opción Guardar como página web..., en el menú Archivo de Word 2000. Esta acción da lugar a la creación de un archivo con el nombre que se indique y extensión .htm, acompañado de una carpeta, con el mismo nombre que el archivo, que incluye ciertos archivos complementarios al principal (lista auxiliar xml, imágenes), imprescidibles para que la visualización del documento sea igual al original.

Ya se ha comentado en otro artículo la cantidad de etiquetas propietarias y particulares que incorporan todas las aplicaciones de Office 2000 cuando generan documentos en HTML, aprovechando las posibilidades de XML, DHTML y CSS, para conseguir documentos con el mismo formato y aspecto que los propios originales.

En nuestro ejemplo, después de realizar esta acción obtenemos el archivo articulo_promocion_1.htm y la carpeta articulo_promocion_1_archivos, que incluyen todo el código especial de Office-Word-2000.

El código HTML generado incluye demasiadas etiquetas particulares, realmente útiles para su principal cometido, o sea, para mantener el contenido y las características de formato del documento, pero inútiles y perjudiciales para nuestro cometido, que exige un código estándar, por lo que es imprescindible realizar una limpieza de dicho código antes de seguir adelante.

Esta eliminación de código basura puede realizarse de dos formas distintas: a través de un tratamiento posterior mediante alguna de las utilidades existentes para ello, o utilizando alguna herramienta que genere ya desde Word un documento HTML limpio y estándar.

HTML-Kit

Para realizar la limpieza de código sobre el archivo HTML generado por Word 2000 vamos a utilizar la aplicación HTML-Kit, disponible gratuitamente en la dirección http://www.chami.com/html-kit/.

HTML-Kit es un editor especializado en el tratamiento de código de lenguaje de marcas, como HTML o XML, que incluye, entre otras opciones, la posibilidad de eliminar automáticamente las etiquetas particulares de las páginas web creadas con Word 2000.

Es suficiente con cargar nuestro documento articulo_promocion_1.htm en HTML-Kit y activar la secuencia Actions > Tools > HTML Tidy > Strip surplus tags in Word 2000 pages, para conseguir una copia de nuestro documento limpio, que vamos a guardar como articulo_promocion_2.htm.

Este nuevo documento HTML tiene dos fallos principales: que pierde casi todas sus referencias de formato de texto (tipo y tamaño de letra) y que pierde los enlaces a las imágenes, ya que Word realiza estos procesos a través de CSS particularizado y de VML (un vocabulario de XML).

Que pierda su formato de texto no es un problema importante, e incluso es una ventaja si existen muy pocos tipos y tamaños de letra, ya que hace posible su descripción sin gran esfuerzo al final del proyecto.

La pérdida de las figuras sí es importante y hace necesaria la incorporación del código adecuado para su recuperación de forma manual, lo que hace a este proceso totalmente inadecuado si el documento original incluye muchas imágenes con diferentes composiciones.

En nuestro ejemplo, ni la pérdida del formato, ni la inclusión de la imagen es un problema importante, ya que casi todo el texto es del mismo tipo y solo existe una figura, que se puede incorporar de forma manual fácilmente. Después de añadir la imagen, el documento queda como se puede ver en articulo_promocion_3.htm.

Si se repasa el último código, se observará que existen algunas etiquetas sin contenido alguno, del tipo <P> </P>, siendo preferible su eliminación, que se consigue fácilmente si se activa la secuencia Actions > Tools > HTML Tidy > Convert to XML, ya que este proceso no admite elementos vacíos con etiquetas de principio y de final.

Por último, hay que cambiar la codificación de caracteres de 7 bits por la de 8 bits, o lo que es lo mismo, hay que sustituir los caracteres hispanos, definidos como &aacute;, &ntilde;, etc., por sus correspondientes á, ñ, etc. Esto se puede realizar con cierta comodidad utilizando repetidamente la opción Replace..., del menú File.

El código recientemente obtenido es el que se puede ver en el archivo articulo_promocion_4.htm.

Vamos a dejar aquí el proceso, aunque luego lo recuperaremos.

HTML Filter

Aunque HTML-Kit es una muy buena utilidad para cualquier diseñador web, el proceso de transformación de un documento DOC de Word en un documento HTML, con código limpio de etiquetas particulares, es más rápido y cómodo de realizar si se dispone de una utilidad como HTML Filter, de Microsoft, disponible para bajarse de forma totalmente gratuita en la dirección http://officeupdate.microsoft.com/2000/downloadDetails/Msohtmf2.htm.

El propio Microsoft, consciente de que el código HTML que se genera con Word es intratable con herramientas dirigidas a código estándar, distribuye un filtro de exportación para Word 2000 (y para Excel 2000) capaz de crear archivos HTML limpios de etiquetas particulares, al que denomina HTML Filter.

Una vez instalado HTML Filter, se añaden algunas nuevas opciones en Word 2000, de las que nos interesa especialmente la que se activa con la secuencia Archivo > Export to > Compact HTML..., que permite conseguir un código HTML más reducido y sin basura.

En nuestro ejemplo, si abrimos en Word 2000 el documento original articulo_promocion.doc y activamos la secuencia anteriormente comentada, podremos conseguir el archivo articulo_promocion_5.htm rápida y fácilmente, que se guardará conjuntamente con una carpeta denominada articulo_promocion_5_archivos, que contiene los mismos archivos que la que se crea con Guardar como página web..., esto es, un archivo auxiliar xml y dos imágenes gif y png para las figuras reducida y normal.

Con este sistema, se obtiene un documento HTML con un código más limpio y muy similar al original, basado en hojas de estilo CSS definidas al principio del propio código. Los caracteres típicamente hispanos se dejan en su codificación natural, esto es, aparecen como á, é, ñ, etc. La imágen se respeta y se visualiza correctamente en su tamaño reducido, correspondiente a la figura gif.

Pero este sistema tiene una pega importante, ya que Microsoft, con el ánimo de ahorrar espacio, no incluye las "comillas" en todos los atributos del código, siendo esto inaceptable por XML.

La solución pasa por añadirlas a mano, o mejor, utilizar la opción Convert to XML de HTML-Kit, que las añade automáticamente, pero si por un lado, nos resuelve el problema de las "comillas", por otro, nos crea uno nuevo, ya que pasa la codificación de los caracteres hispanos a código de 7 bits, por lo que tendremos que auxiliarnos de la opción Replace... para devolverlos a su estado anterior.

Después de estos arreglos, obtenemos el archivo articulo_promocion_6.htm.

Proyecto XML

Ya tenemos nuestros dos códigos HTML, obtenidos de formas distintas, pero con similares resultados.

Para transformar cualquiera de estos documentos HTML en un documento XML, se puede optar por una eliminación de las etiquetas que no son imprescindibles y modificar el nombre de cada etiqueta para adaptarlas a nuestro gusto, o a nuestras necesidades, lo que nos exigirá también confeccionar un documento que indique el proceso y el formato de visualización, bien sea en CSS o en XSL.

Aunque lo indicado en el párrafo anterior es correcto, ya que en teoría, el lenguaje HTML es una aplicación práctica del XML, y por lo tanto, tiene una estructura XML, es más cómodo aprovechar una de las características de XSL que permite pasar todo el código HTML tal como está, sin tocar nada. Bueno, casi nada.

Lo primero es crear un código XSL como el siguiente:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template>
  <xsl:copy>
    <xsl:apply-templates />
  </xsl:copy>
</xsl:template>
</xsl:stylesheet>

que utiliza el elemento xsl:copy para pasar todo el documento HTML al visualizador web, facilitándole el trabajo de salida en la pantalla.

El código XSL se guarda con el nombre de articulo_promocion.xsl.

Ya solo queda agregar a cada archivo HTML, al principio de todo el código, las siguientes líneas:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="articulo_promocion.xsl"?>

que le convierten automáticamente en un código XML enlazado con la plantilla XSL anterior cuando se guarda con la extensión .xml.

Siguiendo con nuestro ejemplo, el archivo HTML creado con HTML-Kit se convertirá en articulo_promocion_4.xml y el conseguido con HTML Filter será articulo_promocion_6.xml.

Observando detenidamente estos dos documentos, se puede ver que los resultados son muy parecidos.

En los dos casos se pierden las descripciones de los tipos de letra, las alineaciones de los textos y las líneas de la tabla. También se pierden en ambos proyectos la visualización de la imagen.

No obstante, se respetan los contenidos de los textos, con sus estilos de negrita y cursiva, incluyendo la tabla.

¿Por qué se pierde parte de la información importante de los documentos?

La respuesta es bien sencilla: se pierde toda la información que vaya como atributo.

Conclusiones

Después de lo visto, además de analizar el comportamiento de varios procesos de transformación y filtrado de documentos, se pueden sacar las siguientes conclusiones:

  • Los dos sistemas dan el mismo trabajo, más o menos.
  • Los dos procesos pierden las características de tipo de letra y de alineación.
  • Ambos sistemas respetan las tablas, aunque no muestran sus líneas.
  • En los dos casos se pierden las imágenes.
  • El código XML generado con HTML-Kit es más reducido que el conseguido con HTML Filter, ya que no incluye las definiciones CSS de este último, totalmente inútiles para su visualización final.

Visto lo anterior, se deduce que estos sistemas son válidos para documentos que contengan exclusivamente textos, siempre que no importen sus características de tipo de letra y de alineación.

Se podrían solucionar estos inconvenientes con una preparación previa de la composición del documento en Word y con una revisión manual del código HTML, así como con algunos añadidos en el código XSL, pero esto haría el proceso demasiado complejo como para que se pueda aplicar con facilidad.

Por ejemplo, para conseguir que el título principal quede centrado, tal como aparecía en el documento original DOC, se puede recurrir a la etiqueta <CENTER>.

Otra forma de resolver la presentación de un código HTML dentro de un documento XML, es recurrir a un espacio de nombre exclusivo para HTML, tal como se puede ver en la versión XML-CSS de este mismo artículo.

Bien, ¿quiere este artículo decir que hay que esperar a Office 10 para poder transformar un documento Word en XML?

La respuesta está en el ciberespacio, con sus muchos lugares repletos de recursos, herramientas y aplicaciones, y también, en la segunda parte de este artículo.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.