I2factory usa internamente el estándar XML y sus lenguajes derivados de expresiones XPATH y de transformaciones XSLT.


Este artículo pretende servir de punto de entrada del lenguaje XML para aquellos usuarios no avanzados o desconocedores de este estándar. Aunque no es estrictamente imprescindible, es muy recomendable que el usuario de i2factory tenga conocimientos de estos lenguajes, al menos a un nivel básico.


Páginas de referencia de W3C

 

XML es un estándar y una tecnología mantenida por el consorcio internacional World Wide Web Consortium, o W3C, que produce recomendaciones para la World Wide Web.

Aunque en esta documentación online de i2factory encontrarás ejemplos y tutoriales sobre XML, XPATH y XSLT, recomendamos encarecidamente que el usuario avanzado visite la web oficial del estándar XML, la web de especificaciones de la última versión y los tutoriales oficiales de la w3school.com. Todo el material de ayuda que encuentres en esta base de conocimiento está basado y ha sido extraído de esas webs.


¿Qué es XML?

XML son las siglas de EXtensible Markup Language (lenguaje de marcado extensible). XML sirve para estructurar, almacenar e intercambiar información. Se trata de un lenguaje basado en marcas, muy similar a HTML pero su función principal es describir datos y no mostrarlos, como es el caso de HTML.

Por ejemplo, el documento XML de la derecha, se trata de registro de una librería que describe un libro determinado con un título, un autor, el año de publicación y el precio, y cuenta también indica el idioma en el que está escrito el libro con un atributo. 

El formato XML sirve para envolver la información en etiquetas estructuradas de manera que podemos usarlo en un software de gestión o por ejemplo como estructura de email en un programa de correo electrónico.

XML es un lenguaje de etiquetado muy simple, pero muy orientado intercambio de una gran variedad de datos. XML es un formato que permite la lectura de datos a través de diferentes aplicaciones, por esto mismo es el lenguaje escogido para implementar la mensajería dentro de i2factory.


93Mhyp7iQlNST6Ghx8MMq5Yq3WHGIR5DiA.png Cualquiera puede entender XML: Una de las ventajas de XML es que no es un lenguaje de programación, y no hace falta ser un programador para usarlo o aprenderlo. Cualquiera puede aprender rápido su estructura y funcionamiento y comprender la estructura de los mensajes en i2factory.


 

GIK-I7KRjdRMJoB_2fS2ZSt1XjMrzOD0_Q.png

ZKmRsft0UgTXfjB7xeHtB07PT6aSJ74c5w.png


tNOM6I062rZRYIHy5wzv_aaPXWy-9EnR_Q.pngPadre, hijo y hermanoLos términos padre, hijo y hermano son usados para describir las relaciones entre elementos. Los padres tienen hijos, los hijos tienen padres. Los hermanos son hijos al mismo nivel. Todos los elementos en XML pueden tener contenido o valor (por ejemplo "Harry Potter") y atributos (por ejemplo category = "cooking").



Estructura en árbol de los mensajes

Los documentos XML están formados por árboles de elementos. Un árbol XML comienza por el elemento o nodo raíz y se ramifica desde la raiz a los elementos hijos. Todos los elementos pueden tener subelementos (elementos hijos):


UgfYS-pyQ4xARy_g2sVgahE_GsFSeL511g.png

Es imprescindible en todos los documentos XML que contengan un sólo elemento raiz que es el padre del resto de elementos y todos los elementos deben estar perfectamente anidados unos con otros. En el ejemplo este elemento raíz es <bookstore>. 


HVyYTISSEA4f0xDRCh5hKOqLXdNIIX0sOw.png

 XML en i2factory

i2factory usa XML para implementar su sistema de mensajería interno.

Las aplicaciones se comunican a través de i2factory usando este formato y cada comando seleccionado en un puerto de entrada de una solución de integración introduce un mensaje en este formato, así como cada puerto de salida espera recibir otro mensaje en formato XML para poder ejecutar el comando seleccionado.

En concreto usamos XML en i2factory para el intercambio de información y comandos entre las aplicaciones que estamos integrando. Por ejemplo, los datos estructurados del mensaje podrían ser parámetros de configuración o transacciones financieras. Cada vez que un puerto de entrada (o de respuesta) ejecuta un comando determinado, lo que se introduce en slot de la solución de integración es un mensaje en formato XML, que sigue el esquema XSD implementado por dicho comando. 

La imagen de la derecha muestra cómo se interpreta y se visualiza gráficamente en i2factory el mensaje XML de la librería. Fíjate que se muestra tanto la estructura arbórea de los nodos como los tipos de los elementos y sus valores. Además, puedes desplegar y desplegar los nodos para visualizarlo mejor y encontrar lo que buscas más fácilmente.

Podremos visualizar documentos XML en varios sitios de la plataforma, por ejemplo en la subsección Mensajes dentro de la vista de detalle de una solución en el panel de control o en el Depurador de soluciones haciendo click en cualquier slot tras una ejecución de pruebas. 


FCPmZ9mJozeyYuWe-XgGi0YV0Tb_k-K4Vg.pngElementos no visibles: Date cuenta que información contextual como la declaración XML no aparece indicada en el árbol visual, como tampoco lo hacen otras características XML como los atributos. Que no se muestren visualmente no implica que no pueda accederse a ellos a través de expresiones XPATH o XSL.




Elementos XML

Un documento XML contiene elementos XML que es cualquier cosa desde la etiqueta de apertura del elemento de inicio (nodo raiz) hasta la etiqueta de cierre del mismo, ambos inclusive. Un elemento puede contener:

  • texto
  • atributos
  • otros elementos (hijos)
  • una mezcla de lo de arriba

