¿Cuál es la explicación de un laico de por qué XML es de tipo seguro?

Primero hablemos sobre qué es XML y qué significa “type-safe” antes de hablar de por qué XML es type-safe.

XML es solo un documento de texto que contiene palabras y símbolos. El XML tiene una estructura como oraciones y párrafos en esta publicación. Una persona puede abrir un XML en cualquier editor de texto sin formato y mirarlo.

XML que es seguro para los tipos significa que sabrá de inmediato si comete un error al escribir el XML o al crear el XML, antes de pasar el XML a algún programa de computadora para su procesamiento. Esto es muy importante porque puede haber muchos fragmentos de código que tienen que usar ese XML y hacer suposiciones al respecto. Por ejemplo, si el XML son artículos de inventario y el recuento de artículos es un número. ¿Qué sucede si alguien ingresa la palabra “Mike” en lugar de un número para el recuento de inventario? Eso significa que cada pieza de código que utiliza el XML explotará cuando vea el registro de inventario e intente agregar o restar uno de “Mike”. Podemos proteger nuestro código haciendo que cada pieza de código se verifique primero para asegurarnos de que el recuento sea numérico y que se realice esta verificación cada vez que se use el recuento de inventario o que podamos hacer que nuestro XML sea seguro.

“Tipo seguro” generalmente significa que el error se detecta antes de tiempo y explota el código. Entonces, el recuento de inventario, en nuestro ejemplo, siempre se puede suponer que es un número y nuestro código es seguro al no verificar el valor para asegurarse de que sea un número antes de usarlo. El recuento nunca será “Mike”. Entonces, por ejemplo, el navegador Chrome me muestra errores en mi ortografía mientras escribo esta publicación. Puedo corregir esos errores para que nadie sepa lo mal que escribo. Es como escribir con seguridad, ya que mi mala ortografía nunca llega al consumidor o al lector. ¡MS Word tiene la capacidad de corregir mi gramática mientras escribo!

La forma en que esta detección temprana, o comportamiento de “seguridad de tipo” se logra para XML es mediante la creación de otra pieza de XML. Un XML superior o XML jefe conocido en la computadora habla como un “esquema”. Entonces, por ejemplo, si tiene algún XML que contiene la dirección de un cliente, entonces un programa de computadora puede usar el esquema para verificar la dirección XML en busca de errores. Esos errores pueden ser devueltos al autor para corregirlos en lugar de pasarlos corriente abajo. Hay editores XML que realmente usan el esquema mientras escribimos para mostrar nuestros errores.

Ahora CSV y JSON no tienen esquemas, por lo que cada pieza de programación de computadoras tiene que validarlos cuando los ve o sufrir consecuencias catastróficas. Es posible crear XML sin un esquema y ese XML no es de tipo seguro. Así que siempre haga un esquema para XML antes de escribir programas que lo usen.

En comparación con JSON, XML tiene algunos engranajes adicionales:

  1. DTD
  2. Atributos también conocidos como metadatos
  3. Vocabularios definidos (esquema XML)

DTD sienta las bases de la “flexibilidad” para un tipo particular de documentos XML. Debido a que los DTD no son XML, es una especie de aplicación (porque está fuera del marco XML).

Los atributos le dan a XML la capacidad de especificar información “extra”. En comparación con JSON que solo tiene “datos”, los atributos XML proporcionan “metadatos” para una etiqueta. Los tipos definidos por el usuario son un buen uso particular de estos “metadatos” porque a) no son datos 2) deben estar estrechamente relacionados con cada dato.

Y en base a las comunidades XML 1 y 2 comenzaron a construir todos los vocabularios XML diferentes, o “sub-idiomas”, cada uno de los cuales tiene un conjunto específico de etiquetas XML, con atributos específicos que implican restricciones. Estas restricciones, combinadas con todo tipo de herramientas de validación y API, hacen que XML sea “seguro para los tipos”.

Porque XML en combinación con el Esquema XML le permite definir tipos de datos para elementos y atributos y aplicarlos como una función de validación. JSON y CSV no lo hacen y esos formatos dependen únicamente de la documentación y el conocimiento de los datos locales para interpretarlos correctamente. Los esquemas XML me permiten distribuir todos los detalles de mi formato de datos, incluido el tipeo, y asegurarme de que se seguirán sin ninguna otra documentación y permitir la automatización completa de esa verificación.

Esto surge principalmente en tipos de datos numéricos y con patrones. El esquema XML me permite especificar un elemento como un tipo numérico o de coincidencia de patrones y un analizador de validación verificará que el elemento de datos cumpla con los requisitos de tipo de datos antes de pasarlo a mi aplicación. En JSON y CSV, tendría que analizar los datos, extraer el elemento sin procesar y luego intentar convertirlo a mi tipo de datos esperado y ver qué sucede.

Hay esfuerzos para construir un sistema de esquema JSON para darle a JSON la misma capacidad que el esquema XML para el intercambio de datos. Por ahora, el Esquema XML es la razón por la cual XML es el estándar de facto para el intercambio de datos agnósticos de plataforma, sistema y aplicación.