• No se han encontrado resultados

Arquitecturas Distribuidas 09/10

N/A
N/A
Protected

Academic year: 2021

Share "Arquitecturas Distribuidas 09/10"

Copied!
98
0
0

Texto completo

(1)T Tema 3. IV IV. XML. Arquitecturas Distribuidas 09/10. 1.

(2) IV. XML 1. 2. 3 3. 4. 5. 6 6.. ¿Qué es XML? Estructura de un documento XML Importancia de XML Problemas de XML Conformidad y validez E Estructura DTD XML 3.1. Elementos 3.2. Atributos 3.3. Notaciones 3.4. Entidades 33.5. 5 Instrucciones de p procesado ((PI)) 7. Interpretación de un documento XML por un navegador 8. XHTML 9. Tecnologías relacionadas con XML 9 5.1. Espacios de nombres 5.2. XSchema 5 3 Lenguajes de estilo y transformación para XML 5.3. Arquitecturas Distribuidas 09/10. 2.

(3) ¿Qué es XML? ((I)) ¿Q y Lenguaje de Marcas eXtendido. y Meta‐lenguaje g j p para lenguajes g j de marcas p particulares. (como SGML): permite crear otros lenguajes de marcas y Proporciona las reglas sintácticas que permiten crear. lenguajes que están bien formados y puedan ser validados y Cuando uno crea un documento XML, define sus propias etiquetas. No está limitado en qué o cómo se describen los datos. datos y Mientras el documento esté bien formado es XML aceptable. y Cada lenguaje particular (e.g. XHTML, MathML, SVG) es. una aplicación li ió de d XML y Proporciona información acerca de los datos (metadatos). Arquitecturas Distribuidas 09/10. 3.

(4) ¿Qué es XML? ((I)) ¿Q y Separa los datos de su representación (formato) particular y XML no es HTML mejorado, j , sino SGML G simplificado. p y Simplifica el procesado e intercambio de la información, es. independiente de la plataforma. y Proporciona reglas sintácticas para crear lenguajes que deben estar bien formados y pueden ser validados. y Es usado por muchas otras tecnologías y en muchos. ámbitos (e.g. (e g los ficheros de configuración de las tecnologías de Microsoft son XML).. Arquitecturas Distribuidas 09/10. 4.

(5) Estructura de un documento XML y Prólogo (declaraciones) y cuerpo. <?xml version="1.0" [parámetros opcionales]> Declaraciones de las reglas del documento <raiz> Contenido </raiz>. PRÓLOGO. CUERPO. y Parámetros opcionales en la declaración: y standalone: y. indica d si ell d documento es autocontenido. d encoding: juego de caracteres del documento. Arquitecturas Distribuidas 09/10. 5.

(6) Estructura de un documento XML y Ejemplo documento XML simple: <?xml version="1.0" encoding='UTF-8‘?> <dni> <id> d 568 568767331X 6 33 </id> / d <nombre> Pepe </nombre> <apellidos> Pérez </apellidos> <nacimiento> <lugar> g Murcia </lugar> / g <fecha> 1/1/1983 </fecha> </nacimiento> </dni> MARCAS. Arquitecturas Distribuidas 09/10. 6.

(7) Estructura de un documento XML y Ejemplo documento XML simple: <?xml version="1.0" encoding='UTF-8'> Una aplicación podría <dni>. usar el DNI para enviar a <id> d 568 568767331X 6 33 </id> / d l la máquina á i que llos <nombre> Pepe </nombre> <apellidos> Pérez </apellidos> imprime los comandos <nacimiento> <lugar> g Isla p perejil j </lugar> / g oportunos <fecha> 1/1/1983 </fecha> </nacimiento>. </dni>. Arquitecturas Distribuidas 09/10. 7.

(8) Estructura de un documento XML y Ejemplo documento XML simple: <?xml version="1.0" encoding='UTF-8'> Una aplicación podría. usar el DNI para enviar a <id> d 568 568767331X 6 33 </id> / d l la máquina á i que llos <nombre> Pepe </nombre> <apellidos> Pérez </apellidos> imprime los comandos <nacimiento> <lugar> gpodría Isla p perejil j </lugar> / g oportunos Otra aplicación <fecha> 1/1/1983 </fecha> </nacimiento> usar el DNI para enviar al </dni> usuario un correo para p recordarle que debe renovarlo.. <dni>. Arquitecturas Distribuidas 09/10. 8.

(9) Estructura de un documento XML y Ejemplo documento XML simple: <?xml version="1.0" encoding='UTF-8'> Una aplicación podría. usar el DNI para enviar a <id> d 568 568767331X 6 33 </id> / d l la máquina á i que llos hace h <nombre> Pepe </nombre> <apellidos> Pérez </apellidos> los comandos oportunos <nacimiento> <lugar> gpodría Isla p perejil j </lugar> / g Otra aplicación <fecha> 1/1/1983 </fecha> Otra aplicación podría </nacimiento> usar el DNI para enviar al </dni> usar los datos para usuario un correo p para contrastar la l veracidad id d recordarle que debe en una compra a través renovarlo. de Internet. Internet. <dni>. Arquitecturas Distribuidas 09/10. 9.

(10) Estructura de un documento XML. XML PROPORCIONA UN <?xml version="1.0" encoding='UTF-8'> MÉTODO PARA ESTRUCTURAR Una aplicación podría usar el DNI para enviar a <dni> INFORMACIÓN, O <id> d 568 568767331X 6C33Ó </id> /, d l la máquina á i que llos hace h <nombre> Pepe </nombre> <apellidos> Pérez </apellidos> los comandos oportunos INDEPENDIENTEMENTE DE LA <nacimiento> <lugar> gpodría Isla p perejil j </lugar> / g Otra aplicación <fecha> 1/1/1983 </fecha> Otra aplicación podría APLICACIÓN Ó Q QUE LA PROCESE O </nacimiento> usar el DNI para enviar al </dni> usar los datos para usuario un correo para p Yrecordarle PARAque DOTARLA DE contrastar l veracidad la id d debe en una compra a través renovarlo. SIGNIFICADO de Internet. Internet. y Ejemplo documento XML simple:. Arquitecturas Distribuidas 09/10. 10.

(11) Importancia p de XML y XML permite especificar la semántica de los datos que. contiene: ¿q ¿qué significan? g y HTML, por el contrario, permite definir la estructura de un. documento pero no la semántica de los datos que contiene. y Separación S ió de d los l datos d t de d la l forma f en que se procesan =. independiente del dominio de aplicación y Permitir q que los datos “perduren” p más allá de la tecnología g y Legible por los humanos (Human‐readable): ¿por qué? al menos. hay una oportunidad de discernir el significado en el futuro (si p de abrir el archivo)) somos capaces. y Estándar y MUY utilizado. Arquitecturas Distribuidas 09/10. 11.

