versión 11.3 (Modificado)
4D incluye un conjunto de comandos utilizados para analizar objetos que contienen los datos XML (eXtensible Markup Language).
A propósito del lenguaje XML
El lenguaje XML es un estándar de intercambio de datos. Está basado en el uso de etiquetas y permite describir de manera precisa los datos intercambiados así como su estructura. Los archivos XML son archivos en formato Texto, su contenido es analizado (parsing) por las aplicaciones que importan los datos. Hoy en día, muchas aplicaciones soportan este formato.
Para mayor información sobre XML, consulte, por ejemplo, los sitios http://xml.org y http://www.w3.org.
Para soportar XML, 4D utiliza una librería llamada Xerces.dll desarrollada por la sociedad Apache Foundation. 4D soporta XML versión 1.0.
Nota: 4D permite importar y exportar directamente los datos en formato XML utilizando el editor de importación/exportación.
Comandos DOM y comandos SAX
Los comandos de este tema tienen el prefijo DOM. De hecho, 4D ofrece dos conjuntos independientes de comandos XML, con prefijo DOM y SAX: DOM (Document Object Model) y SAX (Simple API XML) son dos modos de análisis diferentes de los documentos XML.
El modo DOM analiza una fuente XML y crea su estructura (su "árbol") en memoria. Por esta razón, el acceso a cada elemento de la fuente es extremadamente rápido. Sin embargo, como la totalidad del árbol se almacena en memoria, el procesamiento de documentos XML grandes podría exceder la capacidad de memoria y por lo tanto provocar errores.
El modo SAX no crea un árbol en memoria. En este modo, los "eventos" (tales como el inicio o el fin de un elemento) son generados durante el análisis de la fuente. Este modo le permite analizar documentos XML de cualquier tamaño, sin importar la cantidad de memoria disponible. Los comandos SAX se agrupan en el tema "XML SAX". Para mayor información, consulte la sección Overview of XML SAX Commands.
Para mayor información sobre estándares XML, consulte los siguientes sitios: http://www.saxproject.org/?selected=event y http://www.w3schools.com/xml/.
Creación, apertura y cierre de documentos XML vía DOM
Los objetos creados, modificados o analizados por los comandos DOM de 4D pueden ser de tipo texto, URLs, documentos o BLOBs. Los comandos DOM utilizados para la apertura de los objetos XML en 4D son Parse XML source y DOM Parse XML variable.
Varios comandos le permiten leer, analizar y escribir los elementos y los atributos. La recuperación de errores se efectúa vía el comando GET XML ERROR (común para ambos estándares XML).
El comando DOM CLOSE XML permite cerrar la fuente al final.
Creación, apertura y cierre de documentos XML vía SAX
Los comandos SAX trabajan con referencias de los documentos estándar de 4D (DocRef, referencia de tipo Hora). Por lo tanto es posible utilizar estos comandos conjuntamente con los comandos 4D utilizados para administrar documentos, tales como SEND PACKET o Append document.
La creación y la apertura por programación de los documentos XML se efectúa vía los comandos Create document y Open document. Posteriormente, el uso de un comando XML con estos documentos provocará la implementación automática de los mecanismos XML tales como codificación. Por ejemplo, el encabezado <?xml version="1.0" encoding=" encodage " standalone = "no "?> se escribirá automáticamente en el documento.
Nota: los documentos destinados a la lectura SAX deben abrirse en modo sólo lectura por el comando Open document. Esto evita que pueda surgir cualquier conflicto entre 4D y la librería Xerces al abrir simultáneamente los documentos "estándar" y XML. Si ejecuta un comando de análisis SAX con un documento abierto en modo lectura-escritura, se mostrará un mensaje de alerta y el análisis será imposible.
El cierre de un documento XML debe efectuarse utilizando el comando CLOSE DOCUMENT. Si los elementos XML están abiertos, se cerrarán automáticamente.
Uso de la notación XPath (DOM)
Tres comandos DOM (DOM Create XML element, DOM Find XML element y DOM SET XML ELEMENT VALUE) aceptan la notación XPath para el acceso a los elementos XML.
La notación XPath viene del lenguaje XPath, designado a la navegación dentro de estructuras XML. Permite designar directamente los elementos dentro de una estructura XML vía una sintaxis de tipo "ruta de acceso", sin tener que indicar necesariamente la ruta completa. Por ejemplo, dada la siguiente estructura:
<RootElement> <Elem1> <Elem2> <Elem3 Font=Verdana Size=10> </Elem3> </Elem2> </Elem1> </RootElement>
La notación XPath permite acceder al elemento 3 utilizando la sintaxis /RootElement/Elem1/Elem2/Elem3.
4D acepta igualmente los elementos XPath indexados, utilizando la sintaxis Element[ElementNum]. Por ejemplo, dada la siguiente estructura:
<RootElement> <Elem1> <Elem2>aaa</Elem2> <Elem2>bbb</Elem2> <Elem2>ccc</Elem2> </Elem1> </RootElement>
La notación XPath permite acceder al valor "ccc" utilizando la sintaxis /RootElement/Elem1/Elem2[3].
Para una ilustración de la notación XPath, por favor consulte los ejemplos de los comandos DOM Create XML element y DOM Find XML element.
Gestión de las transformaciones XSL
4D soporta la aplicación de hojas de estilo XSL (eXtended Stylesheet Language). El lenguaje XSL permite modificar las etiquetas de un documento XML.
El lenguaje XSL tiene dos aspectos diferentes:
El formato: permite aplicar las reglas de estilo y visualización para los elementos XML, similar a CSS (Cascading StyleSheet) en HTML.
Las transformaciones: permite transformar una etiqueta XML a otro sistema de etiquetas, por ejemplo, HTML. Esta función se conoce como XSLT. Una hoja de estilo XSL puede reorganizar totalmente los elementos XML de un documento seleccionándolos y luego transformándolos en otros elementos. Esta función es útil, por ejemplo, para la sincronización de un conjunto de documentos diferentes.
Nota: 4D utiliza la librería Xalan-C_1_6_0.dll para la realización de las transformaciones XSL. Xalan es un procesador XSLT de dominio público. Para mayor información, visite http://xml.apache.org/xalan-c/index.html.
Las hojas de estilo XSL son documentos de texto (con extensión .xsl) generados manualmente o con aplicaciones especializadas. El lenguaje XSL tiene diferentes elementos y funciones que permiten realizar todo tipo de transformación dinámica. Para mayor información sobre este lenguaje, visite http://xmlfr.org (por ejemplo).
4D permite transformar un documento XML utilizando una hoja de estilo XSL existente (comando APPLY XSLT TRANSFORMATION). Igualmente, 4D permite modificar rápidamente los parámetros de la hoja de estilos XSL vía el comando SET XSLT PARAMATER.
Nota: una opción de la caja de diálogo de exportación también permite utilizar una hoja de estilos XSL durante una exportación XML y generar un documento XML transformado.
Terminología
El lenguaje XML utiliza numerosos términos y acrónimos específicos. Esta lista no exhaustiva detalla los principales conceptos XML utilizados por los comandos y funciones de 4D.
Atributo: una subetiqueta XML asociada a un elemento. Un atributo siempre contiene un nombre y un valor (ver diagrama a continuación).
Hijo: en una estructura XML, un elemento en un nivel directamente inferior a otro.
DTD: Document Tipo Declaration (Declaración de tipo de documento). La DTD graba el conjunto de reglas y de propiedades específicas que debe seguir un documento XML. Estas reglas definen, más particularmente, el nombre y contenido de cada etiqueta como también su contenido. Esta formalización de los elementos permite verificar que un documento XML esté en conformidad (en ese caso, se declara "válido").
La DTD puede incluirse en el documento XML (DTD interna) o en un documento separado (DTD externo). Note que la DTD no es obligatoria.
Elemento: una etiqueta XML. Un elemento siempre contiene un nombre y un valor. Opcionalmente, un elemento puede contener atributos (ver diagrama).
RefElement: referencia XML utilizada por los comandos XML de 4D para especificar una estructura XML. Esta referencia está formada por 8 caracteres en forma hexadecimal, lo cual significa que está compuesta por 16 caracteres.
Padre: en una estructura XML, un elemento de un nivel directamente superior a otro.
Parsing, parser (Analizador): acción de analizar el contenido de un objeto estructurado para extraer información útil. Los comandos del tema "XML" se utilizan para analizar el contenido de todo objeto XML.
Raíz (Root): elemento ubicado en el primer nivel de una estructura XML.
Hermano: en una estructura XML, elemento del mismo nivel que otro.
Estructura XML: objeto XML estructurado. Este objeto puede ser un documento, una variable, o un elemento.
Validación: un documento XML es "validado" por el analizador XML cuando está "bien formado" y conforme con las especificaciones de la DTD. Ver también Bien formado.
Bien formado: un documento XML es declarado "bien formado" por el analizador XML cuando cumple con las especificaciones XML genéricas. Ver también Validación.
XML: eXtensible Markup Language (Lenguaje de etiquetas evolutivo). Estándar de intercambio de datos computarizado que permite transferir datos como también su estructura. El lenguaje XML está basado en el uso de etiquetas y una sintaxis específica, de acuerdo con el lenguaje HTML. Sin embargo, a diferencia de éste último, el lenguaje XML permite la definición de etiquetas personalizadas.
XSL: eXtensible Stylesheet Language (Lenguaje de hojas de estilo evolutivo). Lenguaje que permite definir las hojas de estilo utilizadas para procesar y visualizar los contenidos de un documento XSL.