Definición del tipo de documento (DTD) (1/6) DTD (Document Type Definition) Define: Elementos que puede incluir un documento XML Forma en que deben hacerlo (qué elementos van dentro de otros) Atributos que se les pueden dar Existen dos formas de referenciar un DTD en un documento XML: Referencia en forma de URL DTD dentro del propio documento XML
Definición del tipo de documento (DTD) (2/6)Referencia en forma de URL Ejemplo: < !DOCTYPE servicio SYSTEM "http://www.dat.etsit.upm.es/~abarbero/DTD/servicio.dtd"> donde: Se usa la declaración < !DOCTYPE Nombre del documento Þ nombre del elemento raíz del documento XML Palabra SYSTEM indica que el DTD se obtendrá a partir de un elemento externo URL en la que se encuentre el DTD entrecomillada
Definición del tipo de documento (DTD) (3/6) DTD (Document Type Definition) Define: Elementos que puede incluir un documento XML Forma en que deben hacerlo (qué elementos van dentro de otros) Atributos que se les pueden dar Existen dos formas de referenciar un DTD en un documento XML: Referencia en forma de URL DTD dentro del propio documento XML
Definición del tipo de documento (DTD) (4/6)DTD dentro del propio XML (1/3) Ejemplo: < ?xml version="1.0"?> < !DOCTYPE servicio [ < !ELEMENT evento (imagenTitulo?,titulo?,horaInicio?,horaFin?,resumen?,video,audio?)> < !ATTLIST evento id CDATA #REQUIRED> < !ELEMENT imagenTitulo (#PCDATA)> < !ELEMENT titulo (#PCDATA)> < !ELEMENT horaInicio (#PCDATA)> < !ELEMENT horaFin (#PCDATA)> < !ELEMENT resumen (#PCDATA)> < !ELEMENT video (rectanguloOrigen?,rectanguloDestino?,localizadorDestino?)> < !ELEMENT rectanguloOrigen (x?,y?,ancho?,alto?)> < !ELEMENT x (#PCDATA)> < !ELEMENT y (#PCDATA)> < !ELEMENT ancho (#PCDATA)> < !ELEMENT alto (#PCDATA)> < !ELEMENT rectanguloDestino (x?,y?,ancho?,alto?)> < !ELEMENT x (#PCDATA)> < !ELEMENT y (#PCDATA)> < !ELEMENT ancho (#PCDATA)> < !ELEMENT alto (#PCDATA)> < !ELEMENT localizadorDestino (#PCDATA)> < !ELEMENT audio (localizadorDestino?)> < !ATTLIST audio dvb CDATA #REQUIRED> < !ELEMENT localizadorDestino (#PCDATA)> ]> (Gp:) Definir elemento
(Gp:) Nombre elemento
(Gp:) Tipo de datos
(Gp:) Elementos descendientes
(Gp:) Opcional pero singular
(Gp:) Definir atributo
(Gp:) Nombre del elemento del que se declara el atributo
(Gp:) Nombre atributo
(Gp:) Posibles valores del atributo o CDATA
(Gp:) obligatorio
Definición del tipo de documento (DTD) (5/6)DTD dentro del propio XML (2/3) Se usa la sentencia < !DOCTYPE pero en vez de la URL se incluye el propio DTD entre los símbolos [ y ] (todo lo que hay entre ellos se considera parte del DTD) Notas: Para definir un elemento se usa la declaración < !ELEMENT seguida del nombre del elemento y entre paréntesis: Tipo de datos que contiene (#PCDATA, para alfanumérico) Elementos descendientes: Caracteres especiales: + Þ obligatorio y múltiple * Þ opcional y múltiple ? Þ opcional pero singular | Þ un elemento y solo uno de entre los que forman la expresión Para definir un atributo se usa la declaración < !ATTLIST seguida de: Nombre del elemento del que se está declarando el atributo Nombre del propio atributo Posibles valores del atributo (separados por |) o CDATA para indicar cualquier valor Valor por defecto entrecomillado (opcional) #REQUIRED (obligatorio), #IMPLIED (no obligatorio), #FIXED (fijo)
Definición del tipo de documento (DTD) (6/6)DTD dentro del propio XML (3/3) Ejemplo de XML que cumpliría el DTD anterior: < servicio> < evento id = '1'> < titulo>Novela: Felisinda (Capítulo 550). Capítulo repetido por fallos en el sistema< /titulo>
< horaInicio>Hora inicio: 15:30h< /horaInicio>
< horaFin>Hora fin: 16:30h< /horaFin>
< resumen>RESUMEN: En el capitulo de hoy Felisinda no puede reprimir la tentacion de usurpar el sillón de su jefe. Esto traerá consecuencias que ni ella misma imagina…< /resumen> < /evento> < /servicio>
Tipos de documentos XML Existen dos tipos de documentos XML: Bien formados Cumplen especificaciones del lenguaje (reglas sintácticas) No están sujetos a unos elementos fijados en un DTD Válidos Están bien formados (cumplen reglas sintácticas) Siguen estructura y semántica determinada por un DTD
Utilización de XML en el ámbito de MHP (1/7) Tres campos de actividad en los cuales XML juega un papel importante: En la propia norma MHP
En la caracterización de la metainformación de contenidos
En el ámbito de la implementación de aplicaciones
Utilización de XML en el ámbito de MHP (2/7)En la propia norma MHP En la propia norma MHP: Frecuentemente el intercambio de información entre entidades se resuelve usando aplicaciones XML que estructuran los datos a enviar. Solicitud de permisos Þ fichero XML en el que se relacionan todos los componentes que es necesario almacenar Almacenamiento local de aplicaciones Þ fichero XML en el que se relacionan todos los componentes que es necesario almacenar Interactividad con aplicaciones descargadas (acceso a Internet a través de TV, super-teletexto ) Þ usan dos aplicaciones XML para implementación del envío de mensajes de sincronización.
Utilización de XML en el ámbito de MHP (3/7) Tres campos de actividad en los cuales XML juega un papel importante: En la propia norma MHP
En la caracterización de la metainformación de contenidos
En el ámbito de la implementación de aplicaciones
Utilización de XML en el ámbito de MHP (4/7)En la caracterización de la metainformación de contenidos En la caracterización de la metainformación de contenidos: En el ámbito de TV Digital, el proyecto mas significativo es el promovido por el foro TV-Anytime El incremento desmesurado de contenidos y la dificultad de encontrar lo que se busca Þ desarrollo de mecanismos para caracterizar contenidos y permitir referenciarlos independientemente de su localización y fecha de emisión. El objetivo principal es separar la información que describe a los contenidos de aquella otra necesaria para su adquisición e independizar todo esto del mecanismo de transporte
Utilización de XML en el ámbito de MHP (5/7) Tres campos de actividad en los cuales XML juega un papel importante: En la propia norma MHP
En la caracterización de la metainformación de contenidos
En el ámbito de la implementación de aplicaciones
Utilización de XML en el ámbito de MHP (6/7)En el ámbito de la implementación de aplicaciones (1/2) En el ámbito de la implementación de aplicaciones: La estructura de información modelada mediante las aplicaciones XML puede abarcar desde los elementos descriptores de la red de difusión hasta los componentes de las aplicaciones interactivas disponibles en cada canal de televisión. Por ejemplo:
Utilización de XML en el ámbito de MHP (7/7)En el ámbito de la implementación de aplicaciones (2/2) Limitando la descripción a las entidades más importantes, se puede otorgar el papel de elemento raíz del sistema a la entidad red de difusión. Este elemento estaría compuesto por varios flujos de transporte. Cada flujo de transporte, a su vez, estaría formado por los diferentes servicios (canales de televisión)
¿Qué es un parser? El parser es para XML como un sistema operativo a una computadora: IMPRESCINDIBLE Herramienta utilizada para procesar cualquier documento, estructura o fragmento en XML Realiza el trabajo sucio: Detectar principio y fin de un elemento Gestionar espacios de nombres Comprobar que el documento está bien formado El diseñador de aplicaciones sólo debe concentrarse en aspectos específicos de la aplicación Existen diversos parsers para diversos lenguajes Þ información residente en XML puede ser procesada en un ambiente de programación específico, en nuestro caso invocando métodos en Java Pasar un documento XML a clases de Java es un proceso de parsing. Cuando se procesa cualquier información XML, lo primero es comprobar si está bien formada y luego, si incluye referencia a un DTD, comprobar que sigue sus reglas gramaticales. Hay pues diferencia entre los parsers: Parsers no validadores Þ no comprueban si se siguen reglas de un DTD Parsers validadores Þ comprueban que se atiende a un DTD y es válido
Metodologías de manipulación de documentos XML (1/2) El W3C (World Wide Web Consortium) ha especificado dos mecanismos para acceder a documentos XML y trabajar con ellos. SAX (Simple API for XML) Se utiliza para hacer un recorrido secuencial de los elementos del documento XML DOM (Document Object Model) Implica la creación de un árbol en memoria que contiene el documento XML y así, con él en memoria, poder hacer cualquier tipo de recorrido y acciones con los elementos que se desee En el caso de Java, SUN Microsystems provee las APIs para que los desarrolladores cuenten con las clases necesarias para programar con XML
Metodologías de manipulación de documentos XML (2/2) APIs existentes en Java para trabajar con documentos XML: SAX (Simple API for XML) Introducción a SAX El parser SAX DOM (Document Object Model) Introducción a DOM El parser DOM
Introducción a SAX API SAX es el primer punto de unión del mundo XML con el mundo de la programación en general, y en particular con Java Principales características: El documento se lee secuencialmente de principio a fin SAX procesa la información en XML conforme esta sea presentada (evento por evento), manipulando cada elemento en un determinado instante, sin incurrir en un uso excesivo de memoria. No se carga todo el documento en memoria Ventajas: Sencillo y rápido de utilizar Eficiencia en cuanto al tiempo y la memoria empleados en el sistema Ideal para manipular documentos XML de gran tamaño Desventajas: No se dispone de la estructura en árbol de los documentos XML No se puede recorrer jerárquicamente, solo análisis secuencial
Metodologías de manipulación de documentos XML (2/2) APIs existentes en Java para trabajar con documentos XML: SAX (Simple API for XML) Introducción a SAX El parser SAX DOM (Document Object Model) Introducción a DOM El parser DOM
El parser SAX Para poder trabajar con documentos XML mediante SAX es necesario un parser SAX Uso de SAX desde Java: Conseguir clases que componen el parser Incluir estas clases en la ruta de clases Muchos parsers en el mercado Xerces para Java de Apache No ha sido el parser utilizado en el presente proyecto. Gran tamaño Þ inviable en el entorno de la televisión digital. Hay que incluir la librería del parser al generar el transport stream En el presente proyecto, se ha optado por usar el parser NanoXML.
Metodologías de manipulación de documentos XML (2/2) APIs existentes en Java para trabajar con documentos XML: SAX (Simple API for XML) Introducción a SAX El parser SAX DOM (Document Object Model) Introducción a DOM El parser DOM
Introducción a DOM La API DOM constituye un paso más allá en el uso de XML desde un lenguaje de programación, y en particular desde Java Principal característica: El documento se carga entero en memoria en una estructura de árbol Ventajas: Se puede acceder a los datos en función de la jerarquía de los elementos Se puede agregar un nodo (información) en cualquier punto del árbol Se puede eliminar información de un nodo en cualquier punto del árbol Se pueden crear documentos desde cero Desventajas: Coste (en tiempo y memoria) que conlleva construir el árbol para un documento, sobre todo si tiene cierto tamaño Ideal para manipular documentos XML de poco tamaño
Metodologías de manipulación de documentos XML (2/2) APIs existentes en Java para trabajar con documentos XML: SAX (Simple API for XML) Introducción a SAX El parser SAX DOM (Document Object Model) Introducción a DOM El parser DOM
El parser DOM Para poder trabajar con documentos XML mediante DOM es necesario un parser DOM (se suele apoyar en un parser SAX) Uso de DOM desde Java: Conseguir clases que componen el parser Incluir estas clases en la ruta de clases Muchos parsers en el mercado Xerces para Java de Apache El mismo que se comentó en SAX pero importando las clases oportunas para trabajar con DOM No ha sido el parser utilizado en el presente proyecto. Gran tamaño Þ inviable en el entorno de la televisión digital. Hay que incluir la librería del parser al generar el transport stream En el presente proyecto, se ha optado por usar el parser NanoXML.
El parser NanoXML Introducción a NanoXML NanoXML 2 Análisis de un documento XML con NanoXML Carga de un documento XML Acceso y análisis de contenido Acceso al nombre de un IXMLElement Acceso a un atributo de un IXMLElement Lectura del contenido de un IXMLElement Acceso a un elemento descendiente de un IXMLElement
Introducción a NanoXML Aparición en abril de 2000 Propósito: Ser un pequeño parser fácil de usar Parsers SAX y DOM eran demasiado complejos para ciertas necesidades y, o bien eran demasiado grandes o tenían una licencia muy restrictiva Versión 1 de NanoXML Muy pequeño (unos 6K) Razonablemente rápido para documentos XML pequeños Sencillo de usar Gratis
El parser NanoXML Introducción a NanoXML NanoXML 2 Análisis de un documento XML con NanoXML Carga de un documento XML Acceso y análisis de contenido Acceso al nombre de un IXMLElement Acceso a un atributo de un IXMLElement Lectura del contenido de un IXMLElement Acceso a un elemento descendiente de un IXMLElement
Página anterior | Volver al principio del trabajo | Página siguiente |