Usando XML dentro de 4D
XML significa lenguaje de marcas generalizado (Extensible Markup Language). Es un lenguaje usado para estructurar información en un documento o en cualquier fichero que contenga texto, como por ejemplo ficheros de configuración de un programa o una tabla de datos.
XML ha servido para definir un gran número de lenguajes de marcado particulares, tales como: XHTML, SVG, XPath, XSLT, XSL-FO, XLink, XPointer, XQuery, etc…
Éste es el primero de una serie de cuatro artículos, la lista es la siguiente
- Cómo crear documentos XML, descrito abajo
- Transformaciones XSLT y cómo crear documentos HTML
- Cómo crear documentos Word
- Cómo crear documentos Excel
El objetivo de estos artículos no es explicar la estructura ni la composición de XML. Nos vamos a concentrar en las posibilidades que nos ofrece 4D para poder crear y transformar documentos XML utilizando los comandos de 4D.
Es cierto que para poder comprender cómo se crean documentos XML el lector necesitará tener algunos conocimientos de estos lenguajes. En internet existen bastantes tutoriales y cursos sobre las diferentes materias que vamos a tratar. También existe un gran número de libros que ofrecen amplia información.
4D nos ofrece una serie de comandos que nos permiten crear, leer y transformar archivos XML. Los comandos DOM y SAX se utilizan para escribir y analizar los diferentes elementos de un archivo XML. Para la transformación de documentos, 4D dispone de APPLY XSLT TRANSFORMATION.
El eje central de los artículos es enseñar a los lectores a escribir archivos XML y transformarlos a diferentes formatos: HTML, Word y Excel. Para que esto sea sencillo de aprender he creado una base de datos de ejemplo, la cual se podrá descargar y utilizar el código para incorporar en sus aplicaciones. En ella existe todo el código comentado en los artículos. Es sabido que en programación un algoritmo se puede desarrollar de diferentes maneras, en esta base de ejemplo he intentado crear el código de una manera sencilla y básica para que sea comprensible.

Cómo crear documentos XML
Un documento XML es un archivo de texto plano, en el que se intercalan marcas con el objeto de distinguir las distintas partes. Las marcas se pueden diferenciar fácilmente del texto ya que todas las marcas se escriben precedidas del carácter < (menor que), y seguidas del carácter > (mayor que).
Con el fin de que las aplicaciones informáticas sean capaces de interpretar las marcas que identifican cada elemento y deducir la estructura jerárquica del documento XML para su posterior procesamiento, es necesario que las marcas estén anidadas correctamente.
Para que las marcas estén anidadas de la forma adecuada, se deben cumplir las siguientes restricciones:
- La marca de fin de un elemento A no puede escribirse hasta que no se hayan introducido todas las etiquetas de cierre de los elementos cuya marca de inicio esté situada después de la marca de apertura del elemento A.
- No se puede introducir una marca de cierre de un elemento si no se ha introducido antes su marca de inicio.
- Para todos los elementos no vacíos del documento se debe incluir una marca de inicio y una de fin.
Veamos la siguiente imagen:
Además de estas marcas, el documento contiene una marca especial en la primera línea del documento:
<?xml version=”1.0? encoding=”ISO-8859-1??>
Esta marca especial, obligatoria en todos los documentos XML, constituye la llamada declaración XML. La declaración XML permite saber a la aplicación encargada de procesar el documento que se trata de un documento en formato XML. Además del calificador versión también se puede añadir encoding el cual recoge el juego de caracteres que se utiliza en el documento.
Todos los elementos que conforman un documento XML deben estar comprendidos en un único elemento: el elemento raíz. El elemento raíz constituye la base de la estructura jerárquica de los documentos XML y tiene las siguientes características:
- Incluye a todos los elementos del documento.
- No está comprendido en ningún otro elemento.
En nuestra imagen de ejemplo el elemento raíz es: <Productos>
Ahora ya conocemos brevemente la composición de los archivos XML. El siguiente paso es comentar la creación de estos documentos utilizando los comandos de 4th Dimension.
Crear documentos XML es muy fácil, voy a explicar paso a paso el código utilizado en la base de datos que se adjunta en este artículo.
Mediante el comando Create document creamos un archivo, el cual tendrá la extensión .xml (ejemplo: Productos.xml).
La primera línea del documento XML se escribe con el comando SAX SET XML OPTIONS. Para añadir el elemento raíz se utiliza: SAX OPEN XML ELEMENT. El nombre del elemento raíz del documento XML será <Productos>.
Seguidamente vamos a crear los otros elementos de nuestro archivo XML:
Para crear un elemento utilizamos el comando SAX OPEN XML ELEMENT, para añadir datos dentro del elemento utilizamos SAX ADD XML ELEMENT VALUE y finalmente para cerrar la marca SAX CLOSE XML ELEMENT.
En los campos Real, 4D utiliza por defecto el separador decimal definido en el sistema operativo. Las normas W3C (http://www.w3.org/TR/xmlschema11-2/#decimal) aconsejan que el punto sea definido como separador decimal.
En la imagen anterior podemos ver que antes de crear el elemento <Precio_Producto> verificamos el formato que utiliza el sistema operativo y si utiliza la coma como separador decimal cambiamos la coma del texto e introducimos el punto como separador decimal.
Es cierto que en determinados casos nos puede ser indiferente utilizar la coma o el punto, por ejemplo si queremos convertir un documento XML a formato Word o HTML quizá nos interesa que aparezca la coma como separador, pero si nos interesa convertir un documento a formato compatible con Excel es obligatorio que el punto sea el separador decimal. Por eso cada circunstancia determinará si utilizamos la coma o el punto como separador decimal.
En el ejemplo utilizamos un método 4D para cambiar el separador decimal. En los casos que utilizamos el procesador XSLT también podríamos utilizar una función de XSLT para realizar esta misma operación. Una de las ventajas de los documentos XML es la posibilidad de poderlos transformar y modificar sin grandes complicaciones.
Finalmente no nos olvidemos de cerrar el elemento raíz <Productos> y el documento que hemos creado.
Bibliografía
Office 2003 XML. Editorial O’REILLY. Autores: Evan Lenz, Mary McRae, Simon St. Laurent.
Le Guide 4D 2004. Editorial eNode. Autores: Philippe Ganter, Christophe Keromen, Robert Van Loo.
The 4th Dimension Web Services Companion. Editorial: 4DPress. Autor: David Adams.
XSLT Cookbook. Editorial O’REILLY. Autor: Sal Mangano.
XSLT 2.0. Editorial WROX. Autor: Michael Kay.
XPATH 2.0. Editorial WROX. Autor: Michael Kay.
Aplicación de demostración
Puede descargar la aplicación de demostración con la que puede practicar lo expuesto en este blog de:
Versión Mac:
http://www.baarasoft.eu/Productos.sit
Versión Windows:
http://www.baarasoft.eu/Productos.exe