(12) Problemas de XML y Tremendamente redundante (desde el punto de vista. de una máquina). máquina) Muy poco eficiente en el uso de recursos y Ancho de banda, banda latencia latencia, almacenamiento. almacenamiento. y Proliferación de lenguajes y Necesitamos N it un parser/aplicación / li ió para cada d uno d de ellos ll. Arquitecturas Distribuidas 09/10. 12.

(13) Conformidad y validez y En un documento bien formado (well‐formed) y Se cierran todos los elementos abiertos. HTML: <h2> <b> Nombre: </b> <h3> <i> Pepe Pérez </i>. XML: <h2> <b> Nombre: </b> </h2> <h3> <i> Pepe Pérez </i> </h3>. Arquitecturas Distribuidas 09/10. 13.

(14) Conformidad y validez y En un documento bien formado (well‐formed) y Se identifican los elementos vacíos. HTML: <b> Nombre: </b> <i> Pepe Pérez </i> <br>. XML: <b> Nombre: </b> <i> Pepe Pérez </i> <br/>. Elemento vacío: <TAG/>. Arquitecturas Distribuidas 09/10. 14.

(15) Conformidad y validez y En un documento bien formado (well‐formed) y Los valores de los atributos siempre están presentes y van. entre comillas ((“valor” o ‘valor’)). HTML: <li compact> <li type=disc>. XML: <li compact="compact“> <li type="disc">. Arquitecturas Distribuidas 09/10. 15.

(16) Conformidad y validez y En un documento bien formado (well‐formed) y En elementos y atributos, las mayúsculas y minúsculas. son letras distintas. HTML: <LI type=disc> == <li type=disc> == <Li tYPe=disc>. XML: <LI type='disc'> yp != <li type='disc'> yp != <Li tYPe='disc'>. Arquitecturas Distribuidas 09/10. 16.

(17) Conformidad y validez y En un documento bien formado (well‐formed) y Los elementos deben estar bien anidados. HTML: El analizador (parser) intenta arreglarlo HTML: <b> <u> Número de DNI: 568767331X </b> </u>. XML: <b> <u> Número de DNI: 568767331X </b> / </u> /. XML: El analizador (parser) debe dar error! Arquitecturas Distribuidas 09/10. 17.

(18) Conformidad y validez y En un documento bien formado (well‐formed) y Todas las entidades deben estar declaradas HTML: <b> Nombre &nbsp; Apellidos </b>. XML: <b> Nombre &nbsp; Apellidos </b>. •XML: &nbsp; necesita una declaración previa. •XML sólo entiende por defecto: &amp; (&), (&) &lt; (<) (<), &gt; (>) (>), &quote; ((“)) y &apos; ((‘)) Arquitecturas Distribuidas 09/10. 18.

(19) Conformidad y validez y En un documento bien formado (well‐formed) y Puede contener comentarios XML: <!–<! Comentario --> >. y Puede contener datos que no se analicen sintácticamente. XML: <![CDATA [datos que no se analizan]]>. Arquitecturas Distribuidas 09/10. 19.

(20) Conformidad y validez. y XML admite una declaración de Definición del Tipo de. Documento (DTD): “Conjunto que describe de reglas que debe respetar un documento perteneciente a un lenguaje XML específico Define la estructura de un documento: específico. elementos, contenidos de cada elemento, orden, atributos de cada elemento, etc.”. y Un documento es conforme ó valido si y sólo si: y Está bien formado y Tiene un DTD y respeta sus reglas. Arquitecturas Distribuidas 09/10. 20.

(21) Estructura DTD XML y Declaración del DTD: <?xml version="1.0"> <!DOCTYPE nombre [ REGLAS SINTACTICAS (declaraciones internas) ]>. <nombre> ... </nombre>. Arquitecturas Distribuidas 09/10. 21.

(22) Estructura DTD XML y Declaración “externa”: <?xml version="1.0">. URL donde d d se ubica bi ell documento con el DTD DTD.. <!DOCTYPE nombre (SYSTEM|PUBLIC) URL [ ]>. <nombre> ... </nombre>. SYSTEM sii es un DTD propio i Arquitecturas Distribuidas 09/10. PUBLIC si es un DTD estándar. 22.

(23) Estructura DTD XML y Declaración “mixta”: <?xml version="1.0"> <!DOCTYPE nombre (SYSTEM|PUBLIC) URL [ Reglas sintácticas (declaraciones internas) ]>. <nombre> ... </nombre>. DTD es la l suma d de las l partes t externas e internas Arquitecturas Distribuidas 09/10. 23.

(24) Estructura DTD XML y Observación: <?xml version="1.0"> <!DOCTYPE nombre [ REGLAS SINTACTICAS (declaraciones internas) ]>. <nombre> ... </nombre>. Nombre N b indica i di cómo ó se llama la raíz del documento Arquitecturas Distribuidas 09/10. 24.

