Representación
XML
XML, siglas en inglés de eXtensible Markup Language(Lenguaje de Marcas Extensible), es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C) utilizado para almacenar datos en forma legible. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones deben comunicarse entre sí o integrar información. - Wikipedia
La primera definición de XML fue la de "Sistema para definir, validar y compartir formatos de documentos en la Web". La diferencia fundamental entre HTML y XML es que el primero estaba orientado a la presentación de datos, mientras que XML está orientado a los datos en sí mismos, por lo que cualquier software informático trabajará mejor con XML. El lenguaje XML es más estricto que el HTML. Los principales usos de XML son: separación de contenido y presentación, comunicación entre aplicaciones y configuración de programas - Hipertexto - XML
Componentes básicos
Elementos-Etiquetas (anidadas):
<empleado> <nombre>Juan</nombre> <apellido> <paterno>Perez</paterno> <materno>Perez</materno> </apellido> ... </empleado>
Atributos: es un par de nombre=valor:
<producto id="123" precio="i34.98" existencia="true"> ... </producto>
Texto:
<cita> ... <observacion> El paciente no presentó su tarjeta de derechohabiente. </observacion> ... </cita>
XML bien-formado o bien-estructurado
Es un documento XML que se ajusta a 3 requerimientos básicos:
Existe un solo elemento-etiqueta raíz en todo el documento:
Incorrecto:
<etiqueta-a> </etiqueta-a> <etiqueta-b> </etiqueta-b>
Correcto:
<etiqueta-a> <etiqueta-b> </etiqueta-b> </etiqueta-a>
Permitido:
<etiqueta-a> <etiqueta-b> </etiqueta-b> <etiqueta-b> </etiqueta-b> <etiqueta-b> </etiqueta-b> </etiqueta-a>
Los elementos-etiquetas están debidamente anidadas:
Incorrecto:
<etiqueta-a> <etiqueta-b> <etiqueta-c> </etiqueta-b> </etiqueta-c> </etiqueta-a>
Correcto:
<etiqueta-a> <etiqueta-b> </etiqueta-b> <etiqueta-c> </etiqueta-c> </etiqueta-a>
Los atributos no pueden repetirse en un mismo elemento-etiqueta:
Incorrecto:
<etiqueta nombre1="valor1" nombre2="valor2" nombre1="valor3"> ... </etiqueta>
Correcto:
<etiqueta nombre1="valor1" nombre2="valor2" nombre3="valor3"> ... </etiqueta>
Permitido:
<etiqueta nombre1="valor1" nombre2="valor1" nombre3="valor1"> ... </etiqueta>
XML válido
Es un documento XML bien-formado que además se ajusta a la especificación dada por un descriptor de contenido o schema:
Un documento XML es un documento de texto plano, por lo que es posible estar ante un documento bien-formado pero que carezca con algún significado o semántica útil para una aplicación/sistema, por ejemplo:
<empleado id="hola mundo">
<nombre>12@#???? Juan 00</nombre>
<apellido>
<paterno>true</paterno>
</apellido>
<materno></materno>
<domicilio>%</domicilio>
<estado>másculino</estado>
</empleado>
Ejemplos
Comparativa con el Modelo Relacional
XML | Modelo Relacional | |
Estructura | Jerárquico / Árbol | Tabla / Tupla |
Esquema (Schema) | Flexible y auto-documentado / DTD y XML Schema | Fijo y anticipado / Data Definition Language (DDL) |
Consultas (Queries) | XPath y XQuery | SQL |
Orden | Implicado por la jerarquía/árbol (nodo padre, nodos hijos) | Ninguno |
Implementación | BaseX, eXist, Qizx, IBM DB2, PostgreSQL, etc | PostgreSQL, MariaDB, MySQL, SQLite, etc |
Lecturas
JSON
JSON (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para las máquinas es simple interpretarlo y generarlo. JSON es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidos por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos. JSON.org
Componentes básicos
- Valores: cadenas de caracteres (encerrados con comillas dobles), números (enteros y de punto flotante, con o sin signo),
true
,false
ynull
. - Objetos: pares de nombre-valor. Los pares son separados por una coma y encerrados por llave de apertura y de cierre. Los nombres son cadenas de caracteres y son únicos en el objeto, independientemente del valor al que estén asociados.
- Arreglos: secuencias de valores y/o objetos. Los valores son separados por una coma y encerrados por corchete de apertura y de cierre.
JSON sintacticamente válido
Es todo aquel documento de JSON que se ajusta a 3 requerimientos básicos:
- Objetos como colección de pares nombre-valor.
- Arreglos como secuencia de valores.
- Los valores como tipos de datos predefinidos en JavaScript. Exceptuando a
undefined
.
JSON semánticamente válido
Es un documento JSON sintacticamente válido que además se ajusta a la especificación dada por un descriptor de contenido o schema:
Un documento JSON es un documento de texto plano, por lo que es posible estar ante un documento sintacticamente válido pero que carezca con algún significado o semántica útil para una aplicación/sistema, por ejemplo:
{
"tipo": "empleado",
"id": "hola mundo",
"nombre": "12@#???? Juan 00",
"apellido": {
"paterno": true
},
"materno": 786,
"domicilio": "%",
"estado": "másculino"
}
Ejemplos
Comparativa con el Modelo Relacional
JSON | Modelo Relacional | |
Estructura | Jerárquico (Objeto) y/o Secuencial (Arreglo) | Tabla / Tupla |
Esquema (Schema) | Flexible y auto-documentado / JSON Schema, Ajv y joi | Fijo y anticipado / Data Definition Language (DDL) |
Consultas (Queries) | JSON Path, JSON Query, JSONiq, etc | SQL |
Orden | Implicado por la jerarquía o secuencia | Ninguno |
Implementación | MongoDB, RethinkDB, CouchDB, OrientDB, Elasticsearch, PostgreSQL, etc | PostgreSQL, MariaDB, MySQL, SQLite, etc |
Lecturas
- Introducción a JSON por Jose Manuel Sánchez Suárez
- Tutorial JSON y La muerte de XML en la web por Carlos Benítez