.. _ej-li: Lenguajes para el intercambio de datos ====================================== Empecemos por algunos de identificación de nodos en lenguajes de serialización de datos: .. _ej10-01: #. Determine y justifique cuántos nodos contiene el siguiente documento |JSON|: .. code-block:: json { "nombre": "Pedro Martínez Álvarez", "edad": 32, "casado": true, "hijos": [ "Felipe", "Sonsoles" ] } #. Indique cuáles son los tipos de los nodos del ejercicio anterior. .. _ej10-03: #. Determine y justifique cuántos nodos contiene el siguiente documento |YAML|: .. code-block:: yaml --- nombre: Pedro Martínez Álvarez edad: 32 casado: true nacimiento: 1991-05-07 defuncion: null direccion: calle: Callo num: 5 cp: 12345 #. Reescriba el documento anterior haciendo explícitos mediante etiquetas (``!!int``, ``!!str``, etc.) los tipos que se deducen del aspecto de los nodos. Y, ahora, diseñemos documentos para transmitir o almacenar información. De cada uno de ellos cree versiones |JSON|, |YAML| y |XML|. .. _ej10-05: .. _ej-li-doc: 5. Diseñe un documento para almacenar las facturas generadas por una empresa. Téngase en cuenta que: * Cada factura tiene un código. * La factura también necesita la fecha de emisión. * En la factura aparecen los datos del cliente (dni, nombre, dirección, código postal, población). * De cada producto que se ha comprado debe aparecer la cantidad de productos comprados, la denominación y el precio unitario. * Se debe guardar el :abbr:`IVA (Impuesto sobre el Valor Añadido)` de cada producto. * Si es necesario se indicará un descuento al importe total de la factura. .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` | :download:`JSON Schema ` .. _ej-li-6: #. Diseñe un documento para almacenar la información sobre los préstamos de libros que se realizan en una biblioteca: * De cada libro guardamos varios datos: código :abbr:`ISBN (International Standard Book Number)`, nombre, editorial, año de publicación, autor. * De cada libro podemos tener uno o varios ejemplares. Cada ejemplar se diferencia de otro por un código numérico. * Se prestan los ejemplares, y de cada préstamo hay que indicar el ejemplar del libro, el socio al que se ha prestado y la fecha de préstamo. * Del socio hay que guadar DNI, nombre y dirección. .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` #. Escriba un documento para almacenar los coches que tiene puestos a la venta un concesionario: * El concesionario se dedica a vender coches de distintos modelos de una misma marca de coches (es conveniente que en el documento quede constancia de cuál es esa marca). * De cada modelo es necesario recoger la cilindrada, los caballos de vapor, la velocidad máxima y el número de plazas. * También se quiere almacenar cuántos coches de cada modelo hay en el concesionario, identificar cada uno de ellos y saber los kilómetros que tiene (el concesionario también vende coches de segunda mano). * Un coche puede estar reservado o no. .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` #. Retome el ejemplo del ejercicio anterior, pero enriquezca el documento para que se conozca los del cliente que ha realizado una determinada reserva (nombre, dirección, tlfo). .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` | :download:`JSON Schema ` #. Diseñe un documento que recoja la información referente a los Parques Nacionales de España, en especial: * Provincia y Comunidad Autónoma en la que se encuentra. * Extensión de terreno. * Presupuesto anual para su protección. * Fauna y flora a preservar: - Nombre común. - Nombre científico. - Número de ejemplares en cada parque (para fauna). - Peligro de extinción: alto, medio, bajo. .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` #. Un ayuntamiento desea recoger la información de los habitantes que hay en su municipio, de manera que de cada ciudadano se sepa: * Nombre y apellidos * Dirección * Teléfono * Lugar de nacimiento * Quién es el padre y quién la madre. .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` #. Diseñe un documento para almacenar la información de un gráfico vectorial en 2 dimensiones. Los elementos que pueden definirse en ese documento son: - *Punto*: Se definirá con dos coordenadas: x,y. - *Circunferencia*: se define por un centro (coordenadas x,y) y un radio. - *Recta*: se define por dos puntos: el inicial y el final. - *Rectángulo*: se define por dos puntos: la esquina superior derecha y la esquina superior izquierda. Todo elemento debe estar inequívocamente identificado, y debe conocerse de alguna forma cuál es la unidad de medida (m, cm, etc.) en que están expresados todos los números que aparecen. .. rst-class:: sol-oculta | :download:`XML ` | :download:`JSON ` | :download:`YAML ` | :download:`DTD ` | :download:`RNC ` | :download:`JSON Schema ` .. |YAML| replace:: :abbr:`YAML (YAML Ain't Markup Language)`