993883e2988bf13cdbc355e037f81013.ppt
- Количество слайдов: 187
Llenguatges de publicació de documents en la xarxa AAD-FIB Arquitectura d’Aplicacions Distribuïdes LEANDRO NAVARRO i JORDI TORRES Departament d’Arquitectura de Computadors UPC, març- 2004 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Contingut • html • css • xml • dtd • schema • xhtml • xsl (xslt, xpath) • dom, sax UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
La nova realitat d’internet Els nous tipus de terminals i els dispositius empotrarts amb les seves noves interfícies d’accés, incloent les connexions inhalambriques. La web, que encara està basada en bona part en HTML/HTTP, està en procés de redefinició (XML y Web Services, Web Semàntic, etc). La nova arquitectura de serveis multimèdia, basats en RTP/UDP Els nous paradigmes P 2 P i GRID amb el seu enorme potencial. Les aplicacions primitives que han sobreviscut sense gaires canvis, com el correu electrònic o el FTP. El nou marc de seguretat que servirà per autentificar usuaris de manera eficaç. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Contingut del tema Descripció dels esquemes per representar informació estructurada en documents i els mecanismes per restringir-la i transformar-la. Tecnologies estretament relacionades que es presentaran: • html es descriuen els conceptes bàsics i els mecanismes per separar el contingut de la presentació: fulls d’estil (css). • xml es descriu la sintaxi bàsica i a continuació els mecanismes per restringir un document : dtd i schema. • xhtml Es descriu l’unificació de xml i html, • xsl y xslt Es descriu com transformar documents xml i com es pot processar un document XML amb DOM i SAX. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Antecedents SGML: Standard Generalized Markup Language Origen: GML el 1969. Textual, basat en tags … Un llenguatge amb marcadors i identificadors d’elements del document que poden també contenir altres elements i que ja afegia el concepte de definició formal de tipus de documents. SGML és l’estàndar (ISO 8879) per a la representació de dades i documents estructurats. Inventat en 1974. SGML: Inspirat pel concepte d’hipertext UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Hiperdocuments HTML: Hiperdocuments WWW html ha seguit una evolució molt ràpida que ha convertit el llenguatge en un objecte d’una gran disputa entre fabricants de navegadors (recordeu Netscape i Microsoft) i el consorsi Web encarregat de posar ordre a l’evolució del llenguatge. Això ha fet d’html un llenguatge en que el format de presentació està barrejat amb l’estructura (o contingut) del document. Cap allà el 1996 html començava a estar fora de control i es va recuperar les idees de: sgml – (complicacions de sgml) + (nou nom) = xml XML? Ho veurem en aquest tema! UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML XML: SGML lleuger … En 1998 apareix XML 1. 0 amb les seves fulles d’estil. Està pensat no només per a les persones que miren una finestra de navegador, també està pensat per processos (o agents) que interactuen entre ells a la xarxa. En ocasions es precís transformar els documents xml d’un format a un altre i per això s’utilitzen els fulls d’estil de transformacions (xslt) la ràpida introducció de la web i del xml ha estat possible per la facilitat i gratuïtat d’eines desenvolupades per la comunitat de manera participativa: • Universitat d’Illinois al 1993 : Mosaic (html 2. 0) • Diverses llibreries (“parsers”) per tractar documents xml s’han fet públiques, fet que ha comportat que xml fos un format “de moda”. • . . . UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
el què ens espera Sembla que HTML ja ha complert i ara li toca a totes les tecnologies al voltant de XML. Però … les especificacions segueixen evolucionant!!! hi ha moltes bones fonts d’informació a Internet i en llibres que es publiquen i renoven amb freqüència. I no hi ha més remei que … posar-se al dia constantment! UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
html UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
html Llenguatge per codificar documents de la WWW Sintaxis i semàntica definida per especificació Consorci World Wide Web (W 3 C) http: //www. w 3. org HTML 3. 2 (1996), HTML 4. 0 (1998), 4. 01… Característiques: Basat en etiquetes: <html> … </html> Codificació d’estructura lògica (no presentació ) Enllaços a altres objectes (per valor o “inline”/per ref a URL) Cada vegada més complex, … menor codificació manual més estricte: format intern d’editors (de html o genérics) Netscape, Macromedia Dreamweaver, MS Office, MS Front. Page… UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Importància de l’HTML? La arquitectura de les aplicacions web fins ara: • El protocol HTTP per transferir documents web del servidor al client. • El llenguatge HTML de representació de la documentació web, que inclou a més de text, les regles de format i presentació visual. • La URL (uniform resource locator) per referènciar unívocament documents web en la xarxa. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Anatomia d’una pàgina web - Tot està enmarcat dins de <html> i </html>tags - Una secció de capçalera opcional està entre <head> i </head> tags Pot incloure títol, - La resta de pàgina està inclosa entre els tags <body> i </body> - Exemple de l’estructura bàsica d’un document: <html> <head><title>Document bàsic</title></head> <body> <p>Un document <i>molt senzill</i>, però complert. </p> </body> </html> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
HTML Etiquetes o atributs: <a href="http: //www. upc. es"> <img src=pdf. gif> <input name=fitxer AAD size=24 maxlength=80> Casi tots tenen etiqueta de /final <tagname att 1=“val 1” attr 2=“val 2”. . > Algunes excepcions: ( o moltes excepcions !!!!!) • <img> • • <hr> • <meta> • <base> • . . . UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Demo Un navegador quasi ho accepta tot! • editar doc txt amb exemple anterior • anar retallant coses UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
html? <!--> < <A> <ABBREV> <ACRONYM> <ADDRESS> <APPLET> <AREA> <AUTHOR> <BANNER> <BASEFONT> <BGSOUND> <BIG> <BLINK> <BLOCKQUOTE> <BQ> <BODY> <BR> <CAPTION> <CENTER> <CITE> <CODE> <COLGROUP> <CREDIT> <DEL> <DFN> <DIR> <DIV> <DL> <DT> <DD> <EMBED> <FIG> <FN> <FONT> <FORM> <FRAMESET> <H 1> <H 2> <H 3> <H 4> <H 5> <H 6> <HEAD> <HR> <HTML> <IFRAME> <IMG> <INPUT> <INS> <ISINDEX> <KBD> <LANG> <LH> <LINK> <LISTING> <MAP> <MARQUEE> <MATH> <MENU> <META> <MULTICOL> <NOBR> <NOFRAMES> <NOTE> <OL> <OVERLAY> <PARAM> <PERSON> <PLAINTEXT> <PRE> <Q> <RANGE> <SAMP> <SCRIPT> <SELECT> <SMALL> <SPACER> <SPOT> <STRIKE> <STRONG> <SUB> <SUP> <TABLE> <TBODY> <TD> <TEXTAREA> <TEXTFLOW> <TFOOT> <THEAD> <TITLE> <TR> <TT> <UL> <VAR> <WBR> <XMP> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
HTML Frames: (documents "inline") <frameset cols="10%, *"> <frame src="frame 1. html"> <frame src="frame 2. html"> <noframes> Visite <a href="frame 1. html">este documento</a>. </noframes> </frameset> Taules: <table width="100%"> <tr><td>A</td><td>B</tr></td><tr><td colspan=2>C</td></tr> </table> Formularis <form method="post" action="/bin/cmd"> Importe <input type="text" name="valor"> Verificar <input type="checkbox" name="ver" value="1"> <input type="submit" value="Comprar"> </form> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
HTML Tags per llistes This is an ordered list: <ol> <li>First item <li>Second item <li>Third item </ol> This is an unordered list: <ul> <li>First item <li>Second item <li>Third item </ul> This is an ordered list: 1. First item 2. Second item 3. Third item This is an unordered list: • First item • Second item • Third item UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Java. Script Gestors de events: Javascript (Ecma. Script) Detecta+reacciona events al carregar, presentar i usar docs Similar a llenguatge C, interpretat, amb diversos dialectes segons clients. <script><a href=x on. Mouse. Over="document. status='¡Pulsa!'; return true"> Java. Script, inventat per Netscape, http: //developer. netscape. com/docs/manuals/js/client/jsguide/index. htm Microsoft té el seu propi dialecte JScript: http: //msdn. microsoft. com/scripting/default. htm Estandaritzat com Ecma. Script http: //www. ecma. ch/stand/ECMA-262. htm UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Java. Script <HTML> <HEAD><TITLE>Using Java. Script for Form Checking</TITLE></HEAD> <BODY> <h 1>AAD examples</h 1> <h 2>Using Java. Script for Form Checking</h 2> <FORM NAME="My. Form" ACTION="Some. CGIProgram" METHOD="POST"> First Name: <INPUT TYPE="text" NAME=" txt. First. Name" VALUE="JORDI"> <BR> Last Name: <INPUT TYPE="text" NAME=" txt. Last. Name" VALUE=""> <BR> <INPUT TYPE="button" NAME=" btn. Submit" VALUE="Submit Form" on. Click="check. Form(); "> <BR> <SCRIPT LANGUAGE="Java. Script"> <!-function check. Form() { if (document. My. Form. txt. First. Name. value == "") { alert("Please enter your first name"); document. My. Form. txt. First. Name. focus(); } else if (document. My. Form. txt. Last. Name. value == "") { alert("Please enter your last name"); document. My. Form. txt. First. Name. focus(); } else { document. My. Form. submit(); } } //--> </SCRIPT> </FORM> </BODY> </HTML> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Demo Veure què són els events Veure que això allibera el servidor UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Limitacions de HTML • La informació de format i estructura està barrejada. Per exemple s’usen marques com <font> per canviar l’aspecte d’una frase, enlloc d’indicar el seu significat estructural (és un títol de primer nivell) O s’usen taules per col·locar un text en una cantonada de la pàgina, enlloc d’usar-les per indicar l’organització de dades de manera tabulada. SOLUCIÓ? CCS • La varietat de formes acceptables d’expressar. el què facilita que si un usuari escriu les seves pàgines directament en html, encara que afegeixi alguns petits errors d’escriptura o omissió d’alguns símbols, les seves pàgines poden ser visualitzades correctament. Això complica terriblement el codi del navegador que processa la pàgina donat que cosidera moltíssims casos. O els valors dels atributs poden delimitar-se per cometes simples (‘), dobles (“) o ometres. SOLUCIÓ XHTML UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 1 Crear aquesta pàgina amb només html UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
css UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
css Controlan la “apariencia” de un documento - Incorporado en HTML 4. 0 - Complementan la info estructural de HTML - Importante la separación estructura y estil ¿Por qué “en cascada”? Info de estilo que se va superponiendo Van "cayendo" (aplicando) sobre el documento … Puede quedar una mezcla "curiosa"… También pueden ser usados en otros markup languages (XHTML, XML) Referència: http: //www. w 3. org/Mark. Up/Guide/Style UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
css Regla para mostrar una etiqueta html "Cascading Style Sheet" (CSS) Selector Declaración H 1 { color : green } Propiedad valor ¿Que podemos controlar? Fonts (color, size, caps, font, etc) Background (image, color, tiling properties) Text (spacing, line-height, alignment, decoration, word-spacing) Box properties (margin, border, float) List properties (image for bullets) Links (visited, hover, active, link) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Hojas de estilo de presentación Formas de asociar estilo - Entremezclado con html (inline), atributo style <h 1 style="color: blue; font-style: italic">Es azul</h 1> - Para todo el documento (document level), elemento style <head> … <style type="text/css"><!- - <!--…--> Para clientes web H 1 {color: blue; font-style: italic} que no entienden CSS @import url(http: //x. org/estilo); (sintaxis html) --> </style> … - Externo, hoja de estilo externo estilo_gral. css: H 1 {color: blue; font-style: italic} Doc html: <head>…<link rel=stylesheet type="text/css" href="http: : //x. org/estilo_gral. css"> compartido por todos los documentos html de un sitio web. Así un cambio en el documento de estilo afectará inmediatamente a todos los documentos que usen ese estilo. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Demo Maneras de asociar estilos UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
CSS: Ejemplo <STYLE type="text/css"><!-Redefinición de elemento BODY { font-family: sans-serif; color: black; background: white; } BODY, UL, P, TD, TH, LI, H 1, H UL, P, TD, TH, LI {font-family: sans-serif; } H 1, H 2, H 3 { font-weight: bold; color: black } SPAN. activity { font-family: sans-serif; font-size: . 75 em. SPAN: Agrupación } P. copyright { font-size: smaller } Clases de elemento P P. large { font-size: 1. 1 em; }. teaser { color: #c 80028 } Clases genéricas (no asociadas a un elemento). shortquote { font-style: italic } Pseudo-clase A: link { color: #004 f 9 c } /* enlaces no visitados */ : visited { color: rgb(153, 0, 153) } /* enlaces ya visitados */ : active { color: rgb(255, 0, 102) } /* cuando se pulsa sobre el enlace */ A: hover { background: cyan } /* cuando ratón pasa sobre enlace: CSS 2, difícil de hacer con Java. Script */ div. box { border: solid; border-width: thin; width: 100% }. hide { display: none; } No mostrar … H 1 EM { color: red; } Enfatizado dentro de título de nivel 1, en color rojo --></STYLE> <H 3>Documents</H 3> <A href="TR/">Technical Reports</A></H 4> <SPAN class="activity"><A href="Mark. Up/">HTML</A></SPAN> <div class="box"> Un marco fino rodeará este elemento DIV. </div> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
CSS: Cascading Hay tres tipos CSS 1 (Nivel 1), 12/96 Formato sencillo, presentación pantalla, ~50 propiedades: color, font-size, … CSS 2, 5/98 añade más de 70 propiedades: varias presentaciones ej. impresa, auditiva "aural", saltos de página, absolute (and fixed) vs. relative specify coordinates (relative to top left of box) z-index: for saying what’s on top when things are stacked … CSS 3 (en definición, ¡creo!) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
CSS 2 /* ********* Style for printing ******* */ @media print { H 1, H 2, H 3, H 4, H 5, H 6 { page-break-after: avoid; page-break-inside: avoid } BLOCKQUOTE, PRE { page-break-inside: avoid } UL, OL, DL { page-break-before: avoid }. navbar { background-color: #fff ; border-color: #000; border-width: 1 px } A. navlink, A. banner. Link { font-weight: normal } } /* ********* Style for speech ******* */ @media aural { H 1, H 2, H 3, H 4, H 5, H 6 { voice-family: paul, male; stress: 20; richness: 90 } H 1 { pitch: x-low; pitch-range: 90 } H 2 { pitch: x-low; pitch-range: 80 } H 3 { pitch: low; pitch-range: 70 } LI, DT, DD { pitch: medium; richness: 60 } PRE, CODE, TT { pitch: medium; pitch-range: 0; stress: 0; richness: 80 } EM { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } STRONG { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } DFN { pitch: high; pitch-range: 60; stress: 60 } I { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } B { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } U { richness: 0 } A: link { voice-family: harry, male } A: visited { voice-family: betty, female } A: active { voice-family: betty, female; pitch-range: 80; pitch: x-high } } UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 2 Homework 1 con html + css UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
xml UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Datos estructurados en texto: XML: e. Xtensible Markup Language (lenguage de etiquetaje extensivo) A partir de elementos <x> … </x> Propuesto por el W 3 C ("SGML Ligero") Basado en alfabeto universal Textual (Unicode UTF-8) 1. XML permite a los usuarios crear sus propios tags 2. Separa contenido con la presentación UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Datos estructurados A A: B: "foo" C: "bar" C: "lab" B C C "foo" "bar" "lab" <A> <B>foo</B> <C>bar</C> <C>lab</C> </A> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Datos estructurados AAD A B C a 1 b 1 c 1 a 2 a 3 b 2 b 3 c 2 c 3 AAD tuple A B C a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 AAD tuple A a 1 /A B b 1 /B C c 1 /C /tuple A a 2 /A B b 2 /B C c 2 /C /tuple … /R UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo HTML vs XML Ejemplo presentación HTML: <h 2>Hamlet, Príncipe de Dinamarca</h 2> <p> <b>Autor: </b>William Shakespeare <b>ISBN: </b>84 -239 -0027 -4 <b>Año: </b>1938</p> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo HTML vs XML La versión HTML puede ser interpretada por personas a través de los browsers, pero los programas podrian extraer facilmente información del documento HTML Ejemplo estructuración con XML, para ser procesado: <? xml version="1. 0"? > Processing instruction Tags - "elements" <libro> <autor> <apellido>Shakespeare</apellido> <nombre>William</nombre> </autor> <titulo>Hamlet Principe de Dinamarca</titulo> <isbn>84 -239 -0027 -4</isbn> <fecha>1938</fecha> </libro> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo HTML vs XML Con HTML ahora una persona o un programa podrá obtener la información con facilidad: • • • apellido, nombre, título, isbn fecha. Ha de conocer las siguientes piezas del puzzle: • el “lenguaje”: el xml • el vocabulario (que se está usando): <libro>, <autor>, <apellido>, <nombre>, <titulo>, <isbn>, <fecha> • las restricciones de uso: cuando se pueden usar y qué valores podemos colocar en cada palabra clave, también llamadas elemento. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Datos en XML ¿Y la representación de un documento en XML en el navegador? El navegador no conoce como “pintar” mi vocabulario (mis tags) podemos asociar a cada elemento un estilo de presentación en hojas de estilo CSS UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Visualización de XML • XML no tiene implícita ninguna definición de estilo • Visión Jerárquica (browser si no encuentra hoja de estilo) <? xml version="1. 0" encoding="ISO-8859 -1"? > <? xml-stylesheet type="text/css" href="cd_catalog. css"? > <CATALOG> <CD> <TITLE>Four Women (4 CDs)</TITLE> <ARTIST>Nina Simone</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Verve</COMPANY> <PRICE>60. 58</PRICE> <YEAR>2003</YEAR> </CD> <CD> <TITLE>Fallen</TITLE> <ARTIST>Evanescence</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Wind-up Records</COMPANY> <PRICE>14. 49</PRICE> <YEAR>2003</YEAR> </CD>. . . </CATALOG> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Visualización de XML • La hoja de estilo CSS es el primer camino para visualizar un documento XML - Una hoja de estilo para un documento XML es justo una lista de tags y un tipo asociado. - La conexión de un documento XML y su hoja de estilo se consigue mediante una instrucción de procesado xml-stylesheet <? xml-stylesheet type = "text/css" href = “cd_catalog. css“ ? > cd_catalog. css: CATALOG { background-color: #ffffff; width: 100%; } CD { display: block; margin-bottom: 30 pt; margin-left: 0; } TITLE { color: #FF 0000; font-size: 20 pt; } ARTIST { color: #0000 FF; font-size: 20 pt; } COUNTRY, PRICE, YEAR, COMPANY { Display: block; color: #000000; margin-left: 20 pt; } UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
CSS Demo Aunque con CCS se pueda dar formato a los ficheros XML parece que el nuevo estandar va a ser XSL (más adelante lo trataremos) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML en 10 puntos… (según w 3 c) 1. XML es un método para poner datos estructurados en texto 2. XML parece HTML pero no es HTML 3. XML es texto, pero no está hecho para ser leído 4. XML es una familia de tecnologías 5. XML es muy prolijo, pero eso no es problema … 6. XML es nuevo, pero no tan nuevo 7. XML ha pasado HTML a XHTML 8. XML es modular http: //www. w 3. org/XML/1999/XML-in-10 -points. html “This summary in 10 points attempts to capture enough of the basic concepts to enable a beginner to see the forest through the trees” (W 3 C) 9. XML is the basis for Resource Description Framework (RDF) and the Semantic Web 10. XML no precisa licencia, independiente de plataforma y bien soportado por muchas herramientas: XML no es siempre la solución, pero vale la pena considerarlo UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Usos de XML: • Para transporte de información entre bases de datos • Para enviar información que se muestra a usuarios • Como formato legible para expresar datos estructurados • Para codificar datos en la red (wire-format) Como alternativa a formatos de datos binarios en RPC Restricciones: Datos binarios deben enviarse como Base 64 o enviar aparte del documento XML (un enlace, como hace HTML) Bastante texto (puede comprimirse: compresor general gzip, compress; compresor específico: b. XML) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Características de XML • Marcas elegidas por usuario <libro>, <canción> … • Marcas pueden tener atributos <libro autor=“William S” titulo=“Hamlet”> • Marcas sin datos pueden cerrarse al final de la etiqueta <libro autor=“William S” titulo=“Hamlet”/> en lugar de <libro autor=“William S” titulo=“Hamlet”></libro> • Marcas anidadas <libro><autor>William S. </autor>…</libro> • Marcas deben cerrarse (Incorrecto) <libro><autor>William S. </libro> • Codificar algunos caracteres <libro titulo=“El " Aleph" ”/> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Características de XML és más restrictivo que los usos de HTML Legal: <p>Parrafo 1. </p><p>Parrafo 2. </p> Aceptado en html: <p>Parrafo 1. <p>Parrafo 2. </p> Legal: <b><i>Negrita e Itálica</i></b> Aceptado en html: <b><i>Negrita e Itálica</b></i> Legal: <FONT COLOR=“#FFFF 66”> Aceptado en html: <FONT COLOR=#FFFF 66> Entidades: < < & & > > ‘ ' “ " UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Comunidades en XML • “comunidades” que han definido su “vocabulario” Si se quieren intercambiar datos codificados en xml, quienes intercambien esos documentos deberán ponerse de acuerdo en el nombre de los elementos y la forma de organizarlos e. g. Math. ML (Mathematics Markup Language) <expr> <mci>x</mci> <power/> <mcn>2</mcn> </expr> <plus/> <mcn>4</mcn> http: //www. w 3. org/Math/ x 2+4
Restricción de documentos XML Definiciones: • Documento XML “bien formado”: • Documento XML “válido”: Un documento que cumple con la sintaxis de xml Si además si el documento cumple con un conjunto de restricciones adicionales especificados por cierta “comunidad” Las características del lenguaje de una comunidad, su gramática (elementos de una lengua y sus combinaciones) puede expresarse en una sección del documento, o en un documento aparte de dos formas: 1) DTD: Definición Tipo Documento; 1) 1ª generación: heredado de SGML, sintaxis no XML, sin tipos de datos, … 2) XML Schema: formato XML, tipos de datos, más restricciones UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 3: expresar en XML estos datos UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 4: visualitzar el fichero XML anterior con CSS UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
dtd UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
documentos XML <? xml? > DTD o schema <weather-report> <date>August 15, 2000</date> <time>08: 00 </time> <area> <city>Darmstadt</ city> <temperature scale=“C”>25</tempe rature> Parser Bien formados Validos UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD • La DTD describe la sintaxis Estructura, elementos, atributos, valores permitidos Heredado de SGML, formato no XML Situado al comienzo, contenido o referenciado • Referenciado <? xml version=“ 1. 0” encoding="UTF-8" standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/libro. dtd”> <saludo>¡Bienvenidos a XML!</saludo> El documento XML expresa con la instrucción <!DOCTYPE> que el resto del documento XML cumple con el vocabulario “libro” que se identifica con el identificador “http: // www. x. org/xml/libro. dtd”: • Contenido <? xml version="1. 0" encoding="UTF-8" ? > <!DOCTYPE saludos [ <!ELEMENT saludo (#PCDATA)> ]> <saludo>¡Bienvenidos a XML!</saludo> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo XML de uso del DTD Ejemplo sencillo de DTD: <!ELEMENT libro (autor+) > <!ATTLIST libro titulo CDATA #REQUIRED fecha CDATA #IMPLIED > <!ELEMENT autor (#PCDATA) > Tipos de datos que pueden aparecer en una DTD se reducen a texto: PCDATA: texto y posibles marcas, secuencia de caracteres procesados CDATA: texto, secuencia de caracteres excepto marca de final ]]> Una declaración de elemento <!ELEMENT> asocia un nombre a una plantilla de contenido definida por una expresión que indica qué puede contener: - otros elementos delimitados por (ver siguientes transparencias). - texto #PCDATA (una secuencia de 0 o más caracteres, que puede a su vez contener otros elementos) - vacío (EMPTY). UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD ELEMENT con subelems (a, b) significa el elemento a seguido de b Ejemplo de DTD <!ELEMENT autor (nombre, apellido)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT apellido (#PCDATA)> Ejemplo XML de uso del DTD <? xml version=“ 1. 0” standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/autor. dtd”> <autor> <nombre>Jorge Luis</nombre><apellido>Borges</apellido> </autor> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD ELEMENT con subelems (a*) significa que a está repetido 0, 1 o más veces Ejemplo de DTD <!ELEMENT familia (padre, madre, hijo*)> <!ELEMENT padre (#PCDATA)> <!ELEMENT madre (#PCDATA)> <!ELEMENT hijo (#PCDATA)> Ejemplo XML de uso del DTD <? xml version=“ 1. 0” standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/familia. dtd”> <familia> <padre>Luis</padre> <madre>Luisa</madre> <hijo>Luisito</hijo> <hijo>Luisita</hijo> </familia> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD ELEMENT con subelems (a+) significa que a está repetido 1 o más veces Ejemplo de DTD <!ELEMENT familia-con-hijos (padre, madre, hijo+)> <!ELEMENT padre (#PCDATA)> <!ELEMENT madre (#PCDATA)> <!ELEMENT hijo (#PCDATA)> Ejemplo XML de uso del DTD <? xml version=“ 1. 0” standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/familia. dtd”> <familia-con-hijos> <padre>Luis</padre> <madre>Luisa</madre> <hijo>Luisito</hijo> <hijo>Luisita</hijo> </familia-con-hijos> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD ELEMENT con subelems (a? ) significa que a está repetido 0 o 1 veces Ejemplo de DTD <!ELEMENT familia-minima (padre? , madre? , hijo*)> <!ELEMENT padre (#PCDATA)> <!ELEMENT madre (#PCDATA)> <!ELEMENT hijo (#PCDATA)> Ejemplo XML de uso del DTD <? xml version=“ 1. 0” standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/familia. dtd”> <familia-minima> <madre>Luisa</madre> <hijo>Luisito</hijo> <hijo>Luisita</hijo> </familia-minima> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD ELEMENT con subelems “|” significa o “, ” significa sucesión EMPTY (sin paréntesis) significa que no contiene datos Ejemplo de DTD <!ELEMENT operaciones (((get | put), uri)*)> <!ELEMENT get EMPTY> <!ELEMENT put EMPTY> <!ELEMENT uri (#PCDATA)> Ejemplo XML de uso del DTD <? xml version=“ 1. 0” standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/ops. dtd”> <operaciones> <get/><uri>http: //www. upc. es/doc 1</uri> <get/><uri>http: //www. upc. es/doc 2</uri> <put/><uri>http: //www. upc. es/doc 3</uri> </operaciones> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo XML de uso del DTD declaración de atributos <!ATTLIST> • asocia a un nombre de elemento, una lista de atributos. • Cada atributo está declarado por: su nombre; texto que puede contener: CDATA o lista de valores textuales que puede tomar; modificadores o valor por defecto. • Los modificadores pueden ser: #REQUIRED: atributo debe proveerse #IMPLIED: no tiene valor por defecto #FIXED: siempre ha de tener el valor por defecto Al omitir un atributo con valor por defecto, equivale a que tenga ese valor UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Declaración de Atributos <!ATTLIST libro titulo CDATA #IMPLIED> Tipo de Elemento Nombre del Atributo Tipo de Atributo Valor por Default <!ELEMENT libro (autor+) > <!ATTLIST libro titulo CDATA #REQUIRED fecha CDATA #IMPLIED > <!ELEMENT autor (#PCDATA) > UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo XML de uso del DTD <!ELEMENT libro (autor+) > <!ATTLIST libro titulo CDATA #REQUIRED fecha CDATA #IMPLIED > <!ELEMENT autor (#PCDATA) > Instrucción de procesado Juego caracteres Autocontenido: refs a entidades externas <? xml version=“ 1. 0” encoding="UTF-8" standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/libro. dtd”> <!--Aquí vienen los datos xml--> Comentario <libro titulo="El Aleph" fecha="1968" > <autor>Jorge Luis Borges</autor> </libro> Caracteres Dato: no se analizan <autor><![CDATA[Texto <especial> con "&']]> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Elementos o atributos Un documento XML puede imaginarse como un árbol <libro> Contenido de una marca (datos) <autor> <nombre>Jorge Luis</nombre> <apellido>Borges</apellido> </autor> </libro> frente a Valor de atributo (la metainfo) <libro autor=“Jorge Luis Borges”> Elementos: ramas que pueden subdividirse (y extenderse) Atributos: <libro> <autor> <nombre> | | Jorge Luis | <apellido> Borges <libro> =autor Jorge Luis Borges hojas (terminales) que no pueden dividirse más (no estructurados) sin modificar el documento anterior. Adecuados para identificadores, URLs, refs o info simple no principal UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DTD ELEMENT con atributos XML Ejemplo de DTD Sin contenido <!ELEMENT libro EMPTY> Lista de atributos <!ATTLIST libro titulo CDATA #REQUIRED autor CDATA 'anonimo' Valores permitidos peso CDATA #IMPLIED Valor por defecto formato (tapa-dura | tapa-blanda) 'tapa-blanda' > Ejemplo XML de uso del DTD <? xml version=“ 1. 0” standalone=“no”? > <!DOCTYPE libro SYSTEM “http: //www. x. org/xml/libro. dtd”> <libro titulo="El Aleph" autor="Jorge Luis Borges" formato="tapa-dura" /> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Entidades en DTD Declaradas dentro de un DTD que permite usar una referenca para substituir una serie de caracteres por otro carácter en un documento XML (similar a macros). Declaración de una entidad general: <!ENTITY name “replacement_characters"> En el documento XML la referencia comienza con & y finalizan con ; . - Entidades predefinidas (para la interpretación) : “ " & & < < > > ‘ ' &# Unicode &#x hexa © = © &#x. A 9; = © UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Entidades en DTD - Entidades internas Se pueden añadir nuevas declaraciones para representar carácteres o secuencias de carácteres. Por ejemplo: <!ENTITY UPC "Universitat Politècnica de Catalunya"> <desc>La &UPC; es una universidad técnica. </desc> es idéntico a: <desc>La Universitat Politècnica de Catalunya es una universidad técnica. </desc> - Parameter Entity reference només en DTDs Comencen amb % No poden ser usats en document XML <!ENTITY % PD "(#PCDATA)"> <!ELEMENT marca %PD; > <!ELEMENT marca (#PCDATA)> - Entidades externas <!ENTITY infogeneral SYSTEM "http: //www. upc. es/info. xml"> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Identificadores ID Nombres únicos para referencias entre varios lugares de un documento Ejemplo XML: <autor ref="borges">Jorge Luis Borges</autor>. . . <libro autor="borges">El reloj de arena</libro> Basado en el DTD: <!ELEMENT autor (#PCDATA)> <!ATTLIST autor ref ID #REQUIRED> no dos autores pueden tener el mismo nombre <!ELEMENT libro (#PCDATA)> <!ATTLIST libro autor IDREF #IMPLIED> atributos que solo apuntan a otros elementos Tipos de atributos: ID = Nombre asociado a un elemento que lo distingue de entre todos. IDREF = Una sola referencia a atributo ID IDREFS = Lista de nombres (referencias a ID) separada por blancos … UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Espacios de nombres (namespaces) Mezclando lenguajes XML! http: //www. w 3. org/TR/REC-xml-names/ Considerar un lenguaje que usa XHTML como sublenguaje para mensajes de help: <example type="gadget"> <head size="medium"/> <big><subwidget ref="gizmo"/></big> <info> <head> <title>Description of gadget</title> </head> <body> <h 1>Gadget</h 1> A gadget contains a big gizmo </body> </info> </example> Problema: El significado de head y big dependen del contexto. Esto puede complicar las cosas a los procesadores de XML y pueden causar ambiguedades. La causa del problema radica en: un espacio de nombres común. Solución: cualificar los nombres con URIs (que no se supone que apunten a ningún sítio, es solo la manera más simple de conseguir un nombreúnico). UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Espacios de nombres (namespaces) Para construir documentos xml que combinan entidades de varias comunidades (espacios de nombres): <? xml version="1. 0" encoding="ISO-8859 -1" ? > - <colección xmlns: a="http: //www. alianza. es"> <a: libro título="El aleph" /> </colección> Ejemplo Web. DAV: PROPPATCH /Web. Dav. Docs/webdav-xml. htm HTTP/1. 1 Host: miservidor. com Content-Type: text/xml Content-Length: 138 <? xml version="1. 0" ? > - <d: propertyupdate xmlns: d="DAV: " xmlns: o="urn: schemas-microsoftcom: office"> - <d: set> - <d: prop> <o: Author>Sean Purcell</o: Author> </d: prop> </d: set> </d: propertyupdate> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 5: realizar el DTD del fitxer XML del homework 4 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
schema UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML schema Limitaciones de los DTDs: • La sintaxis es diferente de XML. No puede ser parseada con un parser XML. • No es cómodo manejarse con dos tipos de sintaxis diferentes. • DTDs no permiten especificar tipos particulares de datos. ¿Solución? XML Schema • Basados en la sintaxis, herramientas y tecnología de XML. • La definición va de acuerdo con la sintaxis de XML. • Permite la definición y tipos de datos complejos. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML Schema (DTD-Nueva Gen) Funciones: • Definir/restringir el contenido y estructura de documentos XML en XML • Sustituir DTD XML Schema Características: • Facilita mapeos automáticos con estructuras de datos programa • Escrito también en xml (parsers xml pueden tratar) Y más a partir de las limitaciones de los DTD: • Tipos de datos definidos por el usuario • Indicadores de ocurrencia (min. Occurs, max. Occurs) • Importación/Exportación de elementos • Refinamiento (herencia esquema) p. ex. Persona Empleado UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML Schema vs. DTD <!ELEMENT address (company? , name, street, city, state, zip, phone+)> <!ELEMENT company (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT state (#PCDATA)> <!ELEMENT zip (#PCDATA)> <!ELEMENT phone (#PCDATA)> schema en XML <element. Type name="address" > <sequence> <element. Type name="company" min. Occur="0" <element. Type name="name" min. Occur="1" <element. Type name="street" min. Occur="1" <element. Type name="city" min. Occur="1" <element. Type name="state" min. Occur="1" <element. Type name="zip" min. Occur="1" <element. Type name="phone" min. Occur="1" <sequence> </element. Type> max. Occur ="1"/> max. Occur ="5"/> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML Schema • Tipos de datos: • string (secuencia de carácter, iso 10646, unicode), • boolean, real, decimal (real, no Exp), integer [- , 0, ], non- negative integer[0, ], positive integer [1, ], non-positive integer [- , 0], negative integer [- , -1], • date. Time (iso 8601), date (date. Time), time (date. Time), time. Period (date. Time), • binary (datos+codif hex/base 64), • uri (rfc 2396), • language (ca, en, rfc 1766), • definidos UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML Schema • Restricciones: length (núm caracteres string, binario), maxlenght (máx longitud string, binario), lexical representation (repr posibles ej. DD-MM-AAAA), enumeration, max. Inclusive (máx posible, max. Exclusive (máx excl) min. Inclusive (mín posible), min. Exclusive (mín excl), precision (núm dígitos), scale (dígitos parte decimal), encoding (binario) • Ocurrencia: 0 -1 ? ; 0, … *; 1, … +; (nada) Uno y sólo uno • Refinamiento (herencia, extensión) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 1: XML Schema • <? XML version="1. 0"> <libro isbn="123456"> <título>El Aleph</título> <autor>J. L. Borges</autor> <año>1946</año> <precio>1560</precio> </libro> • El DTD correspondiente es: <!ELEMENT libro (título, autor+, año? , precio)> <!ELEMENT título (#PCDATA)> <!ELEMENT autor (#PCDATA)> <!ELEMENT año (#PCDATA)> (entero positivo, mayor de 1900) <!ELEMENT precio (#PCDATA)> (non-negative integer) <!ATTLIST libro isbn ID #REQUIRED> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 1: XML Schema • El esquema libro. xsd correspondiente al documento xml es: <schema target. Namespace='http: //www. ac. upc. es/aad/libro' version="Id: libro. xsd, v 1. 1 2001/04/10 17: 37: 02" xmlns='http: //www. w 3. org/2001/XMLSchema'> <simple. Type name='linea'> <restriction base='string'> <max. Length value='50'/> </restriction> </simple. Type> <simple. Type name='siglo. XX'> <restriction base='integer'> <min. Inclusive value='1900'/> <max. Inclusive value='1999'/> </restriction> </simple. Type> <element name='libro' type='Tipo. Libro'/> <complex. Type name='Tipo. Libro'> <sequence> <element name='titulo' type='linea'/> <element name='autor' type='linea'/> <element name='anyo' type='siglo. XX'/> <element name='precio' type='decimal'> <complex. Type> <attribute name='divisa' type='string'/> </complex. Type> </element> </sequence> Versión XML Schema 20010330 <attribute name='isbn' type='ID'/> Validado por http: //www. w 3. org/2001/03/webdata/x </complex. Type> </schema> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 1: XML Schema • El lenguaje XML Schema se reconoce por el espacio de nombres http: //www. w 3. org/2001/XMLSchema. • El esquema anterior es un documento xml con un único elemento “schema” donde se ha definido los tipos de datos específicos para este esquema: - el nuevo tipo de datos “línea” como un “string” de longitud limitada a 50 caracteres, - el nuevo tipo “siglo. XX” como un “integer” restringido a los valores entre 1900 y 1999 ambos inclusive, - y el nuevo tipo complejo “Tipo. Libro” como secuencia de varios elementos. <simple. Type name='linea'> <restriction base='string'> <max. Length value='50'/> </restriction> </simple. Type> <simple. Type name='siglo. XX'> <restriction base='integer'> <min. Inclusive value='1900'/> <max. Inclusive value='1999'/> </restriction> </simple. Type> <complex. Type name='Tipo. Libro'> <sequence> <element name='titulo' type='linea'/> . . . UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 1: XML Schema • Finalmente, se declara que los documentos conforme a este esquema tendrán al elemento “libro” de tipo “Tipo. Libro” como elemento raíz. <element name='libro' type='Tipo. Libro'/> Resulta más largo que un DTD, pero a cambio, la verificación de los datos es más rigurosa y por tanto la exportación e importación de datos en formato xml más sencilla para cualquiera que use un procesador de documentos xml que previamente valide el documento contra un esquema. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML schema “Simple” and “complex” elements: A “simple” element is one that contains text and nothing else A simple element cannot have attributes A simple element cannot contain other elements A simple element cannot be empty However, the text can be of many different types, and may have various restrictions applied to it If an element isn’t simple, it’s “complex” A complex element may have attributes A complex element may be empty, or it may contain text, other elements, or both text and other elements transp. entretes de: http: //www. cis. upenn. edu/~matuszek/ UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Defining a simple element A simple element is defined as <xs: element name="name" type="type" /> where: name is the name of the element the most common values for type are xs: boolean xs: date xs: decimal xs: integer xs: string xs: time Other attributes a simple element may have: default="default value" if no other value is specified fixed="value" no other value may be specified UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Defining an attribute Attributes themselves are always declared as simple types An attribute is defined as <xs: attribute name="name" type="type" /> where: name and type are the same as for xs: element Other attributes a simple element may have: default="default value" if no other value is specified fixed="value" no other value may be specified use="optional" the attribute is not required (default) use="required" the attribute must be present UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Restrictions, or “facets” The general form for putting a restriction on a text value is: <xs: element name="name"> (or <xs: restriction base="type">. . . the restrictions. . . </xs: restriction> </xs: element> xs: attribute) For example: <xs: element name="age"> <xs: restriction base="xs: integer"> <xs: min. Inclusive value="0"> <xs: max. Inclusive value="140"> </xs: restriction> </xs: element> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Restrictions on numbers min. Inclusive -- number must be ≥ the given value min. Exclusive -- number must be > the given value max. Inclusive -- number must be ≤ the given value max. Exclusive -- number must be < the given value total. Digits -- number must have exactly value digits fraction. Digits -- number must have no more than value digits after the decimal point UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Restrictions on strings length -- the string must contain exactly value characters min. Length -- the string must contain at least value characters max. Length -- the string must contain no more than value characters pattern -- the value is a regular expression that the string must match white. Space -- not really a “restriction”--tells what to do with whitespace value="preserve" Keep all whitespace value="replace" Change all whitespace characters to spaces value="collapse" Remove leading and trailing whitespace, and replace all sequences of whitespace with a single space UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Enumeration An enumeration restricts the value to be one of a fixed set of values Example: <xs: element name="season"> <xs: simple. Type> <xs: restriction base="xs: string"> <xs: enumeration value="Spring"/> <xs: enumeration value="Summer"/> <xs: enumeration value="Autumn"/> <xs: enumeration value="Fall"/> <xs: enumeration value="Winter"/> </xs: restriction> </xs: simple. Type> </xs: element> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Complex elements A complex element is defined as <xs: element name="name"> <xs: complex. Type>. . . information about the complex type. . . </xs: complex. Type> </xs: element> Example: <xs: element name="person"> <xs: complex. Type> <xs: sequence> <xs: element name="first. Name" type="xs: string" /> <xs: element name="last. Name" type="xs: string" /> </xs: sequence> </xs: complex. Type> </xs: element> <xs: sequence> says that elements must occur in this order Remember that attributes are always simple types UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Global and local definitions Elements declared at the “top level” of a <schema> are available for use throughout the schema Elements declared within a xs: complex. Type are local to that type Thus, in <xs: element name="person"> <xs: complex. Type> <xs: sequence> <xs: element name="first. Name" type="xs: string" /> <xs: element name="last. Name" type="xs: string" /> </xs: sequence> </xs: complex. Type> </xs: element> the elements first. Name and last. Name are only locally declared The order of declarations at the “top level” of a <schema> do not specify the order in the XML data document UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Declaration and use So far we’ve been talking about how to declare types, not how to use them To use a type we have declared, use it as the value of type=". . . " Examples: <xs: element name="student" type="person"/> <xs: element name="professor" type="person"/> Scope is important: you cannot use a type if is local to some other type UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
xs: sequence We’ve already seen an example of a complex type whose elements must occur in a specific order: <xs: element name="person"> <xs: complex. Type> <xs: sequence> <xs: element name="first. Name" type="xs: string" /> <xs: element name="last. Name" type="xs: string" /> </xs: sequence> </xs: complex. Type> </xs: element> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
xs: all allows elements to appear in any order <xs: element name="person"> <xs: complex. Type> <xs: all> <xs: element name="first. Name" type="xs: string" /> <xs: element name="last. Name" type="xs: string" /> </xs: all> </xs: complex. Type> </xs: element> Despite the name, the members of an xs: all group can occur once or not at all You can use min. Occurs="0" to specify that an element is optional (default value is 1) In this context, max. Occurs is always 1 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Referencing Once you have defined an element or attribute (with name=". . . "), you can refer to it with ref=". . . " Example: <xs: element name="person"> <xs: complex. Type> <xs: all> <xs: element name="first. Name" type="xs: string" /> <xs: element name="last. Name" type="xs: string" /> </xs: all> </xs: complex. Type> </xs: element> <xs: element name="student" ref="person"> Or just: <xs: element ref="person"> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Text element with attributes If a text element has attributes, it is no longer a simple type <xs: element name="population"> <xs: complex. Type> <xs: simple. Content> <xs: extension base="xs: integer"> <xs: attribute name="year” type="xs: integer"> </xs: extension> </xs: simple. Content> </xs: complex. Type> </xs: element> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Empty elements are (ridiculously) complex <xs: complex. Type name="counter"> <xs: complex. Content> <xs: extension base="xs: any. Type"/> <xs: attribute name="count" type="xs: integer"/> </xs: complex. Content> </xs: complex. Type> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Mixed elements may contain both text and elements We add mixed="true" to the xs: complex. Type element The text itself is not mentioned in the element, and may go anywhere (it is basically ignored) <xs: complex. Type name="paragraph" mixed="true"> <xs: sequence> <xs: element name="some. Name” type="xs: any. Type"/> </xs: sequence> </xs: complex. Type> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Extensions You can base a complex type on another complex type <xs: complex. Type name="new. Type"> <xs: complex. Content> <xs: extension base="other. Type">. . . new stuff. . . </xs: extension> </xs: complex. Content> </xs: complex. Type> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML Schema Por ejemplo los tipos pueden derivar de otros tipos: <complex. Type name="car"> <complex. Content> <extension base="vehicle"> <element name="wheel" min. Occurs="3" max. Occurs="4"/> </extension> </complex. Content> </complex. Type> Este código crea el tipo car a partir del tipo vehiculo extendiendolo con 3 o 4 ruedas como subelemento. ¡Cierto!, también es complicado. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Predefined string types Recall that a simple element is defined as: <xs: element name="name" type="type" /> Here a few of the possible string types: xs: string -- a string xs: normalized. String -- a string that doesn’t contain tabs, newlines, or carriage returns xs: token -- a string that doesn’t contain any whitespace other than single spaces Allowable restrictions on strings: enumeration, length, max. Length, min. Length, pattern, white. Space UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Predefined date and time types xs: date -- A date in the format CCYY-MM-DD, for example, 2002 -11 -05 xs: time -- A date in the format hh: mm: ss (hours, minutes, seconds) xs: date. Time -- Format is CCYY-MM-DDThh: mm: ss The T is part of the syntax Allowable restrictions on dates and times: enumeration, min. Inclusive, min. Exclusive, max. Inclusive, max. Exclusive, pattern, white. Space UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Predefined numeric types Here are some of the predefined numeric types: xs: decimal xs: byte xs: short xs: int xs: long xs: positive. Integer xs: negative. Integer xs: non. Positive. Integer xs: non. Negative. Integer Allowable restrictions on numeric types: enumeration, min. Inclusive, min. Exclusive, max. Inclusive, max. Exclusive, fraction. Digits, total. Digits, pattern, white. Space UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 2: XML Schema <? xml version="1. 0" encoding="utf-8"? > <book isbn="0836217462"> <title>Being a Dog Is a Full-Time Job</title> <author>Charles M. Schulz</author> <character> <name>Snoopy</name> <friend-of>Peppermint Patty</friend-of> <since>1950 -10 -04</since> <qualification>extroverted beagle</qualification> </character> <character> <name>Peppermint Patty</name> <since>1966 -08 -22</since> <qualification>bold, brash and tomboyish</qualification> </character> </book> (c) ejemplo obtenido de: La Revolución del e-business, Euridici Gonzalez y Tomàs Mendicoa UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 2: XML Schema Una manera de diseñar el esquema: <? xml version="1. 0" encoding="utf-8"? > <xsd: schema xmlns: xsd="http: //www. w 3. org/2001/XMLSchema"> <xsd: element name="book"> <xsd: complex. Type> <xsd: sequence> <xsd: element name="title" type="xsd: string"/> <xsd: element name="author" type="xsd: string"/> <xsd: element name="character" min. Occurs="0" max. Occurs="unbounded"> <xsd: complex. Type> <xsd: sequence> <xsd: element name="name" type="xsd: string"/> <xsd: element name="friend-of" type="xsd: string“ min. Occurs="0" max. Occurs="unbounded"/> <xsd: element name="since" type="xsd: date"/> <xsd: element name="qualification" type="xsd: string"/> </xsd: sequence> </xsd: complex. Type> </xsd: element> </xsd: sequence> <xsd: attribute name="isbn" type="xsd: string"/> </xsd: complex. Type> </xsd: element> </xsd: schema> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 2: XML Schema Otra manera de diseñar el esquema: <? xml version="1. 0" encoding="utf-8"? > <xsd: schema xmlns: xsd=“http: //www. w 3. org/2001/XMLSchema“ <xsd: element name="title" type="xsd: string"/> <xsd: element name="author" type="xsd: string"/> <xsd: element name="name" type="xsd: string"/> <xsd: element name="friend-of" type="xsd: string"/> <xsd: element name="since" type="xsd: date"/> <xsd: element name="qualification" type="xsd: string"/> <xsd: attribute name="isbn" type="xsd: string"/> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo 2: XML Schema Otra manera de diseñar el esquema (continuación): <xsd: element name="character"> <xsd: complex. Type> <xsd: sequence> <xsd: element ref="name"/> <xsd: element ref="friend-of" min. Occurs="0" max. Occurs="unbounded"/> <xsd: element ref="since"/> <xsd: element ref="qualification"/> </xsd: sequence> </xsd: complex. Type> </xsd: element> <xsd: element name="book"> <xsd: complex. Type> <xsd: sequence> <xsd: element ref="title"/> <xsd: element ref="author"/> <xsd: element ref="character" min. Occurs="0" max. Occurs="unbounded"/> </xsd: sequence> <xsd: attribute ref="isbn"/> </xsd: complex. Type> </xsd: element> </xsd: schema> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XML schema Parsers para validar: • Xerces del proyecto Jakarta Project (http: //xml. apache. org), con versiones Java y C++. Soporta DTDs y XML Schema. • Otros: • Nsgmls. • XML 4 J and XML 4 C … Conclusions: • Los schema mejora y aplica los conceptos de DTDs a un nivel más actual y consistente. • El schema de XML es la especificación del W 3 C que puede reemplazar la sintaxis de la DTD. • Con los schemas de XML se puede construir modelos de contenido muy complejos y proporcionar un concepto para definir tipos de datos. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 6: realizar el schema del fitxer XML del homework 4 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
xhtml UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 0 Formulación de HTML 4. 01 (24/12/1999) en XML ("limpiar" HTML, DTD, extensible, más simple para nuevas plataformas) Tidy: http: //www. w 3. org/People/Raggett/tidy/ Limpieza de html a xhtml Validator: validator. w 3. org UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 0 Diferencias respecto HTML - elementos y atributos en minúsculas <body bgcolor="#ffffff"> - valores de atributos entre comillas <table border="0"> - elementos no vacíos terminados <p>Párrafo 1</p> - elementos anidados, no solapados <p>here is a bolded<b>word. </b></p> - elementos necesarios: <head>, <body>; <title> (1 er elemento tras <head>) - Cambian algunas entidades: <br/>, <hr/>, <img src="image. gif" /> - Valores de atributos no "minimizados": <option value="somevalue" selected> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0 <option value="somevalue" selected="selected">
XHTML 1. 0 El lenguaje xhtml 1. 0 por ser una adaptación a xml de html tiene un aspecto muy similar a html tal como puede verse en el siguiente ejemplo: <? xml version="1. 0" encoding="UTF-8" ? > <!DOCTYPE html PUBLIC "-//W 3 C//DTD XHTML 1. 0 Strict//EN" "DTD/xhtml 1 -strict. dtd"> - <html xmlns="http: //www. w 3. org/1999/xhtml" xml: lang="en"> - <head> <title>Virtual Library</title> </head> - <body> - <p> Moved to <a href="http: //vlib. org/">vlib. org</a> </p> </body> </html> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 0 DOCTYPE: obligatorio (documento con 3 partes básicas) • DOCTYPE • head • body En HTML 4. 0: <!DOCTYPE HTML PUBLIC "-//W 3 C//DTD HTML 4. 0 Transitional//EN"> En XHTML 1. 0: <!DOCTYPE html PUBLIC "-//W 3 C//DTD XHTML 1. 0 Strict//EN" "http: //www. w 3. org/TR/xhtml 1/DTD/strict. dtd"> XHTML está especificado en un 'DTD‘. Actualmente hay tres documentos de tipos de XHTML: 1. Strict. dtd: limpio, formateo sólo con CSS 2. Transitional. dtd: cuando no CSS 3. Frameset. dtd: usando frames UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 0 También puede ser útil para poner fragmentos dentro de documentos xml. No sería correcto poner código html pues no sigue la sintaxis de xml, pero sí es posible mezclar documentos xml y xhmtl pues al menos el documento resultante estará bien formado. Puede verse en el siguiente ejemplo: <? xml version="1. 0" encoding="UTF-8" ? > <!– inicialmente, "books" es el espacio de nombres por defecto --> <book xmlns="urn: loc. gov: books" xmlns: isbn="urn: ISBN: 0 -395 -36341 -6" xml: lang="en"> <title>Cheaper by the Dozen</title> <isbn: number>1568491379</isbn: number> <notes> <!-- Ahora HTML será el espacio de nombres por defecto -> <p xmlns="http: //www. w 3. org/1999/xhtml"> This is also available <a href="http: //www. w 3. org/">online</a> </p> </notes> </book> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 1 XHTML 1. 0: limpia, fija y da esplendor a HTML 4. 01 XHTML 1. 1: XHTML Modular (10/4/2001) • Se descompone la especificación en varios módulos 1. Attribute Collections 2. Core Modules 2. 1. Structure Module 2. 2. Text Module 2. 3. Hypertext Module 2. 4. List Module 3. Applet Module 4. Text Extension Modules 4. 1. Presentation Module 4. 2. Edit Module 4. 3. Bi-directional Text Module 5. Forms Modules 5. 1. Basic Forms Module 5. 2. Forms Module 6. Table Modules 6. 1. Basic Tables Module 6. 2. Tables Module 7. Image Module 8. Client-side Image Map Module 9. Server-side Image Map Module 10. Object Module 11. Frames Module 12. Target Module 13. Iframe Module 14. Intrinsic Events Module 15. Metainformation Module 16. Scripting Module 17. Style Sheet Module 18. Style Attribute Module 19. Link Module 20. Base Module 21. Name Identification Module 22. Legacy Module UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 1 • XHTML Basic reúne un conjunto mínimo de módulos • Incluye images, forms, basic tables, y object support • Un dispositivo puede soportar ciertos módulos: ej. un PDA, teléfono móvil, un set-top-box, dispositivo braille, sintentizador de voz, impresor, proyector, … pueden soportar XHTML 1. 1 • Cada módulo puede extenderse y añadir nuevos • Incorporación de: gráficos vectoriales (SVG), multimedia, Math. ML, comercio electrónico, … • Por ejemplo la funcionalidad de WML podría añadirse como módulo a XHTML 1. 1 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XHTML 1. 1 Este formato es prometedor puesto que algunos dispositivos pequeños para acceder al Web (como teléfonos u otros terminales móviles) no tienen la capacidad de tratar documentos con todas las funciones de XHTML 1. 0 (como HTML 4. 01). Con XTHML 1. 1 un dispositivo puede implementar sólo los módulos que pueda o necesite, y estas páginas no tienen porqué ser compatibles con navegadores que entienden HTML 4. 01. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 7: Pasar el homework 1 a XHTML UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
xsl (xslt, xpath) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
hojas de estilo <? xml? > Document de la classe d‘ADD de la FIB Xzcxcxzcxz Xcxzcxzcxcx Xzcxzcxzc Xzcxzcxz Cxzcxz Cxzc Xzcxz Cxzxzcxz Cxzcxz <Property. Reference="CASAN 00007" Category="Sell" Property. Type="House"> <Address> <State>CA</State> <Zip>94112</Zip> <City>San Francisco</City> <Street>9695 Garth Lane</Street> </Address> <Description> <Text>Hardwood Floors, Fireplace, Gas Heat; Lot Area: 2729; Lot Features: Swimming Pool, Garage, Golf Course</Text> <Area>1020</Area> <Number. Of. Bed. Rooms>6</Number. Of. Bed. Rooms> <Number. Of. Bath. Rooms>2</Number. Of. Bath. Rooms> </Description> <Contact. Person> <Name>Rowan Atkinson</Name> <Phone>1 -916 -730 -7460</Phone> <Email>Rowan. Atkinson@ail. showstar. com</Email > </Contact. Person> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
¿CSS Y XSL? http: //www. w 3. org/Style/ Why two Style Sheet languages? Web Style Sheets home page The fact that W 3 C has started developing XSL in addition to CSS has caused some confusion. Why develop a second style sheet language when implementors haven't even finished the first one? The answer can be found in the table below: CSS XSL Can be used with HTML? Can be used with XML? Transformation language? Syntax yes no yes CSS XML The unique features are that CSS can be used to style HTML & XML documents. XSL, on the other hand, is able to transform documents. For example, XSL can be used to transform XML data into HTML/CSS documents on the Web server. This way, the two languages complement each other and can be used together. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL XSL: Extensible Stylesheet Language http: //www. w 3. org/Style/XSL XSLT XSLFO (Transformación) XPath (Formateo de objetos) (Selección, Navegación) XSL es un W 3 C Standard (XSLT and XPath) Noviembre 1999. La especificación completa en Octubre 2001. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL XSLT Transformación (nuevos documentos) XPath Lenguaje para definir partes de un documento XML XSL-FO Marcas para controlar presentación en varios medios ( a más bajo nivel y detalle que el que permite HTML+CSS) En el futuro los navegadores web solo necesitaran entender XSLT y XSL-FO • HTML/XHTML puede ser obtenido usando hojas de estilo estandares. • El lenguaje usual es XHTML que es entendido por los navegadores actuales. • XSLT está completamente implementado, mientras que XSL-FO aun no. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Idea básica de XSLT stylesheet: Es declarativo y usa reconocimiento de patrones y plantillas para especificar las transformaciones Una forma común de describir el proceso de transformación es que XSL usa XSLT para transformar un XML source tree en un XML result tree. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Cómo funciona el XSL. Arbol fuente (XML) XSL Arbol resultado (xmlsn: fo) Transform. XSL Intérprete ¿? Hoja de estilo (xmlns: xsl) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Árbol XML Árbol (p. ej. XML HTML, XML) Aplica reglas de formato transforma doc XML en otro Puede añadir nuevos elementos o eliminar (*) fuente: Learning XML, O’Really UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Árbol XML Igual que en otros lenguajes de hoja de estilo, una transformación es un conjunto de reglas que se aplican a los elementos Cada regla describe cual es el output a partir del input (en XML) Hay diferentes clases de nodos (repres. en arbol): Element Pueden contener otros nodos element, type Attribute Text Se representan como nodos (y no como partes de los elementos) (Son nodos hoja porque no tienen hijos) También son nodos hoja. Comment También un nodo aunque no contribuye en nada en el contenido del documento. Processing instruction Solo tienen sentido para los procesadores XML. Namespace La declaración del espacio de nombre no es tratado como un atributo, puesto que tiene una implicación especial sobre el resto de documento. Root El nodo Root contine todo en el documento. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Árbol XML En el proceso de tranformación XSLT (usando XPath) define partes del documento fuente que se mapea en uno o más plantillas (templates) predefinidas. Un archivo XSL es una secuencia de plantillas que se aplican a una o más etiquetas XML de acuerdo a un patrón. Cuando se consigue un mapeo, XSLT transformará la parte que se ha podido mapear del documento fuente en el documento resultante. Las partes del documento fuente que no pueden mapearse en una plantilla quedaran sin modificar en el documento resultado. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Estructura básica de XSL Estructura de doc XSL: La hoja de estilo es un documento XML en si mismo, está encabezada con una declaración XML La marca <xsl: stylesheet> define <? xml version="1. 0" encoding="ISO-8859 -1"? >. ? > el inicio de la hoja de estilo <xsl: stylesheet xmlns: xsl="http: //www. w 3. org/TR/WD-xsl"> <xsl: import/> <xsl: include/> <xsl: id/> <xsl: strip-space/> <xsl: preserve-space/> <xsl: macro/> <xsl: attribute-set/> <xsl: constant/> <xsl: template match="expresión"> Patrón para seleccionar nodos y aplicar transformaciones acción de la plantilla </xsl: template> </xsl: stylesheet> Desde XML se referencia como: <? xml-stylesheet href="http: //www. x. org/estilo. xsl" type=text/xsl"? > UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath: navegando en xml (el arbol xml es similar a una estructura de ficheros) por ejemplo con xpath podemos seleccionar más de un nodo a la vez: //Class/Student <Class> Class Student Text: Jeff Text: Pat <Student>Jeff</Student> <Student>Pat</Student> </Class> (c) transparencias de Xpath: Jeff Derstadt http: //www. cs. cornell. edu/courses/cs 433 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath Expresiones básicas de XPath: Los elementos se acceden como /<element>/ Los atributos se acceden como @attribute Cualquier cosa que satisface la expresión es seleccionado Se pueden añadir restricciones con [ ] para afinar la selección. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath Ejemplo: Seleccionar los nodos que contengan un atributo id <class name=‘CS 433’> <location building=‘Olin’ room=‘ 255’/> <professor>Johannes Gehrke</professor> <ta>Dan Kifer </ta> <student_list> <student id=‘ 999 -991’>John Smith</student> <student id=‘ 999 -992’>Jane Doe</student> </student_list> </class> Elemento de inicio restricciones de atributo //class[@name=‘CS 433’]/student_list/student/@id Path selección UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath - Context : el punto de trabajo actual en un documento xml. XPath: List/Student Prof Location Text: Gehrke Attr: Olin Class List Student Text: Jeff Text: Pat UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath - Context XPath: Student Class Prof Location Text: Gehrke Attr: Olin List Student Text: Jeff Text: Pat UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath Ejemplo: <Basket> <Cherry flavor=‘sweet’/> <Cherry flavor=‘bitter’/> <Cherry/> <Apple color=‘red’/> <Apple color=‘green’/> … </Basket> Seleccionar las manzanas rojas: //Basket/Apple[@color=‘red’] UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath Ejemplo: <Basket> <Cherry flavor=‘sweet’/> <Cherry flavor=‘bitter’/> <Cherry/> <Apple color=‘red’/> <Apple color=‘green’/> … </Basket> Seleccionar sólo las cerezas que tienen algun sabor //Basket/Cherry[@flavor] UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XPath Ejemplo: <orchard> <tree> <apple color=‘red’/> </tree> <basket> <apple color=‘green’/> <orange/> </basket> </orchard> Seleccionar todas las manzanas de la huerta: //orchard/descendant()/apple UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Igualación de patrones <xsl: template match="pattern"> Etiquetas HTML y más procesamiento de Hoja de Estilo </xsl: template> XPath Aplicación de las transformaciones: -<xsl: template match="*|/"> - - <html> - <xsl: apply-templates /> - </html> -</xsl: template> Obtención de valores de elementos: -<xsl: template match="capitulo"> - <xsl: value-of select=". "> -</xsl: template> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplos de selección de nodos Todos los hijos del nodo raíz: <xsl: template match "/*"> Cualquiera entre varios nodos: <xsl: template match "cabecera|cuerpo"> Elems que contienen otro elemento: <xsl: template match "capitulo[imagen]"> Elems en que un atributo tiene valor: <xsl: template match "capitulo[@fecha]"> Elementos que contienen otro elemento que cumple condición: <xsl: template match UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL <xsl: template> Una hoja de estilo XSL consiste en un conjunto de reglas llamadas template. Cada elemento <xsl: template> contiene reglas para aplicar cuando un nodo determinado hace matching. El atributo match se usa para asociar el template con un elemento XML. El atributo match también puede ser usado para definir templates para toda una rama de un documento XML (p. e. match="/" define todo el elemento). <xsl: value-of> Extrae el valor del nodo seleccionado. El atributo puede contener una expresión. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"> <? xml version="1. 0" encoding="ISO<xsl: template match="/"> 8859 -1"? > <? xml-stylesheet type="text/xsl" <html> href="cdcatalog. xsl"? > <body> <CATALOG> <CD> <h 2>My CD Collection</h 2> <TITLE>Four Women (4 CDs)</TITLE> <ARTIST>Nina Simone</ARTIST> <table border="1"> <COUNTRY>USA</COUNTRY> <tr bgcolor="#9 acd 32"> <COMPANY>Verve</COMPANY> <PRICE>60. 58</PRICE> <th>Title</th> <YEAR>2003</YEAR> <th>Artist</th> </CD>. . </tr>. </CATALOG> <tr> <td><xsl: value-of select="catalog/cd/title"/></td> <td><xsl: value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html> </xsl: template> </xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL Pero solo nos daría el primero, ¿no? <xsl: for-each> nos permite realizar bucles en XSL (selecciona cada XML elemento de un conjunto de nodos especificados. <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"> <xsl: template match="/"> <html> <body> <h 2>My CD Collection</h 2> <table border="1"> <tr bgcolor="#9 acd 32"> <th>Title</th> <th>Artist</th> </tr> <xsl: for-each select="catalog/cd"> <tr> <td><xsl: value-of select="title"/></td> <td><xsl: value-of select="artist"/></td> </tr> </xsl: for-each> </table> </body> </html> </xsl: template> </xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"> <xsl: template match="/"> <html> <body> <h 2>My CD Collection</h 2> <table border="1"> <tr bgcolor="#9 acd 32"> <th>Title</th> <th>Artist</th> </tr> <xsl: for-each select="catalog/cd"> <tr> <td><xsl: value-of select="title"/></td> <td><xsl: value-of select="artist"/></td> </tr> </xsl: for-each> </table> </body> </html> </xsl: template> </xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL Filtrado de la salida Podemos filtrar la salida de un documento XML añadiendo un criterio en el atributo select del elemento <xsl: for-each> <xsl: for-each select="catalog/cd[artist='Bob Dylan']"> <xsl: sort> para ordenar la salida (IE 5 no xsl: sort) <xsl: if> contiene un template que será aplicado solo si la condición es cierta <xsl: if test="price > 10"> some output. . . </xsl: if> <xsl: choose> se usa junto con <xsl: when>y <xsl: otherwise> para expresar múltiples condicionales. UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"><xsl: template match="/"> <html> <body> <h 2>My CD Collection</h 2> <table border="1"> <tr bgcolor="#9 acd 32"> <th>Title</th> <th>Artist</th> </tr> <xsl: for-each select="catalog/cd"> <tr> <td><xsl: value-of select="title"/></td> <xsl: choose> <xsl: when test="price > 10"> <td bgcolor="#ff 00 ff"> <xsl: value-of select="artist"/></td> </xsl: when> <xsl: when test="price > 9 and price < = 10"> <td bgcolor="#cccccc"> <xsl: value-of select="artist"/></td> </xsl: when> <xsl: otherwise> <td><xsl: value-of select="artist"/></td> </xsl: otherwise> </xsl: choose> </tr> </xsl: for-each> </table> </body> </html> </xsl: template></xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL <xsl: apply-templates> Este elemento aplica la regla template al elemento actual o a los nodos hijos. Si se añade el atributo select a este element solo procesará los elementos hijos que hacen match con el valor del atributo. Podemos usar el atributo select para especificar en que orden los nodos hijos deben ser procesados. <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"><xsl: template match="/"> <html> <body> <h 2>My CD Collection</h 2> <xsl: apply-templates/> </body> </html> </xsl: template><xsl: template match="cd"> <p> <xsl: apply-templates select="title"/> <xsl: apply-templates select="artist"/> </p> </xsl: template><xsl: template match="title"> Title: <span style="color: #ff 0000"> <xsl: value-of select=". "/></span> <br /> </xsl: template><xsl: template match="artist"> Artist: <span style="color: #00 ff 00"> <xsl: value-of select=". "/></span> <br /> </xsl: template></xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
<? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform" <xsl: template match="/"> <html> <body> <h 2>My CD Collection</h 2> <xsl: apply-templates/> </body> </html> </xsl: template> <xsl: template match="CD"> <p> <xsl: apply-templates select="TITLE"/> <xsl: apply-templates select="ARTIST"/> </p> </xsl: template> <xsl: template match="TITLE"> Title: <span style="color: #ff 0000"> <xsl: value-of select=". "/></span> <br/> </xsl: template> <xsl: template match="ARTIST"> Artist: <span style="color: #00 ff 00"> <xsl: value-of select=". "/></span> afegit per classe teoria grups 10/20 <br/> </xsl: template> </xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
afegit per classe teoria grups 10/20 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
XSL: Selección avanzada Sobre los nodos: position() last() count(conjunto) … Booleanos: = > >= < = Numéricos: + - * div mod sum() floor() ceiling() round() … Cadenas caracteres: contains() concat() … Selección en árbol: from-ancestors() from-descendants() from-childred() fromfollowing-siblings() from-parent() from-attributes() <? xml version="1. 0" encoding="ISO-8859 -1"? > <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"> <xsl: template match="/"> <html> <body> <xsl: for-each select="catalog/cd/artist"> Current node: <xsl: value-of select="current()"/> <br /> </xsl: for-each> </body> </html> </xsl: template> </xsl: stylesheet> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Motores de transformación Las transformaciones XSLT en la web: • en el cliente, p. e. Explorer o Mozilla • en el servidor, p. e. Xalan • tanto como pre-processing o on-the-fly • en Java y C++ dentro del proyecto Apache XML Procesando documentos XML • Document Object Model (DOM) • Simple API for XML (SAX) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo de Xalan (en java) import java. net. *; import java. io. *; import org. w 3 c. dom. *; import org. xml. sax. *; import org. apache. xerces. parsers. *; import org. apache. xalan. xslt. *; class Example. Xalan. To. String { static public void main(String args[]) { String xml. Doc = „input. xml"; String xsl. Doc = „fitxer. Estils. xsl"; String out. Doc; // The resulting document from style sheet processing Byte. Array. Output. Stream os = new Byte. Array. Output. Stream(); XSLTProcessor processor = XSLTProcessor. Factory. get. Processor(); XSLTInput. Source xml. Source = new XSLTInput. Source (xml. Doc); XSLTInput. Source xsl. Sheet = new XSLTInput. Source (xsl. Doc); XSLTResult. Target xml. Result = new XSLTResult. Target (os); processor. process(xml. Source, xsl. Sheet, xml. Result); out. Doc = os. to. String(); System. out. println(out. Doc); . . . UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Homework 8: Obtener el mismo resultado que en el homework 1 aplicando una transformación XSL al homework 4 UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
dom, sax UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Parsers XML: Análisis sintáctico de documentos XML Tipo de parsers: Parsers que no validan: sólo miran que el documento XML sea sintácticamente bien formado. Parsers que validan: miran que el documento XML sea valido dado un DTD o SCHEMA. Los parsers se pueden basar en: una representación del documento xml en arbol/objetos que van recorriendo: Document Object Model (DOM) API O bien en eventos (open/close tag, data): Simple API for XML (SAX) UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM vs SAX Documento DTD Parser start. Document start. Element DOM La Aplicación instrumenta el Document. Handler end. Element end. Document SAX Arbol del documento UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM vs SAX DOM Crear una instancia de parser Hacer un parsing de todo el documento Procesar el árbol de DOM SAX Creación de una instancia de parser Registro de manejadores de evento con el parser El parser llama al manejador de eventos durante el parsing
DOM Documento de XML <? xml version="1. 0"? > <books> <book> <title>The XML Handbook</title> <author>Goldfarb</author> <author>Prescod</author> <publisher>Prentice Hall</publisher> <pages>688</pages> <isbn>0130811521</isbn> <price currency="USD">44. 95</price> </book> <book> <title>XML Design</title> <author>Spencer</author> <publisher>Wrox Press</publisher>. . . </book> </books> Estructura libros libro título El manual de XML autor Goldfarb Prescod editor Prentice Hall páginas 655 isbn . . . (c) ejemplo obtenido de: La Revolución del e-business, Euridici Gonzalez y Tomàs Mendicoa UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM Provee una interface estandar para el acceso y la manipulación de estructuras de XML Representa los documentos en la forma de una jerarquía de nodos Es neutral de plataforma y lenguaje de programación Es una recomendación del W 3 C (Octubre 1, 1998) Es implementado por muchos parser
DOM - Modelo de Estructura Document libros libro Node título autor páginas editor isbn Element El manual de XML Goldfarb Prescod Prentice Hall 655 . . . Node List UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM - La Interfaz Document Método Resultado doc. Type implementation document. Element get. Elements. By. Tag. Name(String) create. Text. Node(String) create. Comment(String) create. Element(String) create CDATASection(String) Document. Type DOMImplementation Element Node. List String Comment Element CDATASection UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM - La Interfaz Node Método node. Name node. Value node. Type parent. Node child. Nodes first. Child last. Child previous. Sibling next. Sibling attributes insert. Before(Node new, Node ref) replace. Child(Node new, Node old) remove. Child(Node) has. Child. Node Resultado String short Node. List Node Node. Named. Map Node Boolean UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM- Tipo/Nombre de Nodo Resultado: Tipo de Nodo/Nombre de Nodo Campos de Tipo Nombre del Nodo ELEMENT_NODE 1 tag. Name ATTRIBUTE_NODE 2 name of attribute TEXT_NODE 3 "#text" CDATA_SECTION_NODE 4 "#cdata-section" ENTITY_REFERENCE_NODE 5 name of entity referenced ENTITY_NODE 6 entity name PROCESSING_INSTRUCTION_NODE 7 target COMMENT_NODE 8 "#comment" DOCUMENT_NODE 9 "#document" DOCUMENT_TYPE_NODE 10 document type name DOCUMENT_FRAGMENT_NODE 11 "#document-fragment" NOTATION_NODE 12 notation name UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM - La Interfaz de Node List Método Resultado Length item(int) Int Node UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
DOM - La Interfaz Element Método Resultado tag. Name get. Attribute(String) set. Attribute(String name, String value) remove. Attribute(String) get. Attribute. Node(String) set. Attribute. Node(Attr) remove. Attribute. Node(String) get. Elements. By. Tag. Name String Attr Node. List UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Métodos de DOM para navegación parent. Node previous. Sibling next. Sibling first. Child last. Child child. Nodes (length, item()) get. Elements. By. Tag. Name
Métodos de DOM para manipulación create. Element create. Attribute create. Text. Node append. Child insert. Before replace. Child remove. Child
Ejemplo libros libro autor Goldfarb Prescod Spencer document. Element. child. Nodes. item(0). get. Elements. By. Tag. Name("author"). item(1). child. Nodes. item(0). data Objeto de DOM Nodo Raíz Libro Primer libro Autores Segundo Subnodos Primero Texto autor de Texto del mismo
Script <HTML> <HEAD><TITLE>DOM Example</TITLE></HEAD> <BODY> <H 1>DOM Example</H 1> <SCRIPT LANGUAGE="Java. Script"> var doc, root, book 1, authors, author 2; doc = new Active. XObject("Microsoft. XMLDOM"); doc. async = false; doc. load("books. xml"); if (doc. parse. Error != 0) alert(doc. parse. Error. reason); else { root = document. Element; document. write("Name of Root node: " + root. node. Name + "<BR>"); document. write("Type of Root node: " + root. node. Type + "<BR>"); book 1 = root. child. Nodes. item(0); authors = book 1. get. Elements. By. Tag. Name("author"); document. write("Number of authors: " + authors. length + "<BR>"); author 2 = authors. item(1); document. write("Name of second author: " + author 2. child. Nodes. item(0). data); } </SCRIPT> </BODY></HTML> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
SAX - Simple API para XML Documento DTD Parser start. Document start. Element La Aplicación Instrumenta el Document. Handler start. Element end. Document UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
SAX - Simple API para XML Modelo de parsing controlado-por-evento “No llame al DOM, el parser le llamará. ” Desarrollado por los miembros del XML-DEV Mailing List Se terminó el 11 de Mayo de 1998. SAX funciona con muchos parsers. . .
Ejemplo de SAX en Java <yachtid='147'> <name>VENTANA</name> <image file='yacht 147. jpg'/> <description>Any text describing this yacht 147</description> <details> <type>GULFSTAR 55</type> <length>1700</length> <width>480</width> <draft>170</draft> <sailsurface>112</sailsurface> <motor>84</motor> <headroom>202</headroom> <bunks>8</bunks> </details> </yacht> Tarea: Obtener el valor del elemento length UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo de SAX en Java SAXApp. java import org. xml. sax. Parser; import org. xml. sax. Document. Handler; import org. xml. sax. helpers. Parser. Factory; public class SAXApp{ } public static void main (String args[]) throws Exception { Parser parser = Parser. Factory. make. Parser(); // Parser instance Document. Handler handler = new My. Handler(); // D-H instance parser. set. Document. Handler(handler); // Registration of handler parser. parse("File: <LW>: /. . . /yacht. xml"); // Parsing the document } UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Ejemplo de SAX en Java My. Handler. java import org. xml. sax. *; public class My. Handler extends Handler. Base { private Boolean hit; public void start. Element(String name, Attribute. List atts) { if (name. equals("length")) { hit = new Boolean("true"); System. out. println("Start element: " + name); } else { hit = new Boolean("false"); } } public void characters(char[] ch, int start, int length) { if (hit. boolean. Value()){ System. out. println("Characters : " + new String(ch, start, length)); hit = new Boolean("false"); } } } UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 1: recepta de cuina UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Exemples de recepta de cuina FRICANDÓ AMB MOIXARNONS Ingredients: ½ quilo de vedella tallada prim 200 grams de tomata 400 grams de moixernons (Poseu en remull els moixernons en aigua freda durant dues o tres hores) Un gra d’all Un carquinyoli 15 grams d’ametlles torrades 400 c. c. de brou Preparació: Poseu sal i pebre a la carn i passeu-la per farina. A continuació, fregiu-la en la cassola amb una mica d'oli. Un cop fregida, retireu-la. En aquest mateix oli sofregiu-hi la ceba tallada a rodelles. Un cop cuita afegiu-hi la tomata tallada a trossos. Deixeu-la coure uns minuts i aboqueu-hi quatre-cents centimetres cúbics de brou. Afegiu-hi la carn de vedella i deixeu-ho coure tot plegat durant uns vint minuts. Retireu la carn i coleu la salsa amb el colador xines. Torneu a posar la carn i la salsa colada junts i afegiu-hi els moixernons que abans haureu saltejat amb una mica d'oli en la paella. Un cop arranqui el bull afegiu-hi la picada feta amb el gra d'all, les ametlles i el carquinyoli. (Abans de posar-la dins de la cassola, és bo dil. luir-la amb un xic de la mateixa salsa). Deixeu-ho coure tot plegat uns quinze minuts. MONGETES AMB CLOÏSES Ingredients: 1 quilo de cloïsses 1 quilo de mongetes del ganxet 1 cabeça d'alls Julivert Cirereta 60 grams de pinyons 60 grams d'ametlles torrades 1 got de vi blanc Preparació: Renteu les cloïsses i poseu-les en aigua, sal i vinagre per tal que deixin anar tota la sorra. Prepareu una picada amb els alls, i julivert, les ametlles torrades i els pinyons. En una cassola de fang, poseu oli fins cobrir el fons. Un cop calent l'oli, afegiu-hi la picada i deixeu-ho coure sense quedi daurat. Tireu-hi un tros de cirereta, les cloïsses, remeneu, afegiu-hi el got de vi blanc, tapeu i remeneu de tant en tant per tal que no es cremi la picada, fins que s'obrin les cloïsses. Una vegada obertes, afegiu-hi les mongetes que haureu cuit prèviament i una mica del brou d'elles mateixes. Rectifiqueu de sal, deixeu coure uns minuts i ja està llest per servir. Valor nutricional: Calories 1167 Proteines 71 g Greixos 52 g Hidrats 101 g Calories 907 Kcal Proteines 13 g Greixos 35 g Hidrats 30 g UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Comentaris sobre una recepta de cuina Una recepta consisteix en - ingredients, - Els passos (steps) per a la preparació (preparation), - amb alguns comentaris (comments), - i la especificació del seu valor nutricional (nutrition) an ingredient pot ser simple o composat (composite), com els moixernons - un ingredient simple te nom (name), quantitat (amount) (possiblement sense especificar), i una unitat (unit) -un ingredient compost és en el fons una recepta en si mateixa (recursivament). UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
Es demana: 1. Una versió amb html 2. Una versió amb html+css 3. Una versió xml 4. Un dtd per validar la versió xml 5. Un schema per validar la versió xml 6. Una versió xhtml 7. Un xsl que ens doni només els titols a partir del xml 8. Una versió que ens doni la versió xhtml a partir del xml UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 2: • En la FIB están diseñando una base de datos de la bibliografía básica de las asignaturas del plan de estudios. La estructura básica del registro de un libro sigue la declaración en lenguaje C siguiente: typedef struct { char titulo[100]; /* obligatorio */ char autores[100]; /* obligatorio, puede haber 1. . 10 aut. */ int anyo; /* año. sin valor por defecto */ char editorial[20]; /* txt, word, pdf, etc. . . */ enum {AAD, STD, CASO, SPD, CBXC} asignatura; /* obligatorio, por defecto AAD */ } libro; UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
se pide: - Escribe un dtd para codificar los datos bibliográficos expresados en esta declaración en lenguaje C. - Indica qué aspectos del dtd anterior se podrían controlar mejor con un “esquema xml”. Expresar el dtd anterior en schema. -Expresa la siguiente bibliografía en un documento xml que utilice la estructura básica indicada en el dtd anterior: CASO Mukesh Singhal, Niranjan G. Shivaratri Advanced Concepts in Operating Systems Mc. Graw-Hill, Inc. , 2001 CBXC Larry L. Peterson & Bruce S. Davie Computer Networks Morgan Kaufman Publishers, 2 nd Ed. , 2000 - Escribe el fragmento relevante de un documento xslt para generar un fragmento de código xhtml con una lista que incluya en cada línea el año y título de cada libro del UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0 documento xml anterior.
EXERCICI 3: En DTD: <!ELEMENT A(B, C, D)> i en SCHEMA? UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 4: En DTD: <!ELEMENT A (B|C|D)> i en SCHEMA? UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 5: En SCHEMA? <xs: element name="A" > <xs: complex. Type> <xs: choice> <xs: sequence> <xs: element name="B" type="xs: string"/> <xs: element name="C" type="xs: string"/> </xs: sequence> <xs: element name="D" type="xs: string"/> </xs: choice> </xs: complex. Type> </xs: element> En DTD? UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 6: En DTD: <!ELEMENT A (B? , (C*, D+)*)> i en SCHEMA? UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 7: Quins dels següents documents XML estan ben formats? i perquè? · <xdoc>Hello World</xdoc> · <xdoc type=greeting>Hello World</xdoc> · <xdoc><greeting>Hello World</greeting></xdoc> · <xdoc>Hello World</xdoc> · <xdoc manner='cordial">Hello World</xdoc> · <xdoc>Hello World</xdoc>Hello XML</xdoc> · <xdoc>Hello World</xdoc><greeting>Hello XML</greeting> · <xdoc>Hello World<greeting>Hello XML</greeting></xdoc> · <xdoc>Hello World><xdoc>Hello XHTML</xdoc><greeting>Hello XML</greeting></xdoc> · <xdoc>Hello World><greeting>Hello XML</greeting><xdoc>Hello XHTML</xdoc> · <xdoc>Hello World><xdoc>Hello XHTML</xdoc><greeting>Hello XML</greeting> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 8: Quins dels següents documents XML estan ben formats? i perquè? (cont. ) · <xdoc type="greeting"/> · <xdoc type='greeting'>Hello World</xdoc> · <xdoc type=greeting"/> · <xdoc><greeting>Hello World</xdoc></greeting> · <xdoc type='peaches & cream'>Hello World</xdoc> · <xdoc type's='peaches, cream'>Hello World</xdoc> · <xdoc type's="peaches, cream">Hello World</xdoc> · <xdoc mail@=“leandro@ac. upc. org">Hello World</xdoc> • <xdoc mail=“leandro@ac. upc. org">Hello World</xdoc> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 9: 2. Segons els següent DTD <!ELEMENT a (a)+ > Quins dels següents són documents vàlids? 1. 2. 3. 4. 5. 6. <a/> <a></a> <a><a></a> <a><a><a></a></a> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 10: Preguntes curtes: • Quina és la diferència entre CDATA i PCDATA? • Perquè necessitem “XML namespaces” i com funcionen? • Com es defineixen i s’usen les entitats dins d’un document XML? • Quines són les regles per a que un document XML estigui “ben format”? • En poques paraules dir que indiquen les següents expressions XPath a. //@size b. //[@size] UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
EXERCICI 11: És correcte el següent tros de codi XSLT? (10 points) <xsl: template match="listing"> <xsl: if test="@type='commercial'"> <business> </xsl: if> <xsl: if test="@type='residential'"> <personal> </xsl: if> <name><xsl: value-of select="name/first/text()"/> <xsl: value-of select="name/last/text()"/> </name> <number><xsl: value-of select="phone/text()"/></number> <xsl: if test="@type='commercial'"> </business> </xsl: if> <xsl: if test="@type='residential'"> </personal> </xsl: if> </xsl: template> UPC-DAC/FIB-AAD-Leandro Navarro/Jordi Torres; v 2. 0
993883e2988bf13cdbc355e037f81013.ppt