Tema 2. Plataforma tecnológica
Full text
ENGINYERIA GEOMÁTICA Presentación Plataforma tecnológica Docentes: Esther Pulido Barberán; M Amparo Núñez Andrés Asignatura: Infraestructura de datos espaciales Titulación: Ingeniería en geoinformación y geomática Curso:24/25 Cuatrimestre: 4A Centro: EPSEB Idioma: Castellano Fecha: 10/2024
22Infraestructuras de Datos Espaciales TEMA 2. Plataforma tecnológica Infraestructuras de Datos Espaciales
ÍNDICE 1. Arquitectura client-servidor 2. Arquitectura de 3 capes 3. Arquitectura de n capes 4. Llenguatge XML Infraestructuras de Datos Espaciales 3
INTRODUCCIÓN Aspectos básicos de las plataformas informáticas que sustentan las IDE. – Arquitectura de sistemas que recomienda y propone la Directiva INSPIRE (modelos de arquitectura precursores) – Arquitectura orientada a servicios web 4Infraestructuras de Datos Espaciales
ARQUITECTURA DE SISTEMAS Diseño estructural y conceptual de un sistema de hardware o software y la interacción de sus componentes para cumplir los objetivos marcados. Es el marco guia para la CONSTRUCCIÓN, OPERACIÓN y EVOLUCIÓN de sistemas complejos. Permite planificar: – Escalabilidad: capacidad de un sistema para adaptarse al crecimiento de la demanda o a una mayor carga de trabajo sin perder rendimiento ni eficiencia (número de usuarios, volumen de datos, complejidad de las operaciones,…) – Seguridad: conjunto de políticas, tecnologías, y medidas diseñadas para proteger los sistemas, datos y redes frente a amenazas, ataques, y accesos no autorizados. – Rendimiento: realizar tareas de manera eficiente y rápida, optimizando el uso de recursos como la CPU, la memoria, el almacenamiento y la red. – Integración: garantizar que los sistemas, aplicaciones y bases de datos compartan información y funcionen de manera coherente, optimizando los flujos de trabajo y facilitando la toma de decisiones basada en datos. 5Infraestructuras de Datos Espaciales
ARQUITECTURA DE SISTEMAS Elementos clave 1. COMPONENTES: Partes principales del sistema – Software, Bases de datos, Servicios, Hardware 2. INTERFACES: Puntos de comunicación entre componentes, cómo los componentes interactúan – Protocolos, APIs 3. CONECTORES: mecanismos que permiten la comunicación entre componentes e interfaces – llamadas a procedimientos remotos, colas de mensajes 4. DATOS: cómo los datos se almacenan, acceden y transportan entre componentes – Bases de datos, Sistemas de archivos, Nube 5. REDES: infraestructura de comunicación entre componentes – Topología de red, Ancho de banda, Latencia 6. SEGURIDAD: Protocolo y mecanismos que aseguran la integridad, confidencialidad y disponibilidad del sistema. – Autenticación, Cifrado, firewalls. 6Infraestructuras de Datos Espaciales
ARQUITECTURA DE SISTEMAS Tipos Arquitectura monolítica Arquitectura distribuida Arquitectura cliente-servidor – Se basa en la relación entre clientes (que solicitan servicios) y servidores (que los proporcionan). Es una de las arquitecturas más comunes en aplicaciones web. Arquitectura de microservicios Arquitectura en la nube 7Infraestructuras de Datos Espaciales
88Infraestructuras de Datos Espaciales 2.1. Arquitectura cliente-servidor (C/S) Descomposición de los sistemas informáticos en dos partes: – Cliente: elemento emisor de una solicitud. – Servidor: elemento receptor de una solicitud. Alternativa a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. Características principales del cliente: – Es quien inicia solicitudes o peticiones, tiene por tanto un papel activo en la comunicación (dispositivo maestro o amo). – Espera y recibe las respuestas del servidor. – Generalmente puede simultanear conexiones a diferentes servidores. – Suele ser el componente que interactúa con el usuario mediante una interfaz gráfica.
99Infraestructuras de Datos Espaciales 2.1. Arquitectura cliente-servidor (C/S) Características principales del servidor: – Al iniciarse espera a que lleguen las solicitudes de los clientes, desempeñando un rol pasivo en la comunicación (dispositivo esclavo). – Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente. – Generalmente aceptan conexiones desde múltiples clientes. – No suelen interactuar directamente con el usuario. Comunmente se acepta la diferenciación entre clientes: – Ligeros: requieren una instalación mínima (no apreciable en la mayoría de los casos por el usuario). A título de ejemplo, una aplicación Web como Google Maps. – Pesados: requieren una instalación expresa (obligando normalmente a disponer de privilegios de administrador). A título de ejemplo, ArcGIS Desktop o Google Earth.
1616Infraestructuras de Datos Espaciales 2.2. Arquitectura de tres capas Capa de negocio: – En ella residen los módulos que acaparan la lógica de negocio, es decir, el conocimiento del contexto que permite definir los algoritmos que resuelvan los problemas que subyacen en la funcionalidad presentada por el sistema. – Se comunica con la capa de presentación para recibir las solicitudes y presentar los resultados. – Se comunica con la capa de datos para solicitar al gestor de la base de datos el almacenamiento o recuperación de información. Capa de datos: – En ella residen los datos y es la encargada de acceder a los mismos. – Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información. – Se comunica únicamente con la capa de negocio.
1717Infraestructuras de Datos Espaciales 2.2. Arquitectura de tres capas Consideraciones sobre la ubicación: – Todas las capas pueden residir en un único ordenador, si bien lo más usual es que haya una multitud de ordenadores en donde reside la capa de presentación (son los clientes de la arquitectura cliente/servidor). – Las capas de negocio y de datos pueden residir en el mismo ordenador, y si el crecimiento de las necesidades lo aconseja se pueden separar en dos o más ordenadores. – Si el tamaño o complejidad de la base de datos aumenta, se puede separar en varios ordenadores los cuales recibirán las peticiones del ordenador en que resida la capa de negocio. – Si, por el contrario, fuese la complejidad en la capa de negocio lo que obligase a la separación, esta capa de negocio podría residir en uno o más ordenadores que realizarían solicitudes a una única base de datos.
1818Infraestructuras de Datos Espaciales 2.2. Arquitectura de tres capas No confundir el término capa con el de nivel. – El término capa hace referencia a la forma en la que se realiza una segmentación desde un punto de vista lógico. – El término nivel corresponde a la forma en que las capas lógicas se encuentran distribuidas de forma física. Ejemplos: – Una solución de tres capas que residen en un solo ordenador tiene un único nivel. – Una solución de tres capas que residen en dos ordenadores (presentación y lógica+datos) tiene dos niveles.
1919Infraestructuras de Datos Espaciales 2.2. Arquitectura de tres capas Modelo recomendado y propuesto por INSPIRE para el desarrollo de IDEs. Iniesto, M. Jose; Nuñez, Amparo. “Modelo preconizado por INSPIRE para el desarrollo de una IDE". Infraestructuras de Datos Espaciales, 2021, https://www.ign.es/resources/acercaDe/libDigPub/Libro-IDE-2020.pdf
2.2. Arquitectura de tres capas 20Infraestructuras de Datos Espaciales Metadatos • Describen los conjuntos de datos de la CAPA DE DATOS • Describen los servicios que se publican en la CAPA DE NEGOCIO
2.2. Arquitectura de tres capas Arquitectura del software multicapa | | UPV –https://youtu.be/kHvxX1E9vIU 21Infraestructuras de Datos Espaciales
2222Infraestructuras de Datos Espaciales 2.3. Arquitectura de n-capas El número de capas de una arquitectura variará en función del número de compartimentos lógicos que observemos. Una ejemplo de solución de cinco capas sería la siguiente: – Capa de interfaz gráfica (ej. navegador Web): procesa el contenido de los documentos HTML para mostrarlos al usuario. Recupera estos documentos de la capa de presentación mediante el protocolo HTTP. – Capa de lógica de presentación (ej. módulo PHP en un servidor Web): encargada de generar los documentos HTML que se envían a la capa superior. La información de los documentos la recibe de la capa inferior. – Capa de lógica de negocio (ej. servidor de aplicaciones con EJB): expresada en los términos ya conocidos. – Capa de acceso a datos (ej. servidor de aplicaciones con JDBC): interfaz de la lógica de negocio en su acceso a los datos. – Capa de datos (ej. gestor de bases de datos): expresada en los términos ya conocidos.
2323Infraestructuras de Datos Espaciales 2.4. Lenguaje XML XML (eXtensible Markup Language - Lenguaje de Marcas Extensible) es un lenguaje de marcado que se utiliza para estructurar, almacenar y transportar datos. EssimilarenformatoaHTML: – HTML define cómo se debe presentar la información en una página web – XML se centra en describir y organizar los datos de manera que sean fácilmente comprensibles tanto para humanos como para máquinas. Es el lenguaje estándar mediante el cual se articula la comunicación entre los diferentes componentes de una IDE cuando se trata de intercambiar información alfanumérica. Fue creado en 1996 por el Word Wide Web Consortium (W3C) partiendo de las especificaciones del Lenguaje Estándar Generalizado de Marcas (SGML). La primera definición que apareció fue: Sistema para definir, validar y compartir formatos de documentos en la web.
2.4. Lenguaje XML ¿Por qué usar XML para el ámbito de los Geodatos? – capacidad del formato para organizar y estructurar datos complejos – amplia compatibilidad y estandarización Principales razones: –1. Estandarización de Datos: Es un estándar aceptado para representar datos estructurados, lo que facilita la interoperabilidad entre distintos sistemas. –2. Flexibilidad: Es un lenguaje de marcado flexible y extensible. –3. Legibilidad y Estructura Jerárquica: Es legible tanto por máquinas como por humanos. Su estructura jerárquica es adecuada para describir datos geográficos, que tienen relaciones espaciales complejas. –4. Interoperabilidad con estándares OGC: OGC ha adoptado XML como base para varios estándares. –5. Transformación y Validación de Datos: Herramientas avanzadas para la validación de datos, como esquemas XML (XSD). –6. Integración con Tecnologías Web: Aplicaciones web o servicios web para la distribución de datos espaciales. 24Infraestructuras de Datos Espaciales
2.4. Lenguaje XML Características principales de XML: –Extensible: no tiene etiquetas predefinidas. Los usuarios pueden definir sus propias etiquetas, lo que lo hace muy flexible. –Autodescriptivo: Los datos en XML son autodescriptivos porque las etiquetas dan contexto al contenido. –Portabilidad: es independiente de la plataforma y del lenguaje de programación, permite intercambiar datos entre sistemas y aplicaciones. –Jerárquico: permite organizar los datos en una estructura de árbol, con elementos anidados, lo que facilita la representación de relaciones complejas entre datos. –Legibilidad: Es fácil de leer y entender, ya que su estructura de marcado es clara y simple. 25Infraestructuras de Datos Espaciales
3232Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento – Un documento XML contiene texto, nunca datos binarios. – Está compuesto de: a) La declaración XML b) Elementos (“etiquetas”) c) Texto (cadena de caracteres) d) Referencias a Entidades e) Secciones CDATA f) Comentarios g) Instrucciones de Procesamiento
3333Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Declaración XML - De carácter opcional, pero si aparece debe ser la primera línea del documento. - Proporciona información básica sobre la versión de XML y la codificación de caracteres utilizada en el documento. - Aunque es opcional, es una buena práctica incluirla, especialmente cuando se necesita especificar la codificación o versión del documento. - Su “aspecto” es similar al de una instrucción de proceso: <?xml version=“...” encoding=“...” standalone=“...”?> - Tiene tres atributos: -Version = Indica la versión del estándar XML del documento -Encoding = Indica el juego de codificación de caracteres del documento -Standalone: - no (valor por defecto) El documento depende de un DTD (Document Type Definition) externo. -yesEl documento contiene un DTD interno.
2.4. Lenguaje XML Estructura del documento Declaración XML – Si no se incluye una declaración XML, las aplicaciones asumen que el documento está codificado en UTF-8 y que está usando la versión 1.0 de XML. – La declaración XML tiene la siguiente sintaxis general: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 34Infraestructuras de Datos Espaciales
3535Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento - Elemento <> Etiqueta – Un elemento (o etiqueta o nodo) es todo aquello que va delimitado por una etiqueta de comienzo (<tag>) y una etiqueta de fin (</tag>). – Todo lo que está entre esas dos etiquetas se llama el contenido del elemento. <tag>CONTENIDO DEL ELEMENTO</tag> – Hay dos tipos de etiquetas: •Empty :Una etiqueta empty también es un elemento un elemento sin contenido <tag> </tag> o<tag/> •Non-Empty o ‘contenedora’: Contienen algo. Tiene que haber una etiqueta de comienzo y una etiqueta de fin. En la etiqueta de fin, el símbolo < siempre va seguido del símbolo / <correo> ... ... </correo>
3636Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento - Elemento <> Etiqueta – El contenido de un elemento puede ser: •Texto: <destinatario>Pedro Alonso</destinatario> • Elementos: <anexos> <fichero nombre=“Temario.pdf”/> <fichero nombre=“Apuntes.pdf”/> </anexos> • Contenido mixto (texto + elementos): <cuerpoMail> Hola Pedro, te adjunto los temarios <firma> Profesor Derecho </firma> </cuerpoMail>
3737Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento - Elemento <> Etiqueta – Cuando un elemento Hestá contenido en un elemento Qse dice que: • H es un elemento hijo de Q. • Q es el elemento padre de H. – En XML todo elemento tiene uno y sólo un padre. – El elemento raíz es el único que no tiene padre. • Todo documento XML debe tener uno y sólo un elemento raíz. • Es el llamado NODO principal.
3838Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Ejercicio: realizar un documento XML sobre la toma de condiciones atmosféricas realizadas en Barcelona,eldía27 de abril del 2011 alas8:00 de la mañana, siendo los datos obtenidos de temperatura: 16º,humedad: 90,dirección del viento SO yvelocidad de 6 Km/h, en la estación metereológica del Observatorio Fabra. – Recomendación: • Utiliza un editor de textos (Notepad++ con plugin XML, Bloc de notas,…) • Pasos a seguir: 1. Haz un árbol de la estructura de la información (elemento raíz, hijos,…) 2. Estructura y escribe el documento XML » Declaración XML » Elementos
3939Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento <condiciones_atmosféricas> <fecha>27 de abril del 2011</fecha> <hora>08:00</hora> <lugar>Barcelona</lugar> <temperatura>16</temperatura> <humedad>90</humedad> <viento_direccion>SO</viento_dirección> <viento_velocidad>6 Km/h</ viento_velocidad> <nombre_estacion>Observatorio Fabra</nombre_estacion> </condiciones_atmosféricas >
4040Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento <condiciones_atmosféricas> <fecha> <dia>27</dia> <mes>abril</mes> <año>2011</año> </fecha> <hora>08:00</hora> <lugar> <pais>España</pais> <ciudad>Barcelona</ciudad> </lugar> <medidas> <temperatura>16</temperatura> <humedad>90</humedad> <viento> <dirección>SO</dirección> <velocidad>6</velocidad> <unidades_de_la_velocidad>Km/h</ unidades_de_la_velocidad > </viento> </medidas> <estacion_metereologica> <nombre>ObservatorioFabra</nombre> </estacion_metereologica > </condiciones_atmosféricas >
4141Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Ejercicio: realizar un documento XML sobre el anuncio de venta de un piso situado en Barcelona, publicado hace 2 meses, siendo los datos del este superficie: 120 m2,superficie útil: 104 m2, habitaciones: 4,ascensor, aire acondicionado, calefacción gas natural yprecio 325000 €, barrio Poble Nou. – Recomendación: • Utiliza un editor de textos (Notepad++ con plugin XML, Bloc de notas,…) • Pasos a seguir: 1. Haz un árbol de la estructura de la información (elemento raíz, hijos,…) 2. Estructura y escribe el documento XML » Declaración XML » Elementos
4848Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento – Secciones CDATA – PCDATA - Parsed Character Data •XMLparsers analizan sintácticamente todo el texto contenido en un XML. • Cuando un elemento XML es analizado, el texto comprendido entre dos etiquetas XML también es analizado. <message>This text is also parsed</message> El analizador realiza este proceso porque un elemento XML puede contener otros elementos, como se muestra a continuación: <name><first>Bill</first><last>Gates</last></name> El analizador descompondrá este fragmento en dos elementos: <name> <first>Bill</first> <last>Gates</last> </name>
4949Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento – Secciones CDATA – CDATA - (Unparsed) Character Data • El término CDATA hace referencia a fragmentos de texto que no deben ser interpretados sintácticamente por el XML parser. • Caracteres como “<“ o “&” no se aceptan dentro de elementos XML. –“<“ generará un error porque el parser interpreta que es el inicio de un nuevo elemento. – “&” generará un error porque el parser interpreta que es el inicio de una nueva entidad de carácter. • Algunos textos, como el código JavaScript, contienen muchos de estos caracteres. Para evitar errores, estas secciones se pueden definir como CDATA, cosa que provoca que su contenido sea ignorado por el analizador. • Una sección CDATA comienza con “<![CDATA[“ y acaba con “]]>”. • Las secciones CDATA no pueden anidarse.
5050Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento – Secciones CDATA – CDATA - (Unparsed) Character Data. Ejemplos: <asignatura> Apuntes <![CDATA[ <Tema_1.pdf> <Tema_2.pdf> ]]> </asignatura> <script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script>
5151Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Documento – Comentarios – Van delimitados por <!-- --> – Pueden aparecer en cualquier parte del documento. – No pueden aparecer dentro de etiquetas. – No pueden anidarse. – La cadena "--" no puede aparecer dentro de un comentario, para no confundirla con la marca.
5252Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Ejercicio: ¿qué sentencias son comentarios “correctos”? <!-- Esto es un comentario --> <!-- los caracteres (--) están permitidos en un comentario --> <!-- declaración de elemento <apuntes> y <Texto>--> <!— Se debencolocar comentarios para clarificar el contenido del documento -->
5353Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Ejercicio: ¿qué sentencias son comentarios “correctos”? <!-- Esto es un comentario --> CORRECTO <!-- los caracteres (--) están permitidos en un comentario --> INCORRECTO <!-- declaración de elemento <apuntes> y <Texto>--> CORRECTO <!— Se debencolocar comentarios para clarificar el contenido del documento --> INCORRECTO
5454Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Estructura del documento Instrucciones de proceso (PI) – Permiten indicar a la aplicación destinataria que procesará el fichero ciertos aspectos o características sobre el propio documento. – Van delimitados por: <? ?> <?target instruction?> target =aplicación instruction =información (pueden ser múltiples) Por ejemplo, definición de la hoja de estilo a emplear: <?xsl-stylesheet href=“estilo.css” type=“text/css”?>
5555Infraestructuras de Datos Espaciales 2.4. Lenguaje XML Documento XML bien formado y válido Documento bien formado: aquél que tiene todos los elementos bien anidados y estos elementos cumplen con las especificaciones XML. Documento válido: aquél que además de estar bien formado ha declarado correctamente todos sus elementos y cumple con las especificaciones asignadas a cada uno en el DTD o en el XML-Schema.
2.4. Lenguaje XML Documento XML bien formado y válido Normas para que un documento se considere bien formado: – Si hay más de un atributo, tienen que ir separados por espacios. – Si la etiqueta es contenedora, los atributos sólo se escriben en la primera etiqueta. – Los valores de los atributos deben ir entre comillas (dobles o simples). – Una etiqueta no puede tener dos atributos con el mismo nombre. – Sólo ha de tener exactamente un elemento de nivel superior o elemento raíz. – Los elementos han de estar adecuadamente anidados. Un elemento que se define dentro de otro elemento debe finalizar dentro de aquel. – Los elementos han de tener obligatoriamente marcadores de inicio y fin. – El nombre del tipo en el inicio y fin deben coincidir para todo elemento. – Los nombres de los tipos son sensibles a mayúsculas. Características de un documento bien formado: – Se le puede aplicar estilos. – Se le puede aplicar transformaciones. 56Infraestructuras de Datos Espaciales
2.4. Lenguaje XML Ejercicio: Crear un archivo XML para una ruta de senderismo o itinerario de viaje 1. Crea un archivo XML que represente una ruta geográfica, como un itinerario de viaje o una ruta de senderismo. • El archivo debe contener una lista de puntos de referencia (ubicaciones) • Cada punto debe tener los siguientes elementos: – nombre: El nombre del punto (por ejemplo, "Inicio", "Mirador", “Fuente"). – descripcion: Una breve descripción del punto – coordenadas: Las coordenadas geográficas (latitud y longitud). – elevacion: La altitud del punto en metros. • Cada punto debe tener un atributo id que lo identifique de manera única. 2. Utiliza comentarios para describir la ruta o para describir la estructura del XML. 3. Utiliza una sección CDATA para describir una parte de la ruta que pueda incluir caracteres especiales. 57Infraestructuras de Datos Espaciales
6464Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Número de hijos: – ?:seadmiten0o1hijo. – * : se admite 0 o más hijos. – + : se admite 1 o más hijos. – Si no se especifica, se entiende que es 1. – Ejemplo: el elemento nombre debe incluir forzosamente el de nombre de pila yunapellido. <!ELEMENT nombre (nombre_pila, apellido+)>
6565Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Opciones: – Se ponen con el operador disyuntivo “|” – Ejemplo: el color puede ser rojo oamarillo overde. <!ELEMENT color (rojo | amarillo | verde)> – Ejemplo: el elemento círculo se define mediante su centro +el radio oeldiámetro. <!ELEMENT circulo (center, (radio | diametro))>
6666Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Contenido mixto: – Los elementos pueden tener contenido mixto, es decir, estar formados por elementos y texto. Su declaración se realiza así: <!ELEMENT definicion (#PCDATA | termino)*> <definicion> Primera <termino> Juan López Aguirre </termino>Fue un hombre interesado por las artes y las ciencias que dejó un legado importante a la humanidad. Considerado como uno de los mejores científicos de su rama , forma parte del acervo científico mundial. </definicion> Elementos vacíos: – Se declaran así: <!ELEMENT imagen EMPTY> Cualificador ANY: – Indica que un elemento puede tener cualquier contenido (mixto, hijos,..). <!ELEMENT pagina ANY>
6767Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Atributos: – Es posible declarar atributos para cada elemento. Su declaración se realiza meidante la claúsula ATTLIST. • Ejemplo: declara el atributo origen del elemento image . El valor debe de ser una cadena de caracteres y es obligatorio. <!ATTLIST image origen CDATA #REQUIRED > Tipos de atributos: –CDATA: cualquier cadena de texto aceptable en un XML. –NMTOKEN: restringe CDATA de forma que el primer carácter sólo pueda ser una letra, un dígito o alguno de los caracteres: “.”, “-”, “_”, “:”. –NMTOKENS: permite concatenar varios NMTOKEN separados por espacios en blanco. –ID: indica que ha de tener un nombre único dentro del XML. El primer carácter ha de ser una letra o alguno de los caracteres “_”, “:”.
6868Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Tipos de atributos (cont.): –IDREF: especifica una referencia a un ID de otro elemento del XML. –IDREFS: permite concatenar varios IDREF separados por espacios. –ENTITY: enlaza con unos datos representados mediante una abreviación o localizados en una localización externa. El primer caracter ha de ser una letra o alguno de los caracteres “_”, “:”. –ENTITIES: permite concatenar varios ENTITY separados por espacios. –NOTATION: permite asociar tipos con determinados elementos, así como para limitar los tipos asociados con el elemento. <!NOTATION gif SYSTEM "image/gif"> <!NOTATION tiff SYSTEM "IMAGE/TIFF"> <!NOTATION jpg SYSTEM "image/jpeg"> <!NOTATION png SYSTEM "image/png"> <!ATTLIST image type NOTATION(gif | tiff | jpg | png) #REQUIRED> Esta declaración define que el elemento image debe tener un atributo type, que es obligatorio (#REQUIRED), y que solo puede ser uno de los valores definidos en las notaciones (gif, tiff, jpg o png).
6969Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Enumeración de atributos: – Lista de todos los valores posibles para el atributo, separados por barras verticales Ejemplo: <!ATTLIST fecha año (2005 | 2006 | 2007) #REQUIRED > Valores de atributos predeterminados: –#IMPLIED : El atributo es opcional –#REQUIRED : El atributo es obligatorio –#FIXED : El valor del atributo es constante e invariable. –Literal : El valor predeterminado real se proporciona entre paréntesis
7070Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Enumerar varios Atributos: <!ATTLIST nombre_elemento nombre_atributo1 tipo_atributo1 valor_predeterminado1 nombre_atributo2 tipo_atributo2 valor_predeterminado2 nombre_atributo3 tipo_atributo3 valor_predeterminado3 ...> <!ELEMENT libro (titulo, autor)> <!ATTLIST libro id ID #REQUIRED genero CDATA #IMPLIED año_publicacion CDATA #IMPLIED estado (nuevo | usado) "nuevo"> "nuevo“ – Valor por defecto para estado
7171Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD <!ELEMENT ficha (nombre+, apellido+, direccion+, foto?)> <!ELEMENT nombre (#PCDATA)> <!ATTLIST nombre (masculino|femenino) #IMPLIED> <!ELEMENT apellido (#PCDATA)> <!ELEMENT direccion (#PCDATA)> <!ELEMENT foto EMPTY> <!ELEMENT ficha (nombre+, apellido+, direccion+, foto?)> – El elemento ficha contiene los elementos nombre, apellido, direccion y opcionalmente foto. – nombre+ apellido+ direccion+ indican que debe haber almenos un elemento nombre, apellido y direccion. – foto? indica que el elemento foto es opcional (puede aparecer 0 o 1 vez). <!ELEMENT nombre (#PCDATA)> <!ATTLIST nombre sexo (masculino|femenino) #IMPLIED> – El elemento nombre contiene datos de carácter (texto simple). – El atributo sexo puede tener los valores masculino o femenino, y es opcional debido a #IMPLIED. Si no se proporciona, no habrá ningún valor predeterminado. <!ELEMENT apellido (#PCDATA)> – El elemento apellido también contiene datos de carácter, es decir, texto simple. <!ELEMENT direccion (#PCDATA)> – El elemento direccion igualmente contiene datos de carácter. <!ELEMENT foto EMPTY> – El elemento foto se define como vacío (EMPTY), lo que significa que no contiene ningún contenido.
7272Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD Como se indica una referencia a un DTD externo: –Crear la DTD en un archivo separado, con la extensión .dtd. –Referenciar la DTD en el archivo XML utilizando una declaración DOCTYPE. <!DOCTYPE elemento SYSTEM "mi-estructura.dtd">
2.4. Lenguaje XML DTD Ejemplo: 1. Crear el archivo .dtd <!ELEMENT persona (nombre, edad, direccion)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT edad (#PCDATA)> <!ELEMENT direccion (#PCDATA)> Esta DTD define un elemento persona que tiene tres elementos hijos: nombre, edad y direccion, todos ellos son texto simple (#PCDATA). 2. Crear el archivo XML <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE persona SYSTEM "mi-estructura.dtd"> <persona> <nombre>Juan Perez</nombre> <edad>30</edad> <direccion>Calle Falsa 123</direccion> </persona> 73Infraestructuras de Datos Espaciales
8080Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ruta [ <!ELEMENT ruta (punto+)> <!ATTLIST ruta nombre CDATA #REQUIRED> <!ELEMENT punto (nombre, descripcion, coordenadas, elevacion)> <!ATTLIST punto id ID #REQUIRED> <!ELEMENT nombre (#PCDATA)> <!ELEMENT descripcion (#PCDATA)> <!ELEMENT coordenadas (X_UTM, Y_UTM)> <!ELEMENT X_UTM (#PCDATA)> <!ELEMENT Y_UTM (#PCDATA)> <!ELEMENT elevacion (#PCDATA)> ]> <!-- Este archivo XML contiene una representación de una ruta de senderismo --> <!-- El elemento 'ruta' es el nodo principal --> <ruta nombre="Excursió a la cascada de Noarre"> <punto id="P01"> <!-- Cada elemento 'punto' tiene 4 hijos --> <nombre>Inici</nombre> <descripcion>S'inicia la ruta a les Bordes de Graus situat a Lladorre</descripcion> <coordenadas> <!-- El elemento 'coordenadas' tien 2 hijos --> <X_UTM>355388.7</X_UTM> <Y_UTM>4725685.9</Y_UTM> </coordenadas> <elevacion>1370</elevacion> </punto>
8181Infraestructuras de Datos Espaciales 2.4. Lenguaje XML DTD <punto id="P02"> <nombre>Pantà de Graus</nombre> <descripcion>Escollir el camí de la dreta en l'encreuament al final del pantà</descripcion> <coordenadas> <X_UTM>355484.7</X_UTM> <Y_UTM>4726401.9</Y_UTM> </coordenadas> <elevacion>1450</elevacion> </punto> <punto id="P03"> <nombre>Bordes de Noarre</nombre> <!-- CDATA permite utilizar una cadena de caracteres con caracteres especiales como descripcion --> <descripcion><![CDATA[Conjunt de masies formada per <Borda de Masobreta> & <Borda de Jaques>, es pot descansar al riu i iniciar el camí de baixada.]]></descripcion> <coordenadas> <X_UTM>356110.2</X_UTM> <Y_UTM>4727295.4</Y_UTM> </coordenadas> <elevacion>1595</elevacion> </punto> <punto id="P04"> <nombre>Cascada de Noarre</nombre> <descripcion>Cascada del riu Noarre de gran bellesa</descripcion> <coordenadas> <X_UTM>355778.0</X_UTM> <Y_UTM>4726911.4</Y_UTM> </coordenadas> <elevacion>1500</elevacion> </punto> </ruta>
8282Infraestructuras de Datos Espaciales 2.4. Lenguaje XML XML Schema Los DTD tienen limitaciones que se subsanan con los XML Schema. Un Schema XML es una forma de definir la estructura, contenido y tipos de datos de documentos XML. El lenguaje de definición de esquemas XML fue creado por W3C con el estatus de recomendación (no es obligatorio). Es un lenguaje XML que permite describir y establecer las restricciones necesarias de un documento XML. La forma más común de esquema XML se llama Definición de Esquema XML o XSD. Vamos a estudiar 3 versiones de los esquemas XML
2.4. Lenguaje XML Herramientas de validación Existen herramientas especializadas que permiten hacer verificaciones de forma y validez de un documento XML (contra un DTD o un XML Schema). Validar en línea • XML Validation Online https://www.xmlvalidation.com/ [LLIURE] • FreeFormatter XML Validator https://www.freeformatter.com/ [LLIURE] – Escritorio • Notepad++ + Plugin XML https://notepad-plus-plus.org/ [LLIURE] •XML Spy https://www.altova.com/es/xmlspy-xml-editor [PAGAMENT] Infraestructuras de Datos Espaciales 83
2.4. Lenguaje XML XML Schema Componentes de un Esquema XML: –Elementos –Atributos –Tipos: Definen el tipo de datos que contiene un elemento o atributo: string, integer, date, ... •Tipos complejos: Se utilizan para definir elementos que contienen otros elementos o atributos. •Tipos simples: Definen elementos o atributos que solo contienen texto. –Restricciones: Especifican restricciones adicionales sobre los valores y la cantidad de veces que los elementos o atributos pueden aparecer. 84Infraestructuras de Datos Espaciales
85Infraestructuras de Datos Espaciales
86 2.4. Lenguaje XML XML Schema – VERSION 1 Primera versión del XML-Schema (XSD) 1. xs:schema 2. Definir elementos • Simples xs:element • Complejos xs:complexType xs:sequence xs:choice xs:all 3. Definir hijos xs:element •Name • Type • minOccurs, maxOccurs 4. Definir Atributos xs:Attribute •Name • Type •Use Infraestructuras de Datos Espaciales
87 2.4. Lenguaje XML XML Schema – VERSION 1 Empezamos con el elemento xs:schema <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> .../... </xs:schema> <xs:schema>: Elemento raíz que define el esquema XML (XSD). Todo lo que esté dentro de este elemento describe las reglas que debe seguir el XML que se va a validar. –xmlns:xs es la declaración de un espacio de nombres (namespace). Este es el elemento raíz de un archivo XSD. Define el espacio de nombres xmlns:xs como el estándar para los esquemas XML, que siempre apunta a http://www.w3.org/2001/XMLSchema. Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema – VERSION 1 xmlns:xs=http://www.w3.org/2001/XMLSchema Este namespace es gestionado por el W3C (World Wide Web Consortium) y se utiliza para identificar los elementos y tipos que pertenecen a XML Schema. Esto asegura que todos los elementos del esquema pertenezcan a un único contexto definido por este namespace. Un namespace… – es una forma de evitar conflictos entre los elementos y atributos con el mismo nombre pero diferentes significados, asegura que estos nombres sean únicos en su contexto. – Permiten que el lector o procesador de XML entienda inmediatamente que estos elementos provienen del conjunto de definiciones de XML Schema. 88Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema – VERSION 1 Después de la línea inicial se definen los elementos y tipos que forman parte del esquema: <!-- Definición de un simple elemento “book" --> <xs:element name=“book"> <xs:complexType> <xs:sequence> <xs:element name=“titulo" type="xs:string"/> <xs:element name=“año" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element>: Define un elemento llamado book. –<xs:complexType>:Indica que el elemento book tiene una estructura más compleja que un simple valor, conteniendo varios subelementos. –<xs:sequence>: Es un elemento “compositor” . Define la lista de elementos hijo dentro de book que debe seguir un orden específico: primero titulo y luego año. Existen otros dos “compositors”: •<xs:choice>: Elección entre diferentes elementos •<xs:all>: Elementos en cualquier orden 89Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema – VERSION 1 La fórmula de definición de la version 1 de XML Schema puede conllevar el diseño de jerarquías de muchos niveles que dificulten la legibilidad y el mantenimiento de esquemas complejos. Segunda versión del XML-Schema – Se basa en un diseño plano de todos los elementos del catálogo, indicando en cada caso mediante referencias sus hijos y atributos 96Infraestructuras de Datos Espaciales
97 2.4. Lenguaje XML XML Schema Ejercicio: documento XML que describe un libro. – Crea un XSD Version1 para validarlo <?xml version="1.0" encoding="UTF-8"?> <book isbn="0836217462"> <title>Don Quijote de la Mancha</title> <author>Miguel de Cervantes</author> <character> <name>Sancho Panza</name> <friend-of>El Quijote</friend-of> <since>1650-12-01</since> <qualification>fiel escudero</qualification> </character> <character> <name>Rocinante</name> <since>1650-08-01</since> <qualification>Caballo de Don Quijote: viejo, flaco y de poca fuerza</qualification> </character> </book> Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="book"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="author" type="xs:string"/> <xs:element name="character" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="friend-of" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="since" type="xs:date"/> <xs:element name="qualification" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="isbn" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema> 98Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema – Validar un XML con XSD Pasos para Vincular un XSD a un XML 1. Crear el archivo XSD 2. Modificar el archivo XML*: Agrega la declaración de espacio de nombres y la ubicación del esquema en el encabezado del XML. 3. Usar un validador (XMLValidator, Notepad++, …) *<inmobiliaria xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation="schema.xsd"> –xmlns: : Esta línea declara el espacio de nombres, que se utiliza para identificar las propiedades relacionadas con el esquema . –xsi: Aquí es donde vinculas el documento XML al archivo XSD. El valor es la ruta o el nombre del archivo XSD. Si el XSD está en la misma carpeta que el XML, solo necesitas especificar el nombre del archivo (como schema.xsd). 99Infraestructuras de Datos Espaciales
100Infraestructuras de Datos Espaciales 2.4. Lenguaje XML XML Schema
101 2.4. Lenguaje XML XML Schema – VERSION 2 Segunda versión del XML-Schema – Se basa en un diseño plano de todos los elementos del catálogo, indicando en cada caso mediante referencias sus hijos y atributos. Primero se declaran todos los elementos simples y luego los complejos, haciéndose referencia a los simples que los componen. – Declaración del elemento simple • <xs:element name="since" type="xs:date"/> – Declaración de la referencia al elemento smple en el elemento complejo • <xs:element ref="since"/> Infraestructuras de Datos Espaciales
102 2.4. Lenguaje XML XML Schema – VERSION 2 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- definition of simple type elements --> <xs:element name="title" type="xs:string"/> <xs:element name="author" type="xs:string"/> <xs:element name="name" type="xs:string"/> <xs:element name="friend-of" type="xs:string"/> <xs:element name="since" type="xs:date"/> <xs:element name="qualification" type="xs:string"/> <!-- definition of attributes --> <xs:attribute name="isbn" type="xs:string"/> <!-- definition of complex type elements --> <xs:element name="character"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element ref="friend-of" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="since"/> <xs:element ref="qualification"/> </xs:sequence> </xs:complexType> </xs:element> Infraestructuras de Datos Espaciales
103 2.4. Lenguaje XML XML Schema – VERSION 2 <xs:element name="book"> <xs:complexType> <xs:sequence> <xs:element ref="title"/> <xs:element ref="author"/> <xs:element ref="character" minOccurs="0“ maxOccurs="unbounded"/> </xs:sequence> <xs:attribute ref="isbn"/> </xs:complexType> </xs:element> </xs:schema> Infraestructuras de Datos Espaciales
104 2.4. Lenguaje XML XML Schema – VERSION 3 Tercera versión del XML-Schema – Primera version XML-Schema • Se definen elementos y atributos según se vayan necesitando •Russian doll design – Segunda version XML-Schema • Se crean todos los elementos al inico y se establecen referencias •flat catalog, segunda versión –Tercera version XML-Schema • Consiste en la definición de tipos de datos para la definición de atributos y elementos. Estos pueden ser: –Simples, a utilizar en los elementos de tipo PCDATA o en los atributos. –Complejos, a utilizar únicamente en los casos restantes. Infraestructuras de Datos Espaciales
105 2.4. Lenguaje XML XML Schema – VERSION 3 Ejemplo: Tipo de datos que puede contener un texto de máximo 32 caracteres. <xs:simpleType name="nameType"> <xs:restriction base="xs:string"> <xs:maxLength value="32"/> </xs:restriction> </xs:simpleType> El elemento xs:restriction indica que el nuevo tipo de datos “nameType” se deriva del tipo de datos básico denominado xs:string, definido dentro del W3C XML Schema namespace mediante la aplicación de una restricción. El elemento xs:maxLength se denomina “facet”. – Los facets permiten restringir los valores permitidos para un tipo de dato base. Pueden controlar la longitud de una cadena, los valores numéricos mínimos o máximos, el formato de una fecha, … Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema – VERSION 3 –<xs:minExclusive>: Define un valor mínimo exclusivo (el valor debe ser mayor que el especificado). <xs:restriction base="xs:integer"> <xs:minExclusive value="10"/> </xs:restriction> • El valor debe ser mayor que 10. –<xs:maxExclusive>: Define un valor máximo exclusivo (el valor debe ser menor que el especificado). <xs:restriction base="xs:integer"> <xs:maxExclusive value="100"/> </xs:restriction> • El valor debe ser menor que 100. –<xs:pattern>: Define un patrón que el valor debe cumplir. Este facet usa expresiones regulares. <xs:restriction base="xs:string"> <xs:pattern value="[0-9]{10}"/> </xs:restriction> • El valor debe consistir en 10 dígitos del 0 al 9. 112Infraestructuras de Datos Espaciales
113 2.4. Lenguaje XML XML Schema – VERSION 3 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- definition of simple types --> <xs:simpleType name="nameType"> <xs:restriction base="xs:string"> <xs:maxLength value="32"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="sinceType"> <xs:restriction base="xs:date"/> </xs:simpleType> <xs:simpleType name="descType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="isbnType"> <xs:restriction base="xs:string"> <xs:pattern value="[0-9]{10}"/> </xs:restriction> </xs:simpleType> Infraestructuras de Datos Espaciales
114 2.4. Lenguaje XML XML Schema – VERSION 3 <!-- definition of complex types --> <xs:complexType name="characterType"> <xs:sequence> <xs:element name="name" type="nameType"/> <xs:element name="friend-of" type="nameType" minOccurs="0“ maxOccurs="unbounded"/> <xs:element name="since" type="sinceType"/> <xs:element name="qualification" type="descType"/> </xs:sequence> </xs:complexType> <xs:complexType name="bookType"> <xs:sequence> <xs:element name="title" type="nameType"/> <xs:element name="author" type="nameType"/> <xs:element name="character" type="characterType" minOccurs="0"/> <!-- the definition of the "character" element is using the "characterType" complex type --> </xs:sequence> <xs:attribute name="isbn" type="isbnType" use="required"/> </xs:complexType> <!-- Reference to "bookType" to define the "book" element --> <xs:element name="book" type="bookType"/> <xs:element name=“library" /> </xs:schema> Infraestructuras de Datos Espaciales
2.4. Lenguaje XML XML Schema – VERSION 3 115Infraestructuras de Datos Espaciales Ejercicio: – Crea el XML Schema version 3 del XML Rutaturistica.xml que está en Atenea
116 2.4. Lenguaje XML XML Schema – Estructuras adicionales Las estructuras adicionales son construcciones que permiten definir con mayor precisión las reglas y restricciones que debe cumplir un documento XML. Amplían las capacidades básicas de los Tipos de datos y los elementos de un XML y permiten definir características como: – la herencia – los grupos de elementos – las listas –… Infraestructuras de Datos Espaciales
117 2.4. Lenguaje XML XML Schema – Estructuras adicionales Grupos de Elementos (<group>) Grupos de Atributos (<attributeGroup>) Compositors (xs:sequence, xs:choice, xs:all) Facet (xs:union, xs:list) Elementos sin contenido Elementos con contenido sencillo (xs:simpleContent) Restricciones (xs:unique) Comentarios (xs:documentation, xs:annotation) Espacio de nombres Infraestructuras de Datos Espaciales
118 2.4. Lenguaje XML XML Schema – Estructuras adicionales Grupos de elementos y atributos que pueden ser utilizados en la definición de tipos complejos. <!-- definition of an element group --> <xs:group name="mainBookElements"> <xs:sequence> <xs:element name="title" type="nameType"/> <xs:element name="author" type="nameType"/> </xs:sequence> </xs:group> <!-- definition of an attribute group --> <xs:attributeGroup name="bookAttributes"> <xs:attribute name="isbn" type="isbnType" use="required"/> <xs:attribute name="available" type="xs:string"/> </xs:attributeGroup> Infraestructuras de Datos Espaciales
119 2.4. Lenguaje XML XML Schema – Estructuras adicionales <xs:complexType name="bookType"> <xs:sequence> <xs:group ref="mainBookElements"/> <xs:element name="character" type="characterType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attributeGroup ref="bookAttributes"/> </xs:complexType> Infraestructuras de Datos Espaciales
120 2.4. Lenguaje XML XML Schema – Estructuras adicionales Compositors: – xs:sequence • Define la lista de elementos que debe seguir un orden específico – xs:choice • Define una elección entre diferentes elementos o grupos de elementos. – xs:all • define un conjunto de elementos que pueden presentarse en cualquier orden. Infraestructuras de Datos Espaciales
121 2.4. Lenguaje XML XML Schema – Estructuras adicionales <xs:group name="nameTypes"> <xs:choice> <xs:element name="name" type="xs:string"/> <xs:sequence> <xs:element name="firstName" type="xs:string"/> <xs:element name="middleName" type="xs:string" minOccurs="0"/> <xs:element name="lastName" type="xs:string"/> </xs:sequence> </xs:choice> </xs:group> <xs:complexType name="bookType"> <xs:all> <xs:element name="title" type="xs:string"/> <xs:element name="author" type="xs:string"/> <xs:element name="character" type="characterType" minOccurs="0“ maxOccurs="unbounded"/> </xs:all> <xs:attribute name="isbn" type="isbnType" use="required"/> </xs:complexType> Infraestructuras de Datos Espaciales
128 2.4. Lenguaje XML XML Schema – Estructuras adicionales Indicando el atributo “mixed=true” en el xs:complexType se pueden combinar diferentes tipos de contenido. – permite que un elemento contenga tanto texto como elementos hijos. – El contenido del elemento puede ser una mezcla de texto y elementos estructurados (subelementos). – Es útil cuando quieres que un elemento pueda contener texto libre intercalado con otros elementos XML, o bien, en documentos que contienen párrafos de texto con marcado (por ejemplo, etiquetas HTML o XML para formato). <xs:element name="paragraph"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="bold" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="italic" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <paragraph> This is a <bold>bold</bold> statement with some <italic>italic</italic> text. </paragraph> Infraestructuras de Datos Espaciales
129 2.4. Lenguaje XML XML Schema – Estructuras adicionales <xs:element name="book"> <xs:complexType mixed="true"> <xs:all> <xs:element name="title" type="xs:string"/> <xs:element name="author" type="xs:string"/> </xs:all> <xs:attribute name="isbn" type="xs:string"/> </xs:complexType> </xs:element> Este esquema permitiría introducir la siguiente información: <book isbn="0836217462"> Funny book by <author>Charles M. Schulz</author> Its title (<title>Being a Dog Is a Full-Time Job</title>) says it all ! </book> Infraestructuras de Datos Espaciales
130 2.4. Lenguaje XML XML Schema – Estructuras adicionales Restricción única (xs:unique): – su posición indica el nodo contextual al que se aplica la restricción. En el ejemplo el “character” ha de ser único dentro de cada libro. <xs:unique name="charName"> <xs:selector xpath="character"/> <xs:field xpath="name"/> </xs:unique> xs:selector determina el elemento que tiene la restricción. xs:field es el nodo cuyo valor va a comprobarse que es único. –Restricción única no nula (xs:key): • especifica que el valor único no puede ser nulo. Infraestructuras de Datos Espaciales
131 2.4. Lenguaje XML XML Schema – Estructuras adicionales –Restricción por referencia (xs:keyref): • define una referencia a una xs:key o a una xs:unique. <xs:keyref name="charNameRef" refer="charName"> <xs:selector xpath="character"/> <xs:field xpath="friend-of"/> </xs:keyref> Este esquema permitiría introducir la siguiente información, en la cual el valor de “friend-of” debe ser un caracter del mismo libro: <character> <name>Snoopy</name> <friend-of>Peppermint Patty</friend-of> <since>1950-10-04</since> <qualification>extroverted beagle</qualification> </character> Infraestructuras de Datos Espaciales
132 2.4. Lenguaje XML XML Schema – Estructuras adicionales Comentarios – Se utiliza para incluir información complementaria o metadatos sobre un elemento, atributo o tipo de dato – Su contenido no influye en la validación del XML •xs:annotation: es el contenedor principal que se utiliza para añadir documentación o metadatos a un esquema XML. •xs:documentation: se usa dentro de xs:annotation para proporcionar texto descriptivo sobre los elementos, atributos o tipos definidos en el esquema. Infraestructuras de Datos Espaciales
133 2.4. Lenguaje XML XML Schema – Estructuras adicionales Comentarios <xs:element name="book"> <xs:annotation> <xs:documentation xml:lang="en"> Top level element. </xs:documentation> <xs:documentation xml:lang="fr"> Element racine. </xs:documentation> <xs:appinfo source="http://example.com/foo/"> <bind xmlns="http://example.com/bar/"> <class name="Book"/> </bind> </xs:appinfo> </xs:annotation> </xs:element> Infraestructuras de Datos Espaciales
134 2.4. Lenguaje XML XML Schema – Estructuras adicionales Espacios de nombres: –“targetNameSpace”: atributo que permite declarar cual es el nombre del espacio de nombres descrito en el esquema. –“xmlns:...”: permite especificar el prefijo asociado a todos los objetos provenientes del espacion de nombres referido que se utilizan en el documento XML actual. <xs:schema targetNamespace=http://example.org/ns/books/ xmlns:xs=http://www.w3.org/2001/XMLSchema xmlns:bk=http://example.org/ns/books/ elementFormDefault="qualified“ attributeFormDefault="unqualified"> .../... </xs:schema> – Los atributos “elementFormDefault” y “attributeFormDefault” permiten definir si los elementos y atributos de un esquema deben estar calificados (asociados con un espacio de nombres - namespace) o no. Infraestructuras de Datos Espaciales
2.5. Herramientas de validación Existen herramientas especializadas que permiten hacer verificaciones de forma y validez de un documento XML (contra un DTD o un XML Schema). Validar en línea • XML Validation Online https://www.xmlvalidation.com/ [LLIURE] • FreeFormatter XML Validator https://www.freeformatter.com/ [LLIURE] – Escritorio • Notepad++ + Plugin XML https://notepad-plus-plus.org/ [LLIURE] •XML Spyhttps://www.altova.com/es/xmlspy-xml-editor [PAGAMENT] – Existe una versión de prueba (30 días) sin ningún tipo de restricción funcional: http://www.altova.com/download/xmlspy/xml_editor_enterprise.html Infraestructuras de Datos Espaciales 135
