1 / 119

Dr. Diego Lz. de Ipiña Gz. de Artaza paginaspersonales.deusto.es/dipina (Personal)

XML, Distribución y Componentes Tema 1 – Procesamiento XML en .NET http://paginaspersonales.deusto.es/dipina/MasterISW/. Dr. Diego Lz. de Ipiña Gz. de Artaza http://paginaspersonales.deusto.es/dipina (Personal) http://www.morelab.deusto.es (Research Group)

oakes
Download Presentation

Dr. Diego Lz. de Ipiña Gz. de Artaza paginaspersonales.deusto.es/dipina (Personal)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML, Distribución y ComponentesTema 1 – Procesamiento XML en .NEThttp://paginaspersonales.deusto.es/dipina/MasterISW/ Dr. Diego Lz. de Ipiña Gz. de Artaza http://paginaspersonales.deusto.es/dipina (Personal) http://www.morelab.deusto.es (Research Group) http://www.smartlab.deusto.es (Research Lab) http://www.ctme.deusto.es (Cátedra de Telefónica Móviles) http://www.tecnologico.deusto.es (Tecnológico-Fundación Deusto)

  2. Temario • Procesamiento XML en .NET (21 y 22 Febrero) • Estándar .NET [XML.NET] • Soporte XML [XML-SAX, XML-DOM, Validación] • XSL [XPath, XSLT, Scripts, Objetos de extensión] • Aplicaciones distribuidas (23 Febrero, 5 Marzo) • XML/SOAP • .NET Remoting • Mensajería • Componentes .NET (6 y 7 Marzo) • Metadatos y Reflexion • Componentes .NET y Enterprise Services • Complementos • Interoperabilidad COM y P/Invoke • COM+ y MTS • MSMQ (colas de mensajes) • Microsoft Communication Foundation (Indigo)

  3. Contenidos Parte XML • XML • DTD • Schema • XML Parsing • SAX API • DOM API • XSLT • XSLT Scripts • XSLT Object Extensions

  4. ¿Qué es XML? • eXtensible Mark-up Language. • Es un metalenguaje que permite diseñar otros lenguajes (WML, MathML, XHTML,..). • Cualquiera puede desarrollar su propio lenguaje de etiquetas adecuado al tipo de aplicación que más le convenga. • En realidad hay muchas tecnologías basadas en XML (XPath, XLink, XPointer, XSL, ...). • XML 1.0 Specificationhttp://www.w3.org/TR/REC-xml

  5. HTML y XML • SGML (Standard Generalized Markup Language) • HTML es una aplicación de SGML • XML es subconjunto más fácil de usar de SGML • XHTML es una aplicación de XML

  6. XML describe estructura y semántica <?xml version=”1.0”> <!DOCTYPE comedor SYSTEM “comedor.dtd”> <comedor> <fabricante>Ipiña Altzariak</fabricante> <mesa tipo="redonda" madera="arce"> <precio>€400</precio> </mesa> <silla madera="arce"> <cantidad>2</cantidad> <calidad>excelente</calidad> <cojin incluido="sí"> <color>azul</color> </cojin> <precio>€200</precio> </silla> </comedor>

  7. HTML describe formato <html> <head><title>Comedor</title></head> <body> <h1>Comedor</h1> <p>Fabricante: Ipiña Altzariak</p> <ul> <li><b>Mesa redonda de madera de arce</b></li> <li><b>Dos sillas de madera de arce</b>, de excelente calidad, con un cojín azul cada una.</li> <li><b>3 sillas de madera de roble</b>.</li> </ul> </body> </html>

  8. Ventajas XML • Una de las mayores utilidades de XML es poder etiquetar los datos con su significado (self-describing data). • Permite la estructuración de la información. • Ello lleva el tratamiento automático de la información a límites insospechados. • XML es la base de la nueva generación de aplicaciones web  intercambio de datos

  9. Usos XML • Sitios web • Permite separar contenido y presentación • Comunicación <-> intercambio datos • Servicios web • Como configuración de programas • Deployment descriptos en servidores J2EE • Ant make system

  10. Componentes documento XML • Los documentos XML constan de: • Instrucciones de procesamiento (processing instructions – PI) • Declaraciones de tipo de documento • Comentarios • Elementos • Referencias a entidades • Secciones CDATA

  11. Instrucciones de procesamiento • Las PI son instrucciones para el procesador del documento XML. • Siempre hay al menos una PI, que pertenece al prólogo del documento: <?xml version="1.0"?> <saludo> Hola, mundo! </saludo> • Algunos navegadores interpretan la siguiente instrucción de procesamiento para indicar que el documento debería ser procesado mediante una hoja de estilo Guitars.xsl antes de ser visualizado: <?xml-stylesheet type="text/xsl" href="Guitars.xsl"?>

  12. Comentarios en XML • Los comentarios no se procesan. • Tienen la siguiente sintaxis: <!-- Esto es un comentario -->

  13. Elementos y atributos en XML • Los elementos son los que aportan estructura semántica al documento. • Se delimitan por etiquetas de apertura, cierre y etiquetas sin elementos interiores (etiquetas vacías). • Las etiquetas de apertura y las vacías suelen venir acompañadas de atributos, que parametrizan el elemento. • El valor de los atributos siempre se encierra entre comillas, dobles o simples. <saludo tipo="coloquial">Hola</saludo>

  14. Elementos vs. Atributos • Demasiados atributos hacen que los documentos XML se puedan leer difícilmente. • No se puede indicar estructura de documento mediante atributos <CUSTOMER LAST_NAME="Smith" FIRST_NAME="Sam" DATE="October 15, 2001" PURCHASE="Tomatoes" PRICE=“€1.25" NUMBER="8" />

  15. Elementos vs. Atributos (cont) <CUSTOMER> <NAME> <LAST_NAME>Smith</LAST_NAME> <FIRST_NAME>Sam</FIRST_NAME> </NAME> <DATE>October 15, 2001</DATE> <ORDERS> <ITEM> <PRODUCT>Tomatoes</PRODUCT> <NUMBER>8</NUMBER> <PRICE>$1.25</PRICE> </ITEM> </ORDERS> </CUSTOMER>

  16. Referencias a entidades • Las referencias a entidades sirven para insertar un determinado contenido definido previamente. <!ENTITY Empresa “Universidad de Deusto”> <pie>Creado por &Empresa;</pie>

  17. Códigos de escape • Existen 5 referencias a entidades predefinidas: • &amp; el carácter & • &lt; el carácter < • &gt; el carácter > • &apos; el carácter ' • &quot; el caracter " • Se incluyen los caracteres del juego ISO 10646. • &#145; • &#x2F31;

  18. Secciones CDATA • Las secciones CDATA (character data) contienen texto que no debe ser procesado. • Se tratan como una secuencia de caracteres sin estructura. <![CDATA[<saludo>Hola, mundo!</saludo>]]>

  19. Gramáticas en XML • La gramática que restringe los elementos válidos dentro de un nuevo derivado de XML puede expresarse en forma de: • DTD (Document Type Definitions) o • Esquemas XML

  20. Document Type Definitions (DTDs) • Especifican la estructura y sintaxis de un documento XML • Labgroups.dtd <!ELEMENT lab_group (student_name)*> <!ELEMENT student_name (#PCDATA)> <!ATTLIST student_name dni ID #REQUIRED tutor IDREF #IMPLIED>

  21. Document Type Definitions (cont) <?xml version="1.0"?> <!DOCTYPE mensaje SYSTEM “labgroups.dtd"> <lab_group> <student_name dni=“44670523"> Josu Artaza </student_name> <student_name dni=“44543211"> Nuria Buruaga </student_name> <student_name dni=“23554521" tutor=“33456211"> Inga Dorsman </student_name> </lab_group>

  22. XML Schemas • Los DTD no son muy potentes para definir gramáticas. • Otra forma de hacerlo es con Esquemas XML basados en el propio XML y que soporta más tipos de datos.

  23. Ejemplo Schema • DTD : <!ELEMENT text (#PCDATA | emph | name)*> <!ATTLIST text timestamp NMTOKEN #REQUIRED> • XML Schema: <xsd:element name="text"> <xsd:complexType mixed="true"> <xsd:sequence> <xsd:element ref="emph"/> <xsd:element ref="name"/> </xsd:sequence> <xsd:attribute name="timestamp" type="xsd:date" use="required"/> </xsd:complexType> </xsd:element>

  24. Ejemplo Schema (cont) • XML Document: <?xml version="1.0"?> <text timestamp="08:45:00.000">The deadline of <name>Distributed.NET assigment</name> is <emph>December 22nd 2005</emph>. </text>

  25. What is an XML Schema? • Extraído de: http://www.w3schools.com/schema/default.asp • The purpose of an XML Schema is to define the legal building blocks of an XML document, just like a DTD. • An XML Schema: • defines elements that can appear in a document • defines attributes that can appear in a document • defines which elements are child elements • defines the order of child elements • defines the number of child elements • defines whether an element is empty or can include text • defines data types for elements and attributes • defines default and fixed values for elements and attributes

  26. XML Schemas are the Successors of DTDs • We think that very soon XML Schemas will be used in most Web applications as a replacement for DTDs. Here are some reasons: • XML Schemas are extensible to future additions • XML Schemas are richer and more powerful than DTDs • XML Schemas are written in XML • XML Schemas support data types • XML Schemas support namespaces

  27. Ejemplo XML y DTD • Ejemplo XML: <?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://www.w3schools.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> • Ejemplo DTD: <!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

  28. Ejemplo XML y Schema • Ejemplo XML: <?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> • Ejemplo DTD: <?xml version="1.0"?> <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace=http://www.w3schools.com xmlns=http://www.w3schools.com elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <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> </xs:complexType> </xs:element> </xs:schema>

  29. Elementos Simples <xs:element name="xxx" type="yyy"/> • donde xxx es el nombre del elemento e yyy el tipo, siendo los más comunes: • xs:string • xs:decimal • xs:integer • xs:boolean • xs:date • xs:time • Ejemplos: <lastname>Refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn>

  30. Atributos y Restricciones en Elementos • Ejemplo atributos: <lastname lang="EN">Smith</lastname> <xs:attribute name="lang" type="xs:string"/> • Ejemplo restricciones sobre un elemento: <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>

  31. XML bien formado y/o XML válido • Hay dos tipos de documentos XML: • Bien formados: son aquellos que cumplen las reglas sintácticas de XML • Válidos: son aquellos que, además de ser bien formados, siguen las reglas de una gramática (definida en un DTD o XML Schema)

  32. Reglas para que un documento esté bien formado • Para que un documento esté bien formado: • Debe tener un prólogo • Debe tener una etiqueta raíz • Las etiquetas se hallan correctamente anidadas • Se usan caracteres válidos y bien aplicados • Los valores de los atributos vienen encerrados entre comillas • ...

  33. Reglas para que un documento sea válido • Para que un documento sea válido debe declarar el DTD o XML Schema contra el cual debe validarse. • Se hace mediante DOCTYPE, pudiendo ser los DTD públicos o de sistema. <!DOCTYPE saludo SYSTEM “saludo.dtd”> <!DOCTYPE saludo PUBLIC “-//Saludos//DTD Lenguaje de saludos//ES” “http://www.deusto.es/dtds/saludo.dtd”> • También se puede insertar el DTD entero en ese punto, en lugar de referenciar al fichero.

  34. Proceso de validación documento XML

  35. XML Namespaces • El estándar XML también define los espacios de nombres (XML Namespaces). • Permiten que un mismo documento XML tenga etiquetas de diferentes lenguajes (definidas en diferentes gramáticas DTD). • Así es posible mezclar más información en los documentos, por ejemplo, añadir información semántica a un documento XHTML.

  36. Ejemplo XML Namespaces <?xml version="1.0"?> <!DOCTYPE mensaje SYSTEM "mensaje.dtd"> <mensaje> <remite> <dir:direccion xmlns:dir=“http://www.deusto.es/direccion”> <dir:calle>Avda. Universidades</dir:calle> <dir:localidad cp=“40007”>Bilbao</dir:localidad> </dir:direccion> <nombre>Diego Ipiña</nombre> <email>dipina@eside.deusto.es</email> </remite> <!-- Resto del mensaje XML... --> </mensaje>

  37. Lenguajes basados en XML • Chemical Markup Language (CML) • Mathematical Markup Language (MathML) • Channel Definition Format (CDF) • Synchronized Multimedia Integration Language (SMIL) • XHTML • Scalable Vector Graphics (SVG) • SOAP y WSDL • VoiceML • Wireless Markup Language (WML) • RSS (Rich Site Summary)

  38. Herramientas de XML • Editores • http://www.xmlcooktop.com/ gratis • XML Spy, www.xmlspy.com • XML parsers • Lee un documento XML • Verifica que XML está bien formado • Verifican que XML es válido • expat, parser written in C by James Clark (www.jclark.com) • Lark, written in Java (www.textuality.com/Lark/) • Apache Jakarta Xerces (www.apache.org) • .NET FCL System.Xml • XML Validators • Verifican que XML es válido • XML.com's Validator based on Lark (xml.com)

  39. ¿Por qué usar XML? • Un documento XML puede ser fácilmente procesado y sus datos manipulados • Existen APIs para procesar esos documentos en Java, C, C#, C++, Perl.. (y por supuesto Python) • XML define datos portables al igual que Java define código portable

  40. XML Parsing

  41. XML Parsing (cont) • SAX • Define interfaz dirigido por eventos (event-driven) para el procesamiento de un documento XML • Definido por David Megginson y lista correo XML-DEV: http://www.megginson.com/SAX • DOM • Provee una representación de un documento XML en forma de un árbol • Carga todo el documento XML en memoria • http://www.w3.org/DOM

  42. XML en .NET • El espacio de nombres System.Xml ofrece una variedad de clases para leer y escribir documentos XML: • La clase XmlDocument implementa DOM • Para un procesamiento orientado al stream se puede usar XmlTextReader o XmlValidatingReader • XmlTextWriter simplifica el proceso de creación de documentos XML.

  43. System.XML • Este espacio de nombres comprende todas las clases necesarias para manejar documentos XML. • Permite leer o parsear un documento, así como escribir un documento XML. • Para ello necesitaremos conocer previamente la estructura de un documento XML.

  44. System.XML • Este espacio de nombres provee soporte para los estándares de procesamiento XML: • XML 1.0 - http://www.w3.org/TR/1998/REC-xml-19980210 - including DTD support. • XML Namespaces - http://www.w3.org/TR/REC-xml-names/ - both stream level and DOM. • XSD Schemas - http://www.w3.org/2001/XMLSchema • XPath expressions - http://www.w3.org/TR/xpath • XSLT transformations - http://www.w3.org/TR/xslt • DOM Level 1 Core - http://www.w3.org/TR/REC-DOM-Level-1/ • DOM Level 2 Core - http://www.w3.org/TR/DOM-Level-2/

  45. Un poco de XML • Lenguaje mundial de facto para intercambio de datos • XML no tiene tanto éxito porque es un gran lenguaje, sino porque las herramientas disponibles para leer, escribir y manipular XML son muy comunes • Casi todos los parseadores de XML implementan una de dos APIs: • DOM: lee un documento en memoria y lo carga en un árbol • SAX: API basada en eventos

  46. Ejemplo DOM en .NET <?xml version=“1.0”?> <Guitars> <Guitar Image=“MySG.jpeg”> <Make>Gibson</Make> <Model>SG</Model> <Year>1977</Year> <Color>Tobacco Sunburst</Color> <Neck>Rosewood</Neck> </Guitar> <Guitar Image=“MyStrat.jpeg”> <Make>Fender</Make> <Model>Stratocaster</Model> <Year>1990</Year> <Color>Black</Color> <Neck>Maple</Neck> </Guitar> </Guitars>

  47. Ejemplo DOM en .NET using System; using System.Xml; class MyApp { static void Main () { XmlDocument doc = new XmlDocument (); doc.Load ("Guitars.xml"); XmlNodeList nodes = doc.GetElementsByTagName ("Guitar"); foreach (XmlNode node in nodes) { Console.WriteLine ("{0} {1}", node["Make"].InnerText, node["Model"].InnerText); } } }

  48. XmlDocument • Interfaz programática para documentos XML que conforman con la especificación DOM • Método Load(nombre-doc) procesa el documento y construye un árbol del mismo • Una llamada exitosa es normalmente seguida de invocación a propiedad DocumentElement • Para saber si tiene hijos usar propiedad HasChildNodes • Propiedad ChildNodes devuelve los hijos de un nodo • Todo hijo es un XMLNode que puede ser del tipo Element, Text, Attribute, etc.

  49. XmlTextReader • Frente al estándar SAX, .NET ofrece XmlTextReader • Está basado en streams como SAX y es por tanto más eficiente con el uso de memoria que DOM • Usa un mecanismo pull para examinar XML en vez de push como SAX

  50. Ejemplo XmlTextReader I • Lee un fichero XML y visualiza todos sus nodos <?xml version="1.0"?> <!-- This is a sample XML document --> <!DOCTYPE Items [<!ENTITY number "123">]> <Items> <Item>Test with an entity: &number;</Item> <Item>test with a child element <more/> stuff</Item> <Item>test with a CDATA section <![CDATA[<456>]]> def</Item> <Item>Test with an char entity: &#65;</Item> <!-- Fourteen chars in this element.--> <Item>1234567890ABCD</Item> </Items>

More Related