4D incluye un conjunto de comandos utilizados para analizar objetos que contienen los datos XML (eXtensible Markup Language).
Nota relativa al modo apropiativo: las referencias XML creadas por un proceso apropiativo sólo se puede utilizar en este proceso específico. Por el contrario, las referencias XML creadas por un proceso cooperativo pueden ser utilizadas por cualquier otro proceso cooperativo, pero no pueden ser utilizadas por cualquier proceso apropiativo.
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.
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 Presentación de los comandos XML SAX.
Para mayor información sobre estándares XML, consulte los siguientes sitios: http://www.saxproject.org/?selected=event y http://www.w3schools.com/xml/.
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 XML GET ERROR (común para ambos estándares XML).
El comando DOM CLOSE XML permite cerrar la fuente al final.
Nota sobre el uso de parámetros BLOB XML: las estructuras XML están basadas en datos de tipo texto, se recomienda utilizar variables o campos de tipo texto para manipularlas. Por razones históricas, los comandos XML de 4D (por ejemplo DOM Parse XML variable) aceptan parámetros de tipo BLOB. En versiones anteriores de 4D, el tamaño de las variables de tipo Texto está limitado a 32 KB. A partir de la versión 11 de 4D, las variables y los campos de tipo texto pueden contener hasta 2 GB de datos. Como se eliminó la limitación original, ahora no se recomienda almacenar texto en BLOBs. El uso de BLOBs está reservado para el procesamiento de datos binarios. Conforme con las especificaciones XML, a partir de 4D v12, los datos binarios son codificados automáticamente en Base64, incluso cuando el BLOB contiene texto.
Varios comandos XML DOM (DOM Create XML element, DOM Find XML element, DOM Create XML element arrays y DOM SET XML ELEMENT VALUE) soportan algunas expresiones 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 obtener una lista completa de las expresiones XPath compatibles, consulte la descripción del comando DOM Find XML element.
Nota de compatibilidad: a partir de la v18 R3, la implementación de XPath en 4D se ha modificado para que sea más compatible y soportar un conjunto más amplio de expresiones. Por razones de compatibilidad, la implementación no estándar anterior se mantiene de forma predeterminada en las bases convertidas. Si desea beneficiarse de las funcionalidaes extendidas en sus bases convertidas, debe seleccionar la opción de compatibilidad Utilizar XPath estándar de Página Compatibilidad.
Nota: la versión XPath utilizada es v1. Para más información, consulte la especificación XPath.
Los siguientes conjuntos de caracteres son soportados por los comandos XML DOM y XML SAX de 4D:
- ASCII
- UTF-8
- UTF-16 (Big/Small Endian)
- UCS4 (Big/Small Endian)
- EBCDIC code pages IBM037, IBM1047 y IBM1140 encodings,
- ISO-8859-1 (o Latin1)
- Windows-1252.
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 codificados en forma hexadécimal, lo cual significa que su longitud es de 32 caracteres en un sistema de 64 bits. Se recomienda declarar las referencias XML utilizando la directiva _O_C_TEXT.
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.
Varias funciones de este tema devuelven una referencia de elemento XML. Si ocurre un error durante la ejecución de una función, por ejemplo si la referencia del elemento raíz es inválida, la variable OK toma el valor 0 y el comando genera un error.
Además, la referencia devuelta en este caso es una secuencia de 32 caracteres "0".