(25) Estructura DTD XML y Reglas del DTD: <!DOCTYPE nombre [ REGLAS SINTACTICAS: ELEMENTOS: ATRIBUTOS:. <!ELEMENT elemento (contenido)> <!ATTLIST elemento atributo tipo descripción ... >. ENTIDADES: INTERNAS: <!ENTITY [%] entidad “cualquier texto”> EXTERNAS: <!ENTITY [%] entidad URL> PREDEFINIDAS: &amp; &lt; etc NOTACIONES:. <!NOTATION ! nombre identificador>. INSTRUCCIONES: <?... > ]. y Utiliza Utili la l sintaxis i t i de d SGML, SGML simplificando i lifi d las l posibilidades ibilid d Arquitecturas Distribuidas 09/10. 25.

(26) Elementos en DTD XML y Declaración de los elementos: <!ELEMENT elemento (contenido)>. Nombre N b del d l nuevo elemento. Indica la declaración de un nuevo elemento. Declaración D l ió del d l ti tipo de d contenido (elementos y datos) que puede incluir el elemento, cuántos y en qué orden aparecen.. Arquitecturas Distribuidas 09/10. 26.

(27) Elementos en DTD XML. Clases de contenido para elementos (5 posibilidades):. <!--Elemento vacío--> <!ELEMENT elemento EMPTY> <!--Puede contener cualquier elemento--> <!ELEMENT elemento ALL> (datos) ) con entidades (q (que <!--Contenido es una cadena de caracteres ( deben ser procesadas)--> <!ELEMENT elemento (#PCDATA)> p de otros elementos, , según g una fórmula--> <!--Elemento compuesto <!ELEMENT elemento formula(elementos)> <!--Elemento con contenido mixto (otros elementos y #PCDATA)--> ( , # #PCDATA)> ) <!ELEMENT elemento formula(elementos,. Arquitecturas Distribuidas 09/10. 27.

(28) Elementos en DTD XML. Clases de contenido para elementos (fórmulas): y Sintáxis muy similar a SGML. y Indican d ell número d de veces que puede d aparecer un componente. (cardinalidad): * ((cero o más veces)) + (una o más veces) ? (cero o una vez) y Indican I di ell orden d en que deben/pueden d b / d aparecer los l elementos l t. (atención: el operador & no existe, diferencia con SGML): a,b (b a continuación de a) a|b (b ó a) (conjunto) (agrupación, si existe operador posterior afecta a todo el conjunto) j ) Arquitecturas Distribuidas 09/10. 28.

(29) Elementos en DTD XML Ejemplos de fórmulas: <!ELEMENT a (b,c)> (b c)> <a> <b>contenido de b</b> <c>contenido de c</c> </a>. <a> <c>contenido de c</c> <b>contenido de b</b> </a>. <a> <b>contenido de b</b> </a> <a></a> Arquitecturas Distribuidas 09/10. 29.

(30) Elementos en DTD XML Ejemplos de fórmulas: <!ELEMENT a (b,c)> (b c)> <a> <b>contenido de b</b> <c>contenido de c</c> </a>. VÁLIDA! Á. <a> <c>contenido de c</c> <b>contenido de b</b> </a>. NO VÁLIDA!. <a> <b>contenido de b</b> </a>. <a> </a>. NO VÁLIDA!. NO VÁLIDA! Arquitecturas Distribuidas 09/10. 30.

(31) Elementos en DTD XML Ejemplos de fórmulas: <!ELEMENT a (b? (b?, c)+> <a> <c>contenido de c</c> </a>. <a> <b>contenido <c>contenido <c>contenido <b>contenido <c>contenido. de de de de de. b</b> c</c> c</c> b</b> c</c>. </a>. Arquitecturas Distribuidas 09/10. 31.

(32) Elementos en DTD XML Ejemplos de fórmulas: <!ELEMENT a (b? (b?, c)+> <a> <c>contenido de c</c> </a>. VÁLIDA!. <a> <b>contenido <c>contenido <c>contenido <b>contenido <c>contenido. de de de de de. b</b> c</c> c</c> VÁLIDA! b</b> c</c>. </a>. Arquitecturas Distribuidas 09/10. 32.

(33) Elementos en DTD XML Ejemplos de fórmulas:. <!ELEMENT a (#PCDATA, (#PCDATA (b|c), (b|c) d+, d+ #PCDATA)> <a> Cualquier cadena de texto forma un #PCDATA. Adem&aacute;s es posible que nos encontremos entidades delimitadas por &amp; y ;. <b> contenido de b </b> <d> contenidio de d </d> Cualquier otra cadena de datos. <a>. <a> <c> contenido de c </c> <d> contenido de d </d> Nota: #PCDATA puede ser una cadena vac&iacute;a. </a>. Arquitecturas Distribuidas 09/10. 33.

(34) Elementos en DTD XML Ejemplos de fórmulas:. <!ELEMENT a (#PCDATA, (#PCDATA (b|c), (b|c) d+, d+ #PCDATA)> <a> Cualquier cadena de texto forma un #PCDATA. Adem&aacute;s es posible que nos encontremos entidades delimitadas por &amp; y ;. <b> contenido de b </b> <d> contenidio de d </d> Cualquier otra cadena de datos. <a>. Ejemplo 1) Interpretación del #PCDATA en un <a> <c> contenido de c </c> navegador: Las entidadesdesed </d> <d> contenido Nota: #PCDATA puede ser substituyen por su valor </a> “ l” ‘‘á’’ y ‘&’ “real”: ‘ ’. Arquitecturas Distribuidas 09/10. una cadena vac&iacute;a.. 34.

(35) Elementos en DTD XML Ejemplos de fórmulas:. <!ELEMENT a (#PCDATA, (#PCDATA (b|c), (b|c) d+, d+ #PCDATA)> <a> Cualquier cadena de texto forma un #PCDATA. Adem&aacute;s es posible que nos encontremos Ejemplo 2) #PCDATA puede entidades delimitadas por &amp; y ;. <b> contenido de b </b> ser una cadena <d> vacía. contenidio de d </d> Cualquier otra cadena de datos. <a>. <a> <c> contenido de c </c> <d> contenido de d </d> Nota: #PCDATA puede ser una cadena vac&iacute;a. </a>. Arquitecturas Distribuidas 09/10. 35.

(36) Elementos en DTD XML Ejemplos de fórmulas:. <!ELEMENT a (#PCDATA, (#PCDATA (b|c), (b|c) d+, d+ #PCDATA)> <a> Cualquier cadena de texto forma un #PCDATA. Adem&aacute;s es posible que nos encontremos entidades delimitadas por &amp; y ;. <b> contenido de b </b> <d> contenidio de d </d> VÁLIDA! Cualquier otra cadena de datos. <a>. <a>. </a>. <c> contenido de c </c> <d> contenido de d </d> VÁLIDA! Nota: #PCDATA puede ser una cadena vac&iacute;a.. Arquitecturas Distribuidas 09/10. 36.

(37) Atributos en DTD XML y Declaración de los atributos (parámetros): Nombre N b del d l elemento l para ell que se declaran los atributos. <!ATTLIST elemento atributo1 tipo descripción atributo2 tipo p descripción p ... >. Indica el comienzo de una nueva lista de atributos. Declaración de parámetros (uno por línea). Arquitecturas Distribuidas 09/10. 37.

(38) Atributos en DTD XML Tipos de parámetros:. Nota: De momento no nos fijaremos en la descripción. y Indican los posibles valores que puede contener el. atributo: CDATA (character data: cualquier carácter y ciertas entidades) <!ATTLIST a parametro CDATA descripción> p p > <a parametro="Cualquier cadena con entidades como &amp;"/>. NMTOKEN (named token: una cadena de letras, letras números o ciertos <!ATTLISTcomo a símbolos: el nombre dedescripción> una variable en Java) parametro NMTOKEN > <a parametro="Algo_sin_espacios_quizas_con_123456"/> / Arquitecturas Distribuidas 09/10. 38.

(39) Atributos en DTD XML. NMTOKENS (named token list: secuencia de NMTOKEN separados por espacios) <!ATTLIST a parametro NMTOKENS descripción> > <a parametro="Token1 Token2 Token3 ..."/>. ID (unique identifier: identificador que debe ser diferente para cada elemento, misma sintaxis que NMTOKEN) <!ATTLIST a parametro ID descripción> > <a parametro="1"/> < parametro="2"/> <a t "2"/> <a parametro="uno"/> <a parametro="uno"/>. VÁLIDO! NO VÁLIDO!. Arquitecturas Distribuidas 09/10. 39.

(40) Atributos en DTD XML. IDREF (identifier reference: identificador único de otro elemento que debe existir en el documento) <!ATTLIST a parametro IDREF descripción> > <!ATTLIST b otroparametro ID descripción> > <b otroparametro="uno"/> <a parametro= parametro="uno"/> uno />. VÁLIDO!. <b otroparametro= otroparametro="uno"/> uno /> <a parametro="otro"/>. NO VÁLIDO! VÁLIDO. Arquitecturas Distribuidas 09/10. 40.

(41) Atributos en DTD XML. IDREFS (identifier reference list: lista de IDREF separados por espacios) <!ATTLIST a parametro IDREFS descripción> > <!ATTLIST b otroparametro ID descripción> > <!ATTLIST c otroparametromas ID descripción> > <b otroparametro="ID1"/> <b otroparametro="ID2"/> <c otroparametro= otroparametro="ID3"/> ID3 /> <a parametro="ID1 ID2 ID3 ..."/>. Arquitecturas Distribuidas 09/10. 41.

(42) Atributos en DTD XML. ENTITY (entity name: nombre de una entidad general declarada en el documento) <!ENTITY unaentidad SYSTEM "foto.png"> p g Lo o entenderemos <!ATTLIST a parametro ENTITY descripción> mejor al estudiar > entidades! <a parametro="unaentidad"/> ENTITIES (identifier reference list: lista de ENTITY separadas por espacios) <!ENTITY unaentidad SYSTEM "foto.png"> <!ENTITY otraentidad SYSTEM "foto2.png"> <!ATTLIST a parametro ENTITIES descripción> > <a parametro="unaentidad otraentidad"/>. Arquitecturas Distribuidas 09/10. 42.

(43) Atributos en DTD XML. NOTATION (notation list: lista de NOTATION separados por espacios) <!NOTATION jpg SYSTEM "/usr/bin/gimp"> / / /g p Lo o entenderemos <!ATTLIST a parametro NOTATION descripción> mejor al estudiar > notaciones! <a parametro="jpg"/> ENUMERACIÓN: Declaración especial (no usa palabra reservada): ( l (valor1 | valor2 l | ...)) <!ATTLIST a parametro (valor1|valor2|...) descripción> > <a parametro="valor1"/> <a parametro="valor2"/> <a parametro="otrovalornoenumerado"/> Arquitecturas Distribuidas 09/10. NO VÁLIDO! Á 43.

(44) Atributos en DTD XML. Descripción de parámetros: y Pueden indicar valores p por defecto. <!ATTLIST a color NMTOKEN azul> > <a/> <a color="rojo"/>. <!ATTLIST a color (azul|rojo) azul> > <a color="verde"/>. Arquitecturas Distribuidas 09/10. 44.

(45) Atributos en DTD XML. Descripción de parámetros: y Pueden indicar valores p por defecto. <!ATTLIST a color NMTOKEN azul> >. No se indica nada del color, por tanto es <a/> azul Se cambia el color a <a color="rojo"/> rojo j <!ATTLIST a color (azul|rojo) azul> > <a color="verde"/>. Definición no válida!. Arquitecturas Distribuidas 09/10. 45.

(46) Atributos en DTD XML. Descripción de parámetros: y Indican características especiales: p #REQUIRED (el usuario debe proporcionar un valor siempre) #IMPLIED (el parámetro es opcional) #FIXED (debe ( aparecer y el usuario no puede alterarlo)) <!ATTLIST a identidad ID #REQUIRED> color (azul|rojo|verde) #IMPLIED> tipo (antiguo|nuevo) #FIXED nuevo > <a identidad="1"/> <a identidad= identidad="2" 2 color= color="verde"/> verde /> <a color="rojo"/> <a tipo="antiguo“/>. Arquitecturas Distribuidas 09/10. 46.

(47) Notaciones en DTD XML y XML se diseñó principalmente como contenedor. de información de “texto”. y Hay mucha información representada de modo binario: imágenes, vídeo, audio, etc. y XML posibilita la coexistencia con información binaria, a través del mecanismo de las notaciones. y Las notaciones son etiquetas especiales que indican al procesador de XML el tipo de la i f información ió que está tá analizando. li d. Arquitecturas Distribuidas 09/10. 47.

(48) Notaciones en DTD XML “Algo” que indique el tipo de notación ÆPROBLEMA PORTABILIDAD. y Declaración:. <!NOTATION nombre (PUBLIC|SYSTEM) identificador>. Indica si el identificador es público o privado Nombre de la la notación Indica el comienzo de un nuevo identificador de notación Arquitecturas Distribuidas 09/10. 48.

(49) Notaciones en DTD XML y Ejemplos de uso:. <!ELEMENT foto EMPTY> <!ATTLIST foto fuente NOTATION #REQUIRED > <!NOTATION jpeg SYSTEM "image/jpeg"> <!NOTATION png SYSTEM "image/png">. <foto fuente="pepe"/> <foto fuente="maria"/> <foto fuente="paco"/>. Arquitecturas Distribuidas 09/10. 49.

(50) Notaciones en DTD XML y Ejemplos de uso:. y Notación incluída en parámetros p <!ELEMENT programa (#PCDATA)> <!ATTLIST programa lenguaje NOTATION (lisp|c) #REQUIRED > <!NOTATION lisp SYSTEM "IEEE 1178-1990"> <!NOTATION png SYSTEM "ISO/IEC 9899:1999"> <programa lenguaje="c"> int fact(int n) { if(n==1) return 1; return n*fact(n-1); } </programa> <programa lenguaje="lisp"> (defun fact (lambda (n) (if (=n 1) 1 (fact (- n 1))))) </programa> Arquitecturas Distribuidas 09/10. 50.

(51) Notaciones en DTD XML y Ejemplos de uso:. y Notación incluída en p parámetros El qué hacer ace con co cada trozo t o o de código cód go no está determinado (depende de la <!ELEMENT programa (#PCDATA)> <!ATTLIST programa aplicación final). Lo importante es lenguaje NOTATION (lisp|c) #REQUIRED que la Notación los diferencia! > <!NOTATION lisp SYSTEM "IEEE 1178-1990"> <!NOTATION png SYSTEM "ISO/IEC 9899:1999"> <programa lenguaje="c"> int fact(int n) { if(n==1) return 1; return n*fact(n-1); } </programa>. La parte en rojo es #PCDATA. <programa lenguaje="lisp"> (defun fact (lambda (n) (if (=n 1) 1 (fact (- n 1))))) </programa> Arquitecturas Distribuidas 09/10. 51.

(52) Notaciones en DTD XML y Solución poco portable. y La asignación g de identificadores es arbitraria.. y El procesado final de los datos no está prefijado,. esto no es problemático, ya que es una característica de XML: cada aplicación que lo usa decide cómo procesar los datos, es decir, interpreta la semántica de los datos según las marcas.. Arquitecturas Distribuidas 09/10. 52.

(53) Entidades en DTD XML. y Son declaraciones abstractas que pueden usarse. para definir otras partes de un documento XML (elementos, atributos, etc). y Una definición menos formal: Son declaraciones especiales que se cambian por trozos de código. y Analogía con macros en lenguaje C: <!entity CAPACIDAD "200"> #define CAPACIDAD 200 int a=CAPACIDAD;. Arquitecturas Distribuidas 09/10. <p> La capacidad del sistema es de &CAPACIDAD; bits por segundo.. 53.

(54) Entidades en DTD XML y Según la aplicación, el formato del código y su. ubicación existen e isten varios arios tipos de entidades, entidades cada una se declara con una sintaxis propia.. Arquitecturas Distribuidas 09/10. 54.

(55) Entidades en DTD XML y Entidades Genéricas: <!ENTITY nombre #PCDATA>. y Permiten la substitución de una cadena de texto. texto. Ejemplo: <!ENTITY minombre "Pepe Perez"> p Oí g gritar mi nombre: &minombre; ; </p> /p <p>. Arquitecturas Distribuidas 09/10. 55.

(56) Entidades en DTD XML y Entidades Genéricas: <!ENTITY nombre #PCDATA>. y Permiten la substitución de una cadena de texto. texto. Ejemplo: <!ENTITY minombre "Pepe Perez"> <p> Oí gritar mi nombre: &minombre; </p>. Arquitecturas Distribuidas 09/10. 56.

(57) Entidades en DTD XML. y Entidades externas genéricas: <!ENTITY nombre (PUBLIC|SYSTEM) URL>. y Permiten la substitución por un texto contenido en una. fuente externa. Ejemplo: <!ENTITY minombre SYSTEM "/home/pepe/minombre.txt"> <p> Oí gritar mi nombre: &minombre; </p>. Arquitecturas Distribuidas 09/10. 57.

(58) Entidades en DTD XML y Entidades parámetro:. y Las entidades estudiadas hasta ahora ejercían j cambios. en el contenido del XML. y Las entidades parámetro hacen lo mismo PERO EN EL PROPIO DTD Æ Ver ejemplos a continuación.. Arquitecturas Distribuidas 09/10. 58.

(59) Entidades en DTD XML y Entidades parámetro: <!ENTITY ! % nombre (CDATA)>. y Entidades parámetro externas: e ternas <!ENTITY % nombre (PUBLIC|SYSTEM) URL>. y Ahora se referencian como: %nombre;. <--NO COMO &nombre;-->. Arquitecturas Distribuidas 09/10. 59.

(60) Entidades en DTD XML y Ejemplo:. <!ENTITY % contenidoppal "nombre|apellidos|direccion"> nombre|apellidos|direccion > <!ENTITY % idattr "id ID #REQUIRED"> <!ELEMENT dni (%contenidoppal, datosnacimiento)> <!ATTLIST dni %idattr; tipodni (antiguo|nuevo|electonico) #REQUIRED nuevo >. y Esto es como escribir: <!ELEMENT dni (nombre|apellidos|direccion, datosnacimiento)> <!ATTLIST dni id ID #REQUIRED tipodni (antiguo|nuevo|electonico) #REQUIRED nuevo >. Arquitecturas Distribuidas 09/10. 60.

(61) Instrucciones de Procesado (PI) en DTD XML. y Son declaraciones especiales cuyo significado. depende del procesador del XML: <?instruccion (datos)?>. Estan delimitadas por “<?” y “?>” Arquitecturas Distribuidas 09/10. 61.

(62) Instrucciones de Procesado (PI) en DTD XML. y Los procesadores interpretan sólo aquellas PI que. conocen: <?instruccion (datos)?>. El nombre de la instrucción es cualquier q palabra. p Los procesadores del XML ejecutarán PI que reconozcan. eco o ca . Arquitecturas Distribuidas 09/10. Los datos son información opcional que se le pasa al procesador.. 62.

(63) Instrucciones de Procesado en DTD XML y Ejemplo: <hmtl> <?php echo h "H "Hola l mundo d en PHP!<b PHP!<br>\n" >\ " ?>. </ht l> </html>. La declaración indica que es una orden de PHP. El procesado asociado d depende d d dell navegador: d Apache interpretará los “datos” como un lenguaje de programación. IIS pasará esta orden por alto. Arquitecturas Distribuidas 09/10. 63.

(64) Instrucciones de Procesado en DTD XML y Ejemplo: <hmtl> <?php echo h "H "Hola l mundo d en PHP!<b PHP!<br>\n" >\ " ?>. </ht l> </html>. La declaración indica que es una orden de PHP. El procesado asociado d depende d d dell navegador: d Apache interpretará los “datos” como un lenguaje de programación. IIS pasará esta orden por alto. Arquitecturas Distribuidas 09/10. 64.

(65) Interpretación de un documento XML por un navegador y El comportamiento final depende del navegador. particular: y Al menos debe informar si el documento está bien. formado o no. no Ejemplo: <?xml version="1.0"?> <a> Hola <b> Prueba </a> </b>. Arquitecturas Distribuidas 09/10. 65.

(66) Interpretación de un documento XML por un navegador y El comportamiento final depende del navegador. particular: y Al menos debe informar si el documento está bien. formado o no. no Ejemplo: <?xml version="1.0"?> <a> <b> </a> </b>. Arquitecturas Distribuidas 09/10. 66.

(67) Interpretación de un documento XML por un navegador y Ejemplo corregido: <?xml version="1.0"?> <a> Hola <b> Prueba </b> </a>. Arquitecturas Distribuidas 09/10. 67.

(68) Interpretación de un documento XML por un navegador y Ejemplo corregido: <?xml version="1.0"?> <a> Hola <b> Prueba </b> </a>. Si el navegador no sabe interpretar de un modo especial el XML, entonces, simplemente i l muestra los l contenidos id d de llos elementos. l. Arquitecturas Distribuidas 09/10. 68.

(69) Interpretación de un documento XML por un navegador y Si un documento está especificado por su DTD, el. navegador debería comprobar e informar si el XML es o no válido.. Arquitecturas Distribuidas 09/10. 69.

(70) XHTML y HTML es muy poco estricto y coherente en cuanto a la definición de las marcas: etiquetas de cierre opcionales, mayúsculas o minúsculas, comillas en los atributos,, etc. y XHTML es HTML conforme a las reglas sintácticas de XML y Documento debe estar bien formado. y XHTML hace que los documento sean más fáciles. de procesar por una máquina. Arquitecturas Distribuidas 09/10. 70.

(71) Arquitecturas Distribuidas 09/10. 71.

(72) Espacios spac os de nombres o b es y El mecanismo de los espacios de nombres. (namespaces) permite combinar en un mismo documento XML definiciones procedentes de varios tipos de documentos. documentos y Un namespace es un grupo de elementos y nombres de atributos Cada grupo (namespace) se puede atributos. especificar y validar con su DTD correspondiente.. Arquitecturas Distribuidas 09/10. 72.

(73) Espacios spac os de nombres o b es y Ejemplo: XHTML. M thML MathML. <html>. <equation>. <p>. <mrow>. <a> <br>. <divide>. <table> XML. Arquitecturas Distribuidas 09/10. U navegador Un a egado que “entienda” e t e da ambos lenguajes, mostrará correctamente este XML.. 73.

(74) Espacios spac os de nombres o b es <?xml version="1.0"?> <html> y Ejemplo: <p> Este documento combina dos lenguajes el XHTML y XHTML M thML MathML el MathML. Esto permite cosas <em> muy interesantes </em>. Por ejemplo, escribir la ecuacion: </p> <math>. <html>. <equation>. <mrow> <p> <mi> a </mi> <a> <mo> + </mo> <mi> b </mi> <br> <mo> = </mo> <mi> c </mi> <table> </mrow> / at </math> </html>. <sum> <int> XML. Arquitecturas Distribuidas 09/10. U navegador Un a egado que “entienda” e t e da ambos lenguajes, mostrará correctamente este XML.. 74.

(75) Espacios spac os de nombres o b es <?xml version="1.0"?> <html> y Ejemplo: <p> Este documento combina dos lenguajes el XHTML y XHTML M thML MathML el MathML. Esto permite cosas <em> muy interesantes </em>. ¿ESTO ES CORRECTO? Por ejemplo, escribir la ecuación:. NO!,<reln> NO! ¿QUÉ QUÉ SUCEDE MISMO NOMBRE EN <html>SI DOS ELEMENTOS TIENEN EL <equation> <eq/> NAMESPACES? DIFERENTES <ci>A</ci>. <p>. <matrix> <a> <matrixrow> <ci>x</ci> <br> <ci>y</ci> </matrixrow> <table> <matrixrow> c /c <ci>z</ci> <ci>w</ci> </matrixrow> </matrix> </reln>. <sum> <int> XML. </html> Arquitecturas Distribuidas 09/10. U navegador Un a egado que “entienda” e t e da ambos lenguajes, mostrará correctamente este XML.. 75.

(76) E Espacios i de d nombres b Frutas. Colores. <manzana> <melocotón> <uva>. <azul> <rojo> <verde>. <naranja> j. Arquitecturas Distribuidas 09/10. <naranja>. 76.

(77) Espacios spac os Frutas de nombres o b es. Coloresu. <?xml version="1.0"?>. <manzana> <manzana/> ... <verde/> <melocotón> ... <uva/>. <azul> <rojo>. <uva>. <verde>. <naranja/>. <naranja> j. ¿Es un color o una fruta?. Arquitecturas Distribuidas 09/10. <naranja>. 77.

(78) Espacios spac os de nombres o b es y Para evitar ambigüedades los tag se escriben:. prefijo_del_namespace:nombre_tag. El prefijo indica al interprete p cuando conmutar de un lenguaje g j a otro. Arquitecturas Distribuidas 09/10. 78.

(79) Espacios spac os Frutas de nombres o b es. Coloresu. <?xml version="1">. <manzana> <fruta:manzana/> ... <color:verde/> <melocotón> ... <fruta:uva/>. <azul> <rojo>. <uva>. <verde>. <color:naranja/>. <naranja> j. Un color!. Arquitecturas Distribuidas 09/10. <naranja>. 79.

(80) Espacios spac os de nombres o b es y Un namespace debe declararse antes de su uso:. <elemento xmlns:prefijo="URL">. Atributo válido para cualquier elemento. El namespace lo conoceran él y sus descendientes. descendientes Lo habitual es declarar los namespace conocidos en la <raíz>. <raíz> Arquitecturas Distribuidas 09/10. 80.

(81) Espacios spac os de nombres o b es y Un namespace debe declararse antes de su uso:. <elemento xmlns:prefijo="URL">. Prefijo con el que se identificaran los miembros del namespace. Puede ser cualquier palabra. palabra. Arquitecturas Distribuidas 09/10. 81.

(82) Espacios spac os de nombres o b es y Un namespace debe declararse antes de su uso: se. declara en el elemento raíz <elemento xmlns:prefijo="URL">. URL con la definición del namespace: su contenido será un DTD o similar. similar. Arquitecturas Distribuidas 09/10. 82.

(83) Espacios spac os de nombres o b es y Ejemplo: XHTML. M thML MathML. <html>. <equation>. <p>. <mrow>. <a> <br>. <divide>. <table> XML. VEAMOS OS LA DEFINICIÓN CÓ CORRECTA Arquitecturas Distribuidas 09/10. 83.

(84) Espacios spac os de nombres o b es <?xml version="1.0"?> <xhtml:html y Ejemplo: xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:math="http://www.w3.org/1998/Math/MathML“ xmlns:math http://www.w3.org/1998/Math/MathML. >. XHTML. M thML MathML. <xhtml:p> Este documento combina dos lenguajes el XHTML y el MathML. Esto permite cosas <xhtml:em> muy interesantes <html> <equation> </xhtml:em>. Por ejemplo, escribir la ecuacion: </xhtml:p> <p>. <sum>. <a> <math:math><br> <math:mrow> <math:mi> <table> <math:mo> at : <math:mi> <math:mo> <math:mi> </math:mrow> </math:math>. a + b = c. </math:mi> </math:mo> </math:mi> / at : </math:mo> </math:mi>. <int>. XML. </xhtml:html> Arquitecturas Distribuidas 09/10. 84.

(85) Espacios spac os de nombres o b es <?xml version="1"> <xhtml:html y Ejemplo: xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:math="http://www.w3.org/1998/Math/MathML“ xmlns:math http://www.w3.org/1998/Math/MathML. >. XHTML. M thML MathML. <xhtml:p> Este documento combina dos lenguajes el XHTML y el MathML. Esto permite cosas <xhtml:em> muy interesantes <html> <equation> </xhtml:em>. Por ejemplo, escribir la ecuación: <p>. <a> <math:math> <math:mrow> <br><math:mi> <math:mo> <table> <math:mi> at : o <math:mo> <math:mi> </math:mrow> </math:math>. <sum>. a + b = c. </math:mi> </math:mo> </math:mi> </math:mo> / at : o </math:mi>. <int>. XML. / </xhtml:html>. Arquitecturas Distribuidas 09/10. 85.

(86) Espacios spac os de nombres o b es y Pueden usarse también espacios de nombre “por. defecto : defecto”: <elemento xmlns="URL">. Sin prefijo. Arquitecturas Distribuidas 09/10. 86.

(87) Espacios spac os de nombres o b es y Ejemplo:. <?xml version="1.0"?>. XHTML. M thML MathML. <xhtml:html xmlns="http://www.w3.org/1999/xhtml"> <p> Este documento combina dos lenguajes el XHTML y el MathML.. <html> Esto permite cosas <em> muy interesantes<equation> </em>. Por ejemplo, escribir la ecuacion: <p> </p> <sum>. <a>. <math:math xmlns:math="http://www.w3.org/1998/Math/MathML"> xmlns:math="http://www w3 org/1998/Math/MathML"> <br><math:mi> a </math:mi> <math:mo> + </math:mo> <int> <math:mi> b </math:mi> <table> <math:mo> = </math:mo> <math:mi> c </math:mi> </math:mrow> </math:math> XML. SINTAXIS MÁS COMPACTA COMPACTA.. </html>. Arquitecturas Distribuidas 09/10. 87.

(88) XSCHEMA y XML Schema y Construcción C ió alternativa l i a los l DTD para especificar ifi ell. formato de un documento XML. y Un U XSCHEMA es en sii mismo i un documento d XML XML: ¡usamos XML para definir XML!. Arquitecturas Distribuidas 09/10. 88.

(89) XSCHEMA y Ventajas sobre DTD: y Más legible. legible y Permite especificar el tipo de datos y Permite espeficar lenguajes XML que usen namespaces (con DTD es muy complejo). y Más posibilidades: y y. A nivel de elementos, por ejemplo: con XSCHEMA podemos indicar que un elemento aparece N veces. A nivel de atributos, atributos por ejemplo: puede especificarse que un atributo es un número, un dígito binario, etc.. Arquitecturas Distribuidas 09/10. 89.

(90) XSCHEMA y Ejemplo. Dado un XML (notas.xml) para definir notas: <?xml version="1.0"?> <nota> <para>Tove</para> <de>Jani</de> <asunto>Reminder</asunto> <mensaje>Don't j D 't forget f t me thi this weekend!</mensaje> k d! / j </nota>. Arquitecturas Distribuidas 09/10. 90.

(91) XSCHEMA y Podemos escribir su DTD (notas.dtd) como: <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT. nota (para, de, asunto, mensaje)> para (#PCDATA)> de (#PCDATA)> asunto t (#PCDATA)> mensaje (#PCDATA)>. Arquitecturas Distribuidas 09/10. 91.

(92) XSCHEMA y La definición alternativa con XSCHEMA sería. (notas xsd): (notas.xsd): <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> p // g/ / <xs:element name="note"> <xs:complexType> <xs:sequence> yp g / <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> / p yp </xs:complexType> </xs:element> </xs:schema>. Arquitecturas Distribuidas 09/10. 92.

(93) Lenguajes de estilo y transformación para XML y XSL: y Lenguaje para crear hojas de estilo para documentos. XML. y Más complejo p j q que CSS: unos 60 selectores y 250 5 propiedades!!. y XSLT: y Lenguaje para crear transformaciones en los. documentos. y. XML Æ HTML Æ WML Æ etc. Cada transformación usa una hoja XSLT diferente.. Arquitecturas Distribuidas 09/10. 93.

(94) Lenguajes de estilo y transformación para XML y XPATH: y Lenguaje que permite identificar partes de un documento (concepto similar a #enlace_interno en. URL).. y XPOINTER: y Lenguaje g j p para definir p punteros a p puntos o p partes de un. documento (concepto similar a URL).. y XLINK y Mecanismo de hiperenlaces (mas general que las <a> de. HTML). y Puede P d conectar t varios i objetos bj t en ambas b di direcciones. i Arquitecturas Distribuidas 09/10. 94.

(95) Referencias y bibliografía g y. Libros: y. y. “Learning g XML”,, Erik T. Ray, y, O’Reilly, y, 2001. Disponible en: http://labit501.upct.es/ad/libros. Guía rápida: y. “XML Syntax Quick Reference”, Mulberry Technologies, Inc 2000. Inc., 2000. Arquitecturas Distribuidas 09/10. 95.

(96) Referencias y bibliografía g y. WWW: y y y y. http://www.w3.org/XML/ p // 3 g/ / Æ Página g principal p p de desarrollo de la tecnología XML http://www.w3.org/TR/2004/REC‐xml11‐20040204/ p g Æ Recomendación de XML 1.1 http://www.w3.org/TR/REC‐xml‐names/ Æ Espacios de nombres http://www.w3.org/TR/xsl/ Æ Hojas de estilo en XML. Arquitecturas Distribuidas 09/10. 96.

(97) Referencias y bibliografía g y. WWW: y y y y. http://www.w3.org/XML/ p // 3 g/ / Æ Página g principal p p de desarrollo de la tecnología XML http://www.w3.org/TR/2004/REC‐xml11‐20040204/ p g Æ Recomendación de XML 1.1 http://www.w3.org/TR/REC‐xml‐names/ Æ Espacios de nombres http://www.w3.org/TR/xsl/ Æ Hojas de estilo en XML. Arquitecturas Distribuidas 09/10. 97.

(98) Referencias y bibliografía g y. Tutoriales: y y. http://www.w3schools.com/xml/ p // 3 / / Æ Varios tutoriales tecnologías XML http://www.dat.etsit.upm.es/~abarbero/curso/xml/xml p p tutorial.html Æ Tutorial en español, con bastantes enlaces. Arquitecturas Distribuidas 09/10. 98.

(99)

Referencias

Documento similar

Este libro intenta aportar al lector una mirada cuestiona- dora al ambiente que se desarrolló en las redes sociales digitales en un escenario de guerra mediática mantenido por

Revisión del documento de puntos de corte EUCAST 2013 Revisión del documento EUCAST de reglas expertas. Preparación de un Documento con Recomendaciones para el análisis y

The implication of this is that the XHTML Mobile Profile document type is not strictly XHTML Host Language Conforming, as defined in [[XHTMLMod]].. An implementation of this

Pues , amigos , ved aquí el principio fundamental por don- de Eugenio se ha de gobernar para obligar á todos á que le concedan la conseqüencia quando ella fuere buena ; porque

Reunidos en la sala de sesiones el señor Presidente del Congreso Roscio y demás señores Diputados Zea, Martínez, España, Peraza, Pefíalver, Básalo, Guevara, Cádiz, Alzuru,

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Tratando de responder la pregunta an- teriormente planteda, en el año de 2002 desarrollamos una nueva alternativa denomi- nada Sistema Insitu para el Tratamiento Dife- renciado de