En el ejemplo de la librería:

  • Los elementos <title>, <author>, <year>, y <price> contienen texto porque entre las etiquetas hay texto (como por ejemplo 29.99).
  • Los elementos <bookstore> y <book> contienen otros elementos hijos (por ejemplo <bookstore> contiene dos elementos <book>)
  • El elemento <book> tienen un atributo (category="children").

Un elemento que no tiene contenido se considera un elemento vacío, como por ejemplo: <element></element>. Los elementos vacíos aunque no tengan texto ni otros elementos, sí que pueden contener atributos. También se pueden usar etiquetas auto cerradas para indicar lo mismo que en el caso anterior de manera más breve: <element />



tNOM6I062rZRYIHy5wzv_aaPXWy-9EnR_Q.pngAtributos XML: Los elementos XML pueden llevar atributos, como en HTML, y están diseñados para contener datos adicionales relativos a un elemento específico. Los valores de los atributos siempre deben ir entrecomillados (pueden usarse tanto comillas dobles " como simples '), por ejemplo: <person gender="female">FCPmZ9mJozeyYuWe-XgGi0YV0Tb_k-K4Vg.pngAtributos no visibles en i2factory: Actualmente i2factory no muestra visualmente los atributos de los nodos XML en el depurador gráfico, por lo que recomendamos usar siempre elementos para almacenar la información. Esto no significa que no puedan usarse los atributos y acceder a ellos a través de expresiones XPATH o XSL, pero el usuario no podría visualizarlo gráficamente en el editor de construcción de soluciones.
 OFZkvb9KH52d6NVTFg6-2I3ojIewc5TF1A.png¿Cuando usar un atributo para un elemento o cuando usar un elemento hijo? Pues a gusto del usuario: no hay reglas específicas acerca de cuando usar atributos o cuando elementos XML para almacenar una información, pero sí es cierto que hay algunas diferencias que hace que convenga evitar los atributos:
  • los atributos no pueden contener múltiples valores (los elementos sí)
  • los atributos no pueden contener estructura de árbol (los elementos sí)
  • los atributos no son fácilmente expandibles para incluir futuros cambios en la estructura de la información (los elementos sí)
En la práctica, los atributos suelen ser usado para incluir metadatos a los elementos que no son parte de la información real de dicho elemento. Estos metadatos son datos sobre los datos, como por ejemplo identificadores numéricos a los elementos. Estos identificadores pueden ser usados para identificar elementos XML de una manera muy sencilla con una expresión XPATH


Reglas sintácticas y caracteres especiales

Resumimos a continuación las principales reglas que debes seguir cuando trabajes con XML en i2factory:

  • La primera línea de todo documento XML es llamada prólogo y es opcional. 
  • UTF-8 es el sistema de codificación por defecto de XML y el que usa i2factory internamente. Como los documentos pueden contener caracteres internacionales (como la "ñ") para evitar errores se suele especificar la codificación usada.
  • Todos los elementos XML deben tener una etiqueta de cierre "</element>" ya que es ilegal omitirla y daría un error al procesarla.
  • Los valores de los atributos deben ir siempre entrecomillados, sino provocarían un error de sintaxis (<book category="cooking">)
  • Respecto a los nombres de los elementos:
    • Son sensibles a mayúsculas y minúsculas
    • Deben comenzar con una letra o guión bajo
    • No puede empezar con la palabra "xml" (o XML o Xml, etc). El resto de palabras están permitidas
    • Pueden contener letras, dígitos, guiones, subrayados y comas
    • No pueden contener espacios en blanco
  • Los documentos XML que cumplan las reglas de sintaxis descritas en esta lista se consideran documentos XML bien formados.

FCPmZ9mJozeyYuWe-XgGi0YV0Tb_k-K4Vg.pngDeclaración sin cierre: La declaración o prólogo XML no lleva una etiqueta de cierre, pero no es un error dado que no se considera parte del XML.


FCPmZ9mJozeyYuWe-XgGi0YV0Tb_k-K4Vg.pngCuidado con las mayúsculas: Además ten en cuenta que las etiquetas XML son sensibles a mayúsculas/minúsculas con lo que esta expresion es incorrecta: <Message>This is incorrect</message>


93Mhyp7iQlNST6Ghx8MMq5Yq3WHGIR5DiA.pngBuenas prácticas en los nombres: Como buena práctica conviene usar nombres descriptivos como <person>, <firstname>, <lastname>. En caso de usar nombres de múltiples palabras, mantenerlos cortos y simples (<book_title> mejor que <the_title_of_the_book>). Evitar en la medida de lo posible puntos "." ("first.name") , guiones "-" ("first-name") y dos puntos ":". Usar preferiblemente el inglés a cualquier otro idioma (incluido el español, aunque sea perfectamente legal).

Las 5 entidades especiales de XLM son:
carácter
significado
referencia
< menor que &lt;
> mayor que &gt;
& ampersand &amp;
' apóstrofe &apos;
" comillas &quot;

Sólo "<" y "&" son estrictamente ilegales en XML, pero es buena práctica escapar también los otros 3 caracteres.

Algunos caracteres especiales como "<" tienen un significado concreto en XML y no pueden ser usados como el resto de caracteres normales, porque provocaría cuando el parseador lo interprete como el comienzo de un nuevo elemento: 

<message>salary < 1000</message>


 Para evitar el error anterior es necesario reemplazar el caracter "<" por la entidad de referencia "&lt;" (lo que coloquialmente se denomina escapar):

<message>salary &lt; 1000</message>

 

Los comentarios en XML se escriban de manera similar que en HTML: 


<!-- This is a comment -->


Izbby1UNL_vfu_YKNGeirmIBr4F15S8jZQ.pngEspacios en blanco en XML: XML no trunca secuencias múltiples de espacios en blanco, a diferencia de HTML.