UT3 LengAlmacTransmiJMPLv4
UT3 LengAlmacTransmiJMPLv4
Lenguajes para
el almacenamiento y
transmisión de la
información XML y
JSON
L E N G U A J E S D E M A R C A S Y S I S T E M A S D E G E S T I Ó N D E I N F O R M AC I Ó N
eXtensible Markup
Language
XML
https://www.w3schools.com/xml/default.asp
XML Tools
Después al crear un documento .xml bastará con poner un < para que se muestre el prólogo de
xml
Seguiremos el convenio de que las etiquetas empiecen siempre por una letra minúscula.
A la hora de elegir atributos tener en cuenta cuestiones que los atributos no tienen y los elementos
sí: tener varios valores, estructura arborescente, no son fácilmente expandibles.
I.E.S. Luis Vives - Desarrollo de Aplicaciones Web 11
Lenguajes de Marcas y Sistemas de
Elementos G e s t i ó n d e I n fo r m a c i ó n
Los elementos están compuestos por etiquetas de inicio, de fin, escritas con el mismo nombre y
todo el contenido que haya entre ambas (ya sea texto u otros elementos).
En el ejemplo: • Etiqueta de apertura: <cliente>.
<?xml version="1.0" encoding="UTF-8"?> • Etiqueta de cierre: </cliente>.
<clientes>
<cliente>Acer SA</cliente> • Contenido del elemento: Acer SA.
</clientes>
• Elemento cliente: <cliente>Acer SA</cliente>.
Un elemento vacío puede ser uno que no tenga etiqueta de cierre con o sin atributos:
<?xml version="1.0" encoding="UTF-8"?>
<clientes>
<cliente nombre="Acer SA"/>
</clientes>
• Los elementos tienen que estar anidados correctamente unos dentro de otros, cerrándose en orden inverso al
que se abren.
• Los nombres de los elementos y atributos tienen que seguir una nomenclatura específica como no empezar por
número, no usar caracteres especiales reservados, etc. Tienen que empezar por letras o los caracteres guion bajo
(_) o dos puntos (:), seguidos de guiones, puntos, números u otras letras. Tampoco pueden empezar por la
palabra XML.
• Si colocas como valor de un elemento caracteres especiales como el < se debe sustituir por un carácter especial.
Por ejemplo para indicar un rango de sueldo menor de 1000 no puedes indicar
Actividad 1. Crea un documento XML que contenga la información sobre los coches de un
concesionario. En concreto, marca, modelo, color, matricula, precio.
Actividad 2. Teniendo en cuenta la actividad anterior, cree el mejor XML usando como criterio la
mejor ordenación posible para un mejor filtrado por marca en nuestro concesionario.
Actividad 3. Es preciso mandar una tabla de manera segura y fiable a un programa cliente que
recoge información sobre unos árboles subtropicales: variedad, color de fruto, maduración, etc.
Transforma el siguiente cuadro sobre las distintas especies en un documento XML que almacene
dicha información.
Actividad 4. Es preciso mandar la información que se ha registrado en un foro, con las etiquetas
HTML sin procesar. En concreto se quiere mandar el siguiente texto:
<p>El usuario <b>usuario123</b> ha sido baneado del foro. Por incumplir la regla 23</p>.
Cree una estructura que sirva para enviar el texto tal cual, así como para encontrar fácilmente al
usuario del foro y las reglas incumplidas.
Actividad C1. Se necesita mandar información relativa plantilla de una empresa, se debe mandar
el puesto del empleado, el sueldo, el nombre y apellidos, así como la fecha de inicio en la empresa,
el departamento al que pertenece y el jefe de departamento. Utiliza XML teniendo en cuenta que
deberá ser lo más pequeño posible para que la transferencia del archivo sea lo más rápida posible.
Tenga en cuenta que el jefe del departamento también es un empleado y por tanto necesitamos
saber la misma información que el resto.
<clientes>
<cliente> <cliente>
<nombre>AcerSA</nombre> <nombre!>AcerSA</nombre!>
<CIF>5666333</CIF>
<CIF>5666333</CIF> </cliente>
</cliente> <cliente>
<cliente> <nombre!>ACME</nombre!>
<nombre>ACME</nombre> <CIF>455321</CIF>
</cliente>
<CIF>455321</CIF> </clientes>
</cliente>
Creación, asociación y
elementos de DTD y XSD
https://www.w3schools.com/xml/xml_dtd_intro.asp
https://www.mclibre.org/consultar/xml/lecciones/xml-dtd.html
https://aprende-web.net/progra/xml/xml_6.php
Por otra parte, cada uno de los elementos debe ser de un tipo específico, pudiendo distinguir
entre any, empty, #pcdata o #cdata. Se especifica tal y como se muestra en el ejemplo siguiente:
El tipo puede ser: https://www.liquid-technologies.com/DTD/Datatypes/PCDATA.aspx
• (#PCDATA): parsed character data, que indica que el contenido de ese elemento es de tipo texto y
es analizado por un parser.
• (#CDATA): character data, similar a PCDATA con la obviedad de que el contenido de los elementos
no es analizado por un parser y no pueden detectarse posibles entidades. Puede escribirse como
CDATA
• ANY: los elementos pueden contener cualquier valor.
• EMPTY: los elementos no tienen contenido. Elemento vacío.
Donde:
➢ Elemento: es el nombre del elemento al que quiere añadirse un atributo.
➢ Atributo: nombre del atributo por añadir.
➢ Tipo: se selecciona un tipo de atributo.
➢ Valor: comportamiento del valor del atributo.
Para especificar si los valores de los atributos son obligatorios u opcionales, se usan los
modificadores
• #FIXED atributo obligatorio y debe tener como valor el indicado después de FIXED.
• Ej. <!ATTLIST ejemplo color CDATA #FIXED "verde">
https://www.mclibre.org/consultar/xml/lecciones/xml-
• #IMPLIED El atributo es opcional, se puede omitir.
dtd.html#ddiv-declaracion-atributos
• #REQUIRED El atributo debe aparecer obligatoriamente. https://www.w3schools.com/xml/xml_dtd_attributes.asp
• valor para indicar el valor por defecto
Actividad 8. Modifica el DTD para que la fecha de nacimiento (born date) no tenga contenido y
tenga tres atributos day, month, year .
EJEMPLO En la DTD del siguiente documento XML, el atributo código del elemento "f1" ha sido declarado de tipo
ID:
Hay que tener en cuenta que:
Los valores de atributos ID, tienen que cumplir las mismas normas
de sintaxis utilizadas para escribir nombres en XML.
En la DTD del siguiente documento XML, se indica que los elementos "pelicula" que se escriban, deben incluir el
atributo dirección, cuyo valor estará asignado a un atributo ID de otro elemento del documento. En este caso, el
valor estará asignado a un atributo coddir de un elemento "director":
La manera de referenciar a una entidad es dentro del documento XML usando el carácter
ampersand (&) que precede al nombre de la entidad terminada en el carácter punto y coma (;).
Según vas escribiendo las restricciones del DTD verás que se van
eliminando las líneas rojas del XML que van cumpliendo las
restricciones
Actividad 9. Crea un XML con un DTD (en fichero diferente) para enviar y poder ser validado
los siguientes datos
<producto> <code> <description>
ratón 2726543
teclado 5448543 Teclado táctil
Actividad 10. Unos programadores necesitan un formato de fichero para que sus distintos
programas intercambien información sobre ventas. El acuerdo al que han llegado es que su
XML debería tener esta estructura:
El elemento raíz será <listaventas>. Toda <listaventas> tiene una o más <venta>. Toda
<venta> tiene los siguientes datos: Importe. Código de factura. Comprador. Vendedor. Fecha
(optativa y que a su vez contendrá un atributo day, otro month y otro year).
Realizar un fichero XML y el DTD (en ficheros diferentes)
Actividad 11. Escribir el XML y la DTD que permita modelar los siguientes datos de ventas de una
editorial:
Ediciones Aran
Se deben tener en cuenta las siguientes consideraciones:
da
Informe regional del
ventas • Es obligatorio que el informe lleve una fecha
Descripción: informe de ventas para las regiones Norte, Centro y Sur
https://www.freeformatter.com/xml-validator-xsd.html
https://www.w3schools.com/xml/schema_schema.asp
Elementos Simples. Elementos sin hijos ni atributos o simples se definen con la marca <xs:element
NOMBRE TIPO VALOR OCURRENCIAS>, conteniendo solamente valores de un determinado tipo.
• NOMBRE: se representa mediante el atributo name, asignándole el valor que se desee.
• TIPO: se usa el atributo type, que permite especificar el tipo de elemento (ver cuadro tipo de datos).
• VALOR: puede ser un valor por defecto (default) que permite ser modificado o un valor fijo
obligatorio (fixed) que no podrá cambiarse. Cada uno de ellos irá acompañado de su
correspondiente asignación.
• OCURRENCIAS: número de veces que se repite el elemento, se define con los atributos maxOccurs y
minOccurs
https://www.w3schools.com/xml/schema_simple.asp
https://www.w3schools.com/x
ml/schema_complex.asp
https://www.w3schools.com/xml/sch
ema_dtypes_string.asp
https://www.w3schools.com/xml/el_simpletype.asp
➢ USO: se especifica la opcionalidad o no del atributo mediante el atributo use, que puede tener los valores:
"prohibited", que indica que es prohibido; "required" para indicar que es obligatorio, y "optional", que
informan de que es opcional y es el valor por defecto.
➢ VALOR: puede ser un valor por defecto (default) o un valor fijo u obligatorio (fixed) con su
correspondiente asignación.
https://www.w3schools.com/xml/schema_simple_attributes.asp
https://www.w3schools.com/xml/el_extension.asp
https://www.w3schools.com/xml/el_simplecontent.asp
https://www.w3schools.com/xml/schema_facets.asp
El código tendrá una longitud entre 1 y 4 definida por el tipo Tlongitudentre. Y el precio tenga un
total de 4 dígitos y hasta 2 decimales, definidos por el tipo Tdecimal
Restricciones de enumeración. Como tal no viene en el ejemplo pero podríamos definir que un
elemento solo pudiera tomar un conjunto de valores concreto, en cuyo caso definiríamos un tipo
Tcat
https://www.w3schools.com/xml/schema_example.asp
Actividad 12. Diseña el esquema XSD para el siguiente archivo XML con las siguientes
consideraciones:
• El elemento número será un entero
entre 1 y 500.
• El elemento teléfono será un entero y
dicho elemento podrá aparecer entre 0 y
5 veces.
• El atributo dni será una plantilla de 8
números y una letra mayúscula.
Actividad 13. Diseña el esquema XSD para el siguiente archivo XML con las siguientes
consideraciones:
• Como primer elemento de helado podemos elegir, o bien
chocolate, o bien fresa (pero no los dos al mismo tiempo).
Estos elementos almacenarán la cantidad en gramos (como
un número entero entre 0 y 1000).
Actividad 15. Definir un XML schema que valide este documento, teniendo en cuenta
las siguientes características:
• El número de factura (n_fac), número de cliente (n_cli) y número de pedido (n_ped)
son del tipo “tipoID”, que se define como un entero positivo de 4 cifras. Estos atributos
son obligatorios. No tienen por qué ser únicos dentro del documento.
• Los números de teléfono (telefono) y fax (fax) de la empresa no tienen porqué
aparecer en la factura, pero siempre que lo hagan deberán tener los mismos valores
(teléfono 917776688, fax 917776699).
• La forma de pago puede tomar los valores “efectivo”, “tarjeta” y “plazos”.
• El elemento fecha es de tipo “date”.
• La moneda tiene que aparecer siempre, y siempre toma el valor “euro”.
• El iva tiene que aparecer siempre, y su valor no puede contener caracteres especiales.
• Las referencias de los artículos son cadenas de entre 5 y 15 caracteres.
• Las descripciones de los artículos son cadenas entre 1 y 100 caracteres.
• Los precios son números reales con un máximo de 5 cifras enteras y 2 decimales.
• Todos los demás valores de tipo real están limitados a 2 cifras decimales.
• Los códigos postales tienen 5 dígitos.
• El porcentaje de iva es un número entero positivo de 2 cifras.
JavaScript Object
Notation
JSON https://www.w3schools.com/js/js_json.asp
Objeto. Un objeto contiene una clave y uno o varios atributos que se encierran entre llaves y
constituyen, en conjunto, el valor. Hay dos puntos después de cada clave y una coma después de
cada valor, excepto del último.
El objeto, como valor, debe seguir la misma regla que un objeto común. Ejemplo:
Actividad 16. Crea una estructura JSON para enviar los siguientes datos.
Actividad 17. Dadas las siguientes entidades. Como sería el JSON que se crearía, si quisiéramos
enviar la instancia de la clase Usuario utilizando un JSON.
Utilizad valores inventados para todos los campos. Para las listas usad al menos dos elementos.
System.out.println(fichero);
ObjectMapper mapper = new ObjectMapper();
try {
ArrayList<Persona> personas = mapper.readValue(fichero,
mapper.getTypeFactory().constructCollectionType(
ArrayList.class, Persona.class));
System.out.println(personas.get(0).getNombre());
System.out.println(personas.get(0).getApellidos());
System.out.println(personas.get(0).getEdad());
System.out.println("persona 2");
System.out.println(personas.get(1).getNombre());
System.out.println(personas.get(1).getApellidos());
System.out.println(personas.get(1).getEdad());
} catch (IOException e) {
e.printStackTrace();
}
}
}
I.E.S. Luis Vives - Desarrollo de Aplicaciones Web 90